@radix-ng/primitives 0.7.1 → 0.8.1

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 (98) hide show
  1. package/accordion/README.md +1 -0
  2. package/accordion/index.d.ts +5 -0
  3. package/accordion/src/accordion-content.directive.d.ts +64 -0
  4. package/accordion/src/accordion-header.directive.d.ts +23 -0
  5. package/accordion/src/accordion-item.directive.d.ts +36 -0
  6. package/accordion/src/accordion-root.directive.d.ts +57 -0
  7. package/accordion/src/accordion-trigger.directive.d.ts +31 -0
  8. package/alert-dialog/src/alert-dialog-content.directive.d.ts +2 -1
  9. package/dropdown-menu/README.md +1 -0
  10. package/dropdown-menu/index.d.ts +5 -0
  11. package/dropdown-menu/src/dropdown-menu-content.directive.d.ts +6 -0
  12. package/dropdown-menu/src/dropdown-menu-item.directive.d.ts +8 -0
  13. package/dropdown-menu/src/dropdown-menu-label.directive.d.ts +5 -0
  14. package/dropdown-menu/src/dropdown-menu-separator.directive.d.ts +6 -0
  15. package/dropdown-menu/src/dropdown-menu-trigger.directive.d.ts +11 -0
  16. package/esm2022/accordion/index.mjs +6 -0
  17. package/esm2022/accordion/radix-ng-primitives-accordion.mjs +5 -0
  18. package/esm2022/accordion/src/accordion-content.directive.mjs +139 -0
  19. package/esm2022/accordion/src/accordion-header.directive.mjs +44 -0
  20. package/esm2022/accordion/src/accordion-item.directive.mjs +75 -0
  21. package/esm2022/accordion/src/accordion-root.directive.mjs +120 -0
  22. package/esm2022/accordion/src/accordion-trigger.directive.mjs +61 -0
  23. package/esm2022/alert-dialog/src/alert-dialog-content.directive.mjs +11 -3
  24. package/esm2022/alert-dialog/src/alert-dialog.service.mjs +6 -1
  25. package/esm2022/dropdown-menu/index.mjs +6 -0
  26. package/esm2022/dropdown-menu/radix-ng-primitives-dropdown-menu.mjs +5 -0
  27. package/esm2022/dropdown-menu/src/dropdown-menu-content.directive.mjs +17 -0
  28. package/esm2022/dropdown-menu/src/dropdown-menu-item.directive.mjs +23 -0
  29. package/esm2022/dropdown-menu/src/dropdown-menu-label.directive.mjs +14 -0
  30. package/esm2022/dropdown-menu/src/dropdown-menu-separator.directive.mjs +21 -0
  31. package/esm2022/dropdown-menu/src/dropdown-menu-trigger.directive.mjs +46 -0
  32. package/esm2022/menu/index.mjs +45 -0
  33. package/esm2022/menu/radix-ng-primitives-menu.mjs +5 -0
  34. package/esm2022/menu/src/menu-content.directive.mjs +17 -0
  35. package/esm2022/menu/src/menu-directive.mjs +18 -0
  36. package/esm2022/menu/src/menu-group.directive.mjs +20 -0
  37. package/esm2022/menu/src/menu-item.directive.mjs +42 -0
  38. package/esm2022/menu/src/menu-label.directive.mjs +14 -0
  39. package/esm2022/menu/src/menu-separator.directive.mjs +21 -0
  40. package/esm2022/menubar/index.mjs +60 -0
  41. package/esm2022/menubar/radix-ng-primitives-menubar.mjs +5 -0
  42. package/esm2022/menubar/src/menubar-content.directive.mjs +17 -0
  43. package/esm2022/menubar/src/menubar-item-checkbox.directive.mjs +34 -0
  44. package/esm2022/menubar/src/menubar-item-indicator.directive.mjs +17 -0
  45. package/esm2022/menubar/src/menubar-item-radio.directive.mjs +35 -0
  46. package/esm2022/menubar/src/menubar-item.directive.mjs +20 -0
  47. package/esm2022/menubar/src/menubar-radio-group.directive.mjs +17 -0
  48. package/esm2022/menubar/src/menubar-root.directive.mjs +24 -0
  49. package/esm2022/menubar/src/menubar-separator.directive.mjs +17 -0
  50. package/esm2022/menubar/src/menubar-trigger.directive.mjs +45 -0
  51. package/esm2022/radio/src/radio-item.directive.mjs +1 -2
  52. package/esm2022/tabs/index.mjs +38 -0
  53. package/esm2022/tabs/radix-ng-primitives-tabs.mjs +5 -0
  54. package/esm2022/tabs/src/tabs-content.directive.mjs +27 -0
  55. package/esm2022/tabs/src/tabs-context.service.mjs +43 -0
  56. package/esm2022/tabs/src/tabs-list.directive.mjs +23 -0
  57. package/esm2022/tabs/src/tabs-root.directive.mjs +54 -0
  58. package/esm2022/tabs/src/tabs-trigger.directive.mjs +52 -0
  59. package/fesm2022/radix-ng-primitives-accordion.mjs +431 -0
  60. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -0
  61. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +15 -2
  62. package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
  63. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs +116 -0
  64. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs.map +1 -0
  65. package/fesm2022/radix-ng-primitives-menu.mjs +154 -0
  66. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -0
  67. package/fesm2022/radix-ng-primitives-menubar.mjs +245 -0
  68. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -0
  69. package/fesm2022/radix-ng-primitives-radio.mjs +0 -1
  70. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
  71. package/fesm2022/radix-ng-primitives-tabs.mjs +220 -0
  72. package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -0
  73. package/menu/README.md +1 -0
  74. package/menu/index.d.ts +18 -0
  75. package/menu/src/menu-content.directive.d.ts +6 -0
  76. package/menu/src/menu-directive.d.ts +6 -0
  77. package/menu/src/menu-group.directive.d.ts +6 -0
  78. package/menu/src/menu-item.directive.d.ts +12 -0
  79. package/menu/src/menu-label.directive.d.ts +5 -0
  80. package/menu/src/menu-separator.directive.d.ts +6 -0
  81. package/menubar/README.md +1 -0
  82. package/menubar/index.d.ts +24 -0
  83. package/menubar/src/menubar-content.directive.d.ts +6 -0
  84. package/menubar/src/menubar-item-checkbox.directive.d.ts +14 -0
  85. package/menubar/src/menubar-item-indicator.directive.d.ts +5 -0
  86. package/menubar/src/menubar-item-radio.directive.d.ts +14 -0
  87. package/menubar/src/menubar-item.directive.d.ts +8 -0
  88. package/menubar/src/menubar-radio-group.directive.d.ts +6 -0
  89. package/menubar/src/menubar-root.directive.d.ts +7 -0
  90. package/menubar/src/menubar-separator.directive.d.ts +6 -0
  91. package/menubar/src/menubar-trigger.directive.d.ts +11 -0
  92. package/package.json +31 -1
  93. package/tabs/index.d.ts +15 -0
  94. package/tabs/src/tabs-content.directive.d.ts +8 -0
  95. package/tabs/src/tabs-context.service.d.ts +22 -0
  96. package/tabs/src/tabs-list.directive.d.ts +6 -0
  97. package/tabs/src/tabs-root.directive.d.ts +37 -0
  98. package/tabs/src/tabs-trigger.directive.d.ts +19 -0
