@radix-ng/primitives 0.5.0 → 0.6.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 (180) hide show
  1. package/alert-dialog/README.md +1 -0
  2. package/alert-dialog/index.d.ts +6 -0
  3. package/alert-dialog/src/alert-dialog-cancel.directive.d.ts +7 -0
  4. package/alert-dialog/src/alert-dialog-content.directive.d.ts +8 -0
  5. package/alert-dialog/src/alert-dialog-root.directive.d.ts +9 -0
  6. package/alert-dialog/src/alert-dialog-title.directive.d.ts +5 -0
  7. package/alert-dialog/src/alert-dialog-trigger.directive.d.ts +7 -0
  8. package/alert-dialog/src/alert-dialog.service.d.ts +14 -0
  9. package/avatar/index.d.ts +3 -1
  10. package/avatar/src/avatar-fallback.directive.d.ts +10 -17
  11. package/avatar/src/avatar-image.directive.d.ts +10 -11
  12. package/avatar/src/avatar-root.directive.d.ts +21 -0
  13. package/avatar/src/avatar.config.d.ts +3 -2
  14. package/checkbox/src/checkbox.directive.d.ts +2 -1
  15. package/collapsible/README.md +1 -0
  16. package/collapsible/index.d.ts +3 -0
  17. package/collapsible/src/collapsible-content.directive.d.ts +11 -0
  18. package/collapsible/src/collapsible-root.directive.d.ts +52 -0
  19. package/collapsible/src/collapsible-trigger.directive.d.ts +26 -0
  20. package/esm2022/alert-dialog/index.mjs +7 -0
  21. package/esm2022/alert-dialog/radix-ng-primitives-alert-dialog.mjs +5 -0
  22. package/esm2022/alert-dialog/src/alert-dialog-cancel.directive.mjs +24 -0
  23. package/esm2022/alert-dialog/src/alert-dialog-content.directive.mjs +26 -0
  24. package/esm2022/alert-dialog/src/alert-dialog-root.directive.mjs +24 -0
  25. package/esm2022/alert-dialog/src/alert-dialog-title.directive.mjs +14 -0
  26. package/esm2022/alert-dialog/src/alert-dialog-trigger.directive.mjs +24 -0
  27. package/esm2022/alert-dialog/src/alert-dialog.service.mjs +45 -0
  28. package/esm2022/avatar/index.mjs +2 -2
  29. package/esm2022/avatar/src/avatar-fallback.directive.mjs +23 -30
  30. package/esm2022/avatar/src/avatar-image.directive.mjs +29 -31
  31. package/esm2022/avatar/src/avatar-root.directive.mjs +38 -0
  32. package/esm2022/avatar/src/avatar.config.mjs +2 -2
  33. package/esm2022/checkbox/src/checkbox-indicator.directive.mjs +4 -4
  34. package/esm2022/checkbox/src/checkbox.directive.mjs +4 -4
  35. package/esm2022/collapsible/index.mjs +4 -0
  36. package/esm2022/collapsible/radix-ng-primitives-collapsible.mjs +5 -0
  37. package/esm2022/collapsible/src/collapsible-content.directive.mjs +26 -0
  38. package/esm2022/collapsible/src/collapsible-root.directive.mjs +114 -0
  39. package/esm2022/collapsible/src/collapsible-trigger.directive.mjs +49 -0
  40. package/esm2022/label/index.mjs +2 -2
  41. package/esm2022/label/src/label-root.directive.mjs +48 -0
  42. package/esm2022/progress/index.mjs +2 -2
  43. package/esm2022/progress/src/progress-indicator.directive.mjs +11 -10
  44. package/esm2022/progress/src/progress-root.directive.mjs +71 -0
  45. package/esm2022/radio/index.mjs +2 -4
  46. package/esm2022/radio/src/radio-indicator.directive.mjs +8 -13
  47. package/esm2022/radio/src/radio-item.directive.mjs +27 -42
  48. package/esm2022/radio/src/radio-root.directive.mjs +106 -0
  49. package/esm2022/roving-focus/index.mjs +1 -3
  50. package/esm2022/roving-focus/src/roving-focus-group.directive.mjs +9 -16
  51. package/esm2022/roving-focus/src/roving-focus-item.directive.mjs +21 -26
  52. package/esm2022/separator/src/separator.directive.mjs +12 -17
  53. package/esm2022/switch/index.mjs +2 -3
  54. package/esm2022/switch/src/switch-root.directive.mjs +74 -0
  55. package/esm2022/switch/src/switch-thumb.directive.mjs +10 -12
  56. package/esm2022/toggle/index.mjs +2 -2
  57. package/esm2022/toggle/src/toggle-root.directive.mjs +51 -0
  58. package/esm2022/toggle-group/src/toggle-group-button.directive.mjs +4 -4
  59. package/esm2022/toggle-group/src/toggle-group-multi.directive.mjs +4 -4
  60. package/esm2022/toggle-group/src/toggle-group.directive.mjs +4 -4
  61. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +150 -0
  62. package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -0
  63. package/fesm2022/radix-ng-primitives-avatar.mjs +79 -90
  64. package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
  65. package/fesm2022/radix-ng-primitives-checkbox.mjs +6 -6
  66. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  67. package/fesm2022/radix-ng-primitives-collapsible.mjs +190 -0
  68. package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -0
  69. package/fesm2022/radix-ng-primitives-label.mjs +20 -32
  70. package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
  71. package/fesm2022/radix-ng-primitives-progress.mjs +55 -49
  72. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
  73. package/fesm2022/radix-ng-primitives-radio.mjs +70 -100
  74. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
  75. package/fesm2022/radix-ng-primitives-roving-focus.mjs +19 -42
  76. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  77. package/fesm2022/radix-ng-primitives-separator.mjs +12 -17
  78. package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
  79. package/fesm2022/radix-ng-primitives-switch.mjs +49 -106
  80. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  81. package/fesm2022/radix-ng-primitives-toggle-group.mjs +9 -9
  82. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  83. package/fesm2022/radix-ng-primitives-toggle.mjs +15 -29
  84. package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
  85. package/label/index.d.ts +1 -1
  86. package/label/src/label-root.directive.d.ts +13 -0
  87. package/package.json +12 -19
  88. package/progress/index.d.ts +2 -1
  89. package/progress/src/progress-indicator.directive.d.ts +2 -2
  90. package/progress/src/progress-root.directive.d.ts +29 -0
  91. package/radio/index.d.ts +1 -3
  92. package/radio/src/radio-indicator.directive.d.ts +3 -9
  93. package/radio/src/radio-item.directive.d.ts +9 -28
  94. package/radio/src/{radio-group.directive.d.ts → radio-root.directive.d.ts} +24 -16
  95. package/roving-focus/index.d.ts +0 -2
  96. package/roving-focus/src/roving-focus-group.directive.d.ts +4 -6
  97. package/roving-focus/src/roving-focus-item.directive.d.ts +6 -8
  98. package/separator/src/separator.directive.d.ts +14 -8
  99. package/switch/index.d.ts +2 -2
  100. package/switch/src/switch-root.directive.d.ts +35 -0
  101. package/switch/src/switch-thumb.directive.d.ts +2 -5
  102. package/toggle/index.d.ts +2 -1
  103. package/toggle/src/toggle-root.directive.d.ts +32 -0
  104. package/toggle-group/src/toggle-group-multi.directive.d.ts +1 -1
  105. package/toggle-group/src/toggle-group.directive.d.ts +1 -1
  106. package/accordion/README.md +0 -3
  107. package/accordion/index.d.ts +0 -7
  108. package/accordion/src/accordion/accordion.directive.d.ts +0 -64
  109. package/accordion/src/accordion/accordion.token.d.ts +0 -4
  110. package/accordion/src/accordion-content/accordion-content.directive.d.ts +0 -44
  111. package/accordion/src/accordion-header/accordion-header.directive.d.ts +0 -6
  112. package/accordion/src/accordion-item/accordion-item.directive.d.ts +0 -42
  113. package/accordion/src/accordion-item/accordion-item.token.d.ts +0 -4
  114. package/accordion/src/accordion-state.directive.d.ts +0 -28
  115. package/accordion/src/accordion-trigger/accordion-trigger.directive.d.ts +0 -23
  116. package/accordion/src/accordion.config.d.ts +0 -25
  117. package/avatar/src/avatar.directive.d.ts +0 -22
  118. package/avatar/src/avatar.token.d.ts +0 -4
  119. package/esm2022/accordion/index.mjs +0 -8
  120. package/esm2022/accordion/radix-ng-primitives-accordion.mjs +0 -5
  121. package/esm2022/accordion/src/accordion/accordion.directive.mjs +0 -108
  122. package/esm2022/accordion/src/accordion/accordion.token.mjs +0 -6
  123. package/esm2022/accordion/src/accordion-content/accordion-content.directive.mjs +0 -75
  124. package/esm2022/accordion/src/accordion-header/accordion-header.directive.mjs +0 -17
  125. package/esm2022/accordion/src/accordion-item/accordion-item.directive.mjs +0 -81
  126. package/esm2022/accordion/src/accordion-item/accordion-item.token.mjs +0 -6
  127. package/esm2022/accordion/src/accordion-state.directive.mjs +0 -49
  128. package/esm2022/accordion/src/accordion-trigger/accordion-trigger.directive.mjs +0 -49
  129. package/esm2022/accordion/src/accordion.config.mjs +0 -27
  130. package/esm2022/avatar/src/avatar.directive.mjs +0 -38
  131. package/esm2022/avatar/src/avatar.token.mjs +0 -6
  132. package/esm2022/label/src/label.directive.mjs +0 -60
  133. package/esm2022/overlay/index.mjs +0 -5
  134. package/esm2022/overlay/radix-ng-primitives-overlay.mjs +0 -5
  135. package/esm2022/overlay/src/overlay-arrow.directive.mjs +0 -59
  136. package/esm2022/overlay/src/overlay-arrow.token.mjs +0 -3
  137. package/esm2022/overlay/src/overlay-trigger.directive.mjs +0 -279
  138. package/esm2022/overlay/src/overlay-trigger.token.mjs +0 -9
  139. package/esm2022/overlay/src/overlay.directive.mjs +0 -51
  140. package/esm2022/overlay/src/overlay.token.mjs +0 -3
  141. package/esm2022/progress/src/progress.directive.mjs +0 -62
  142. package/esm2022/progress/src/progress.token.mjs +0 -6
  143. package/esm2022/radio/src/radio-group.directive.mjs +0 -108
  144. package/esm2022/radio/src/radio-group.token.mjs +0 -6
  145. package/esm2022/radio/src/radio-item.token.mjs +0 -6
  146. package/esm2022/roving-focus/src/roving-focus-group.token.mjs +0 -9
  147. package/esm2022/roving-focus/src/roving-focus-item.token.mjs +0 -6
  148. package/esm2022/switch/src/switch.directive.mjs +0 -125
  149. package/esm2022/switch/src/switch.token.mjs +0 -6
  150. package/esm2022/toggle/src/toggle.directive.mjs +0 -65
  151. package/esm2022/visually-hidden/index.mjs +0 -2
  152. package/esm2022/visually-hidden/radix-ng-primitives-visually-hidden.mjs +0 -5
  153. package/esm2022/visually-hidden/src/visually-hidden.directive.mjs +0 -42
  154. package/fesm2022/radix-ng-primitives-accordion.mjs +0 -394
  155. package/fesm2022/radix-ng-primitives-accordion.mjs.map +0 -1
  156. package/fesm2022/radix-ng-primitives-overlay.mjs +0 -399
  157. package/fesm2022/radix-ng-primitives-overlay.mjs.map +0 -1
  158. package/fesm2022/radix-ng-primitives-visually-hidden.mjs +0 -49
  159. package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +0 -1
  160. package/label/src/label.directive.d.ts +0 -19
  161. package/overlay/README.md +0 -1
  162. package/overlay/index.d.ts +0 -4
  163. package/overlay/src/overlay-arrow.directive.d.ts +0 -29
  164. package/overlay/src/overlay-arrow.token.d.ts +0 -3
  165. package/overlay/src/overlay-trigger.directive.d.ts +0 -163
  166. package/overlay/src/overlay-trigger.token.d.ts +0 -7
  167. package/overlay/src/overlay.directive.d.ts +0 -29
  168. package/overlay/src/overlay.token.d.ts +0 -3
  169. package/progress/src/progress.directive.d.ts +0 -26
  170. package/progress/src/progress.token.d.ts +0 -4
  171. package/radio/src/radio-group.token.d.ts +0 -4
  172. package/radio/src/radio-item.token.d.ts +0 -4
  173. package/roving-focus/src/roving-focus-group.token.d.ts +0 -7
  174. package/roving-focus/src/roving-focus-item.token.d.ts +0 -4
  175. package/switch/src/switch.directive.d.ts +0 -73
  176. package/switch/src/switch.token.d.ts +0 -4
  177. package/toggle/src/toggle.directive.d.ts +0 -30
  178. package/visually-hidden/README.md +0 -3
  179. package/visually-hidden/index.d.ts +0 -1
  180. package/visually-hidden/src/visually-hidden.directive.d.ts +0 -11
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-avatar.mjs","sources":["../../../packages/primitives/avatar/src/avatar.config.ts","../../../packages/primitives/avatar/src/avatar.token.ts","../../../packages/primitives/avatar/src/avatar.directive.ts","../../../packages/primitives/avatar/src/avatar-fallback.directive.ts","../../../packages/primitives/avatar/src/avatar-image.directive.ts","../../../packages/primitives/avatar/radix-ng-primitives-avatar.ts"],"sourcesContent":["import { inject, InjectionToken, Provider } from '@angular/core';\n\nexport interface RdxAvatarConfig {\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: RdxAvatarConfig = {\n delay: 0\n};\n\nexport const RdxAvatarConfigToken = new InjectionToken<RdxAvatarConfig>('RdxAvatarConfigToken');\n\nexport function provideRdxAvatarConfig(config: Partial<RdxAvatarConfig>): Provider[] {\n return [\n {\n provide: RdxAvatarConfigToken,\n useValue: { ...defaultAvatarConfig, ...config }\n }\n ];\n}\n\nexport function injectAvatarConfig(): RdxAvatarConfig {\n return inject(RdxAvatarConfigToken, { optional: true }) ?? defaultAvatarConfig;\n}\n","import { inject, InjectionToken } from '@angular/core';\n\nimport type { RdxAvatarDirective } from './avatar.directive';\n\nexport const RdxAvatarToken = new InjectionToken<RdxAvatarDirective>('RdxAvatarToken');\n\nexport function injectAvatar(): RdxAvatarDirective {\n return inject(RdxAvatarToken);\n}\n","import { Directive } from '@angular/core';\n\nimport { RdxAvatarToken } from './avatar.token';\n\n@Directive({\n selector: '[rdxAvatar]',\n standalone: true,\n providers: [{ provide: RdxAvatarToken, useExisting: RdxAvatarDirective }]\n})\nexport class RdxAvatarDirective {\n /**\n * Store the current state of the avatar.\n * @internal\n */\n state: RdxAvatarState = RdxAvatarState.Idle;\n\n /**\n * Set the avatar state.\n * @param state The state to set.\n * @internal\n */\n setState(state: RdxAvatarState): void {\n this.state = state;\n }\n}\n\nexport enum RdxAvatarState {\n Idle,\n Loading,\n Loaded,\n Error\n}\n","import { Directive, Input, numberAttribute, OnDestroy, OnInit } from '@angular/core';\n\nimport { injectAvatarConfig } from './avatar.config';\nimport { RdxAvatarState } from './avatar.directive';\nimport { injectAvatar } from './avatar.token';\n\n@Directive({\n selector: '[rdxAvatarFallback]',\n standalone: true,\n host: {\n '[style.display]': 'visible ? null : \"none\"'\n }\n})\nexport class RdxAvatarFallbackDirective implements OnInit, OnDestroy {\n /**\n * Access the avatar\n */\n private readonly avatar = injectAvatar();\n\n /**\n * Access the global configuration.\n */\n private readonly config = injectAvatarConfig();\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 @Input({ alias: 'rdxAvatarFallbackDelay', transform: numberAttribute }) delay: number =\n this.config.delay;\n\n /**\n * Determine if this element should be hidden.\n */\n protected get visible(): boolean {\n // we need to check if the element can render and if the avatar is not in a loaded state\n return this.delayElapsed && this.avatar.state !== RdxAvatarState.Loaded;\n }\n\n /**\n * Determine the delay has elapsed, and we can show the fallback.\n */\n private delayElapsed = false;\n\n /**\n * Store the timeout id.\n */\n private timeoutId: number | null = null;\n\n ngOnInit(): void {\n this.timeoutId = window.setTimeout(() => (this.delayElapsed = true), this.delay);\n }\n\n ngOnDestroy(): void {\n if (this.timeoutId) {\n window.clearTimeout(this.timeoutId);\n }\n }\n}\n","import { Directive, ElementRef, HostListener, inject, OnInit } from '@angular/core';\n\nimport { RdxAvatarState } from './avatar.directive';\nimport { injectAvatar } from './avatar.token';\n\n@Directive({\n selector: 'img[rdxAvatarImage]',\n standalone: true\n})\nexport class RdxAvatarImageDirective implements OnInit {\n /**\n * Access the avatar\n */\n private readonly avatar = injectAvatar();\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.avatar.setState(RdxAvatarState.Loading);\n\n // if there is no src, we can report this as an error\n if (!this.elementRef.nativeElement.src) {\n this.avatar.setState(RdxAvatarState.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.avatar.setState(RdxAvatarState.Loaded);\n }\n }\n\n @HostListener('load')\n protected onLoad(): void {\n this.avatar.setState(RdxAvatarState.Loaded);\n }\n\n @HostListener('error')\n protected onError(): void {\n this.avatar.setState(RdxAvatarState.Error);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"radix-ng-primitives-avatar.mjs","sources":["../../../packages/primitives/avatar/src/avatar-root.directive.ts","../../../packages/primitives/avatar/src/avatar.config.ts","../../../packages/primitives/avatar/src/avatar-fallback.directive.ts","../../../packages/primitives/avatar/src/avatar-image.directive.ts","../../../packages/primitives/avatar/radix-ng-primitives-avatar.ts"],"sourcesContent":["import { Directive, inject, InjectionToken, signal } from '@angular/core';\n\nconst RdxAvatarToken = new InjectionToken<RdxAvatarRootDirective>('RdxAvatarToken');\n\nexport function injectAvatar(): RdxAvatarRootDirective {\n return inject(RdxAvatarToken);\n}\n\nexport type ImageLoadingStatus = 'idle' | 'loading' | 'loaded' | 'error';\n\n@Directive({\n selector: 'span[AvatarRoot]',\n exportAs: 'AvatarRoot',\n standalone: true,\n providers: [{ provide: RdxAvatarToken, useExisting: RdxAvatarRootDirective }]\n})\nexport class RdxAvatarRootDirective {\n /**\n * A readonly signal property that holds the current state of image loading.\n * To set a new status, use the `setState` method of the component.\n * @internal\n */\n readonly _state = signal<ImageLoadingStatus>('idle');\n\n /**\n * Set the avatar state.\n * @param state The new image loading status to set. This value should be one of the predefined states\n * in the `ImageLoadingStatus`\n * @returns void This method does not return a value.\n * @internal\n */\n _setState(state: ImageLoadingStatus): void {\n this._state.set(state);\n }\n}\n","import { inject, InjectionToken, Provider } from '@angular/core';\n\nexport interface RdxAvatarConfig {\n /**\n * Define a delay before the fallback is shown.\n * This is useful to only show the fallback for those with slower connections.\n * @default 0\n */\n delayMs: number;\n}\n\nexport const defaultAvatarConfig: RdxAvatarConfig = {\n delayMs: 0\n};\n\nexport const RdxAvatarConfigToken = new InjectionToken<RdxAvatarConfig>('RdxAvatarConfigToken');\n\nexport function provideRdxAvatarConfig(config: Partial<RdxAvatarConfig>): Provider[] {\n return [\n {\n provide: RdxAvatarConfigToken,\n useValue: { ...defaultAvatarConfig, ...config }\n }\n ];\n}\n\nexport function injectAvatarConfig(): RdxAvatarConfig {\n return inject(RdxAvatarConfigToken, { optional: true }) ?? defaultAvatarConfig;\n}\n","import {\n Directive,\n inject,\n Input,\n NgZone,\n numberAttribute,\n OnDestroy,\n OnInit\n} from '@angular/core';\n\nimport { injectAvatar } from './avatar-root.directive';\nimport { injectAvatarConfig } from './avatar.config';\n\nexport interface AvatarFallbackProps {\n delayMs?: number;\n}\n\n@Directive({\n selector: 'span[AvatarFallback]',\n exportAs: 'AvatarFallback',\n standalone: true,\n host: {\n '[style.display]': 'visible ? null : \"none\"'\n }\n})\nexport class RdxAvatarFallbackDirective implements AvatarFallbackProps, OnInit, OnDestroy {\n private readonly avatar = injectAvatar();\n\n private readonly config = injectAvatarConfig();\n\n private readonly ngZone = inject(NgZone);\n\n /**\n * Define a delay before the fallback is shown.\n * This is useful to only show the fallback for those with slower connections.\n * @default 0\n */\n @Input({ alias: 'rdxDelayMs', transform: numberAttribute }) delayMs: number =\n this.config.delayMs;\n\n protected get visible(): boolean {\n return this.delayElapsed && this.avatar._state() !== 'loaded';\n }\n\n /**\n * Determine the delay has elapsed, and we can show the fallback.\n */\n private delayElapsed = false;\n\n private timeoutId: number | null = null;\n\n ngOnInit(): void {\n this.ngZone.runOutsideAngular(() => {\n this.timeoutId = window.setTimeout(() => (this.delayElapsed = true), this.delayMs);\n });\n }\n\n ngOnDestroy(): void {\n this.ngZone.run(() => {\n if (this.timeoutId) {\n window.clearTimeout(this.timeoutId);\n }\n });\n }\n}\n","import { Directive, ElementRef, EventEmitter, inject, OnInit, Output } from '@angular/core';\n\nimport { ImageLoadingStatus, injectAvatar } from './avatar-root.directive';\n\nexport interface AvatarImageProps {\n onLoadingStatusChange?: EventEmitter<ImageLoadingStatus>;\n}\n\n@Directive({\n selector: 'img[AvatarImage]',\n exportAs: 'AvatarImage',\n standalone: true,\n host: {\n '(load)': '_onLoad()',\n '(error)': '_onError()'\n }\n})\nexport class RdxAvatarImageDirective implements AvatarImageProps, OnInit {\n private readonly avatar = injectAvatar();\n\n private readonly elementRef = inject<ElementRef<HTMLImageElement>>(ElementRef);\n\n /* By default, it will only render when it has loaded.\n * You can use the `onLoadingStatusChange` handler if you need more control.\n */\n @Output() onLoadingStatusChange = new EventEmitter<ImageLoadingStatus>();\n\n ngOnInit(): void {\n this.avatar._setState('loading');\n\n if (!this.elementRef.nativeElement.src) {\n this.avatar._setState('error');\n }\n\n if (this.elementRef.nativeElement.complete) {\n this.avatar._setState('loaded');\n }\n\n this.onLoadingStatusChange.emit(this.avatar._state());\n }\n\n _onLoad(): void {\n this.avatar._setState('loaded');\n this.onLoadingStatusChange.emit('loaded');\n }\n\n _onError(): void {\n this.avatar._setState('error');\n this.onLoadingStatusChange.emit('error');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -11,10 +11,10 @@ class RdxCheckboxIndicatorDirective {
11
11
  constructor() {
12
12
  this.checkbox = injectCheckbox();
13
13
  }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxCheckboxIndicatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
15
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: RdxCheckboxIndicatorDirective, isStandalone: true, selector: "[rdxCheckboxIndicator]", host: { properties: { "style.pointer-events": "\"none\"", "attr.data-state": "checkbox.state", "attr.data-disabled": "checkbox.disabled ? \"\" : null" } }, ngImport: i0 }); }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdxCheckboxIndicatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
15
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: RdxCheckboxIndicatorDirective, isStandalone: true, selector: "[rdxCheckboxIndicator]", host: { properties: { "style.pointer-events": "\"none\"", "attr.data-state": "checkbox.state", "attr.data-disabled": "checkbox.disabled ? \"\" : null" } }, ngImport: i0 }); }
16
16
  }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxCheckboxIndicatorDirective, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdxCheckboxIndicatorDirective, decorators: [{
18
18
  type: Directive,
19
19
  args: [{
20
20
  selector: '[rdxCheckboxIndicator]',
@@ -110,13 +110,13 @@ class RdxCheckboxDirective {
110
110
  setDisabledState(isDisabled) {
111
111
  this.disabled = isDisabled;
112
112
  }
113
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxCheckboxDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
114
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.3", type: RdxCheckboxDirective, isStandalone: true, selector: "button[rdxCheckbox]", inputs: { checked: ["checked", "checked", booleanAttribute], indeterminate: ["indeterminate", "indeterminate", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { checkedChange: "checkedChange", indeterminateChange: "indeterminateChange" }, host: { attributes: { "type": "button", "role": "checkbox" }, listeners: { "keydown": "onKeydown($event)", "click": "onClick()", "blur": "onBlur()" }, properties: { "disabled": "disabled", "attr.aria-checked": "indeterminate ? \"mixed\" : checked", "attr.data-disabled": "disabled ? \"\" : null", "attr.data-state": "state" } }, providers: [
113
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdxCheckboxDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
114
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.11", type: RdxCheckboxDirective, isStandalone: true, selector: "button[rdxCheckbox]", inputs: { checked: ["checked", "checked", booleanAttribute], indeterminate: ["indeterminate", "indeterminate", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { checkedChange: "checkedChange", indeterminateChange: "indeterminateChange" }, host: { attributes: { "type": "button", "role": "checkbox" }, listeners: { "keydown": "onKeydown($event)", "click": "onClick()", "blur": "onBlur()" }, properties: { "disabled": "disabled", "attr.aria-checked": "indeterminate ? \"mixed\" : checked", "attr.data-disabled": "disabled ? \"\" : null", "attr.data-state": "state" } }, providers: [
115
115
  { provide: RdxCheckboxToken, useExisting: RdxCheckboxDirective },
116
116
  { provide: NG_VALUE_ACCESSOR, useExisting: RdxCheckboxDirective, multi: true }
117
117
  ], ngImport: i0 }); }
