@radix-ng/primitives 0.2.0 → 0.4.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 (123) hide show
  1. package/avatar/README.md +1 -0
  2. package/avatar/index.d.ts +4 -0
  3. package/avatar/src/avatar-fallback.directive.d.ts +34 -0
  4. package/avatar/src/avatar-image.directive.d.ts +17 -0
  5. package/avatar/src/avatar.config.d.ts +12 -0
  6. package/avatar/src/avatar.directive.d.ts +22 -0
  7. package/avatar/src/avatar.token.d.ts +4 -0
  8. package/checkbox/index.d.ts +1 -1
  9. package/checkbox/src/checkbox-indicator.directive.d.ts +4 -4
  10. package/checkbox/src/checkbox.directive.d.ts +3 -3
  11. package/checkbox/src/checkbox.token.d.ts +3 -3
  12. package/esm2022/avatar/index.mjs +5 -0
  13. package/esm2022/avatar/radix-ng-primitives-avatar.mjs +5 -0
  14. package/esm2022/avatar/src/avatar-fallback.directive.mjs +61 -0
  15. package/esm2022/avatar/src/avatar-image.directive.mjs +50 -0
  16. package/esm2022/avatar/src/avatar.config.mjs +17 -0
  17. package/esm2022/avatar/src/avatar.directive.mjs +38 -0
  18. package/esm2022/avatar/src/avatar.token.mjs +6 -0
  19. package/esm2022/checkbox/index.mjs +2 -2
  20. package/esm2022/checkbox/src/checkbox-indicator.directive.mjs +5 -5
  21. package/esm2022/checkbox/src/checkbox.directive.mjs +11 -11
  22. package/esm2022/checkbox/src/checkbox.token.mjs +4 -4
  23. package/esm2022/label/src/label.directive.mjs +5 -5
  24. package/esm2022/overlay/index.mjs +5 -0
  25. package/esm2022/overlay/radix-ng-primitives-overlay.mjs +5 -0
  26. package/esm2022/overlay/src/overlay-arrow.directive.mjs +59 -0
  27. package/esm2022/overlay/src/overlay-arrow.token.mjs +3 -0
  28. package/esm2022/overlay/src/overlay-trigger.directive.mjs +279 -0
  29. package/esm2022/overlay/src/overlay-trigger.token.mjs +9 -0
  30. package/esm2022/overlay/src/overlay.directive.mjs +51 -0
  31. package/esm2022/overlay/src/overlay.token.mjs +3 -0
  32. package/esm2022/progress/src/progress-indicator.directive.mjs +5 -5
  33. package/esm2022/progress/src/progress.directive.mjs +7 -7
  34. package/esm2022/progress/src/progress.token.mjs +4 -4
  35. package/esm2022/radio/index.mjs +2 -2
  36. package/esm2022/radio/src/radio-group.directive.mjs +14 -14
  37. package/esm2022/radio/src/radio-group.token.mjs +4 -4
  38. package/esm2022/radio/src/radio-indicator.directive.mjs +5 -5
  39. package/esm2022/radio/src/radio-item.directive.mjs +11 -11
  40. package/esm2022/radio/src/radio-item.token.mjs +4 -4
  41. package/esm2022/roving-focus/src/roving-focus-group.directive.mjs +8 -8
  42. package/esm2022/roving-focus/src/roving-focus-group.token.mjs +4 -4
  43. package/esm2022/roving-focus/src/roving-focus-item.directive.mjs +8 -8
  44. package/esm2022/roving-focus/src/roving-focus-item.token.mjs +4 -4
  45. package/esm2022/separator/src/separator.directive.mjs +6 -6
  46. package/esm2022/switch/index.mjs +2 -2
  47. package/esm2022/switch/src/switch-thumb.directive.mjs +5 -5
  48. package/esm2022/switch/src/switch.directive.mjs +11 -11
  49. package/esm2022/switch/src/switch.token.mjs +4 -4
  50. package/esm2022/toggle/index.mjs +2 -0
  51. package/esm2022/toggle/radix-ng-primitives-toggle.mjs +5 -0
  52. package/esm2022/toggle/src/toggle.directive.mjs +65 -0
  53. package/esm2022/tooltip/index.mjs +5 -0
  54. package/esm2022/tooltip/radix-ng-primitives-tooltip.mjs +5 -0
  55. package/esm2022/tooltip/src/tooltip-arrow.directive.mjs +17 -0
  56. package/esm2022/tooltip/src/tooltip-trigger.directive.mjs +148 -0
  57. package/esm2022/tooltip/src/tooltip-trigger.token.mjs +6 -0
  58. package/esm2022/tooltip/src/tooltip.config.mjs +31 -0
  59. package/esm2022/tooltip/src/tooltip.directive.mjs +46 -0
  60. package/esm2022/visually-hidden/src/visually-hidden.directive.mjs +5 -5
  61. package/fesm2022/radix-ng-primitives-avatar.mjs +167 -0
  62. package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -0
  63. package/fesm2022/radix-ng-primitives-checkbox.mjs +32 -32
  64. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  65. package/fesm2022/radix-ng-primitives-label.mjs +5 -5
  66. package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
  67. package/fesm2022/radix-ng-primitives-overlay.mjs +399 -0
  68. package/fesm2022/radix-ng-primitives-overlay.mjs.map +1 -0
  69. package/fesm2022/radix-ng-primitives-progress.mjs +12 -12
  70. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
  71. package/fesm2022/radix-ng-primitives-radio.mjs +48 -48
  72. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
  73. package/fesm2022/radix-ng-primitives-roving-focus.mjs +15 -15
  74. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  75. package/fesm2022/radix-ng-primitives-separator.mjs +5 -5
  76. package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
  77. package/fesm2022/radix-ng-primitives-switch.mjs +34 -34
  78. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  79. package/fesm2022/radix-ng-primitives-toggle.mjs +72 -0
  80. package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -0
  81. package/fesm2022/radix-ng-primitives-tooltip.mjs +242 -0
  82. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -0
  83. package/fesm2022/radix-ng-primitives-visually-hidden.mjs +5 -5
  84. package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
  85. package/label/src/label.directive.d.ts +3 -3
  86. package/overlay/README.md +1 -0
  87. package/overlay/index.d.ts +4 -0
  88. package/overlay/src/overlay-arrow.directive.d.ts +29 -0
  89. package/overlay/src/overlay-arrow.token.d.ts +3 -0
  90. package/overlay/src/overlay-trigger.directive.d.ts +163 -0
  91. package/overlay/src/overlay-trigger.token.d.ts +7 -0
  92. package/overlay/src/overlay.directive.d.ts +29 -0
  93. package/overlay/src/overlay.token.d.ts +3 -0
  94. package/package.json +29 -4
  95. package/progress/src/progress-indicator.directive.d.ts +4 -4
  96. package/progress/src/progress.directive.d.ts +3 -3
  97. package/progress/src/progress.token.d.ts +3 -3
  98. package/radio/index.d.ts +1 -1
  99. package/radio/src/radio-group.directive.d.ts +3 -3
  100. package/radio/src/radio-group.token.d.ts +3 -3
  101. package/radio/src/radio-indicator.directive.d.ts +5 -5
  102. package/radio/src/radio-item.directive.d.ts +4 -4
  103. package/radio/src/radio-item.token.d.ts +3 -3
  104. package/roving-focus/src/roving-focus-group.directive.d.ts +7 -7
  105. package/roving-focus/src/roving-focus-group.token.d.ts +3 -3
  106. package/roving-focus/src/roving-focus-item.directive.d.ts +3 -3
  107. package/roving-focus/src/roving-focus-item.token.d.ts +3 -3
  108. package/separator/src/separator.directive.d.ts +3 -3
  109. package/switch/index.d.ts +1 -1
  110. package/switch/src/switch-thumb.directive.d.ts +4 -4
  111. package/switch/src/switch.directive.d.ts +3 -3
  112. package/switch/src/switch.token.d.ts +3 -3
  113. package/toggle/README.md +3 -0
  114. package/toggle/index.d.ts +1 -0
  115. package/toggle/src/toggle.directive.d.ts +30 -0
  116. package/tooltip/README.md +1 -0
  117. package/tooltip/index.d.ts +4 -0
  118. package/tooltip/src/tooltip-arrow.directive.d.ts +6 -0
  119. package/tooltip/src/tooltip-trigger.directive.d.ts +79 -0
  120. package/tooltip/src/tooltip-trigger.token.d.ts +4 -0
  121. package/tooltip/src/tooltip.config.d.ts +46 -0
  122. package/tooltip/src/tooltip.directive.d.ts +17 -0
  123. package/visually-hidden/src/visually-hidden.directive.d.ts +3 -3