@@ -0,0 +1,54 @@
1
+ import { Directive, effect, EventEmitter, inject, Input, Output } from '@angular/core';
2
+ import { RdxTabsContextService, TABS_CONTEXT_TOKEN } from './tabs-context.service';
3
+ import * as i0 from "@angular/core";
4
+ export class RdxTabsRootDirective {
5
+ constructor() {
6
+ this.tabsContext = inject(TABS_CONTEXT_TOKEN);
7
+ this.orientation = 'horizontal';
8
+ // Event handler called when the value changes.
9
+ this.onValueChange = new EventEmitter();
10
+ effect(() => {
11
+ const value = this.tabsContext.value$();
12
+ if (value !== undefined) {
13
+ this.onValueChange.emit(value);
14
+ }
15
+ });
16
+ }
17
+ ngOnInit() {
18
+ this.tabsContext.setOrientation(this.orientation);
19
+ if (this.dir) {
20
+ this.tabsContext.setDir(this.dir);
21
+ }
22
+ if (this.value) {
23
+ this.tabsContext.setValue(this.value);
24
+ }
25
+ else if (this.defaultValue) {
26
+ this.tabsContext.setValue(this.defaultValue);
27
+ }
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RdxTabsRootDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
30
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.4", type: RdxTabsRootDirective, isStandalone: true, selector: "[TabsRoot]", inputs: { value: "value", defaultValue: "defaultValue", orientation: "orientation", dir: "dir" }, outputs: { onValueChange: "onValueChange" }, host: { properties: { "attr.data-orientation": "orientation", "attr.dir": "dir" } }, providers: [{ provide: TABS_CONTEXT_TOKEN, useExisting: RdxTabsContextService }], ngImport: i0 }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RdxTabsRootDirective, decorators: [{
33
+ type: Directive,
34
+ args: [{
35
+ selector: '[TabsRoot]',
36
+ standalone: true,
37
+ providers: [{ provide: TABS_CONTEXT_TOKEN, useExisting: RdxTabsContextService }],
38
+ host: {
39
+ '[attr.data-orientation]': 'orientation',
40
+ '[attr.dir]': 'dir'
41
+ }
42
+ }]
43
+ }], ctorParameters: () => [], propDecorators: { value: [{
44
+ type: Input
45
+ }], defaultValue: [{
46
+ type: Input
47
+ }], orientation: [{
48
+ type: Input
49
+ }], dir: [{
50
+ type: Input
51
+ }], onValueChange: [{
52
+ type: Output
53
+ }] } });
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy1yb290LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvdGFicy9zcmMvdGFicy1yb290LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBbUNuRixNQUFNLE9BQU8sb0JBQW9CO0lBVzdCO1FBVmlCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFJakQsZ0JBQVcsR0FBRyxZQUFZLENBQUM7UUFHcEMsK0NBQStDO1FBQ3JDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUdqRCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4QyxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFbEQsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakQsQ0FBQztJQUNMLENBQUM7OEdBaENRLG9CQUFvQjtrR0FBcEIsb0JBQW9CLDZSQU5sQixDQUFDLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxDQUFDOzsyRkFNdkUsb0JBQW9CO2tCQVRoQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLENBQUM7b0JBQ2hGLElBQUksRUFBRTt3QkFDRix5QkFBeUIsRUFBRSxhQUFhO3dCQUN4QyxZQUFZLEVBQUUsS0FBSztxQkFDdEI7aUJBQ0o7d0RBSVksS0FBSztzQkFBYixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBR0ksYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgZWZmZWN0LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFJkeFRhYnNDb250ZXh0U2VydmljZSwgVEFCU19DT05URVhUX1RPS0VOIH0gZnJvbSAnLi90YWJzLWNvbnRleHQuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFic1Byb3BzIHtcbiAgICAvKiogVGhlIHZhbHVlIGZvciB0aGUgc2VsZWN0ZWQgdGFiLCBpZiBjb250cm9sbGVkICovXG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gICAgLyoqIFRoZSB2YWx1ZSBvZiB0aGUgdGFiIHRvIHNlbGVjdCBieSBkZWZhdWx0LCBpZiB1bmNvbnRyb2xsZWQgKi9cbiAgICBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XG4gICAgLyoqIEEgZnVuY3Rpb24gY2FsbGVkIHdoZW4gYSBuZXcgdGFiIGlzIHNlbGVjdGVkICovXG4gICAgb25WYWx1ZUNoYW5nZT86ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICAgIC8qKlxuICAgICAqIFRoZSBvcmllbnRhdGlvbiB0aGUgdGFicyBhcmUgbGF5ZWQgb3V0LlxuICAgICAqIE1haW5seSBzbyBhcnJvdyBuYXZpZ2F0aW9uIGlzIGRvbmUgYWNjb3JkaW5nbHkgKGxlZnQgJiByaWdodCB2cy4gdXAgJiBkb3duKVxuICAgICAqIEBkZWZhdWx0VmFsdWUgaG9yaXpvbnRhbFxuICAgICAqL1xuICAgIG9yaWVudGF0aW9uPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSBkaXJlY3Rpb24gb2YgbmF2aWdhdGlvbiBiZXR3ZWVuIHRvb2xiYXIgaXRlbXMuXG4gICAgICovXG4gICAgZGlyPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgYSB0YWIgaXMgYWN0aXZhdGVkIGF1dG9tYXRpY2FsbHkgb3IgbWFudWFsbHkuXG4gICAgICogQGRlZmF1bHRWYWx1ZSBhdXRvbWF0aWNcbiAgICAgKiAqL1xuICAgIGFjdGl2YXRpb25Nb2RlPzogJ2F1dG9tYXRpYycgfCAnbWFudWFsJztcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbVGFic1Jvb3RdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogVEFCU19DT05URVhUX1RPS0VOLCB1c2VFeGlzdGluZzogUmR4VGFic0NvbnRleHRTZXJ2aWNlIH1dLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLmRhdGEtb3JpZW50YXRpb25dJzogJ29yaWVudGF0aW9uJyxcbiAgICAgICAgJ1thdHRyLmRpcl0nOiAnZGlyJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmR4VGFic1Jvb3REaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGFic0NvbnRleHQgPSBpbmplY3QoVEFCU19DT05URVhUX1RPS0VOKTtcblxuICAgIEBJbnB1dCgpIHZhbHVlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgICBASW5wdXQoKSBvcmllbnRhdGlvbiA9ICdob3Jpem9udGFsJztcbiAgICBASW5wdXQoKSBkaXI/OiBzdHJpbmc7XG5cbiAgICAvLyBFdmVudCBoYW5kbGVyIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgIEBPdXRwdXQoKSBvblZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy50YWJzQ29udGV4dC52YWx1ZSQoKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy50YWJzQ29udGV4dC5zZXRPcmllbnRhdGlvbih0aGlzLm9yaWVudGF0aW9uKTtcblxuICAgICAgICBpZiAodGhpcy5kaXIpIHtcbiAgICAgICAgICAgIHRoaXMudGFic0NvbnRleHQuc2V0RGlyKHRoaXMuZGlyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnRhYnNDb250ZXh0LnNldFZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnRhYnNDb250ZXh0LnNldFZhbHVlKHRoaXMuZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,52 @@
1
+ import { booleanAttribute, computed, Directive, inject, input } from '@angular/core';
2
+ import { TABS_CONTEXT_TOKEN } from './tabs-context.service';
3
+ import * as i0 from "@angular/core";
4
+ export class RdxTabsTriggerDirective {
5
+ constructor() {
6
+ this.tabsContext = inject(TABS_CONTEXT_TOKEN);
7
+ // A unique value that associates the trigger with a content.
8
+ this.value = input.required();
9
+ // When true, prevents the user from interacting with the tab.
10
+ this.disabled = input(false, {
11
+ transform: booleanAttribute
12
+ });
13
+ this.contentId = computed(() => `${this.tabsContext.getBaseId()}-content-${this.value()}`);
14
+ this.triggerId = computed(() => `${this.tabsContext.getBaseId()}-trigger-${this.value}`);
15
+ this.selected = computed(() => this.tabsContext.value$() === this.value());
16
+ }
17
+ onMouseDown(event) {
18
+ if (!this.disabled() && event.button === 0 && !event.ctrlKey) {
19
+ this.tabsContext?.setValue(this.value());
20
+ }
21
+ else {
22
+ // prevent focus to avoid accidental activation
23
+ event.preventDefault();
24
+ }
25
+ }
26
+ onKeyDown(event) {
27
+ if ([' ', 'Enter'].includes(event.key)) {
28
+ this.tabsContext?.setValue(this.value());
29
+ }
30
+ }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RdxTabsTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
32
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.4", type: RdxTabsTriggerDirective, isStandalone: true, selector: "[TabsTrigger]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "button", "role": "tab" }, listeners: { "mousedown": "onMouseDown($event)", "keydown": "onKeyDown($event)" }, properties: { "id": "triggerId", "attr.aria-selected": "selected()", "attr.aria-controls": "contentId()", "attr.data-disabled": "disabled() ? '' : undefined", "attr.data-state": "selected() ? 'active' : 'inactive'" } }, ngImport: i0 }); }
33
+ }
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RdxTabsTriggerDirective, decorators: [{
35
+ type: Directive,
36
+ args: [{
37
+ selector: '[TabsTrigger]',
38
+ standalone: true,
39
+ host: {
40
+ type: 'button',
41
+ role: 'tab',
42
+ '[id]': 'triggerId',
43
+ '[attr.aria-selected]': 'selected()',
44
+ '[attr.aria-controls]': 'contentId()',
45
+ '[attr.data-disabled]': "disabled() ? '' : undefined",
46
+ '[attr.data-state]': "selected() ? 'active' : 'inactive'",
47
+ '(mousedown)': 'onMouseDown($event)',
48
+ '(keydown)': 'onKeyDown($event)'
49
+ }
50
+ }]
51
+ }] });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy10cmlnZ2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvdGFicy9zcmMvdGFicy10cmlnZ2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFFUixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFzQjVELE1BQU0sT0FBTyx1QkFBdUI7SUFmcEM7UUFnQnVCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFNUQsNkRBQTZEO1FBQ3BELFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFFMUMsOERBQThEO1FBQ3JELGFBQVEsR0FBRyxLQUFLLENBQXdCLEtBQUssRUFBRTtZQUNwRCxTQUFTLEVBQUUsZ0JBQWdCO1NBQzlCLENBQUMsQ0FBQztRQUVnQixjQUFTLEdBQUcsUUFBUSxDQUNuQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFlBQVksSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2xFLENBQUM7UUFDaUIsY0FBUyxHQUFHLFFBQVEsQ0FDbkMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxZQUFZLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FDaEUsQ0FBQztRQUVpQixhQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7S0FnQjVGO0lBZGEsV0FBVyxDQUFDLEtBQWlCO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDN0MsQ0FBQzthQUFNLENBQUM7WUFDSiwrQ0FBK0M7WUFDL0MsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDTCxDQUFDO0lBRVMsU0FBUyxDQUFDLEtBQW9CO1FBQ3BDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDTCxDQUFDOzhHQWpDUSx1QkFBdUI7a0dBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFmbkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRTt3QkFDRixJQUFJLEVBQUUsUUFBUTt3QkFDZCxJQUFJLEVBQUUsS0FBSzt3QkFDWCxNQUFNLEVBQUUsV0FBVzt3QkFDbkIsc0JBQXNCLEVBQUUsWUFBWTt3QkFDcEMsc0JBQXNCLEVBQUUsYUFBYTt3QkFDckMsc0JBQXNCLEVBQUUsNkJBQTZCO3dCQUNyRCxtQkFBbUIsRUFBRSxvQ0FBb0M7d0JBQ3pELGFBQWEsRUFBRSxxQkFBcUI7d0JBQ3BDLFdBQVcsRUFBRSxtQkFBbUI7cUJBQ25DO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBjb21wdXRlZCxcbiAgICBEaXJlY3RpdmUsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIElucHV0U2lnbmFsV2l0aFRyYW5zZm9ybVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVEFCU19DT05URVhUX1RPS0VOIH0gZnJvbSAnLi90YWJzLWNvbnRleHQuc2VydmljZSc7XG5cbmludGVyZmFjZSBUYWJzVHJpZ2dlclByb3BzIHtcbiAgICAvLyBXaGVuIHRydWUsIHByZXZlbnRzIHRoZSB1c2VyIGZyb20gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgdGFiLlxuICAgIGRpc2FibGVkOiBJbnB1dFNpZ25hbFdpdGhUcmFuc2Zvcm08Ym9vbGVhbiwgQm9vbGVhbklucHV0Pjtcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbVGFic1RyaWdnZXJdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIHJvbGU6ICd0YWInLFxuICAgICAgICAnW2lkXSc6ICd0cmlnZ2VySWQnLFxuICAgICAgICAnW2F0dHIuYXJpYS1zZWxlY3RlZF0nOiAnc2VsZWN0ZWQoKScsXG4gICAgICAgICdbYXR0ci5hcmlhLWNvbnRyb2xzXSc6ICdjb250ZW50SWQoKScsXG4gICAgICAgICdbYXR0ci5kYXRhLWRpc2FibGVkXSc6IFwiZGlzYWJsZWQoKSA/ICcnIDogdW5kZWZpbmVkXCIsXG4gICAgICAgICdbYXR0ci5kYXRhLXN0YXRlXSc6IFwic2VsZWN0ZWQoKSA/ICdhY3RpdmUnIDogJ2luYWN0aXZlJ1wiLFxuICAgICAgICAnKG1vdXNlZG93biknOiAnb25Nb3VzZURvd24oJGV2ZW50KScsXG4gICAgICAgICcoa2V5ZG93biknOiAnb25LZXlEb3duKCRldmVudCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBSZHhUYWJzVHJpZ2dlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIFRhYnNUcmlnZ2VyUHJvcHMge1xuICAgIHByb3RlY3RlZCByZWFkb25seSB0YWJzQ29udGV4dCA9IGluamVjdChUQUJTX0NPTlRFWFRfVE9LRU4pO1xuXG4gICAgLy8gQSB1bmlxdWUgdmFsdWUgdGhhdCBhc3NvY2lhdGVzIHRoZSB0cmlnZ2VyIHdpdGggYSBjb250ZW50LlxuICAgIHJlYWRvbmx5IHZhbHVlID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuXG4gICAgLy8gV2hlbiB0cnVlLCBwcmV2ZW50cyB0aGUgdXNlciBmcm9tIGludGVyYWN0aW5nIHdpdGggdGhlIHRhYi5cbiAgICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4sIEJvb2xlYW5JbnB1dD4oZmFsc2UsIHtcbiAgICAgICAgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlXG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udGVudElkID0gY29tcHV0ZWQoXG4gICAgICAgICgpID0+IGAke3RoaXMudGFic0NvbnRleHQuZ2V0QmFzZUlkKCl9LWNvbnRlbnQtJHt0aGlzLnZhbHVlKCl9YFxuICAgICk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRyaWdnZXJJZCA9IGNvbXB1dGVkKFxuICAgICAgICAoKSA9PiBgJHt0aGlzLnRhYnNDb250ZXh0LmdldEJhc2VJZCgpfS10cmlnZ2VyLSR7dGhpcy52YWx1ZX1gXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudGFic0NvbnRleHQudmFsdWUkKCkgPT09IHRoaXMudmFsdWUoKSk7XG5cbiAgICBwcm90ZWN0ZWQgb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKCkgJiYgZXZlbnQuYnV0dG9uID09PSAwICYmICFldmVudC5jdHJsS2V5KSB7XG4gICAgICAgICAgICB0aGlzLnRhYnNDb250ZXh0Py5zZXRWYWx1ZSh0aGlzLnZhbHVlKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gcHJldmVudCBmb2N1cyB0byBhdm9pZCBhY2NpZGVudGFsIGFjdGl2YXRpb25cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmIChbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICAgICAgICB0aGlzLnRhYnNDb250ZXh0Py5zZXRWYWx1ZSh0aGlzLnZhbHVlKCkpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -0,0 +1,431 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, ElementRef, signal, input, effect, Directive, contentChild, Input, contentChildren } from '@angular/core';
3
+ import * as i1 from '@angular/cdk/accordion';
4
+ import { CdkAccordionItem, CdkAccordion } from '@angular/cdk/accordion';
5
+ import { animationFrameScheduler } from 'rxjs';
6
+
7
+ const RdxAccordionContentToken = new InjectionToken('RdxAccordionContentToken');
8
+ class RdxAccordionContentDirective {
9
+ constructor() {
10
+ /**
11
+ * @ignore
12
+ */
13
+ this.elementRef = inject(ElementRef);
14
+ /**
15
+ * @ignore
16
+ */
17
+ this.initialized = signal(false);
18
+ /**
19
+ * Current item state
20
+ */
21
+ this.state = signal('closed');
22
+ /**
23
+ * When true, prevents the user from interacting with the accordion and all its items.
24
+ */
25
+ this.disabled = input(false);
26
+ /**
27
+ * @ignore
28
+ */
29
+ this.accordionItem = inject(CdkAccordionItem);
30
+ /**
31
+ * @ignore
32
+ */
33
+ this.orientation = 'vertical';
34
+ effect(() => {
35
+ if (this.state()) {
36
+ this.setPresence();
37
+ }
38
+ });
39
+ }
40
+ /**
41
+ * @ignore
42
+ */
43
+ ngOnInit() {
44
+ this.togglePresence();
45
+ }
46
+ /**
47
+ * @ignore
48
+ */
49
+ setOpen(state) {
50
+ if (this.disabled()) {
51
+ return;
52
+ }
53
+ if (state === undefined) {
54
+ this.state.update(() => (this.state() === 'open' ? 'closed' : 'open'));
55
+ }
56
+ else {
57
+ this.state.update(() => state);
58
+ }
59
+ }
60
+ /**
61
+ * @ignore
62
+ */
63
+ initialize() {
64
+ if (!this.initialized()) {
65
+ this.togglePresence();
66
+ animationFrameScheduler.schedule(() => {
67
+ this.elementRef.nativeElement
68
+ .getAnimations()
69
+ .forEach((animation) => animation.cancel());
70
+ this.initialized.set(true);
71
+ });
72
+ }
73
+ }
74
+ /**
75
+ * @ignore
76
+ */
77
+ setPresence() {
78
+ if (!this.initialized()) {
79
+ this.initialize();
80
+ return;
81
+ }
82
+ animationFrameScheduler.schedule(() => {
83
+ const animations = this.elementRef.nativeElement.getAnimations();
84
+ const hidden = this.elementRef.nativeElement.hasAttribute('hidden');
85
+ if (hidden) {
86
+ this.show();
87
+ const rect = this.elementRef.nativeElement.getBoundingClientRect();
88
+ const height = `${this.elementRef.nativeElement.scrollHeight /*rect.height*/}px`;
89
+ const width = `${rect.width}px`;
90
+ this.elementRef.nativeElement.style.setProperty('--radix-accordion-content-height', height);
91
+ this.elementRef.nativeElement.style.setProperty('--radix-accordion-content-width', width);
92
+ this.hide();
93
+ }
94
+ Promise.all(animations.map((animation) => animation.finished)).then(() => {
95
+ this.togglePresence();
96
+ });
97
+ });
98
+ }
99
+ /**
100
+ * @ignore
101
+ */
102
+ togglePresence() {
103
+ if (this.state() === 'open') {
104
+ this.show();
105
+ }
106
+ else {
107
+ this.hide();
108
+ }
109
+ }
110
+ /**
111
+ * @ignore
112
+ */
113
+ show() {
114
+ this.elementRef.nativeElement.removeAttribute('hidden');
115
+ }
116
+ /**
117
+ * @ignore
118
+ */
119
+ hide() {
120
+ this.elementRef.nativeElement.setAttribute('hidden', '');
121
+ }
122
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RdxAccordionContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
123
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.4", type: RdxAccordionContentDirective, isStandalone: true, selector: "[AccordionContent]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-state": "state()", "attr.data-disabled": "disabled() ? \"\" : undefined", "attr.data-orientation": "orientation" } }, providers: [{ provide: RdxAccordionContentToken, useExisting: RdxAccordionContentDirective }], exportAs: ["AccordionContent"], hostDirectives: [{ directive: i1.CdkAccordionItem }], ngImport: i0 }); }
124
+ }
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RdxAccordionContentDirective, decorators: [{
126
+ type: Directive,
127
+ args: [{
128
+ selector: '[AccordionContent]',
129
+ standalone: true,
130
+ exportAs: 'AccordionContent',
131
+ providers: [{ provide: RdxAccordionContentToken, useExisting: RdxAccordionContentDirective }],
132
+ host: {
133
+ '[attr.data-state]': 'state()',
134
+ '[attr.data-disabled]': 'disabled() ? "" : undefined',
135
+ '[attr.data-orientation]': 'orientation'
136
+ },
137
+ hostDirectives: [CdkAccordionItem]
138
+ }]
139
+ }], ctorParameters: () => [] });
140
+
141
+ const RdxAccordionItemToken = new InjectionToken('RdxAccordionItemToken');
142
+ function injectAccordionItem() {
143
+ return inject(RdxAccordionItemDirective);
144
+ }
145
+ class RdxAccordionItemDirective {
146
+ constructor() {
147
+ /**
148
+ * @ignore
149
+ */
150
+ this.accordionContent = contentChild.required(RdxAccordionContentToken);
151
+ /**
152
+ * Current item state
153
+ */
154
+ this.state = signal('closed');
155
+ /**
156
+ * When true, prevents the user from interacting with the item.
157
+ */
158
+ this.disabled = input(false);
159
+ /**
160
+ * @ignore
161
+ */
162
+ this.orientation = 'vertical';
163
+ }
164
+ /**
165
+ * Changes current item state
166
+ */
167
+ setOpen(state) {
168
+ if (this.disabled()) {
169
+ return;
170
+ }
171
+ if (state === undefined) {
172
+ this.state.update(() => (this.state() === 'open' ? 'closed' : 'open'));
173
+ }
174
+ else {
175
+ this.state.update(() => state);
176
+ }
177
+ this.accordionContent().setOpen(this.state());
178
+ }
179
+ /**
180
+ * @ignore
181
+ */
182
+ setOrientation(orientation) {
183
+ this.orientation = orientation;
184
+ this.accordionContent().orientation = orientation;
185
+ }
186
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RdxAccordionItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
187
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.0.4", type: RdxAccordionItemDirective, isStandalone: true, selector: "[AccordionItem]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-state": "state()", "attr.data-disabled": "disabled() ? \"\" : undefined", "attr.data-orientation": "orientation" } }, providers: [
188
+ { provide: RdxAccordionItemToken, useExisting: RdxAccordionItemDirective, multi: true }
189
+ ], queries: [{ propertyName: "accordionContent", first: true, predicate: RdxAccordionContentToken, descendants: true, isSignal: true }], exportAs: ["AccordionItem"], hostDirectives: [{ directive: i1.CdkAccordion }], ngImport: i0 }); }
190
+ }
191
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RdxAccordionItemDirective, decorators: [{
192
+ type: Directive,
193
+ args: [{
194
+ selector: '[AccordionItem]',
195
+ standalone: true,
196
+ exportAs: 'AccordionItem',
197
+ providers: [
198
+ { provide: RdxAccordionItemToken, useExisting: RdxAccordionItemDirective, multi: true }
199
+ ],
200
+ host: {
201
+ '[attr.data-state]': 'state()',
202
+ '[attr.data-disabled]': 'disabled() ? "" : undefined',
203
+ '[attr.data-orientation]': 'orientation'
204
+ },
205
+ hostDirectives: [CdkAccordion]
206
+ }]
207
+ }], propDecorators: { value: [{
208
+ type: Input
209
+ }] } });
210
+
211
+ const RdxAccordionRootToken = new InjectionToken('RdxAccordionRootDirective');
212
+ function injectAccordionRoot() {
213
+ return inject(RdxAccordionRootDirective);
214
+ }
215
+ class RdxAccordionRootDirective {
216
+ constructor() {
217
+ /**
218
+ * @private
219
+ * @ignore
220
+ */
221
+ this.accordionItems = contentChildren(RdxAccordionItemToken);
222
+ /**
223
+ * @private
224
+ * @ignore
225
+ */
226
+ this._orientation = 'vertical';
227
+ /**
228
+ * @private
229
+ * @ignore
230
+ */
231
+ this._value = [];
232
+ /**
233
+ * The value of the item to expand when initially rendered and type is "single". Use when you do not need to control the state of the items.
234
+ */
235
+ this.defaultValue = [];
236
+ /**
237
+ * Determines whether one or multiple items can be opened at the same time.
238
+ */
239
+ this.type = 'single';
240
+ /**
241
+ * @ignore
242
+ */
243
+ this.collapsible = true;
244
+ }
245
+ /**
246
+ * The controlled value of the item to expand
247
+ */
248
+ set value(value) {
249
+ if (value !== undefined) {
250
+ this._value = Array.isArray(value) ? value : [value];
251
+ }
252
+ else {
253
+ this._value = [];
254
+ }
255
+ this.onValueChange(this._value);
256
+ }
257
+ /**
258
+ * The orientation of the accordion.
259
+ */
260
+ set orientation(orientation) {
261
+ this._orientation = orientation ?? 'vertical';
262
+ this.accordionItems().forEach((accordionItem) => accordionItem.setOrientation(this._orientation));
263
+ }
264
+ /**
265
+ * @ignore
266
+ */
267
+ ngOnInit() {
268
+ if (this.defaultValue) {
269
+ this.value = this.defaultValue;
270
+ }
271
+ }
272
+ /**
273
+ * @ignore
274
+ */
275
+ onValueChange(value) {
276
+ if (this.type === 'single') {
277
+ const currentValue = value.length > 0 ? value[0] : undefined;
278
+ this.accordionItems().forEach((accordionItem) => {
279
+ if (accordionItem.value === currentValue) {
280
+ accordionItem.setOpen();
281
+ }
282
+ else {
283
+ accordionItem.setOpen('closed');
284
+ }
285
+ });
286
+ }
287
+ else {
288
+ value.forEach((valueItem) => {
289
+ this.accordionItems().forEach((accordionItem) => {
290
+ if (accordionItem.value === valueItem) {
291
+ accordionItem.setOpen();
292
+ }
293
+ });
294
+ });
295
+ }
296
+ }
297
+ /**
298
+ * @ignore
299
+ */
300
+ getOrientation() {
301
+ return this._orientation;
302
+ }
303
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RdxAccordionRootDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
304
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.0.4", type: RdxAccordionRootDirective, isStandalone: true, selector: "[AccordionRoot]", inputs: { defaultValue: "defaultValue", type: "type", collapsible: "collapsible", value: "value", orientation: "orientation" }, host: { properties: { "attr.data-orientation": "getOrientation()" } }, providers: [{ provide: RdxAccordionRootToken, useExisting: RdxAccordionRootDirective }], queries: [{ propertyName: "accordionItems", predicate: RdxAccordionItemToken, isSignal: true }], ngImport: i0 }); }
305
+ }
306
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RdxAccordionRootDirective, decorators: [{
307
+ type: Directive,
308
+ args: [{
309
+ selector: '[AccordionRoot]',
310
+ standalone: true,
311
+ providers: [{ provide: RdxAccordionRootToken, useExisting: RdxAccordionRootDirective }],
312
+ host: {
313
+ '[attr.data-orientation]': 'getOrientation()'
314
+ }
315
+ }]
316
+ }], propDecorators: { defaultValue: [{
317
+ type: Input
318
+ }], type: [{
319
+ type: Input
320
+ }], collapsible: [{
321
+ type: Input
322
+ }], value: [{
323
+ type: Input
324
+ }], orientation: [{
325
+ type: Input
326
+ }] } });
327
+
328
+ class RdxAccordionHeaderDirective {
329
+ constructor() {
330
+ /**
331
+ * @ignore
332
+ */
333
+ this.accordionItem = injectAccordionItem();
334
+ }
335
+ /**
336
+ * @ignore
337
+ */
338
+ getState() {
339
+ return this.accordionItem.state();
340
+ }
341
+ /**
342
+ * @ignore
343
+ */
344
+ getDisabled() {
345
+ return this.accordionItem.disabled() ? '' : undefined;
346
+ }
347
+ /**
348
+ * @ignore
349
+ */
350
+ getOrientation() {
351
+ return this.accordionItem.orientation;
352
+ }
353
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RdxAccordionHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
354
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.4", type: RdxAccordionHeaderDirective, isStandalone: true, selector: "[AccordionHeader]", host: { properties: { "attr.data-state": "getState()", "attr.data-disabled": "getDisabled()", "attr.data-orientation": "getOrientation()" } }, ngImport: i0 }); }
355
+ }
356
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RdxAccordionHeaderDirective, decorators: [{
357
+ type: Directive,
358
+ args: [{
359
+ selector: '[AccordionHeader]',
360
+ standalone: true,
361
+ host: {
362
+ '[attr.data-state]': 'getState()',
363
+ '[attr.data-disabled]': 'getDisabled()',
364
+ '[attr.data-orientation]': 'getOrientation()'
365
+ }
366
+ }]
367
+ }] });
368
+
369
+ class RdxAccordionTriggerDirective {
370
+ constructor() {
371
+ /**
372
+ * @ignore
373
+ */
374
+ this.accordionRoot = injectAccordionRoot();
375
+ /**
376
+ * @ignore
377
+ */
378
+ this.accordionItem = injectAccordionItem();
379
+ }
380
+ /**
381
+ * Fires when trigger clicked
382
+ */
383
+ onClick() {
384
+ if (!this.accordionRoot.collapsible) {
385
+ return;
386
+ }
387
+ if (this.accordionItem.value) {
388
+ this.accordionRoot.value = [this.accordionItem.value];
389
+ }
390
+ }
391
+ /**
392
+ * @ignore
393
+ */
394
+ getState() {
395
+ return this.accordionItem.state();
396
+ }
397
+ /**
398
+ * @ignore
399
+ */
400
+ getDisabled() {
401
+ return this.accordionItem.disabled() || undefined;
402
+ }
403
+ /**
404
+ * @ignore
405
+ */
406
+ getOrientation() {
407
+ return this.accordionRoot.getOrientation();
408
+ }
409
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RdxAccordionTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
410
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.4", type: RdxAccordionTriggerDirective, isStandalone: true, selector: "[AccordionTrigger]", host: { listeners: { "click": "onClick()" }, properties: { "attr.data-state": "getState()", "attr.data-disabled": "getDisabled()", "attr.data-orientation": "getOrientation()" } }, ngImport: i0 }); }
411
+ }
412
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RdxAccordionTriggerDirective, decorators: [{
413
+ type: Directive,
414
+ args: [{
415
+ selector: '[AccordionTrigger]',
416
+ standalone: true,
417
+ host: {
418
+ '(click)': 'onClick()',
419
+ '[attr.data-state]': 'getState()',
420
+ '[attr.data-disabled]': 'getDisabled()',
421
+ '[attr.data-orientation]': 'getOrientation()'
422
+ }
423
+ }]
424
+ }] });
425
+
426
+ /**
427
+ * Generated bundle index. Do not edit.
428
+ */
429
+
430
+ export { RdxAccordionContentDirective, RdxAccordionContentToken, RdxAccordionHeaderDirective, RdxAccordionItemDirective, RdxAccordionItemToken, RdxAccordionRootDirective, RdxAccordionRootToken, RdxAccordionTriggerDirective, injectAccordionItem, injectAccordionRoot };
431
+ //# sourceMappingURL=radix-ng-primitives-accordion.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radix-ng-primitives-accordion.mjs","sources":["../../../packages/primitives/accordion/src/accordion-content.directive.ts","../../../packages/primitives/accordion/src/accordion-item.directive.ts","../../../packages/primitives/accordion/src/accordion-root.directive.ts","../../../packages/primitives/accordion/src/accordion-header.directive.ts","../../../packages/primitives/accordion/src/accordion-trigger.directive.ts","../../../packages/primitives/accordion/radix-ng-primitives-accordion.ts"],"sourcesContent":["import { CdkAccordionItem } from '@angular/cdk/accordion';\nimport {\n Directive,\n effect,\n ElementRef,\n inject,\n InjectionToken,\n input,\n OnInit,\n signal\n} from '@angular/core';\nimport { animationFrameScheduler } from 'rxjs';\n\nimport { RdxAccordionItemState } from './accordion-item.directive';\nimport { RdxAccordionOrientation } from './accordion-root.directive';\n\nexport const RdxAccordionContentToken = new InjectionToken<RdxAccordionContentDirective>(\n 'RdxAccordionContentToken'\n);\n\n@Directive({\n selector: '[AccordionContent]',\n standalone: true,\n exportAs: 'AccordionContent',\n providers: [{ provide: RdxAccordionContentToken, useExisting: RdxAccordionContentDirective }],\n host: {\n '[attr.data-state]': 'state()',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.data-orientation]': 'orientation'\n },\n hostDirectives: [CdkAccordionItem]\n})\nexport class RdxAccordionContentDirective implements OnInit {\n /**\n * @ignore\n */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n /**\n * @ignore\n */\n private initialized = signal(false);\n /**\n * Current item state\n */\n state = signal<RdxAccordionItemState>('closed');\n /**\n * When true, prevents the user from interacting with the accordion and all its items.\n */\n disabled = input(false);\n /**\n * @ignore\n */\n accordionItem = inject(CdkAccordionItem);\n /**\n * @ignore\n */\n orientation: RdxAccordionOrientation = 'vertical';\n\n constructor() {\n effect(() => {\n if (this.state()) {\n this.setPresence();\n }\n });\n }\n\n /**\n * @ignore\n */\n ngOnInit(): void {\n this.togglePresence();\n }\n\n /**\n * @ignore\n */\n setOpen(state?: RdxAccordionItemState | undefined): void {\n if (this.disabled()) {\n return;\n }\n\n if (state === undefined) {\n this.state.update(() => (this.state() === 'open' ? 'closed' : 'open'));\n } else {\n this.state.update(() => state);\n }\n }\n\n /**\n * @ignore\n */\n private initialize(): void {\n if (!this.initialized()) {\n this.togglePresence();\n\n animationFrameScheduler.schedule(() => {\n this.elementRef.nativeElement\n .getAnimations()\n .forEach((animation) => animation.cancel());\n\n this.initialized.set(true);\n });\n }\n }\n\n /**\n * @ignore\n */\n private setPresence(): void {\n if (!this.initialized()) {\n this.initialize();\n\n return;\n }\n\n animationFrameScheduler.schedule(() => {\n const animations = this.elementRef.nativeElement.getAnimations();\n\n const hidden = this.elementRef.nativeElement.hasAttribute('hidden');\n\n if (hidden) {\n this.show();\n\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n const height = `${this.elementRef.nativeElement.scrollHeight /*rect.height*/}px`;\n const width = `${rect.width}px`;\n\n this.elementRef.nativeElement.style.setProperty(\n '--radix-accordion-content-height',\n height\n );\n\n this.elementRef.nativeElement.style.setProperty(\n '--radix-accordion-content-width',\n width\n );\n\n this.hide();\n }\n\n Promise.all(animations.map((animation) => animation.finished)).then(() => {\n this.togglePresence();\n });\n });\n }\n\n /**\n * @ignore\n */\n private togglePresence(): void {\n if (this.state() === 'open') {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * @ignore\n */\n private show(): void {\n this.elementRef.nativeElement.removeAttribute('hidden');\n }\n\n /**\n * @ignore\n */\n private hide(): void {\n this.elementRef.nativeElement.setAttribute('hidden', '');\n }\n}\n","import { CdkAccordion } from '@angular/cdk/accordion';\nimport {\n contentChild,\n Directive,\n inject,\n InjectionToken,\n Input,\n input,\n signal\n} from '@angular/core';\n\nimport { RdxAccordionContentToken } from './accordion-content.directive';\nimport { RdxAccordionOrientation } from './accordion-root.directive';\n\nexport type RdxAccordionItemState = 'open' | 'closed';\n\nexport const RdxAccordionItemToken = new InjectionToken<RdxAccordionItemDirective>(\n 'RdxAccordionItemToken'\n);\n\nexport function injectAccordionItem(): RdxAccordionItemDirective {\n return inject(RdxAccordionItemDirective);\n}\n\n@Directive({\n selector: '[AccordionItem]',\n standalone: true,\n exportAs: 'AccordionItem',\n providers: [\n { provide: RdxAccordionItemToken, useExisting: RdxAccordionItemDirective, multi: true }\n ],\n host: {\n '[attr.data-state]': 'state()',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.data-orientation]': 'orientation'\n },\n hostDirectives: [CdkAccordion]\n})\nexport class RdxAccordionItemDirective {\n /**\n * @ignore\n */\n private accordionContent = contentChild.required(RdxAccordionContentToken);\n /**\n * Current item state\n */\n state = signal<RdxAccordionItemState>('closed');\n /**\n * When true, prevents the user from interacting with the item.\n */\n disabled = input(false);\n /**\n * @ignore\n */\n orientation: RdxAccordionOrientation = 'vertical';\n\n @Input() value?: string;\n\n /**\n * Changes current item state\n */\n setOpen(state?: RdxAccordionItemState) {\n if (this.disabled()) {\n return;\n }\n\n if (state === undefined) {\n this.state.update(() => (this.state() === 'open' ? 'closed' : 'open'));\n } else {\n this.state.update(() => state);\n }\n\n this.accordionContent().setOpen(this.state());\n }\n\n /**\n * @ignore\n */\n setOrientation(orientation: RdxAccordionOrientation) {\n this.orientation = orientation;\n\n this.accordionContent().orientation = orientation;\n }\n}\n","import { contentChildren, Directive, inject, InjectionToken, Input, OnInit } from '@angular/core';\n\nimport { RdxAccordionItemToken } from './accordion-item.directive';\n\nexport type RdxAccordionType = 'single' | 'multiple';\nexport type RdxAccordionOrientation = 'horizontal' | 'vertical';\n\nexport const RdxAccordionRootToken = new InjectionToken<RdxAccordionRootDirective>(\n 'RdxAccordionRootDirective'\n);\n\nexport function injectAccordionRoot(): RdxAccordionRootDirective {\n return inject(RdxAccordionRootDirective);\n}\n\n@Directive({\n selector: '[AccordionRoot]',\n standalone: true,\n providers: [{ provide: RdxAccordionRootToken, useExisting: RdxAccordionRootDirective }],\n host: {\n '[attr.data-orientation]': 'getOrientation()'\n }\n})\nexport class RdxAccordionRootDirective implements OnInit {\n /**\n * @private\n * @ignore\n */\n private readonly accordionItems = contentChildren(RdxAccordionItemToken);\n /**\n * @private\n * @ignore\n */\n private _orientation: RdxAccordionOrientation = 'vertical';\n /**\n * @private\n * @ignore\n */\n private _value: string[] = [];\n /**\n * The value of the item to expand when initially rendered and type is \"single\". Use when you do not need to control the state of the items.\n */\n @Input() defaultValue?: string[] = [];\n /**\n * Determines whether one or multiple items can be opened at the same time.\n */\n @Input() type: RdxAccordionType = 'single';\n /**\n * @ignore\n */\n @Input() collapsible = true;\n /**\n * The controlled value of the item to expand\n */\n @Input() set value(value: string | string[] | undefined) {\n if (value !== undefined) {\n this._value = Array.isArray(value) ? value : [value];\n } else {\n this._value = [];\n }\n\n this.onValueChange(this._value);\n }\n /**\n * The orientation of the accordion.\n */\n @Input() set orientation(orientation: RdxAccordionOrientation | undefined) {\n this._orientation = orientation ?? 'vertical';\n this.accordionItems().forEach((accordionItem) =>\n accordionItem.setOrientation(this._orientation)\n );\n }\n\n /**\n * @ignore\n */\n ngOnInit(): void {\n if (this.defaultValue) {\n this.value = this.defaultValue;\n }\n }\n\n /**\n * @ignore\n */\n onValueChange(value: string[]): void {\n if (this.type === 'single') {\n const currentValue = value.length > 0 ? value[0] : undefined;\n\n this.accordionItems().forEach((accordionItem) => {\n if (accordionItem.value === currentValue) {\n accordionItem.setOpen();\n } else {\n accordionItem.setOpen('closed');\n }\n });\n } else {\n value.forEach((valueItem) => {\n this.accordionItems().forEach((accordionItem) => {\n if (accordionItem.value === valueItem) {\n accordionItem.setOpen();\n }\n });\n });\n }\n }\n\n /**\n * @ignore\n */\n getOrientation(): RdxAccordionOrientation {\n return this._orientation;\n }\n}\n","import { Directive } from '@angular/core';\n\nimport { injectAccordionItem, RdxAccordionItemState } from './accordion-item.directive';\nimport { RdxAccordionOrientation } from './accordion-root.directive';\n\n@Directive({\n selector: '[AccordionHeader]',\n standalone: true,\n host: {\n '[attr.data-state]': 'getState()',\n '[attr.data-disabled]': 'getDisabled()',\n '[attr.data-orientation]': 'getOrientation()'\n }\n})\nexport class RdxAccordionHeaderDirective {\n /**\n * @ignore\n */\n private readonly accordionItem = injectAccordionItem();\n\n /**\n * @ignore\n */\n getState(): RdxAccordionItemState {\n return this.accordionItem.state();\n }\n\n /**\n * @ignore\n */\n getDisabled(): string | undefined {\n return this.accordionItem.disabled() ? '' : undefined;\n }\n\n /**\n * @ignore\n */\n getOrientation(): RdxAccordionOrientation {\n return this.accordionItem.orientation;\n }\n}\n","import { Directive } from '@angular/core';\n\nimport { injectAccordionItem, RdxAccordionItemState } from './accordion-item.directive';\nimport { injectAccordionRoot, RdxAccordionOrientation } from './accordion-root.directive';\n\n@Directive({\n selector: '[AccordionTrigger]',\n standalone: true,\n host: {\n '(click)': 'onClick()',\n '[attr.data-state]': 'getState()',\n '[attr.data-disabled]': 'getDisabled()',\n '[attr.data-orientation]': 'getOrientation()'\n }\n})\nexport class RdxAccordionTriggerDirective {\n /**\n * @ignore\n */\n private readonly accordionRoot = injectAccordionRoot();\n /**\n * @ignore\n */\n private readonly accordionItem = injectAccordionItem();\n\n /**\n * Fires when trigger clicked\n */\n onClick(): void {\n if (!this.accordionRoot.collapsible) {\n return;\n }\n\n if (this.accordionItem.value) {\n this.accordionRoot.value = [this.accordionItem.value];\n }\n }\n\n /**\n * @ignore\n */\n getState(): RdxAccordionItemState {\n return this.accordionItem.state();\n }\n\n /**\n * @ignore\n */\n getDisabled(): boolean | undefined {\n return this.accordionItem.disabled() || undefined;\n }\n\n /**\n * @ignore\n */\n getOrientation(): RdxAccordionOrientation {\n return this.accordionRoot.getOrientation();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@ import * as i0 from '@angular/core';
2
2
  import { Injectable, inject, ViewContainerRef, Directive, Input, Renderer2, ElementRef } from '@angular/core';