118
118
  }
119
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxCheckboxDirective, decorators: [{
119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdxCheckboxDirective, decorators: [{
120
120
  type: Directive,
121
121
  args: [{
122
122
  selector: 'button[rdxCheckbox]',
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-checkbox.mjs","sources":["../../../packages/primitives/checkbox/src/checkbox.token.ts","../../../packages/primitives/checkbox/src/checkbox-indicator.directive.ts","../../../packages/primitives/checkbox/src/checkbox.directive.ts","../../../packages/primitives/checkbox/radix-ng-primitives-checkbox.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\nimport type { RdxCheckboxDirective } from './checkbox.directive';\n\nexport const RdxCheckboxToken = new InjectionToken<RdxCheckboxDirective>('RdxCheckboxToken');\n\nexport function injectCheckbox(): RdxCheckboxDirective {\n return inject(RdxCheckboxToken);\n}\n","import { Directive } from '@angular/core';\n\nimport { injectCheckbox } from './checkbox.token';\n\n@Directive({\n selector: '[rdxCheckboxIndicator]',\n standalone: true,\n host: {\n '[style.pointer-events]': '\"none\"',\n '[attr.data-state]': 'checkbox.state',\n '[attr.data-disabled]': 'checkbox.disabled ? \"\" : null'\n }\n})\nexport class RdxCheckboxIndicatorDirective {\n protected readonly checkbox = injectCheckbox();\n}\n","import {\n booleanAttribute,\n Directive,\n EventEmitter,\n HostListener,\n Input,\n Output\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { RdxCheckboxToken } from './checkbox.token';\n\n@Directive({\n selector: 'button[rdxCheckbox]',\n standalone: true,\n providers: [\n { provide: RdxCheckboxToken, useExisting: RdxCheckboxDirective },\n { provide: NG_VALUE_ACCESSOR, useExisting: RdxCheckboxDirective, multi: true }\n ],\n host: {\n type: 'button',\n role: 'checkbox',\n '[disabled]': 'disabled',\n '[attr.aria-checked]': 'indeterminate ? \"mixed\" : checked',\n '[attr.data-disabled]': 'disabled ? \"\" : null',\n '[attr.data-state]': 'state'\n }\n})\nexport class RdxCheckboxDirective implements ControlValueAccessor {\n /**\n * Defines whether the checkbox is checked.\n */\n @Input({ transform: booleanAttribute }) checked = false;\n\n /**\n * Defines whether the checkbox is indeterminate.\n */\n @Input({ transform: booleanAttribute })\n indeterminate = false;\n\n /**\n * Defines whether the checkbox is disabled.\n */\n @Input({ transform: booleanAttribute }) disabled = false;\n\n /**\n * Event emitted when the checkbox checked state changes.\n */\n @Output() readonly checkedChange = new EventEmitter<boolean>();\n\n /**\n * Event emitted when the indeterminate state changes.\n */\n @Output() readonly indeterminateChange = new EventEmitter<boolean>();\n\n /**\n * Determine the state\n */\n get state(): 'checked' | 'unchecked' | 'indeterminate' {\n if (this.indeterminate) {\n return 'indeterminate';\n }\n return this.checked ? 'checked' : 'unchecked';\n }\n\n /**\n * Store the callback function that should be called when the checkbox checked state changes.\n * @internal\n */\n private onChange?: (checked: boolean) => void;\n\n /**\n * Store the callback function that should be called when the checkbox is blurred.\n * @internal\n */\n private onTouched?: () => void;\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n // According to WAI ARIA, Checkboxes don't activate on enter keypress\n if (event.key === 'Enter') {\n event.preventDefault();\n }\n }\n\n @HostListener('click')\n onClick(): void {\n this.checked = this.indeterminate ? true : !this.checked;\n this.checkedChange.emit(this.checked);\n this.onChange?.(this.checked);\n\n // if the checkbox was indeterminate, it isn't anymore\n if (this.indeterminate) {\n this.indeterminate = false;\n this.indeterminateChange.emit(this.indeterminate);\n }\n }\n\n @HostListener('blur')\n onBlur(): void {\n this.onTouched?.();\n }\n\n /**\n * Sets the checked state of the checkbox.\n * @param checked The checked state of the checkbox.\n * @internal\n */\n writeValue(checked: boolean): void {\n this.checked = checked;\n }\n\n /**\n * Registers a callback function that should be called when the checkbox checked state changes.\n * @param fn The callback function.\n * @internal\n */\n registerOnChange(fn: (checked: boolean) => void): void {\n this.onChange = fn;\n }\n\n /**\n * Registers a callback function that should be called when the checkbox is blurred.\n * @param fn The callback function.\n * @internal\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the checkbox.\n * @param isDisabled The disabled state of the checkbox.\n * @internal\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"radix-ng-primitives-checkbox.mjs","sources":["../../../packages/primitives/checkbox/src/checkbox.token.ts","../../../packages/primitives/checkbox/src/checkbox-indicator.directive.ts","../../../packages/primitives/checkbox/src/checkbox.directive.ts","../../../packages/primitives/checkbox/radix-ng-primitives-checkbox.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\nimport type { RdxCheckboxDirective } from './checkbox.directive';\n\nexport const RdxCheckboxToken = new InjectionToken<RdxCheckboxDirective>('RdxCheckboxToken');\n\nexport function injectCheckbox(): RdxCheckboxDirective {\n return inject(RdxCheckboxToken);\n}\n","import { Directive } from '@angular/core';\n\nimport { injectCheckbox } from './checkbox.token';\n\n@Directive({\n selector: '[rdxCheckboxIndicator]',\n standalone: true,\n host: {\n '[style.pointer-events]': '\"none\"',\n '[attr.data-state]': 'checkbox.state',\n '[attr.data-disabled]': 'checkbox.disabled ? \"\" : null'\n }\n})\nexport class RdxCheckboxIndicatorDirective {\n protected readonly checkbox = injectCheckbox();\n}\n","import {\n booleanAttribute,\n Directive,\n EventEmitter,\n HostListener,\n Input,\n Output\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { RdxCheckboxToken } from './checkbox.token';\n\nexport type CheckboxState = 'unchecked' | 'checked' | 'indeterminate';\n\n@Directive({\n selector: 'button[rdxCheckbox]',\n standalone: true,\n providers: [\n { provide: RdxCheckboxToken, useExisting: RdxCheckboxDirective },\n { provide: NG_VALUE_ACCESSOR, useExisting: RdxCheckboxDirective, multi: true }\n ],\n host: {\n type: 'button',\n role: 'checkbox',\n '[disabled]': 'disabled',\n '[attr.aria-checked]': 'indeterminate ? \"mixed\" : checked',\n '[attr.data-disabled]': 'disabled ? \"\" : null',\n '[attr.data-state]': 'state'\n }\n})\nexport class RdxCheckboxDirective implements ControlValueAccessor {\n /**\n * Defines whether the checkbox is checked.\n */\n @Input({ transform: booleanAttribute }) checked = false;\n\n /**\n * Defines whether the checkbox is indeterminate.\n */\n @Input({ transform: booleanAttribute })\n indeterminate = false;\n\n /**\n * Defines whether the checkbox is disabled.\n */\n @Input({ transform: booleanAttribute }) disabled = false;\n\n /**\n * Event emitted when the checkbox checked state changes.\n */\n @Output() readonly checkedChange = new EventEmitter<boolean>();\n\n /**\n * Event emitted when the indeterminate state changes.\n */\n @Output() readonly indeterminateChange = new EventEmitter<boolean>();\n\n /**\n * Determine the state\n */\n get state(): CheckboxState {\n if (this.indeterminate) {\n return 'indeterminate';\n }\n return this.checked ? 'checked' : 'unchecked';\n }\n\n /**\n * Store the callback function that should be called when the checkbox checked state changes.\n * @internal\n */\n private onChange?: (checked: boolean) => void;\n\n /**\n * Store the callback function that should be called when the checkbox is blurred.\n * @internal\n */\n private onTouched?: () => void;\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n // According to WAI ARIA, Checkboxes don't activate on enter keypress\n if (event.key === 'Enter') {\n event.preventDefault();\n }\n }\n\n @HostListener('click')\n onClick(): void {\n this.checked = this.indeterminate ? true : !this.checked;\n this.checkedChange.emit(this.checked);\n this.onChange?.(this.checked);\n\n // if the checkbox was indeterminate, it isn't anymore\n if (this.indeterminate) {\n this.indeterminate = false;\n this.indeterminateChange.emit(this.indeterminate);\n }\n }\n\n @HostListener('blur')\n onBlur(): void {\n this.onTouched?.();\n }\n\n /**\n * Sets the checked state of the checkbox.\n * @param checked The checked state of the checkbox.\n * @internal\n */\n writeValue(checked: boolean): void {\n this.checked = checked;\n }\n\n /**\n * Registers a callback function that should be called when the checkbox checked state changes.\n * @param fn The callback function.\n * @internal\n */\n registerOnChange(fn: (checked: boolean) => void): void {\n this.onChange = fn;\n }\n\n /**\n * Registers a callback function that should be called when the checkbox is blurred.\n * @param fn The callback function.\n * @internal\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the checkbox.\n * @param isDisabled The disabled state of the checkbox.\n * @internal\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAIa,gBAAgB,GAAG,IAAI,cAAc,CAAuB,kBAAkB,EAAE;SAE7E,cAAc,GAAA;AAC1B,IAAA,OAAO,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACpC;;MCKa,6BAA6B,CAAA;AAT1C,IAAA,WAAA,GAAA;QAUuB,IAAQ,CAAA,QAAA,GAAG,cAAc,EAAE,CAAC;AAClD,KAAA;+GAFY,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBATzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACF,wBAAA,wBAAwB,EAAE,QAAQ;AAClC,wBAAA,mBAAmB,EAAE,gBAAgB;AACrC,wBAAA,sBAAsB,EAAE,+BAA+B;AAC1D,qBAAA;AACJ,iBAAA,CAAA;;;MCkBY,oBAAoB,CAAA;AAhBjC,IAAA,WAAA,GAAA;AAiBI;;AAEG;QACqC,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAExD;;AAEG;QAEH,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAEtB;;AAEG;QACqC,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAEzD;;AAEG;AACgB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW,CAAC;AAE/D;;AAEG;AACgB,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAW,CAAC;AAqFxE,KAAA;AAnFG;;AAEG;AACH,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,OAAO,eAAe,CAAC;SAC1B;QACD,OAAO,IAAI,CAAC,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC;KACjD;AAeD,IAAA,SAAS,CAAC,KAAoB,EAAA;;AAE1B,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YACvB,KAAK,CAAC,cAAc,EAAE,CAAC;SAC1B;KACJ;IAGD,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;QACzD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;;AAG9B,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACrD;KACJ;IAGD,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC;KACtB;AAED;;;;AAIG;AACH,IAAA,UAAU,CAAC,OAAgB,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KAC1B;AAED;;;;AAIG;AACH,IAAA,gBAAgB,CAAC,EAA8B,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;AAED;;;;AAIG;AACH,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACvB;AAED;;;;AAIG;AACH,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;KAC9B;+GA7GQ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,iGAIT,gBAAgB,CAAA,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAKhB,gBAAgB,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAMhB,gBAAgB,CA5BzB,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,qCAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,oBAAoB,EAAE;YAChE,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE;AACjF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAUQ,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAhBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE;AACP,wBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,sBAAsB,EAAE;wBAChE,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE;AACjF,qBAAA;AACD,oBAAA,IAAI,EAAE;AACF,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,YAAY,EAAE,UAAU;AACxB,wBAAA,qBAAqB,EAAE,mCAAmC;AAC1D,wBAAA,sBAAsB,EAAE,sBAAsB;AAC9C,wBAAA,mBAAmB,EAAE,OAAO;AAC/B,qBAAA;AACJ,iBAAA,CAAA;8BAK2C,OAAO,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAMtC,aAAa,EAAA,CAAA;sBADZ,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAME,QAAQ,EAAA,CAAA;sBAA/C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAKnB,aAAa,EAAA,CAAA;sBAA/B,MAAM;gBAKY,mBAAmB,EAAA,CAAA;sBAArC,MAAM;gBAyBP,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;gBASnC,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,CAAA;gBAcrB,MAAM,EAAA,CAAA;sBADL,YAAY;uBAAC,MAAM,CAAA;;;ACpGxB;;AAEG;;;;"}
@@ -0,0 +1,190 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, ElementRef, Directive, contentChild, EventEmitter, Input, Output } from '@angular/core';
3
+ import { asyncScheduler } from 'rxjs';
4
+
5
+ const RdxCollapsibleContentToken = new InjectionToken('RdxCollapsibleContentToken');
6
+ class RdxCollapsibleContentDirective {
7
+ constructor() {
8
+ /**
9
+ * Reference to CollapsibleContent host element
10
+ */
11
+ this.elementRef = inject(ElementRef);
12
+ }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdxCollapsibleContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
14
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: RdxCollapsibleContentDirective, isStandalone: true, selector: "[CollapsibleContent]", providers: [
15
+ { provide: RdxCollapsibleContentToken, useExisting: RdxCollapsibleContentDirective }
16
+ ], ngImport: i0 }); }
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdxCollapsibleContentDirective, decorators: [{
19
+ type: Directive,
20
+ args: [{
21
+ selector: '[CollapsibleContent]',
22
+ standalone: true,
23
+ providers: [
24
+ { provide: RdxCollapsibleContentToken, useExisting: RdxCollapsibleContentDirective }
25
+ ]
26
+ }]
27
+ }] });
28
+
29
+ const RdxCollapsibleToken = new InjectionToken('RdxCollapsibleToken');
30
+ function injectCollapsible() {
31
+ return inject(RdxCollapsibleRootDirective);
32
+ }
33
+ class RdxCollapsibleRootDirective {
34
+ constructor() {
35
+ /**
36
+ * Reference to RdxCollapsibleContent directive
37
+ * @private
38
+ * @ignore
39
+ */
40
+ this.contentDirective = contentChild.required(RdxCollapsibleContentToken);
41
+ /**
42
+ * Stores collapsible state
43
+ * @private
44
+ * @ignore
45
+ */
46
+ this._open = false;
47
+ /**
48
+ * Determines whether a directive is available for interaction
49
+ */
50
+ this.disabled = false;
51
+ /**
52
+ * Emitted with new value when directive state changed
53
+ */
54
+ this.openChange = new EventEmitter();
55
+ }
56
+ /**
57
+ * Sets the state of the directive. `true` - expanded, `false` - collapsed
58
+ * @param {boolean} value
59
+ */
60
+ set open(value) {
61
+ if (value !== this._open) {
62
+ this.openChange.emit(value);
63
+ }
64
+ this._open = value;
65
+ this.setPresence();
66
+ }
67
+ /**
68
+ * Allows to change directive state
69
+ * @param {boolean | undefined} value
70
+ */
71
+ setOpen(value) {
72
+ if (this.disabled) {
73
+ return;
74
+ }
75
+ if (value === undefined) {
76
+ this.open = !this._open;
77
+ }
78
+ else {
79
+ this.open = value;
80
+ }
81
+ this.setPresence();
82
+ }
83
+ /**
84
+ * Returns directive state (open | closed)
85
+ */
86
+ getState() {
87
+ return this._open ? 'open' : 'closed';
88
+ }
89
+ /**
90
+ * Returns current directive state
91
+ */
92
+ isOpen() {
93
+ return this._open;
94
+ }
95
+ /**
96
+ * Controls visibility of content
97
+ * @private
98
+ * @ignore
99
+ */
100
+ setPresence() {
101
+ if (!this.contentDirective) {
102
+ return;
103
+ }
104
+ this.contentDirective().elementRef.nativeElement.setAttribute('data-state', this.getState());
105
+ if (this.isOpen()) {
106
+ this.contentDirective().elementRef.nativeElement.removeAttribute('hidden');
107
+ }
108
+ else {
109
+ asyncScheduler.schedule(() => {
110
+ const animations = this.contentDirective().elementRef.nativeElement.getAnimations();
111
+ if (animations === undefined || animations.length === 0) {
112
+ this.contentDirective().elementRef.nativeElement.setAttribute('hidden', '');
113
+ }
114
+ });
115
+ }
116
+ }
117
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdxCollapsibleRootDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
118
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "17.3.11", type: RdxCollapsibleRootDirective, isStandalone: true, selector: "[CollapsibleRoot]", inputs: { disabled: "disabled", open: "open" }, outputs: { openChange: "openChange" }, host: { properties: { "attr.data-state": "getState()" } }, providers: [{ provide: RdxCollapsibleToken, useExisting: RdxCollapsibleRootDirective }], queries: [{ propertyName: "contentDirective", first: true, predicate: RdxCollapsibleContentToken, descendants: true, isSignal: true }], exportAs: ["collapsibleRoot"], ngImport: i0 }); }
119
+ }
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdxCollapsibleRootDirective, decorators: [{
121
+ type: Directive,
122
+ args: [{
123
+ selector: '[CollapsibleRoot]',
124
+ standalone: true,
125
+ exportAs: 'collapsibleRoot',
126
+ providers: [{ provide: RdxCollapsibleToken, useExisting: RdxCollapsibleRootDirective }],
127
+ host: {
128
+ '[attr.data-state]': 'getState()'
129
+ }
130
+ }]
131
+ }], propDecorators: { disabled: [{
132
+ type: Input
133
+ }], open: [{
134
+ type: Input
135
+ }], openChange: [{
136
+ type: Output
137
+ }] } });
138
+
139
+ class RdxCollapsibleTriggerDirective {
140
+ constructor() {
141
+ /**
142
+ * Reference to CollapsibleRoot
143
+ * @private
144
+ * @ignore
145
+ */
146
+ this.collapsible = injectCollapsible();
147
+ }
148
+ /**
149
+ * Called on trigger clicked
150
+ */
151
+ onOpenToggle() {
152
+ this.collapsible.setOpen();
153
+ }
154
+ /**
155
+ * Returns current directive state (open | closed)
156
+ * @ignore
157
+ */
158
+ getState() {
159
+ return this.collapsible.getState();
160
+ }
161
+ /**
162
+ * Returns current trigger state
163
+ * @ignore
164
+ */
165
+ getDisabled() {
166
+ return this.collapsible.disabled ? 'disabled' : undefined;
167
+ }
168
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdxCollapsibleTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
169
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: RdxCollapsibleTriggerDirective, isStandalone: true, selector: "[CollapsibleTrigger]", host: { listeners: { "click": "onOpenToggle()" }, properties: { "attr.data-state": "getState()", "attr.aria-expanded": "getState() === \"open\" ? \"true\" : \"false\"", "disabled": "getDisabled()" } }, ngImport: i0 }); }
170
+ }
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdxCollapsibleTriggerDirective, decorators: [{
172
+ type: Directive,
173
+ args: [{
174
+ selector: '[CollapsibleTrigger]',
175
+ standalone: true,
176
+ host: {
177
+ '(click)': 'onOpenToggle()',
178
+ '[attr.data-state]': 'getState()',
179
+ '[attr.aria-expanded]': 'getState() === "open" ? "true" : "false"',
180
+ '[disabled]': 'getDisabled()'
181
+ }
182
+ }]
183
+ }] });
184
+
185
+ /**
186
+ * Generated bundle index. Do not edit.
187
+ */
188
+
189
+ export { RdxCollapsibleContentDirective, RdxCollapsibleContentToken, RdxCollapsibleRootDirective, RdxCollapsibleTriggerDirective, injectCollapsible };
190
+ //# sourceMappingURL=radix-ng-primitives-collapsible.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radix-ng-primitives-collapsible.mjs","sources":["../../../packages/primitives/collapsible/src/collapsible-content.directive.ts","../../../packages/primitives/collapsible/src/collapsible-root.directive.ts","../../../packages/primitives/collapsible/src/collapsible-trigger.directive.ts","../../../packages/primitives/collapsible/radix-ng-primitives-collapsible.ts"],"sourcesContent":["import { Directive, ElementRef, inject, InjectionToken } from '@angular/core';\n\nexport const RdxCollapsibleContentToken = new InjectionToken<RdxCollapsibleContentDirective>(\n 'RdxCollapsibleContentToken'\n);\n\n@Directive({\n selector: '[CollapsibleContent]',\n standalone: true,\n providers: [\n { provide: RdxCollapsibleContentToken, useExisting: RdxCollapsibleContentDirective }\n ]\n})\nexport class RdxCollapsibleContentDirective {\n /**\n * Reference to CollapsibleContent host element\n */\n elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n}\n","import {\n contentChild,\n Directive,\n EventEmitter,\n inject,\n InjectionToken,\n Input,\n Output\n} from '@angular/core';\nimport { asyncScheduler } from 'rxjs';\n\nimport { RdxCollapsibleContentToken } from './collapsible-content.directive';\n\nconst RdxCollapsibleToken = new InjectionToken<RdxCollapsibleRootDirective>('RdxCollapsibleToken');\n\nexport function injectCollapsible(): RdxCollapsibleRootDirective {\n return inject(RdxCollapsibleRootDirective);\n}\n\nexport type RdxCollapsibleState = 'open' | 'closed';\n\n@Directive({\n selector: '[CollapsibleRoot]',\n standalone: true,\n exportAs: 'collapsibleRoot',\n providers: [{ provide: RdxCollapsibleToken, useExisting: RdxCollapsibleRootDirective }],\n host: {\n '[attr.data-state]': 'getState()'\n }\n})\nexport class RdxCollapsibleRootDirective {\n /**\n * Reference to RdxCollapsibleContent directive\n * @private\n * @ignore\n */\n private readonly contentDirective = contentChild.required(RdxCollapsibleContentToken);\n\n /**\n * Stores collapsible state\n * @private\n * @ignore\n */\n private _open = false;\n\n /**\n * Determines whether a directive is available for interaction\n */\n @Input() disabled = false;\n\n /**\n * Sets the state of the directive. `true` - expanded, `false` - collapsed\n * @param {boolean} value\n */\n @Input() set open(value: boolean) {\n if (value !== this._open) {\n this.openChange.emit(value);\n }\n\n this._open = value;\n this.setPresence();\n }\n\n /**\n * Emitted with new value when directive state changed\n */\n @Output() openChange = new EventEmitter<boolean>();\n\n /**\n * Allows to change directive state\n * @param {boolean | undefined} value\n */\n setOpen(value?: boolean) {\n if (this.disabled) {\n return;\n }\n\n if (value === undefined) {\n this.open = !this._open;\n } else {\n this.open = value;\n }\n\n this.setPresence();\n }\n\n /**\n * Returns directive state (open | closed)\n */\n getState(): RdxCollapsibleState {\n return this._open ? 'open' : 'closed';\n }\n\n /**\n * Returns current directive state\n */\n isOpen(): boolean {\n return this._open;\n }\n\n /**\n * Controls visibility of content\n * @private\n * @ignore\n */\n private setPresence(): void {\n if (!this.contentDirective) {\n return;\n }\n\n this.contentDirective().elementRef.nativeElement.setAttribute(\n 'data-state',\n this.getState()\n );\n\n if (this.isOpen()) {\n this.contentDirective().elementRef.nativeElement.removeAttribute('hidden');\n } else {\n asyncScheduler.schedule(() => {\n const animations = this.contentDirective().elementRef.nativeElement.getAnimations();\n\n if (animations === undefined || animations.length === 0) {\n this.contentDirective().elementRef.nativeElement.setAttribute('hidden', '');\n }\n });\n }\n }\n}\n","import { Directive } from '@angular/core';\n\nimport { injectCollapsible, RdxCollapsibleState } from './collapsible-root.directive';\n\n@Directive({\n selector: '[CollapsibleTrigger]',\n standalone: true,\n host: {\n '(click)': 'onOpenToggle()',\n '[attr.data-state]': 'getState()',\n '[attr.aria-expanded]': 'getState() === \"open\" ? \"true\" : \"false\"',\n '[disabled]': 'getDisabled()'\n }\n})\nexport class RdxCollapsibleTriggerDirective {\n /**\n * Reference to CollapsibleRoot\n * @private\n * @ignore\n */\n private readonly collapsible = injectCollapsible();\n\n /**\n * Called on trigger clicked\n */\n onOpenToggle(): void {\n this.collapsible.setOpen();\n }\n\n /**\n * Returns current directive state (open | closed)\n * @ignore\n */\n getState(): RdxCollapsibleState {\n return this.collapsible.getState();\n }\n\n /**\n * Returns current trigger state\n * @ignore\n */\n getDisabled(): string | undefined {\n return this.collapsible.disabled ? 'disabled' : undefined;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,25 +1,16 @@
1
1
  import * as i0 from '@angular/core';