@@ -1,13 +1,33 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, EventEmitter, booleanAttribute, Directive, Input, Output, HostListener } from '@angular/core';
2
+ import { InjectionToken, inject, Directive, EventEmitter, booleanAttribute, Input, Output, HostListener } from '@angular/core';
3
3
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
4
 
5
- const CheckboxToken = new InjectionToken('CheckboxToken');
5
+ const RdxCheckboxToken = new InjectionToken('RdxCheckboxToken');
6
6
  function injectCheckbox() {
7
- return inject(CheckboxToken);
7
+ return inject(RdxCheckboxToken);
8
8
  }
9
9
 
10
- class CheckboxDirective {
10
+ class RdxCheckboxIndicatorDirective {
11
+ constructor() {
12
+ this.checkbox = injectCheckbox();
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 }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxCheckboxIndicatorDirective, decorators: [{
18
+ type: Directive,
19
+ args: [{
20
+ selector: '[rdxCheckboxIndicator]',
21
+ standalone: true,
22
+ host: {
23
+ '[style.pointer-events]': '"none"',
24
+ '[attr.data-state]': 'checkbox.state',
25
+ '[attr.data-disabled]': 'checkbox.disabled ? "" : null'
26
+ }
27
+ }]
28
+ }] });
29
+
30
+ class RdxCheckboxDirective {
11
31
  constructor() {
12
32
  /**
13
33
  * Defines whether the checkbox is checked.
@@ -90,20 +110,20 @@ class CheckboxDirective {
90
110
  setDisabledState(isDisabled) {
91
111
  this.disabled = isDisabled;
92
112
  }
93
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CheckboxDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
94
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.3", type: CheckboxDirective, 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: [
95
- { provide: CheckboxToken, useExisting: CheckboxDirective },
96
- { provide: NG_VALUE_ACCESSOR, useExisting: CheckboxDirective, multi: true }
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: [
115
+ { provide: RdxCheckboxToken, useExisting: RdxCheckboxDirective },
116
+ { provide: NG_VALUE_ACCESSOR, useExisting: RdxCheckboxDirective, multi: true }
97
117
  ], ngImport: i0 }); }
98
118
  }
99
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CheckboxDirective, decorators: [{
119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxCheckboxDirective, decorators: [{
100
120
  type: Directive,
101
121
  args: [{
102
122
  selector: 'button[rdxCheckbox]',
103
123
  standalone: true,
104
124
  providers: [
105
- { provide: CheckboxToken, useExisting: CheckboxDirective },
106
- { provide: NG_VALUE_ACCESSOR, useExisting: CheckboxDirective, multi: true }
125
+ { provide: RdxCheckboxToken, useExisting: RdxCheckboxDirective },
126
+ { provide: NG_VALUE_ACCESSOR, useExisting: RdxCheckboxDirective, multi: true }
107
127
  ],
108
128
  host: {
109
129
  type: 'button',
@@ -138,29 +158,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
138
158
  args: ['blur']
139
159
  }] } });
140
160
 
141
- class CheckboxIndicatorDirective {
142
- constructor() {
143
- this.checkbox = injectCheckbox();
144
- }
145
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CheckboxIndicatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
146
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: CheckboxIndicatorDirective, isStandalone: true, selector: "[rdxCheckboxIndicator]", host: { properties: { "style.pointer-events": "\"none\"", "attr.data-state": "checkbox.state", "attr.data-disabled": "checkbox.disabled ? \"\" : null" } }, ngImport: i0 }); }
147
- }
148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CheckboxIndicatorDirective, decorators: [{
149
- type: Directive,
150
- args: [{
151
- selector: '[rdxCheckboxIndicator]',
152
- standalone: true,
153
- host: {
154
- '[style.pointer-events]': '"none"',
155
- '[attr.data-state]': 'checkbox.state',
156
- '[attr.data-disabled]': 'checkbox.disabled ? "" : null'
157
- }
158
- }]
159
- }] });
160
-
161
161
  /**
162
162
  * Generated bundle index. Do not edit.
163
163
  */
164
164
 
165
- export { CheckboxDirective, CheckboxIndicatorDirective, CheckboxToken, injectCheckbox };
165
+ export { RdxCheckboxDirective, RdxCheckboxIndicatorDirective, RdxCheckboxToken, injectCheckbox };
166
166
  //# sourceMappingURL=radix-ng-primitives-checkbox.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-checkbox.mjs","sources":["../../../packages/primitives/checkbox/src/checkbox.token.ts","../../../packages/primitives/checkbox/src/checkbox.directive.ts","../../../packages/primitives/checkbox/src/checkbox-indicator.directive.ts","../../../packages/primitives/checkbox/radix-ng-primitives-checkbox.ts"],"sourcesContent":["import { InjectionToken, inject } from '@angular/core';\nimport type { CheckboxDirective } from './checkbox.directive';\n\nexport const CheckboxToken = new InjectionToken<CheckboxDirective>('CheckboxToken');\n\nexport function injectCheckbox(): CheckboxDirective {\n return inject(CheckboxToken);\n}\n","import {\n Directive,\n EventEmitter,\n HostListener,\n Input,\n Output,\n booleanAttribute\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CheckboxToken } from './checkbox.token';\n\n@Directive({\n selector: 'button[rdxCheckbox]',\n standalone: true,\n providers: [\n { provide: CheckboxToken, useExisting: CheckboxDirective },\n { provide: NG_VALUE_ACCESSOR, useExisting: CheckboxDirective, 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 CheckboxDirective 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","import { Directive } from '@angular/core';\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 CheckboxIndicatorDirective {\n protected readonly checkbox = injectCheckbox();\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\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,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Directive, Optional, Input, HostListener } from '@angular/core';
3
3
 
4
- class LabelDirective {
4
+ class RdxLabelDirective {
5
5
  constructor(el) {
6
6
  this.el = el;
7
7
  /**
@@ -24,10 +24,10 @@ class LabelDirective {
24
24
  event.preventDefault();
25
25
  }
26
26
  }
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: LabelDirective, deps: [{ token: i0.ElementRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
28
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: LabelDirective, isStandalone: true, selector: "label[rdxLabel]", inputs: { htmlFor: "htmlFor" }, host: { listeners: { "mousedown": "onMouseDown($event)" }, properties: { "attr.for": "htmlFor ? htmlFor : null" } }, ngImport: i0 }); }
27
+ 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 }); }
28
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: RdxLabelDirective, isStandalone: true, selector: "label[rdxLabel]", inputs: { htmlFor: "htmlFor" }, host: { listeners: { "mousedown": "onMouseDown($event)" }, properties: { "attr.for": "htmlFor ? htmlFor : null" } }, ngImport: i0 }); }
29
29
  }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: LabelDirective, decorators: [{
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxLabelDirective, decorators: [{
31
31
  type: Directive,
32
32
  args: [{
33
33
  selector: 'label[rdxLabel]',
@@ -49,5 +49,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
49
49
  * Generated bundle index. Do not edit.
50
50
  */
51
51
 
52
- export { LabelDirective };
52
+ export { RdxLabelDirective };
53
53
  //# 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 } from '@angular/core';\n\n@Directive({\n selector: 'label[rdxLabel]',\n standalone: true,\n host: {\n '[attr.for]': 'htmlFor ? htmlFor : null'\n }\n})\nexport class LabelDirective {\n /**\n * The id of the element the label is associated with.\n * @default '-'\n */\n @Input() htmlFor = '';\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":";;;MASa,cAAc,CAAA;AAOvB,IAAA,WAAA,CAAgC,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AAN9C;;;AAGG;QACM,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;KAE4B;;;;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;8GAzBQ,cAAc,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;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACF,wBAAA,YAAY,EAAE,0BAA0B;AAC3C,qBAAA;AACJ,iBAAA,CAAA;;0BAQgB,QAAQ;yCAFZ,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAQN,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ACrBzC;;AAEG;;;;"}
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 } from '@angular/core';\n\n@Directive({\n selector: 'label[rdxLabel]',\n standalone: true,\n host: {\n '[attr.for]': 'htmlFor ? htmlFor : null'\n }\n})\nexport class RdxLabelDirective {\n /**\n * The id of the element the label is associated with.\n * @default '-'\n */\n @Input() htmlFor = '';\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":";;;MASa,iBAAiB,CAAA;AAO1B,IAAA,WAAA,CAAgC,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AAN9C;;;AAGG;QACM,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;KAE4B;;;;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;8GAzBQ,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,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACF,wBAAA,YAAY,EAAE,0BAA0B;AAC3C,qBAAA;AACJ,iBAAA,CAAA;;0BAQgB,QAAQ;yCAFZ,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAQN,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ACrBzC;;AAEG;;;;"}
@@ -0,0 +1,399 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, ElementRef, Directive, ApplicationRef, ComponentFactoryResolver, Injector, ViewContainerRef, booleanAttribute, numberAttribute, Input } from '@angular/core';
3
+ import { DomPortalOutlet, TemplatePortal } from '@angular/cdk/portal';
4
+ import { offset, shift, flip, arrow, autoUpdate, computePosition } from '@floating-ui/dom';
5
+
6
+ const RdxOverlayArrowToken = new InjectionToken('RdxOverlayArrowToken');
7
+
8
+ const RdxOverlayTriggerToken = new InjectionToken('RdxOverlayTriggerToken');
9
+ /**
10
+ * Inject the overlay trigger directive
11
+ */
12
+ function injectOverlayTrigger() {
13
+ return inject(RdxOverlayTriggerToken);
14
+ }
15
+
16
+ class RdxOverlayArrowDirective {
17
+ constructor() {
18
+ /**
19
+ * Access the arrow element
20
+ */
21
+ this.elementRef = inject((ElementRef));
22
+ /**
23
+ * Access the overlay trigger
24
+ */
25
+ this.overlayTrigger = injectOverlayTrigger();
26
+ }
27
+ /**
28
+ * Register the arrow on init
29
+ * @internal
30
+ */
31
+ ngOnInit() {
32
+ this.overlayTrigger.registerArrow(this);
33
+ }
34
+ /**
35
+ * Unregister the arrow on destroy
36
+ * @internal
37
+ */
38
+ ngOnDestroy() {
39
+ this.overlayTrigger.unregisterArrow();
40
+ }
41
+ /**
42
+ * Define the position of the arrow.
43
+ */
44
+ setPosition(placement, arrowX, arrowY) {
45
+ const staticSide = {
46
+ top: 'bottom',
47
+ right: 'left',
48
+ bottom: 'top',
49
+ left: 'right'
50
+ }[placement.split('-')[0]];
51
+ Object.assign(this.elementRef.nativeElement.style, {
52
+ left: arrowX != null ? `${arrowX}px` : '',
53
+ top: arrowY != null ? `${arrowY}px` : '',
54
+ right: '',
55
+ bottom: '',
56
+ [staticSide]: `-${this.elementRef.nativeElement.offsetWidth / 2}px`
57
+ });
58
+ }
59
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxOverlayArrowDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
60
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: RdxOverlayArrowDirective, isStandalone: true, selector: "[rdxOverlayArrow]", providers: [{ provide: RdxOverlayArrowToken, useExisting: RdxOverlayArrowDirective }], ngImport: i0 }); }
61
+ }
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxOverlayArrowDirective, decorators: [{
63
+ type: Directive,
64
+ args: [{
65
+ selector: '[rdxOverlayArrow]',
66
+ standalone: true,
67
+ providers: [{ provide: RdxOverlayArrowToken, useExisting: RdxOverlayArrowDirective }]
68
+ }]
69
+ }] });
70
+
71
+ /* eslint-disable @angular-eslint/no-input-rename */
72
+ class RdxOverlayTriggerDirective {
73
+ constructor() {
74
+ /**
75
+ * Access the application ref
76
+ */
77
+ this.appRef = inject(ApplicationRef);
78
+ /**
79
+ * Access the component factory resolver
80
+ */
81
+ this.componentFactoryResolver = inject(ComponentFactoryResolver);
82
+ /**
83
+ * Access the injector
84
+ */
85
+ this.injector = inject(Injector);
86
+ /**
87
+ * Access the trigger element
88
+ */
89
+ this.trigger = inject((ElementRef));
90
+ /**
91
+ * Access the view container
92
+ */
93
+ this.viewContainer = inject(ViewContainerRef);
94
+ /**
95
+ * Define if the trigger should be disabled.
96
+ * @default false
97
+ */
98
+ this.disabled = false;
99
+ /**
100
+ * Define the placement of the overlay relative to the trigger.
101
+ * @default 'bottom'
102
+ */
103
+ this.placement = 'top';
104
+ /**
105
+ * Define the offset of the overlay relative to the trigger.
106
+ * @default 4
107
+ */
108
+ this.offset = 4;
109
+ /**
110
+ * Define the delay before the overlay is displayed.
111
+ * @default 0
112
+ */
113
+ this.showDelay = 0;
114
+ /**
115
+ * Define the delay before the overlay is hidden.
116
+ * @default 0
117
+ */
118
+ this.hideDelay = 0;
119
+ /**
120
+ * Define whether the overlay should shift when the overlay is near the edge of the viewport.
121
+ * @default true
122
+ */
123
+ this.shift = true;
124
+ /**
125
+ * Define whether the overlay should flip when there is not enough space for the overlay.
126
+ * @default true
127
+ */
128
+ this.flip = true;
129
+ /**
130
+ * Define the container in to which the overlay should be attached.
131
+ * @default document.body
132
+ */
133
+ this.container = document.body;
134
+ /**
135
+ * Store the overlay content instance.
136
+ */
137
+ this.overlay = null;
138
+ /**
139
+ * Store the overlay arrow instance.
140
+ */
141
+ this.arrow = null;
142
+ /**
143
+ * Store the view ref
144
+ */
145
+ this.viewRef = null;
146
+ /**
147
+ * Store the show delay timeout
148
+ */
149
+ this.showDelayTimeout = null;
150
+ /**
151
+ * Store the hide delay timeout
152
+ */
153
+ this.hideDelayTimeout = null;
154
+ /**
155
+ * Store additional providers to register on the overlay.
156
+ */
157
+ this.providers = [];
158
+ }
159
+ /**
160
+ * Determine the state of the overlay.
161
+ */
162
+ get isOpen() {
163
+ return !!this.viewRef;
164
+ }
165
+ /**
166
+ * Determine the state of the overlay.
167
+ */
168
+ get state() {
169
+ if (this.showDelayTimeout) {
170
+ return 'opening';
171
+ }
172
+ if (this.hideDelayTimeout) {
173
+ return 'closing';
174
+ }
175
+ return this.isOpen ? 'open' : 'closed';
176
+ }
177
+ /**
178
+ * Create the overlay.
179
+ */
180
+ createOverlay() {
181
+ const domPortal = new DomPortalOutlet(this.container, this.componentFactoryResolver, this.appRef, this.injector);
182
+ const templatePortal = new TemplatePortal(this.templateRef, this.viewContainer, undefined, Injector.create({
183
+ parent: this.injector,
184
+ providers: [
185
+ {
186
+ provide: RdxOverlayTriggerToken,
187
+ useValue: this
188
+ },
189
+ ...this.providers
190
+ ]
191
+ }));
192
+ this.viewRef = domPortal.attach(templatePortal);
193
+ this.viewRef.detectChanges();
194
+ this.updateOverlayPosition();
195
+ this.showDelayTimeout = null;
196
+ }
197
+ /**
198
+ * Update the overlay position.
199
+ */
200
+ updateOverlayPosition() {
201
+ if (!this.viewRef) {
202
+ return;
203
+ }
204
+ const overlayElement = this.viewRef.rootNodes[0];
205
+ const middleware = [];
206
+ if (this.offset) {
207
+ middleware.push(offset(this.offset));
208
+ }
209
+ if (this.shift) {
210
+ middleware.push(shift());
211
+ }
212
+ if (this.flip) {
213
+ middleware.push(flip());
214
+ }
215
+ // if there is an arrow defined, we need to add the arrow middleware
216
+ if (this.arrow) {
217
+ middleware.push(arrow({ element: this.arrow.elementRef.nativeElement }));
218
+ }
219
+ this.dispose = autoUpdate(this.trigger.nativeElement, overlayElement, async () => {
220
+ const position = await computePosition(this.trigger.nativeElement, overlayElement, {
221
+ placement: this.placement,
222
+ middleware
223
+ });
224
+ this.overlay?.setPosition(position.x, position.y);
225
+ if (position.middlewareData.arrow) {
226
+ this.arrow?.setPosition(this.placement, position.middlewareData.arrow.x, position.middlewareData.arrow.y);
227
+ }
228
+ });
229
+ }
230
+ /**
231
+ * Destroy the overlay.
232
+ */
233
+ destroyOverlay() {
234
+ this.viewRef?.destroy();
235
+ this.viewRef = null;
236
+ this.dispose?.();
237
+ this.hideDelayTimeout = null;
238
+ }
239
+ /**
240
+ * Show the overlay.
241
+ */
242
+ show() {
243
+ if (this.disabled || this.isOpen) {
244
+ return;
245
+ }
246
+ if (this.hideDelayTimeout) {
247
+ clearTimeout(this.hideDelayTimeout);
248
+ this.hideDelayTimeout = null;
249
+ }
250
+ this.showDelayTimeout = window.setTimeout(() => this.createOverlay(), this.showDelay);
251
+ }
252
+ /**
253
+ * Hide the overlay.
254
+ */
255
+ hide() {
256
+ if (!this.isOpen) {
257
+ return;
258
+ }
259
+ if (this.showDelayTimeout) {
260
+ clearTimeout(this.showDelayTimeout);
261
+ this.showDelayTimeout = null;
262
+ }
263
+ this.hideDelayTimeout = window.setTimeout(() => this.destroyOverlay(), this.hideDelay);
264
+ }
265
+ /**
266
+ * Register the overlay.
267
+ * @param overlay The overlay to register.
268
+ * @internal
269
+ */
270
+ registerOverlay(overlay) {
271
+ this.overlay = overlay;
272
+ }
273
+ /**
274
+ * Unregister the overlay.
275
+ * @internal
276
+ */
277
+ unregisterOverlay() {
278
+ this.overlay = null;
279
+ }
280
+ /**
281
+ * Register the arrow.
282
+ * @param arrow The arrow to register.
283
+ * @internal
284
+ */
285
+ registerArrow(arrow) {
286
+ this.arrow = arrow;
287
+ }
288
+ /**
289
+ * Unregister the arrow.
290
+ * @internal
291
+ */
292
+ unregisterArrow() {
293
+ this.arrow = null;
294
+ }
295
+ /**
296
+ * Register a provider on the overlay.
297
+ * @param provider The provider to register.
298
+ * @internal
299
+ */
300
+ registerProvider(provider) {
301
+ this.providers.push(provider);
302
+ }
303
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxOverlayTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
304
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.3", type: RdxOverlayTriggerDirective, isStandalone: true, selector: "[rdxOverlayTrigger]", inputs: { templateRef: ["rdxOverlayTrigger", "templateRef"], disabled: ["rdxOverlayDisabled", "disabled", booleanAttribute], placement: ["rdxOverlayPlacement", "placement"], offset: ["rdxOverlayOffset", "offset", numberAttribute], showDelay: ["rdxOverlayShowDelay", "showDelay", numberAttribute], hideDelay: ["rdxOverlayHideDelay", "hideDelay", numberAttribute], shift: ["rdxOverlayShift", "shift", booleanAttribute], flip: ["rdxOverlayFlip", "flip", booleanAttribute], container: ["rdxOverlayContainer", "container"] }, host: { properties: { "attr.data-state": "state" } }, exportAs: ["rdxOverlayTrigger"], ngImport: i0 }); }
305
+ }
306
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxOverlayTriggerDirective, decorators: [{
307
+ type: Directive,
308
+ args: [{
309
+ selector: '[rdxOverlayTrigger]',
310
+ standalone: true,
311
+ exportAs: 'rdxOverlayTrigger',
312
+ host: {
313
+ '[attr.data-state]': 'state'
314
+ }
315
+ }]
316
+ }], propDecorators: { templateRef: [{
317
+ type: Input,
318
+ args: [{ alias: 'rdxOverlayTrigger', required: true }]
319
+ }], disabled: [{
320
+ type: Input,
321
+ args: [{ alias: 'rdxOverlayDisabled', transform: booleanAttribute }]
322
+ }], placement: [{
323
+ type: Input,
324
+ args: ['rdxOverlayPlacement']
325
+ }], offset: [{
326
+ type: Input,
327
+ args: [{ alias: 'rdxOverlayOffset', transform: numberAttribute }]
328
+ }], showDelay: [{
329
+ type: Input,
330
+ args: [{ alias: 'rdxOverlayShowDelay', transform: numberAttribute }]
331
+ }], hideDelay: [{
332
+ type: Input,
333
+ args: [{ alias: 'rdxOverlayHideDelay', transform: numberAttribute }]
334
+ }], shift: [{
335
+ type: Input,
336
+ args: [{ alias: 'rdxOverlayShift', transform: booleanAttribute }]
337
+ }], flip: [{
338
+ type: Input,
339
+ args: [{ alias: 'rdxOverlayFlip', transform: booleanAttribute }]
340
+ }], container: [{
341
+ type: Input,
342
+ args: ['rdxOverlayContainer']
343
+ }] } });
344
+
345
+ const RdxOverlayToken = new InjectionToken('RdxOverlayToken');
346
+
347
+ class RdxOverlayDirective {
348
+ constructor() {
349
+ /**
350
+ * Access the overlay element
351
+ */
352
+ this.elementRef = inject((ElementRef));
353
+ /**
354
+ * Access the overlay trigger
355
+ */
356
+ this.overlayTrigger = injectOverlayTrigger();
357
+ }
358
+ /**
359
+ * Register the overlay on init
360
+ */
361
+ ngOnInit() {
362
+ this.overlayTrigger.registerOverlay(this);
363
+ }
364
+ /**
365
+ * Unregister the overlay on destroy
366
+ */
367
+ ngOnDestroy() {
368
+ this.overlayTrigger.unregisterOverlay();
369
+ }
370
+ /**
371
+ * Set the position of the overlay
372
+ * @param x The x position
373
+ * @param y The y position
374
+ * @internal
375
+ */
376
+ setPosition(x, y) {
377
+ Object.assign(this.elementRef.nativeElement.style, {
378
+ left: `${x}px`,
379
+ top: `${y}px`
380
+ });
381
+ }
382
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxOverlayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
383
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: RdxOverlayDirective, isStandalone: true, selector: "[rdxOverlay]", providers: [{ provide: RdxOverlayToken, useExisting: RdxOverlayDirective }], ngImport: i0 }); }
384
+ }
385
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RdxOverlayDirective, decorators: [{
386
+ type: Directive,
387
+ args: [{
388
+ selector: '[rdxOverlay]',
389
+ standalone: true,
390
+ providers: [{ provide: RdxOverlayToken, useExisting: RdxOverlayDirective }]
391
+ }]
392
+ }] });
393
+
394
+ /**
395
+ * Generated bundle index. Do not edit.
396
+ */
397
+
398
+ export { RdxOverlayArrowDirective, RdxOverlayDirective, RdxOverlayTriggerDirective, RdxOverlayTriggerToken, injectOverlayTrigger };
399
+ //# sourceMappingURL=radix-ng-primitives-overlay.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radix-ng-primitives-overlay.mjs","sources":["../../../packages/primitives/overlay/src/overlay-arrow.token.ts","../../../packages/primitives/overlay/src/overlay-trigger.token.ts","../../../packages/primitives/overlay/src/overlay-arrow.directive.ts","../../../packages/primitives/overlay/src/overlay-trigger.directive.ts","../../../packages/primitives/overlay/src/overlay.token.ts","../../../packages/primitives/overlay/src/overlay.directive.ts","../../../packages/primitives/overlay/radix-ng-primitives-overlay.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport type { RdxOverlayArrowDirective } from './overlay-arrow.directive';\n\nexport const RdxOverlayArrowToken = new InjectionToken<RdxOverlayArrowDirective>(\n 'RdxOverlayArrowToken'\n);\n","import { inject, InjectionToken } from '@angular/core';\n\nimport type { RdxOverlayTriggerDirective } from './overlay-trigger.directive';\n\nexport const RdxOverlayTriggerToken = new InjectionToken<RdxOverlayTriggerDirective>(\n 'RdxOverlayTriggerToken'\n);\n\n/**\n * Inject the overlay trigger directive\n */\nexport function injectOverlayTrigger(): RdxOverlayTriggerDirective {\n return inject(RdxOverlayTriggerToken);\n}\n","import { Directive, ElementRef, inject, OnDestroy, OnInit } from '@angular/core';\n\nimport { Placement } from '@floating-ui/dom';\n\nimport { RdxOverlayArrowToken } from './overlay-arrow.token';\nimport { injectOverlayTrigger } from './overlay-trigger.token';\n\n@Directive({\n selector: '[rdxOverlayArrow]',\n standalone: true,\n providers: [{ provide: RdxOverlayArrowToken, useExisting: RdxOverlayArrowDirective }]\n})\nexport class RdxOverlayArrowDirective implements OnInit, OnDestroy {\n /**\n * Access the arrow element\n */\n readonly elementRef = inject(ElementRef<HTMLElement>);\n\n /**\n * Access the overlay trigger\n */\n private readonly overlayTrigger = injectOverlayTrigger();\n\n /**\n * Register the arrow on init\n * @internal\n */\n ngOnInit(): void {\n this.overlayTrigger.registerArrow(this);\n }\n\n /**\n * Unregister the arrow on destroy\n * @internal\n */\n ngOnDestroy(): void {\n this.overlayTrigger.unregisterArrow();\n }\n\n /**\n * Define the position of the arrow.\n */\n setPosition(placement: Placement, arrowX?: number, arrowY?: number): void {\n const staticSide = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right'\n }[placement.split('-')[0]] as string;\n\n Object.assign(this.elementRef.nativeElement.style, {\n left: arrowX != null ? `${arrowX}px` : '',\n top: arrowY != null ? `${arrowY}px` : '',\n right: '',\n bottom: '',\n [staticSide]: `-${this.elementRef.nativeElement.offsetWidth / 2}px`\n });\n }\n}\n","/* eslint-disable @angular-eslint/no-input-rename */\nimport { DomPortalOutlet, TemplatePortal } from '@angular/cdk/portal';\nimport {\n ApplicationRef,\n booleanAttribute,\n ComponentFactoryResolver,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n inject,\n Injector,\n Input,\n numberAttribute,\n StaticProvider,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\n\nimport {\n arrow,\n autoUpdate,\n computePosition,\n flip,\n Middleware,\n offset,\n Placement,\n shift\n} from '@floating-ui/dom';\n\nimport type { RdxOverlayArrowDirective } from './overlay-arrow.directive';\nimport { RdxOverlayTriggerToken } from './overlay-trigger.token';\nimport type { RdxOverlayDirective } from './overlay.directive';\n\n@Directive({\n selector: '[rdxOverlayTrigger]',\n standalone: true,\n exportAs: 'rdxOverlayTrigger',\n host: {\n '[attr.data-state]': 'state'\n }\n})\nexport class RdxOverlayTriggerDirective {\n /**\n * Access the application ref\n */\n private readonly appRef = inject(ApplicationRef);\n\n /**\n * Access the component factory resolver\n */\n private readonly componentFactoryResolver = inject(ComponentFactoryResolver);\n\n /**\n * Access the injector\n */\n private readonly injector = inject(Injector);\n\n /**\n * Access the trigger element\n */\n private readonly trigger = inject(ElementRef<HTMLElement>);\n\n /**\n * Access the view container\n */\n private readonly viewContainer = inject(ViewContainerRef);\n\n /**\n * Define the overlay to display when the trigger is activated.\n */\n @Input({ alias: 'rdxOverlayTrigger', required: true }) templateRef!: TemplateRef<void>;\n\n /**\n * Define if the trigger should be disabled.\n * @default false\n */\n @Input({ alias: 'rdxOverlayDisabled', transform: booleanAttribute }) disabled = false;\n\n /**\n * Define the placement of the overlay relative to the trigger.\n * @default 'bottom'\n */\n @Input('rdxOverlayPlacement') placement: Placement = 'top';\n\n /**\n * Define the offset of the overlay relative to the trigger.\n * @default 4\n */\n @Input({ alias: 'rdxOverlayOffset', transform: numberAttribute }) offset = 4;\n\n /**\n * Define the delay before the overlay is displayed.\n * @default 0\n */\n @Input({ alias: 'rdxOverlayShowDelay', transform: numberAttribute }) showDelay = 0;\n\n /**\n * Define the delay before the overlay is hidden.\n * @default 0\n */\n @Input({ alias: 'rdxOverlayHideDelay', transform: numberAttribute }) hideDelay = 0;\n\n /**\n * Define whether the overlay should shift when the overlay is near the edge of the viewport.\n * @default true\n */\n @Input({ alias: 'rdxOverlayShift', transform: booleanAttribute }) shift = true;\n\n /**\n * Define whether the overlay should flip when there is not enough space for the overlay.\n * @default true\n */\n @Input({ alias: 'rdxOverlayFlip', transform: booleanAttribute }) flip = true;\n\n /**\n * Define the container in to which the overlay should be attached.\n * @default document.body\n */\n @Input('rdxOverlayContainer') container: HTMLElement = document.body;\n\n /**\n * Store the overlay content instance.\n */\n private overlay: RdxOverlayDirective | null = null;\n\n /**\n * Store the overlay arrow instance.\n */\n private arrow: RdxOverlayArrowDirective | null = null;\n\n /**\n * Store the view ref\n */\n private viewRef: EmbeddedViewRef<void> | null = null;\n\n /**\n * Store the show delay timeout\n */\n private showDelayTimeout: number | null = null;\n\n /**\n * Store the hide delay timeout\n */\n private hideDelayTimeout: number | null = null;\n\n /**\n * Store the dispose function\n */\n private dispose?: () => void;\n\n /**\n * Store additional providers to register on the overlay.\n */\n private readonly providers: StaticProvider[] = [];\n\n /**\n * Determine the state of the overlay.\n */\n private get isOpen(): boolean {\n return !!this.viewRef;\n }\n\n /**\n * Determine the state of the overlay.\n */\n protected get state(): 'closed' | 'opening' | 'open' | 'closing' {\n if (this.showDelayTimeout) {\n return 'opening';\n }\n\n if (this.hideDelayTimeout) {\n return 'closing';\n }\n\n return this.isOpen ? 'open' : 'closed';\n }\n\n /**\n * Create the overlay.\n */\n private createOverlay(): void {\n const domPortal = new DomPortalOutlet(\n this.container,\n this.componentFactoryResolver,\n this.appRef,\n this.injector\n );\n\n const templatePortal = new TemplatePortal(\n this.templateRef,\n this.viewContainer,\n undefined,\n Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: RdxOverlayTriggerToken,\n useValue: this\n },\n ...this.providers\n ]\n })\n );\n\n this.viewRef = domPortal.attach(templatePortal);\n this.viewRef.detectChanges();\n\n this.updateOverlayPosition();\n this.showDelayTimeout = null;\n }\n\n /**\n * Update the overlay position.\n */\n private updateOverlayPosition(): void {\n if (!this.viewRef) {\n return;\n }\n\n const overlayElement = this.viewRef.rootNodes[0] as HTMLElement;\n\n const middleware: Middleware[] = [];\n\n if (this.offset) {\n middleware.push(offset(this.offset));\n }\n\n if (this.shift) {\n middleware.push(shift());\n }\n\n if (this.flip) {\n middleware.push(flip());\n }\n\n // if there is an arrow defined, we need to add the arrow middleware\n if (this.arrow) {\n middleware.push(arrow({ element: this.arrow.elementRef.nativeElement }));\n }\n\n this.dispose = autoUpdate(this.trigger.nativeElement, overlayElement, async () => {\n const position = await computePosition(this.trigger.nativeElement, overlayElement, {\n placement: this.placement,\n middleware\n });\n\n this.overlay?.setPosition(position.x, position.y);\n\n if (position.middlewareData.arrow) {\n this.arrow?.setPosition(\n this.placement,\n position.middlewareData.arrow.x,\n position.middlewareData.arrow.y\n );\n }\n });\n }\n\n /**\n * Destroy the overlay.\n */\n private destroyOverlay(): void {\n this.viewRef?.destroy();\n this.viewRef = null;\n\n this.dispose?.();\n this.hideDelayTimeout = null;\n }\n\n /**\n * Show the overlay.\n */\n show(): void {\n if (this.disabled || this.isOpen) {\n return;\n }\n\n if (this.hideDelayTimeout) {\n clearTimeout(this.hideDelayTimeout);\n this.hideDelayTimeout = null;\n }\n\n this.showDelayTimeout = window.setTimeout(() => this.createOverlay(), this.showDelay);\n }\n\n /**\n * Hide the overlay.\n */\n hide(): void {\n if (!this.isOpen) {\n return;\n }\n\n if (this.showDelayTimeout) {\n clearTimeout(this.showDelayTimeout);\n this.showDelayTimeout = null;\n }\n\n this.hideDelayTimeout = window.setTimeout(() => this.destroyOverlay(), this.hideDelay);\n }\n\n /**\n * Register the overlay.\n * @param overlay The overlay to register.\n * @internal\n */\n registerOverlay(overlay: RdxOverlayDirective): void {\n this.overlay = overlay;\n }\n\n /**\n * Unregister the overlay.\n * @internal\n */\n unregisterOverlay(): void {\n this.overlay = null;\n }\n\n /**\n * Register the arrow.\n * @param arrow The arrow to register.\n * @internal\n */\n registerArrow(arrow: RdxOverlayArrowDirective): void {\n this.arrow = arrow;\n }\n\n /**\n * Unregister the arrow.\n * @internal\n */\n unregisterArrow(): void {\n this.arrow = null;\n }\n\n /**\n * Register a provider on the overlay.\n * @param provider The provider to register.\n * @internal\n */\n registerProvider(provider: StaticProvider): void {\n this.providers.push(provider);\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport type { RdxOverlayDirective } from './overlay.directive';\n\nexport const RdxOverlayToken = new InjectionToken<RdxOverlayDirective>('RdxOverlayToken');\n","import { Directive, ElementRef, inject, OnDestroy, OnInit } from '@angular/core';\n\nimport { injectOverlayTrigger } from './overlay-trigger.token';\nimport { RdxOverlayToken } from './overlay.token';\n\n@Directive({\n selector: '[rdxOverlay]',\n standalone: true,\n providers: [{ provide: RdxOverlayToken, useExisting: RdxOverlayDirective }]\n})\nexport class RdxOverlayDirective implements OnInit, OnDestroy {\n /**\n * Access the overlay element\n */\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n /**\n * Access the overlay trigger\n */\n private readonly overlayTrigger = injectOverlayTrigger();\n\n /**\n * Register the overlay on init\n */\n ngOnInit(): void {\n this.overlayTrigger.registerOverlay(this);\n }\n\n /**\n * Unregister the overlay on destroy\n */\n ngOnDestroy(): void {\n this.overlayTrigger.unregisterOverlay();\n }\n\n /**\n * Set the position of the overlay\n * @param x The x position\n * @param y The y position\n * @internal\n */\n setPosition(x?: number, y?: number): void {\n Object.assign(this.elementRef.nativeElement.style, {\n left: `${x}px`,\n top: `${y}px`\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}