3
3
  import * as i1 from '@angular/cdk/overlay';
4
4
  import { TemplatePortal } from '@angular/cdk/portal';
5
+ import * as i1$1 from '@angular/cdk/a11y';
6
+ import { CdkTrapFocus } from '@angular/cdk/a11y';
5
7
 
6
8
  class AlertDialogService {
7
9
  constructor(overlay) {
@@ -25,6 +27,11 @@ class AlertDialogService {
25
27
  });
26
28
  const templatePortal = new TemplatePortal(this.dialogContent.template, this.dialogContent.viewContainerRef);
27
29
  this.overlayRef.attach(templatePortal);
30
+ this.overlayRef.keydownEvents().subscribe((event) => {
31
+ if (event.key === 'Escape' || event.code === 'Escape') {
32
+ this.close();
33
+ }
34
+ });
28
35
  this.overlayRef.backdropClick().subscribe(() => this.close());
29
36
  }
30
37
  close() {
@@ -94,15 +101,21 @@ class AlertDialogContentDirective {
94
101
  this.renderer.setStyle(this.elementRef.nativeElement, 'maxWidth', value);
95
102
  }
96
103
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AlertDialogContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
97
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.4", type: AlertDialogContentDirective, isStandalone: true, selector: "[rdxAlertDialogContent]", inputs: { maxWidth: "maxWidth" }, host: { properties: { "attr.data-state": "open" } }, ngImport: i0 }); }
104
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.4", type: AlertDialogContentDirective, isStandalone: true, selector: "[rdxAlertDialogContent]", inputs: { maxWidth: "maxWidth" }, host: { properties: { "attr.data-state": "open", "attr.cdkTrapFocusAutoCapture": "true" } }, hostDirectives: [{ directive: i1$1.CdkTrapFocus }], ngImport: i0 }); }
98
105
  }
99
106
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AlertDialogContentDirective, decorators: [{
100
107
  type: Directive,
101
108
  args: [{
102
109
  selector: '[rdxAlertDialogContent]',
110
+ hostDirectives: [
111
+ {
112
+ directive: CdkTrapFocus
113
+ }
114
+ ],
103
115
  standalone: true,
104
116
  host: {
105
- '[attr.data-state]': 'open'
117
+ '[attr.data-state]': 'open',
118
+ '[attr.cdkTrapFocusAutoCapture]': 'true'
106
119
  }
107
120
  }]
108
121
  }], propDecorators: { maxWidth: [{