2
- import { signal, Directive, Optional, Input, HostListener } from '@angular/core';
2
+ import { input, inject, ElementRef, Directive, Input } from '@angular/core';
3
3
 
4
- // Increasing integer for generating unique ids.
5
- let nextUniqueId = 0;
6
- class RdxLabelDirective {
7
- /** The HTML id of the Label. */
8
- set id(id) {
9
- this._id.set(id || this._id());
10
- }
11
- get id() {
12
- return this._id();
13
- }
14
- constructor(el) {
15
- this.el = el;
16
- /** The HTML id attribute applied to this element. */
17
- this._id = signal(`rdx-label-${nextUniqueId++}`);
4
+ let idIterator = 0;
5
+ class RdxLabelRootDirective {
6
+ constructor() {
7
+ this.id = `rdx-label-${idIterator++}`;
18
8
  /**
19
9
  * The id of the element the label is associated with.
20
10
  * @default '-'
21
11
  */
22
- this.htmlFor = '';
12
+ this.htmlFor = input('');
13
+ this.elementRef = inject((ElementRef));
23
14
  }
24
15
  // prevent text selection when double-clicking label
25
16
  // The main problem with double-clicks in a web app is that
@@ -31,37 +22,34 @@ class RdxLabelDirective {
31
22
  return;
32
23
  }
33
24
  // prevent text selection when double-clicking label
34
- if (this.el.nativeElement.contains(target) && !event.defaultPrevented && event.detail > 1) {
25
+ if (this.elementRef.nativeElement.contains(target) &&
26
+ !event.defaultPrevented &&
27
+ event.detail > 1) {
35
28
  event.preventDefault();
36
29
  }
37
30
  }
38
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxLabelDirective, deps: [{ token: i0.ElementRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
39
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: RdxLabelDirective, isStandalone: true, selector: "label[rdxLabel]", inputs: { htmlFor: "htmlFor", id: "id" }, host: { listeners: { "mousedown": "onMouseDown($event)" }, properties: { "id": "_id()", "attr.for": "htmlFor ? htmlFor : null" } }, ngImport: i0 }); }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdxLabelRootDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
32
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.11", type: RdxLabelRootDirective, isStandalone: true, selector: "label[LabelRoot]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: false, isRequired: false, transformFunction: null }, htmlFor: { classPropertyName: "htmlFor", publicName: "htmlFor", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mousedown": "onMouseDown($event)" }, properties: { "attr.id": "this.id", "attr.for": "htmlFor ? htmlFor() : null" } }, exportAs: ["LabelRoot"], ngImport: i0 }); }
40
33
  }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxLabelDirective, decorators: [{
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdxLabelRootDirective, decorators: [{
42
35
  type: Directive,
43
36
  args: [{
44
- selector: 'label[rdxLabel]',
37
+ selector: 'label[LabelRoot]',
38
+ exportAs: 'LabelRoot',
45
39
  standalone: true,
46
40
  host: {
47
- '[id]': '_id()',
48
- '[attr.for]': 'htmlFor ? htmlFor : null'
41
+ '[attr.id]': 'this.id',
42
+ '[attr.for]': 'htmlFor ? htmlFor() : null',
43
+ '(mousedown)': 'onMouseDown($event)'
49
44
  }
50
45
  }]
51
- }], ctorParameters: () => [{ type: i0.ElementRef, decorators: [{
52
- type: Optional
53
- }] }], propDecorators: { htmlFor: [{
54
- type: Input
55
- }], id: [{
46
+ }], propDecorators: { id: [{
56
47
  type: Input
57
- }], onMouseDown: [{
58
- type: HostListener,
59
- args: ['mousedown', ['$event']]
60
48
  }] } });
61
49
 
62
50
  /**
63
51
  * Generated bundle index. Do not edit.
64
52
  */
65
53
 
66
- export { RdxLabelDirective };
54
+ export { RdxLabelRootDirective };
67
55
  //# sourceMappingURL=radix-ng-primitives-label.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-label.mjs","sources":["../../../packages/primitives/label/src/label.directive.ts","../../../packages/primitives/label/radix-ng-primitives-label.ts"],"sourcesContent":["import { Directive, ElementRef, HostListener, Input, Optional, signal } from '@angular/core';\n\n// Increasing integer for generating unique ids.\nlet nextUniqueId = 0;\n\n@Directive({\n selector: 'label[rdxLabel]',\n standalone: true,\n host: {\n '[id]': '_id()',\n '[attr.for]': 'htmlFor ? htmlFor : null'\n }\n})\nexport class RdxLabelDirective {\n /** The HTML id attribute applied to this element. */\n protected readonly _id = signal(`rdx-label-${nextUniqueId++}`);\n\n /**\n * The id of the element the label is associated with.\n * @default '-'\n */\n @Input() htmlFor = '';\n\n /** The HTML id of the Label. */\n @Input()\n set id(id: string) {\n this._id.set(id || this._id());\n }\n\n get id() {\n return this._id();\n }\n\n constructor(@Optional() private el: ElementRef) {}\n\n // prevent text selection when double-clicking label\n // The main problem with double-clicks in a web app is that\n // you will have to create special code to handle this on touch enabled devices.\n @HostListener('mousedown', ['$event'])\n onMouseDown(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n\n // only prevent text selection if clicking inside the label itself\n if (['BUTTON', 'INPUT', 'SELECT', 'TEXTAREA'].includes(target.tagName)) {\n return;\n }\n\n // prevent text selection when double-clicking label\n if (this.el.nativeElement.contains(target) && !event.defaultPrevented && event.detail > 1) {\n event.preventDefault();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAEA;AACA,IAAI,YAAY,GAAG,CAAC,CAAC;MAUR,iBAAiB,CAAA;;IAW1B,IACI,EAAE,CAAC,EAAU,EAAA;AACb,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;KAClC;AAED,IAAA,IAAI,EAAE,GAAA;AACF,QAAA,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;KACrB;AAED,IAAA,WAAA,CAAgC,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;;QAlB3B,IAAG,CAAA,GAAA,GAAG,MAAM,CAAC,CAAA,UAAA,EAAa,YAAY,EAAE,CAAA,CAAE,CAAC,CAAC;AAE/D;;;AAGG;QACM,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;KAY4B;;;;AAMlD,IAAA,WAAW,CAAC,KAAiB,EAAA;AACzB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;;AAG3C,QAAA,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YACpE,OAAO;SACV;;QAGD,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACvF,KAAK,CAAC,cAAc,EAAE,CAAC;SAC1B;KACJ;8GAtCQ,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACF,wBAAA,MAAM,EAAE,OAAO;AACf,wBAAA,YAAY,EAAE,0BAA0B;AAC3C,qBAAA;AACJ,iBAAA,CAAA;;0BAqBgB,QAAQ;yCAZZ,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAIF,EAAE,EAAA,CAAA;sBADL,KAAK;gBAeN,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ACtCzC;;AAEG;;;;"}
1
+ {"version":3,"file":"radix-ng-primitives-label.mjs","sources":["../../../packages/primitives/label/src/label-root.directive.ts","../../../packages/primitives/label/radix-ng-primitives-label.ts"],"sourcesContent":["import { Directive, ElementRef, inject, Input, input } from '@angular/core';\n\nlet idIterator = 0;\n\n@Directive({\n selector: 'label[LabelRoot]',\n exportAs: 'LabelRoot',\n standalone: true,\n host: {\n '[attr.id]': 'this.id',\n '[attr.for]': 'htmlFor ? htmlFor() : null',\n '(mousedown)': 'onMouseDown($event)'\n }\n})\nexport class RdxLabelRootDirective {\n @Input() id = `rdx-label-${idIterator++}`;\n\n /**\n * The id of the element the label is associated with.\n * @default '-'\n */\n readonly htmlFor = input<string>('');\n\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n // prevent text selection when double-clicking label\n // The main problem with double-clicks in a web app is that\n // you will have to create special code to handle this on touch enabled devices.\n onMouseDown(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n\n // only prevent text selection if clicking inside the label itself\n if (['BUTTON', 'INPUT', 'SELECT', 'TEXTAREA'].includes(target.tagName)) {\n return;\n }\n\n // prevent text selection when double-clicking label\n if (\n this.elementRef.nativeElement.contains(target) &&\n !event.defaultPrevented &&\n event.detail > 1\n ) {\n event.preventDefault();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAEA,IAAI,UAAU,GAAG,CAAC,CAAC;MAYN,qBAAqB,CAAA;AAVlC,IAAA,WAAA,GAAA;AAWa,QAAA,IAAA,CAAA,EAAE,GAAG,CAAA,UAAA,EAAa,UAAU,EAAE,EAAE,CAAC;AAE1C;;;AAGG;AACM,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAEpB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,EAAC,UAAuB,EAAC,CAAC;AAsBjE,KAAA;;;;AAjBG,IAAA,WAAW,CAAC,KAAiB,EAAA;AACzB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;;AAG3C,QAAA,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YACpE,OAAO;SACV;;QAGD,IACI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC9C,CAAC,KAAK,CAAC,gBAAgB;AACvB,YAAA,KAAK,CAAC,MAAM,GAAG,CAAC,EAClB;YACE,KAAK,CAAC,cAAc,EAAE,CAAC;SAC1B;KACJ;+GA9BQ,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAVjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACF,wBAAA,WAAW,EAAE,SAAS;AACtB,wBAAA,YAAY,EAAE,4BAA4B;AAC1C,wBAAA,aAAa,EAAE,qBAAqB;AACvC,qBAAA;AACJ,iBAAA,CAAA;8BAEY,EAAE,EAAA,CAAA;sBAAV,KAAK;;;ACfV;;AAEG;;;;"}
@@ -1,46 +1,22 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, Directive, numberAttribute, Input } from '@angular/core';
2
+ import { InjectionToken, inject, numberAttribute, Directive, Input } from '@angular/core';
3
3
 
4
+ let idIterator = 0;
5
+ const MIN_PERCENT = 0;
6
+ const DEFAULT_MAX = 100;
4
7
  const RdxProgressToken = new InjectionToken('RdxProgressDirective');
5
8
  function injectProgress() {
6
9
  return inject(RdxProgressToken);
7
10
  }
8
-
9
- class RdxProgressIndicatorDirective {
10
- constructor() {
11
- this.progress = injectProgress();
12
- }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxProgressIndicatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
14
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: RdxProgressIndicatorDirective, isStandalone: true, selector: "[rdxProgressIndicator]", host: { properties: { "attr.data-state": "progress.state", "attr.data-value": "progress.value", "attr.data-max": "progress.max" } }, ngImport: i0 }); }
15
- }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxProgressIndicatorDirective, decorators: [{
17
- type: Directive,
18
- args: [{
19
- selector: '[rdxProgressIndicator]',
20
- standalone: true,
21
- host: {
22
- '[attr.data-state]': 'progress.state',
23
- '[attr.data-value]': 'progress.value',
24
- '[attr.data-max]': 'progress.max'
25
- }
26
- }]
27
- }] });
28
-
29
- class RdxProgressDirective {
11
+ class RdxProgressRootDirective {
30
12
  constructor() {
13
+ this.id = `rdx-progress-bar-${idIterator++}`;
14
+ this.value = MIN_PERCENT;
31
15
  /**
32
- * Define the progress value.
33
- */
34
- this.value = 0;
35
- /**
36
- * Define the progress max value.
37
16
  * @default 100
38
17
  */
39
- this.max = 100;
40
- /**
41
- * Define a function that returns the progress value label.
42
- */
43
- this.valueLabel = (value, max) => `${Math.round((value / max) * 100)}%`;
18
+ this.max = DEFAULT_MAX;
19
+ this.valueLabel = (value, max) => this.defaultGetValueLabel(value, max);
44
20
  }
45
21
  /**
46
22
  * Get the state of the progress bar.
@@ -48,46 +24,76 @@ class RdxProgressDirective {
48
24
  * @internal
49
25
  */
50
26
  get state() {
51
- return this.value == null
52
- ? 'indeterminate'
53
- : this.value === this.max
54
- ? 'complete'
55
- : 'loading';
27
+ return this.getProgressState(this.value, this.max);
28
+ }
29
+ getProgressState(value, maxValue) {
30
+ return value == null ? 'indeterminate' : value === maxValue ? 'complete' : 'loading';
56
31
  }
57
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxProgressDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
58
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.3", type: RdxProgressDirective, isStandalone: true, selector: "[rdxProgress]", inputs: { value: ["rdxProgressValue", "value", numberAttribute], max: ["rdxProgressMax", "max", numberAttribute], valueLabel: ["rdxProgressValueLabel", "valueLabel"] }, host: { attributes: { "role": "progressbar" }, properties: { "attr.aria-valuemax": "max", "attr.aria-valuemin": "0", "attr.aria-valuenow": "value", "attr.aria-valuetext": "valueLabel(value, max)", "attr.data-state": "state", "attr.data-value": "value", "attr.data-max": "max" } }, providers: [{ provide: RdxProgressToken, useExisting: RdxProgressDirective }], ngImport: i0 }); }
32
+ defaultGetValueLabel(value, max) {
33
+ return `${Math.round((value / max) * 100)}%`;
34
+ }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdxProgressRootDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
36
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.11", type: RdxProgressRootDirective, isStandalone: true, selector: "div[ProgressRoot]", inputs: { id: "id", value: ["rdxValue", "value", numberAttribute], max: ["rdxMax", "max", numberAttribute], valueLabel: ["rdxValueLabel", "valueLabel"] }, host: { attributes: { "role": "progressbar", "tabindex": "-1" }, properties: { "attr.id": "id", "attr.aria-valuemax": "max", "attr.aria-valuemin": "0", "attr.aria-valuenow": "value", "attr.aria-valuetext": "valueLabel(value, max)", "attr.data-state": "state", "attr.data-value": "value", "attr.data-max": "max" } }, providers: [{ provide: RdxProgressToken, useExisting: RdxProgressRootDirective }], exportAs: ["ProgressRoot"], ngImport: i0 }); }
59
37
  }
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxProgressDirective, decorators: [{
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdxProgressRootDirective, decorators: [{
61
39
  type: Directive,
62
40
  args: [{
63
- selector: '[rdxProgress]',
41
+ selector: 'div[ProgressRoot]',
42
+ exportAs: 'ProgressRoot',
64
43
  standalone: true,
65
- providers: [{ provide: RdxProgressToken, useExisting: RdxProgressDirective }],
44
+ providers: [{ provide: RdxProgressToken, useExisting: RdxProgressRootDirective }],
66
45
  host: {
67
46
  role: 'progressbar',
47
+ '[attr.id]': 'id',
68
48
  '[attr.aria-valuemax]': 'max',
69
49
  '[attr.aria-valuemin]': '0',
70
50
  '[attr.aria-valuenow]': 'value',
71
51
  '[attr.aria-valuetext]': 'valueLabel(value, max)',
72
52
  '[attr.data-state]': 'state',
73
53
  '[attr.data-value]': 'value',
74
- '[attr.data-max]': 'max'
54
+ '[attr.data-max]': 'max',
55
+ // set tab index to -1 so screen readers will read the aria-label
56
+ // Note: there is a known issue with JAWS that does not read progressbar aria labels on FireFox
57
+ tabindex: '-1'
75
58
  }
76
59
  }]
77
- }], propDecorators: { value: [{
60
+ }], propDecorators: { id: [{
61
+ type: Input
62
+ }], value: [{
78
63
  type: Input,
79
- args: [{ alias: 'rdxProgressValue', transform: numberAttribute }]
64
+ args: [{ alias: 'rdxValue', transform: numberAttribute }]
80
65
  }], max: [{
81
66
  type: Input,
82
- args: [{ alias: 'rdxProgressMax', transform: numberAttribute }]
67
+ args: [{ alias: 'rdxMax', transform: numberAttribute }]
83
68
  }], valueLabel: [{
84
69
  type: Input,
85
- args: ['rdxProgressValueLabel']
70
+ args: ['rdxValueLabel']
86
71
  }] } });
87
72
 
73
+ class RdxProgressIndicatorDirective {
74
+ constructor() {
75
+ this._progress = injectProgress();
76
+ }
77
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdxProgressIndicatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
78
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: RdxProgressIndicatorDirective, isStandalone: true, selector: "div[ProgressIndicator]", host: { properties: { "attr.data-state": "_progress.state", "attr.data-value": "_progress.value", "attr.data-max": "_progress.max" } }, exportAs: ["ProgressIndicator"], ngImport: i0 }); }
79
+ }
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdxProgressIndicatorDirective, decorators: [{
81
+ type: Directive,
82
+ args: [{
83
+ selector: 'div[ProgressIndicator]',
84
+ exportAs: 'ProgressIndicator',
85
+ standalone: true,
86
+ host: {
87
+ '[attr.data-state]': '_progress.state',
88
+ '[attr.data-value]': '_progress.value',
89
+ '[attr.data-max]': '_progress.max'
90
+ }
91
+ }]
92
+ }] });
93
+
88
94
  /**
89
95
  * Generated bundle index. Do not edit.
90
96
  */
91
97
 
92
- export { RdxProgressDirective, RdxProgressIndicatorDirective };
98
+ export { RdxProgressIndicatorDirective, RdxProgressRootDirective, injectProgress };
93
99
  //# sourceMappingURL=radix-ng-primitives-progress.mjs.map