@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.
- package/avatar/README.md +1 -0
- package/avatar/index.d.ts +4 -0
- package/avatar/src/avatar-fallback.directive.d.ts +34 -0
- package/avatar/src/avatar-image.directive.d.ts +17 -0
- package/avatar/src/avatar.config.d.ts +12 -0
- package/avatar/src/avatar.directive.d.ts +22 -0
- package/avatar/src/avatar.token.d.ts +4 -0
- package/checkbox/index.d.ts +1 -1
- package/checkbox/src/checkbox-indicator.directive.d.ts +4 -4
- package/checkbox/src/checkbox.directive.d.ts +3 -3
- package/checkbox/src/checkbox.token.d.ts +3 -3
- package/esm2022/avatar/index.mjs +5 -0
- package/esm2022/avatar/radix-ng-primitives-avatar.mjs +5 -0
- package/esm2022/avatar/src/avatar-fallback.directive.mjs +61 -0
- package/esm2022/avatar/src/avatar-image.directive.mjs +50 -0
- package/esm2022/avatar/src/avatar.config.mjs +17 -0
- package/esm2022/avatar/src/avatar.directive.mjs +38 -0
- package/esm2022/avatar/src/avatar.token.mjs +6 -0
- package/esm2022/checkbox/index.mjs +2 -2
- package/esm2022/checkbox/src/checkbox-indicator.directive.mjs +5 -5
- package/esm2022/checkbox/src/checkbox.directive.mjs +11 -11
- package/esm2022/checkbox/src/checkbox.token.mjs +4 -4
- package/esm2022/label/src/label.directive.mjs +5 -5
- package/esm2022/overlay/index.mjs +5 -0
- package/esm2022/overlay/radix-ng-primitives-overlay.mjs +5 -0
- package/esm2022/overlay/src/overlay-arrow.directive.mjs +59 -0
- package/esm2022/overlay/src/overlay-arrow.token.mjs +3 -0
- package/esm2022/overlay/src/overlay-trigger.directive.mjs +279 -0
- package/esm2022/overlay/src/overlay-trigger.token.mjs +9 -0
- package/esm2022/overlay/src/overlay.directive.mjs +51 -0
- package/esm2022/overlay/src/overlay.token.mjs +3 -0
- package/esm2022/progress/src/progress-indicator.directive.mjs +5 -5
- package/esm2022/progress/src/progress.directive.mjs +7 -7
- package/esm2022/progress/src/progress.token.mjs +4 -4
- package/esm2022/radio/index.mjs +2 -2
- package/esm2022/radio/src/radio-group.directive.mjs +14 -14
- package/esm2022/radio/src/radio-group.token.mjs +4 -4
- package/esm2022/radio/src/radio-indicator.directive.mjs +5 -5
- package/esm2022/radio/src/radio-item.directive.mjs +11 -11
- package/esm2022/radio/src/radio-item.token.mjs +4 -4
- package/esm2022/roving-focus/src/roving-focus-group.directive.mjs +8 -8
- package/esm2022/roving-focus/src/roving-focus-group.token.mjs +4 -4
- package/esm2022/roving-focus/src/roving-focus-item.directive.mjs +8 -8
- package/esm2022/roving-focus/src/roving-focus-item.token.mjs +4 -4
- package/esm2022/separator/src/separator.directive.mjs +6 -6
- package/esm2022/switch/index.mjs +2 -2
- package/esm2022/switch/src/switch-thumb.directive.mjs +5 -5
- package/esm2022/switch/src/switch.directive.mjs +11 -11
- package/esm2022/switch/src/switch.token.mjs +4 -4
- package/esm2022/toggle/index.mjs +2 -0
- package/esm2022/toggle/radix-ng-primitives-toggle.mjs +5 -0
- package/esm2022/toggle/src/toggle.directive.mjs +65 -0
- package/esm2022/tooltip/index.mjs +5 -0
- package/esm2022/tooltip/radix-ng-primitives-tooltip.mjs +5 -0
- package/esm2022/tooltip/src/tooltip-arrow.directive.mjs +17 -0
- package/esm2022/tooltip/src/tooltip-trigger.directive.mjs +148 -0
- package/esm2022/tooltip/src/tooltip-trigger.token.mjs +6 -0
- package/esm2022/tooltip/src/tooltip.config.mjs +31 -0
- package/esm2022/tooltip/src/tooltip.directive.mjs +46 -0
- package/esm2022/visually-hidden/src/visually-hidden.directive.mjs +5 -5
- package/fesm2022/radix-ng-primitives-avatar.mjs +167 -0
- package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-checkbox.mjs +32 -32
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-label.mjs +5 -5
- package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-overlay.mjs +399 -0
- package/fesm2022/radix-ng-primitives-overlay.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-progress.mjs +12 -12
- package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-radio.mjs +48 -48
- package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-roving-focus.mjs +15 -15
- package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-separator.mjs +5 -5
- package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-switch.mjs +34 -34
- package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle.mjs +72 -0
- package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-tooltip.mjs +242 -0
- package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs +5 -5
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
- package/label/src/label.directive.d.ts +3 -3
- package/overlay/README.md +1 -0
- package/overlay/index.d.ts +4 -0
- package/overlay/src/overlay-arrow.directive.d.ts +29 -0
- package/overlay/src/overlay-arrow.token.d.ts +3 -0
- package/overlay/src/overlay-trigger.directive.d.ts +163 -0
- package/overlay/src/overlay-trigger.token.d.ts +7 -0
- package/overlay/src/overlay.directive.d.ts +29 -0
- package/overlay/src/overlay.token.d.ts +3 -0
- package/package.json +29 -4
- package/progress/src/progress-indicator.directive.d.ts +4 -4
- package/progress/src/progress.directive.d.ts +3 -3
- package/progress/src/progress.token.d.ts +3 -3
- package/radio/index.d.ts +1 -1
- package/radio/src/radio-group.directive.d.ts +3 -3
- package/radio/src/radio-group.token.d.ts +3 -3
- package/radio/src/radio-indicator.directive.d.ts +5 -5
- package/radio/src/radio-item.directive.d.ts +4 -4
- package/radio/src/radio-item.token.d.ts +3 -3
- package/roving-focus/src/roving-focus-group.directive.d.ts +7 -7
- package/roving-focus/src/roving-focus-group.token.d.ts +3 -3
- package/roving-focus/src/roving-focus-item.directive.d.ts +3 -3
- package/roving-focus/src/roving-focus-item.token.d.ts +3 -3
- package/separator/src/separator.directive.d.ts +3 -3
- package/switch/index.d.ts +1 -1
- package/switch/src/switch-thumb.directive.d.ts +4 -4
- package/switch/src/switch.directive.d.ts +3 -3
- package/switch/src/switch.token.d.ts +3 -3
- package/toggle/README.md +3 -0
- package/toggle/index.d.ts +1 -0
- package/toggle/src/toggle.directive.d.ts +30 -0
- package/tooltip/README.md +1 -0
- package/tooltip/index.d.ts +4 -0
- package/tooltip/src/tooltip-arrow.directive.d.ts +6 -0
- package/tooltip/src/tooltip-trigger.directive.d.ts +79 -0
- package/tooltip/src/tooltip-trigger.token.d.ts +4 -0
- package/tooltip/src/tooltip.config.d.ts +46 -0
- package/tooltip/src/tooltip.directive.d.ts +17 -0
- 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,
|
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
|
5
|
+
const RdxCheckboxToken = new InjectionToken('RdxCheckboxToken');
|
6
6
|
function injectCheckbox() {
|
7
|
-
return inject(
|
7
|
+
return inject(RdxCheckboxToken);
|
8
8
|
}
|
9
9
|
|
10
|
-
class
|
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:
|
94
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.3", type:
|
95
|
-
{ provide:
|
96
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
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:
|
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:
|
106
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting:
|
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 {
|
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
|
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
|
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:
|
28
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type:
|
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:
|
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 {
|
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
|
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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"}
|