@radix-ng/primitives 0.11.0 → 0.12.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/.compodocrc.json +12 -0
- package/CHANGELOG.md +182 -0
- package/LICENSE +21 -0
- package/accordion/__tests__/accordion-content.directive.spec.ts +8 -0
- package/accordion/__tests__/accordion-header.directive.spec.ts +8 -0
- package/accordion/__tests__/accordion-item.directive.spec.ts +8 -0
- package/accordion/__tests__/accordion-root.directive.spec.ts +8 -0
- package/accordion/__tests__/accordion-trigger.directive.spec.ts +8 -0
- package/accordion/ng-package.json +5 -0
- package/accordion/src/accordion-content.directive.ts +46 -0
- package/accordion/src/accordion-header.directive.ts +15 -0
- package/accordion/src/accordion-item.directive.ts +216 -0
- package/accordion/src/accordion-root.directive.ts +205 -0
- package/accordion/src/accordion-trigger.directive.ts +37 -0
- package/accordion/stories/accordion.docs.mdx +77 -0
- package/accordion/stories/accordion.stories.ts +340 -0
- package/alert-dialog/{index.d.ts → index.ts} +1 -0
- package/alert-dialog/ng-package.json +5 -0
- package/alert-dialog/src/alert-dialog-cancel.directive.ts +17 -0
- package/alert-dialog/src/alert-dialog-content.directive.ts +24 -0
- package/alert-dialog/src/alert-dialog-root.directive.ts +15 -0
- package/alert-dialog/src/alert-dialog-title.directive.ts +7 -0
- package/alert-dialog/src/alert-dialog-trigger.directive.ts +17 -0
- package/alert-dialog/src/alert-dialog.service.ts +51 -0
- package/alert-dialog/stories/alert-dialog.stories.ts +139 -0
- package/avatar/__tests__/avatar-fallback.directive.spec.ts +31 -0
- package/avatar/__tests__/avatar-image.directive.spec.ts +36 -0
- package/avatar/ng-package.json +5 -0
- package/avatar/src/avatar-fallback.directive.ts +62 -0
- package/avatar/src/avatar-image.directive.ts +55 -0
- package/avatar/src/avatar-root.directive.ts +35 -0
- package/avatar/src/avatar.config.ts +29 -0
- package/avatar/stories/avatar.docs.mdx +37 -0
- package/avatar/stories/avatar.stories.ts +87 -0
- package/button/__tests__/.gitkeep +0 -0
- package/button/src/button-abstract.directive.ts +46 -0
- package/checkbox/ng-package.json +5 -0
- package/checkbox/src/checkbox-button.directive.ts +26 -0
- package/checkbox/src/checkbox-indicator.directive.ts +16 -0
- package/checkbox/src/checkbox-input.directive.ts +36 -0
- package/checkbox/src/checkbox.directive.ts +146 -0
- package/checkbox/src/checkbox.token.ts +8 -0
- package/checkbox/stories/checkbox-group.component.ts +87 -0
- package/checkbox/stories/checkbox-group.styles.scss +49 -0
- package/checkbox/stories/checkbox-indeterminate.component.ts +52 -0
- package/checkbox/stories/checkbox.docs.mdx +58 -0
- package/checkbox/stories/checkbox.stories.ts +105 -0
- package/collapsible/__tests__/collapsible-content.directive.spec.ts +30 -0
- package/collapsible/__tests__/collapsible-root.directive.spec.ts +27 -0
- package/collapsible/__tests__/collapsible-trigger.directive.spec.ts +30 -0
- package/collapsible/ng-package.json +5 -0
- package/collapsible/src/collapsible-content.directive.ts +34 -0
- package/collapsible/src/collapsible-content.token.ts +6 -0
- package/collapsible/src/collapsible-root.directive.ts +120 -0
- package/collapsible/src/collapsible-trigger.directive.ts +44 -0
- package/collapsible/stories/collapsible-animation.component.ts +116 -0
- package/collapsible/stories/collapsible-external-triggering.component.ts +86 -0
- package/collapsible/stories/collapsible.docs.mdx +53 -0
- package/collapsible/stories/collapsible.stories.ts +151 -0
- package/context-menu/README.md +1 -0
- package/context-menu/index.ts +10 -0
- package/context-menu/ng-package.json +5 -0
- package/context-menu/src/context-menu-content.directive.ts +47 -0
- package/context-menu/src/context-menu-item-checkbox.directive.ts +30 -0
- package/context-menu/src/context-menu-item-indicator.directive.ts +14 -0
- package/context-menu/src/context-menu-item-radio-group.directive.ts +31 -0
- package/context-menu/src/context-menu-item-radio.directive.ts +69 -0
- package/context-menu/src/context-menu-item-selectable.ts +18 -0
- package/context-menu/src/context-menu-item.directive.ts +65 -0
- package/context-menu/src/context-menu-label.directive.ts +7 -0
- package/context-menu/src/context-menu-separator.directive.ts +13 -0
- package/context-menu/src/context-menu-trigger.directive.ts +82 -0
- package/context-menu/stories/context-menu.docs.mdx +23 -0
- package/context-menu/stories/context-menu.stories.ts +253 -0
- package/core/index.ts +3 -0
- package/core/src/accessor/provide-value-accessor.ts +20 -0
- package/core/src/auto-focus.directive.ts +81 -0
- package/core/src/inject-ng-control.ts +28 -0
- package/core/src/mount.ts +27 -0
- package/dialog/README.md +1 -0
- package/dialog/__tests__/dialog-content.directive.spec.ts +77 -0
- package/dialog/__tests__/dialog-trigger.directive.spec.ts +85 -0
- package/dialog/index.ts +31 -0
- package/dialog/ng-package.json +5 -0
- package/dialog/src/dialog-close.directive.ts +18 -0
- package/dialog/src/dialog-content.directive.ts +45 -0
- package/dialog/src/dialog-description.directive.ts +7 -0
- package/dialog/src/dialog-dismiss.directive.ts +18 -0
- package/dialog/src/dialog-ref.ts +70 -0
- package/dialog/src/dialog-title.directive.ts +7 -0
- package/dialog/src/dialog-trigger.directive.ts +52 -0
- package/dialog/src/dialog.config.ts +55 -0
- package/dialog/src/dialog.injectors.ts +12 -0
- package/dialog/src/dialog.providers.ts +27 -0
- package/dialog/src/dialog.service.ts +94 -0
- package/dialog/stories/dialog.docs.mdx +32 -0
- package/dialog/stories/dialog.stories.ts +233 -0
- package/dropdown-menu/ng-package.json +5 -0
- package/dropdown-menu/src/dropdown-menu-content.directive.ts +47 -0
- package/dropdown-menu/src/dropdown-menu-item-checkbox.directive.ts +30 -0
- package/dropdown-menu/src/dropdown-menu-item-indicator.directive.ts +14 -0
- package/dropdown-menu/src/dropdown-menu-item-radio-group.directive.ts +31 -0
- package/dropdown-menu/src/dropdown-menu-item-radio.directive.ts +72 -0
- package/dropdown-menu/src/dropdown-menu-item-selectable.ts +18 -0
- package/dropdown-menu/src/dropdown-menu-item.directive.ts +66 -0
- package/dropdown-menu/src/dropdown-menu-label.directive.ts +7 -0
- package/dropdown-menu/src/dropdown-menu-separator.directive.ts +13 -0
- package/dropdown-menu/src/dropdown-menu-trigger.directive.ts +185 -0
- package/dropdown-menu/stories/dropdown-menu-item-checkbox.component.ts +104 -0
- package/dropdown-menu/stories/dropdown-menu-item-checkbox.styles.scss +106 -0
- package/dropdown-menu/stories/dropdown-menu-item-radio.component.ts +95 -0
- package/dropdown-menu/stories/dropdown-menu-item-radio.styles.scss +106 -0
- package/dropdown-menu/stories/dropdown.docs.mdx +27 -0
- package/dropdown-menu/stories/dropdown.stories.ts +212 -0
- package/form-field/index.ts +1 -0
- package/form-field/src/.gitkeep +0 -0
- package/jest.config.ts +21 -0
- package/label/__tests__/label-root.directive.spec.ts +99 -0
- package/label/ng-package.json +5 -0
- package/label/src/label.directive.ts +58 -0
- package/label/stories/label.docs.mdx +40 -0
- package/label/stories/label.stories.ts +76 -0
- package/menu/index.ts +29 -0
- package/menu/ng-package.json +5 -0
- package/menu/src/menu-content.directive.ts +9 -0
- package/menu/src/menu-directive.ts +10 -0
- package/menu/src/menu-group.directive.ts +12 -0
- package/menu/src/menu-item.directive.ts +44 -0
- package/menu/src/menu-label.directive.ts +7 -0
- package/menu/src/menu-separator.directive.ts +13 -0
- package/menubar/index.ts +38 -0
- package/menubar/ng-package.json +5 -0
- package/menubar/src/menubar-content.directive.ts +9 -0
- package/menubar/src/menubar-item-checkbox.directive.ts +32 -0
- package/menubar/src/menubar-item-indicator.directive.ts +10 -0
- package/menubar/src/menubar-item-radio.directive.ts +33 -0
- package/menubar/src/menubar-item.directive.ts +12 -0
- package/menubar/src/menubar-radio-group.directive.ts +9 -0
- package/menubar/src/menubar-root.directive.ts +15 -0
- package/menubar/src/menubar-separator.directive.ts +9 -0
- package/menubar/src/menubar-trigger.directive.ts +40 -0
- package/menubar/stories/menubar.stories.ts +229 -0
- package/ng-package.json +8 -0
- package/package.json +4 -112
- package/portal/stories/portal.docs.mdx +85 -0
- package/presence/__test__/presence-test.component.ts +51 -0
- package/presence/__test__/presence.spec.ts +50 -0
- package/presence/index.ts +4 -0
- package/presence/src/presence.ts +119 -0
- package/presence/src/transitions/transition.collapse.ts +99 -0
- package/presence/src/transitions/transition.toast.ts +27 -0
- package/presence/src/types.ts +20 -0
- package/presence/src/utils.ts +63 -0
- package/presence/stories/presence-story.componen.ts +69 -0
- package/presence/stories/presence.docs.mdx +40 -0
- package/presence/stories/presence.stories.ts +29 -0
- package/progress/__test__/progress.spec.ts +55 -0
- package/progress/{index.d.ts → index.ts} +1 -0
- package/progress/ng-package.json +5 -0
- package/progress/src/progress-indicator.directive.ts +26 -0
- package/progress/src/progress-root.directive.ts +134 -0
- package/progress/stories/progress.docs.mdx +65 -0
- package/progress/stories/progress.stories.ts +66 -0
- package/project.json +39 -0
- package/radio/{index.d.ts → index.ts} +1 -0
- package/radio/ng-package.json +5 -0
- package/radio/src/radio-indicator.directive.ts +17 -0
- package/radio/src/radio-item.directive.ts +68 -0
- package/radio/src/radio-root.directive.ts +207 -0
- package/radio/src/{radio-tokens.d.ts → radio-tokens.ts} +5 -1
- package/radio/stories/radio-group.component.ts +39 -0
- package/radio/stories/radio-group.styles.scss +70 -0
- package/radio/stories/radio.docs.mdx +68 -0
- package/radio/stories/radio.stories.ts +155 -0
- package/separator/__tests__/separator.directive.spec.ts +58 -0
- package/separator/ng-package.json +5 -0
- package/separator/src/separator.directive.ts +35 -0
- package/separator/stories/separator.docs.mdx +37 -0
- package/separator/stories/separator.stories.ts +82 -0
- package/slider/src/slider-input.directive.ts +0 -0
- package/slider/src/slider-thumb.directives.ts +60 -0
- package/slider/src/slider-track.directive.ts +11 -0
- package/slider/src/slider.directive.ts +59 -0
- package/slider/src/slider.types.ts +4 -0
- package/switch/index.ts +22 -0
- package/switch/ng-package.json +5 -0
- package/switch/src/switch-input.directive.ts +24 -0
- package/switch/src/switch-root.directive.ts +127 -0
- package/switch/src/switch-thumb.directive.ts +15 -0
- package/switch/stories/switch.docs.mdx +83 -0
- package/switch/stories/switch.stories.ts +149 -0
- package/tabs/__tests__/tabs-context.service.spec.ts +35 -0
- package/tabs/index.ts +26 -0
- package/tabs/ng-package.json +5 -0
- package/tabs/src/tabs-content.directive.ts +23 -0
- package/tabs/src/tabs-context.service.ts +43 -0
- package/tabs/src/tabs-list.directive.ts +21 -0
- package/tabs/src/tabs-root.directive.ts +70 -0
- package/tabs/src/tabs-trigger.directive.ts +55 -0
- package/tabs/stories/tabs.stories.ts +213 -0
- package/test-setup.ts +1 -0
- package/toggle/__tests__/toggle.directive.spec.ts +87 -0
- package/toggle/ng-package.json +5 -0
- package/toggle/src/toggle.directive.ts +49 -0
- package/toggle/stories/toggle.docs.mdx +60 -0
- package/toggle/stories/toggle.stories.ts +84 -0
- package/toggle-group/ng-package.json +5 -0
- package/toggle-group/src/toggle-group-button.directive.ts +73 -0
- package/toggle-group/src/toggle-group-button.token.ts +8 -0
- package/toggle-group/src/toggle-group-multi.directive.ts +158 -0
- package/toggle-group/src/toggle-group.directive.ts +148 -0
- package/toggle-group/src/toggle-group.token.ts +11 -0
- package/toggle-group/stories/toggle-group.docs.mdx +87 -0
- package/toggle-group/stories/toggle-group.stories.ts +95 -0
- package/tsconfig.doc.json +11 -0
- package/tsconfig.json +29 -0
- package/tsconfig.lib.json +19 -0
- package/tsconfig.lib.prod.json +12 -0
- package/tsconfig.spec.json +11 -0
- package/visually-hidden/README.md +3 -0
- package/visually-hidden/stories/visually-hidden.docs.mdx +36 -0
- package/accordion/src/accordion-content.directive.d.ts +0 -16
- package/accordion/src/accordion-header.directive.d.ts +0 -7
- package/accordion/src/accordion-item.directive.d.ts +0 -62
- package/accordion/src/accordion-root.directive.d.ts +0 -78
- package/accordion/src/accordion-trigger.directive.d.ts +0 -15
- package/alert-dialog/src/alert-dialog-cancel.directive.d.ts +0 -7
- package/alert-dialog/src/alert-dialog-content.directive.d.ts +0 -9
- package/alert-dialog/src/alert-dialog-root.directive.d.ts +0 -9
- package/alert-dialog/src/alert-dialog-title.directive.d.ts +0 -5
- package/alert-dialog/src/alert-dialog-trigger.directive.d.ts +0 -7
- package/alert-dialog/src/alert-dialog.service.d.ts +0 -14
- package/avatar/src/avatar-fallback.directive.d.ts +0 -27
- package/avatar/src/avatar-image.directive.d.ts +0 -16
- package/avatar/src/avatar-root.directive.d.ts +0 -21
- package/avatar/src/avatar.config.d.ts +0 -13
- package/checkbox/src/checkbox-button.directive.d.ts +0 -8
- package/checkbox/src/checkbox-indicator.directive.d.ts +0 -6
- package/checkbox/src/checkbox-input.directive.d.ts +0 -9
- package/checkbox/src/checkbox.directive.d.ts +0 -75
- package/checkbox/src/checkbox.token.d.ts +0 -4
- package/collapsible/src/collapsible-content.directive.d.ts +0 -17
- package/collapsible/src/collapsible-content.token.d.ts +0 -3
- package/collapsible/src/collapsible-root.directive.d.ts +0 -55
- package/collapsible/src/collapsible-trigger.directive.d.ts +0 -26
- package/compodoc/documentation.json +0 -11395
- package/dropdown-menu/src/dropdown-menu-content.directive.d.ts +0 -15
- package/dropdown-menu/src/dropdown-menu-item-checkbox.directive.d.ts +0 -9
- package/dropdown-menu/src/dropdown-menu-item-indicator.directive.d.ts +0 -7
- package/dropdown-menu/src/dropdown-menu-item-radio-group.directive.d.ts +0 -12
- package/dropdown-menu/src/dropdown-menu-item-radio.directive.d.ts +0 -19
- package/dropdown-menu/src/dropdown-menu-item-selectable.d.ts +0 -12
- package/dropdown-menu/src/dropdown-menu-item.directive.d.ts +0 -17
- package/dropdown-menu/src/dropdown-menu-label.directive.d.ts +0 -5
- package/dropdown-menu/src/dropdown-menu-separator.directive.d.ts +0 -6
- package/dropdown-menu/src/dropdown-menu-trigger.directive.d.ts +0 -43
- package/esm2022/accordion/index.mjs +0 -6
- package/esm2022/accordion/radix-ng-primitives-accordion.mjs +0 -5
- package/esm2022/accordion/src/accordion-content.directive.mjs +0 -36
- package/esm2022/accordion/src/accordion-header.directive.mjs +0 -23
- package/esm2022/accordion/src/accordion-item.directive.mjs +0 -170
- package/esm2022/accordion/src/accordion-root.directive.mjs +0 -157
- package/esm2022/accordion/src/accordion-trigger.directive.mjs +0 -42
- package/esm2022/alert-dialog/index.mjs +0 -7
- package/esm2022/alert-dialog/radix-ng-primitives-alert-dialog.mjs +0 -5
- package/esm2022/alert-dialog/src/alert-dialog-cancel.directive.mjs +0 -24
- package/esm2022/alert-dialog/src/alert-dialog-content.directive.mjs +0 -34
- package/esm2022/alert-dialog/src/alert-dialog-root.directive.mjs +0 -25
- package/esm2022/alert-dialog/src/alert-dialog-title.directive.mjs +0 -14
- package/esm2022/alert-dialog/src/alert-dialog-trigger.directive.mjs +0 -24
- package/esm2022/alert-dialog/src/alert-dialog.service.mjs +0 -47
- package/esm2022/avatar/index.mjs +0 -5
- package/esm2022/avatar/radix-ng-primitives-avatar.mjs +0 -5
- package/esm2022/avatar/src/avatar-fallback.directive.mjs +0 -54
- package/esm2022/avatar/src/avatar-image.directive.mjs +0 -48
- package/esm2022/avatar/src/avatar-root.directive.mjs +0 -38
- package/esm2022/avatar/src/avatar.config.mjs +0 -17
- package/esm2022/checkbox/index.mjs +0 -6
- package/esm2022/checkbox/radix-ng-primitives-checkbox.mjs +0 -5
- package/esm2022/checkbox/src/checkbox-button.directive.mjs +0 -33
- package/esm2022/checkbox/src/checkbox-indicator.directive.mjs +0 -24
- package/esm2022/checkbox/src/checkbox-input.directive.mjs +0 -41
- package/esm2022/checkbox/src/checkbox.directive.mjs +0 -141
- package/esm2022/checkbox/src/checkbox.token.mjs +0 -6
- package/esm2022/collapsible/index.mjs +0 -4
- package/esm2022/collapsible/radix-ng-primitives-collapsible.mjs +0 -5
- package/esm2022/collapsible/src/collapsible-content.directive.mjs +0 -45
- package/esm2022/collapsible/src/collapsible-content.token.mjs +0 -3
- package/esm2022/collapsible/src/collapsible-root.directive.mjs +0 -118
- package/esm2022/collapsible/src/collapsible-trigger.directive.mjs +0 -49
- package/esm2022/dropdown-menu/index.mjs +0 -11
- package/esm2022/dropdown-menu/radix-ng-primitives-dropdown-menu.mjs +0 -5
- package/esm2022/dropdown-menu/src/dropdown-menu-content.directive.mjs +0 -56
- package/esm2022/dropdown-menu/src/dropdown-menu-item-checkbox.directive.mjs +0 -36
- package/esm2022/dropdown-menu/src/dropdown-menu-item-indicator.directive.mjs +0 -22
- package/esm2022/dropdown-menu/src/dropdown-menu-item-radio-group.directive.mjs +0 -37
- package/esm2022/dropdown-menu/src/dropdown-menu-item-radio.directive.mjs +0 -64
- package/esm2022/dropdown-menu/src/dropdown-menu-item-selectable.mjs +0 -31
- package/esm2022/dropdown-menu/src/dropdown-menu-item.directive.mjs +0 -71
- package/esm2022/dropdown-menu/src/dropdown-menu-label.directive.mjs +0 -14
- package/esm2022/dropdown-menu/src/dropdown-menu-separator.directive.mjs +0 -21
- package/esm2022/dropdown-menu/src/dropdown-menu-trigger.directive.mjs +0 -176
- package/esm2022/index.mjs +0 -2
- package/esm2022/label/index.mjs +0 -2
- package/esm2022/label/radix-ng-primitives-label.mjs +0 -5
- package/esm2022/label/src/label.directive.mjs +0 -59
- package/esm2022/menu/index.mjs +0 -45
- package/esm2022/menu/radix-ng-primitives-menu.mjs +0 -5
- package/esm2022/menu/src/menu-content.directive.mjs +0 -17
- package/esm2022/menu/src/menu-directive.mjs +0 -18
- package/esm2022/menu/src/menu-group.directive.mjs +0 -20
- package/esm2022/menu/src/menu-item.directive.mjs +0 -46
- package/esm2022/menu/src/menu-label.directive.mjs +0 -14
- package/esm2022/menu/src/menu-separator.directive.mjs +0 -21
- package/esm2022/menubar/index.mjs +0 -60
- package/esm2022/menubar/radix-ng-primitives-menubar.mjs +0 -5
- package/esm2022/menubar/src/menubar-content.directive.mjs +0 -17
- package/esm2022/menubar/src/menubar-item-checkbox.directive.mjs +0 -34
- package/esm2022/menubar/src/menubar-item-indicator.directive.mjs +0 -17
- package/esm2022/menubar/src/menubar-item-radio.directive.mjs +0 -35
- package/esm2022/menubar/src/menubar-item.directive.mjs +0 -20
- package/esm2022/menubar/src/menubar-radio-group.directive.mjs +0 -17
- package/esm2022/menubar/src/menubar-root.directive.mjs +0 -24
- package/esm2022/menubar/src/menubar-separator.directive.mjs +0 -17
- package/esm2022/menubar/src/menubar-trigger.directive.mjs +0 -45
- package/esm2022/progress/index.mjs +0 -3
- package/esm2022/progress/radix-ng-primitives-progress.mjs +0 -5
- package/esm2022/progress/src/progress-indicator.directive.mjs +0 -34
- package/esm2022/progress/src/progress-root.directive.mjs +0 -127
- package/esm2022/radio/index.mjs +0 -4
- package/esm2022/radio/radix-ng-primitives-radio.mjs +0 -5
- package/esm2022/radio/src/radio-indicator.directive.mjs +0 -25
- package/esm2022/radio/src/radio-item.directive.mjs +0 -70
- package/esm2022/radio/src/radio-root.directive.mjs +0 -194
- package/esm2022/radio/src/radio-tokens.mjs +0 -3
- package/esm2022/radix-ng-primitives.mjs +0 -5
- package/esm2022/separator/index.mjs +0 -2
- package/esm2022/separator/radix-ng-primitives-separator.mjs +0 -5
- package/esm2022/separator/src/separator.directive.mjs +0 -31
- package/esm2022/switch/index.mjs +0 -30
- package/esm2022/switch/radix-ng-primitives-switch.mjs +0 -5
- package/esm2022/switch/src/switch-input.directive.mjs +0 -32
- package/esm2022/switch/src/switch-root.directive.mjs +0 -95
- package/esm2022/switch/src/switch-thumb.directive.mjs +0 -23
- package/esm2022/tabs/index.mjs +0 -38
- package/esm2022/tabs/radix-ng-primitives-tabs.mjs +0 -5
- package/esm2022/tabs/src/tabs-content.directive.mjs +0 -29
- package/esm2022/tabs/src/tabs-context.service.mjs +0 -43
- package/esm2022/tabs/src/tabs-list.directive.mjs +0 -23
- package/esm2022/tabs/src/tabs-root.directive.mjs +0 -54
- package/esm2022/tabs/src/tabs-trigger.directive.mjs +0 -52
- package/esm2022/toggle/index.mjs +0 -2
- package/esm2022/toggle/radix-ng-primitives-toggle.mjs +0 -5
- package/esm2022/toggle/src/toggle.directive.mjs +0 -39
- package/esm2022/toggle-group/index.mjs +0 -6
- package/esm2022/toggle-group/radix-ng-primitives-toggle-group.mjs +0 -5
- package/esm2022/toggle-group/src/toggle-group-button.directive.mjs +0 -75
- package/esm2022/toggle-group/src/toggle-group-button.token.mjs +0 -6
- package/esm2022/toggle-group/src/toggle-group-multi.directive.mjs +0 -143
- package/esm2022/toggle-group/src/toggle-group.directive.mjs +0 -134
- package/esm2022/toggle-group/src/toggle-group.token.mjs +0 -6
- package/fesm2022/radix-ng-primitives-accordion.mjs +0 -418
- package/fesm2022/radix-ng-primitives-accordion.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs +0 -161
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-avatar.mjs +0 -156
- package/fesm2022/radix-ng-primitives-avatar.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-checkbox.mjs +0 -241
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-collapsible.mjs +0 -213
- package/fesm2022/radix-ng-primitives-collapsible.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-dropdown-menu.mjs +0 -502
- package/fesm2022/radix-ng-primitives-dropdown-menu.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-label.mjs +0 -66
- package/fesm2022/radix-ng-primitives-label.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +0 -158
- package/fesm2022/radix-ng-primitives-menu.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-menubar.mjs +0 -245
- package/fesm2022/radix-ng-primitives-menubar.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-progress.mjs +0 -165
- package/fesm2022/radix-ng-primitives-progress.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-radio.mjs +0 -289
- package/fesm2022/radix-ng-primitives-radio.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-separator.mjs +0 -38
- package/fesm2022/radix-ng-primitives-separator.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-switch.mjs +0 -173
- package/fesm2022/radix-ng-primitives-switch.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-tabs.mjs +0 -222
- package/fesm2022/radix-ng-primitives-tabs.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-toggle-group.mjs +0 -358
- package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-toggle.mjs +0 -46
- package/fesm2022/radix-ng-primitives-toggle.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives.mjs +0 -4
- package/fesm2022/radix-ng-primitives.mjs.map +0 -1
- package/label/src/label.directive.d.ts +0 -29
- package/menu/index.d.ts +0 -18
- package/menu/src/menu-content.directive.d.ts +0 -6
- package/menu/src/menu-directive.d.ts +0 -6
- package/menu/src/menu-group.directive.d.ts +0 -6
- package/menu/src/menu-item.directive.d.ts +0 -12
- package/menu/src/menu-label.directive.d.ts +0 -5
- package/menu/src/menu-separator.directive.d.ts +0 -6
- package/menubar/index.d.ts +0 -24
- package/menubar/src/menubar-content.directive.d.ts +0 -6
- package/menubar/src/menubar-item-checkbox.directive.d.ts +0 -14
- package/menubar/src/menubar-item-indicator.directive.d.ts +0 -5
- package/menubar/src/menubar-item-radio.directive.d.ts +0 -14
- package/menubar/src/menubar-item.directive.d.ts +0 -8
- package/menubar/src/menubar-radio-group.directive.d.ts +0 -6
- package/menubar/src/menubar-root.directive.d.ts +0 -7
- package/menubar/src/menubar-separator.directive.d.ts +0 -6
- package/menubar/src/menubar-trigger.directive.d.ts +0 -11
- package/progress/src/progress-indicator.directive.d.ts +0 -16
- package/progress/src/progress-root.directive.d.ts +0 -63
- package/radio/src/radio-indicator.directive.d.ts +0 -9
- package/radio/src/radio-item.directive.d.ts +0 -21
- package/radio/src/radio-root.directive.d.ts +0 -72
- package/separator/src/separator.directive.d.ts +0 -22
- package/switch/index.d.ts +0 -13
- package/switch/src/switch-input.directive.d.ts +0 -6
- package/switch/src/switch-root.directive.d.ts +0 -51
- package/switch/src/switch-thumb.directive.d.ts +0 -6
- package/tabs/index.d.ts +0 -15
- package/tabs/src/tabs-content.directive.d.ts +0 -8
- package/tabs/src/tabs-context.service.d.ts +0 -22
- package/tabs/src/tabs-list.directive.d.ts +0 -6
- package/tabs/src/tabs-root.directive.d.ts +0 -37
- package/tabs/src/tabs-trigger.directive.d.ts +0 -19
- package/toggle/src/toggle.directive.d.ts +0 -30
- package/toggle-group/src/toggle-group-button.directive.d.ts +0 -39
- package/toggle-group/src/toggle-group-button.token.d.ts +0 -4
- package/toggle-group/src/toggle-group-multi.directive.d.ts +0 -93
- package/toggle-group/src/toggle-group.directive.d.ts +0 -84
- package/toggle-group/src/toggle-group.token.d.ts +0 -5
- /package/accordion/{index.d.ts → index.ts} +0 -0
- /package/avatar/{index.d.ts → index.ts} +0 -0
- /package/checkbox/{index.d.ts → index.ts} +0 -0
- /package/collapsible/{index.d.ts → index.ts} +0 -0
- /package/dropdown-menu/{index.d.ts → index.ts} +0 -0
- /package/{index.d.ts → index.ts} +0 -0
- /package/label/{index.d.ts → index.ts} +0 -0
- /package/separator/{index.d.ts → index.ts} +0 -0
- /package/toggle/{index.d.ts → index.ts} +0 -0
- /package/toggle-group/{index.d.ts → index.ts} +0 -0
package/.compodocrc.json
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
{
|
2
|
+
"$schema": "../../node_modules/@compodoc/compodoc/src/config/schema.json",
|
3
|
+
"tsconfig": "tsconfig.doc.json",
|
4
|
+
"output": "../../dist/primitives/compodoc",
|
5
|
+
"exportFormat": "json",
|
6
|
+
"hideGenerator": true,
|
7
|
+
"disableCoverage": true,
|
8
|
+
"disablePrivate": true,
|
9
|
+
"disableInternal": true,
|
10
|
+
"disableLifeCycleHooks": true,
|
11
|
+
"disableDependencies": true
|
12
|
+
}
|
package/CHANGELOG.md
ADDED
@@ -0,0 +1,182 @@
|
|
1
|
+
## 0.12.0 (2024-09-19)
|
2
|
+
|
3
|
+
|
4
|
+
### 🚀 Features
|
5
|
+
|
6
|
+
- **dialog:** added Dialog primitive ([#101](https://github.com/radix-ng/primitives/pull/101))
|
7
|
+
|
8
|
+
- **radio:** added prefix rdx ([e5ebbc6](https://github.com/radix-ng/primitives/commit/e5ebbc6))
|
9
|
+
|
10
|
+
- **ci:** added eslint support ([#103](https://github.com/radix-ng/primitives/pull/103))
|
11
|
+
|
12
|
+
- **context-menu:** added context menu ([#2865](https://github.com/radix-ng/primitives/pull/2865), [#104](https://github.com/radix-ng/primitives/pull/104))
|
13
|
+
|
14
|
+
|
15
|
+
### 🩹 Fixes
|
16
|
+
|
17
|
+
- **avatar:** supported SSR ([c50ce18](https://github.com/radix-ng/primitives/commit/c50ce18))
|
18
|
+
|
19
|
+
- **dropdown-menu:** navigation ([#106](https://github.com/radix-ng/primitives/pull/106))
|
20
|
+
|
21
|
+
## 0.11.1 (2024-09-10)
|
22
|
+
|
23
|
+
|
24
|
+
### 🩹 Fixes
|
25
|
+
|
26
|
+
- shadcn/ui accordion example ([ee300bb](https://github.com/radix-ng/primitives/commit/ee300bb))
|
27
|
+
|
28
|
+
- animation in accordion-content.directive ([#94](https://github.com/radix-ng/primitives/pull/94))
|
29
|
+
|
30
|
+
## 0.11.0 (2024-09-06)
|
31
|
+
|
32
|
+
|
33
|
+
### 🚀 Features
|
34
|
+
|
35
|
+
- radix documentation - Astro and MDX ([#69](https://github.com/radix-ng/primitives/pull/69))
|
36
|
+
|
37
|
+
- accordion (#DS-2773) ([#92](https://github.com/radix-ng/primitives/pull/92))
|
38
|
+
|
39
|
+
- **collapsible:** rename onOpenChange and added content attributes ([24baf80](https://github.com/radix-ng/primitives/commit/24baf80))
|
40
|
+
|
41
|
+
|
42
|
+
### 🩹 Fixes
|
43
|
+
|
44
|
+
- **radio-group:** added focusKeyManager ([#95](https://github.com/radix-ng/primitives/pull/95))
|
45
|
+
|
46
|
+
## 0.10.0 (2024-08-21)
|
47
|
+
|
48
|
+
|
49
|
+
### 🚀 Features
|
50
|
+
|
51
|
+
- **primitives:** added rdx suffix for separator directive ([be5f9a5](https://github.com/radix-ng/primitives/commit/be5f9a5))
|
52
|
+
|
53
|
+
|
54
|
+
### 🩹 Fixes
|
55
|
+
|
56
|
+
- extend in trigger and menu + onEscapeKeyDown ([#86](https://github.com/radix-ng/primitives/pull/86))
|
57
|
+
|
58
|
+
## 0.9.1 (2024-08-15)
|
59
|
+
|
60
|
+
|
61
|
+
### 🩹 Fixes
|
62
|
+
|
63
|
+
- use extend for CdkMenuItem ([#85](https://github.com/radix-ng/primitives/pull/85))
|
64
|
+
|
65
|
+
## 0.9.0 (2024-08-13)
|
66
|
+
|
67
|
+
|
68
|
+
### 🚀 Features
|
69
|
+
|
70
|
+
- added stylelint support ([#64](https://github.com/radix-ng/primitives/pull/64))
|
71
|
+
|
72
|
+
- added prettier support for ts files ([#80](https://github.com/radix-ng/primitives/pull/80))
|
73
|
+
|
74
|
+
- added prettier support for mdx files ([#81](https://github.com/radix-ng/primitives/pull/81))
|
75
|
+
|
76
|
+
- **primitives:** dropdown menu, added parameters – side, align and offsets ([#65](https://github.com/radix-ng/primitives/pull/65))
|
77
|
+
|
78
|
+
- **primitives:** avatar - added prefix ([908bce1](https://github.com/radix-ng/primitives/commit/908bce1))
|
79
|
+
|
80
|
+
- **primitives:** updated prefix and documentation ([a2e5d34](https://github.com/radix-ng/primitives/commit/a2e5d34))
|
81
|
+
|
82
|
+
- **primitives:** dropdown menu ([#79](https://github.com/radix-ng/primitives/pull/79))
|
83
|
+
|
84
|
+
## 0.8.2 (2024-07-20)
|
85
|
+
|
86
|
+
|
87
|
+
### 🚀 Features
|
88
|
+
|
89
|
+
- **primitives:** upd Checkbox added input primitive and upd docs for imdeterminate ([e7d1279](https://github.com/radix-ng/primitives/commit/e7d1279))
|
90
|
+
|
91
|
+
- **shadcn:** updated checkbox indeterminate state ([497659d](https://github.com/radix-ng/primitives/commit/497659d))
|
92
|
+
|
93
|
+
## 0.8.1 (2024-07-10)
|
94
|
+
|
95
|
+
This was a version bump only for primitives to align it with other projects, there were no code changes.
|
96
|
+
|
97
|
+
## 0.7.2 (2024-07-06)
|
98
|
+
|
99
|
+
|
100
|
+
### 🚀 Features
|
101
|
+
|
102
|
+
- added Menubar base primitive ([0db991f](https://github.com/radix-ng/primitives/commit/0db991f))
|
103
|
+
|
104
|
+
- added Menu base primitive ([c7e395e](https://github.com/radix-ng/primitives/commit/c7e395e))
|
105
|
+
|
106
|
+
- **menubar:** added MenuBar ([#44](https://github.com/radix-ng/primitives/pull/44))
|
107
|
+
|
108
|
+
## 0.7.1 (2024-06-30)
|
109
|
+
|
110
|
+
This was a version bump only for primitives to align it with other projects, there were no code changes.
|
111
|
+
|
112
|
+
## 0.7.0 (2024-06-29)
|
113
|
+
|
114
|
+
|
115
|
+
### 🚀 Features
|
116
|
+
|
117
|
+
- **tabs:** added Tabs ([#38](https://github.com/radix-ng/primitives/pull/38))
|
118
|
+
|
119
|
+
## 0.6.0 (2024-06-20)
|
120
|
+
|
121
|
+
|
122
|
+
### 🚀 Features
|
123
|
+
|
124
|
+
- based for Textarea ([fcd14e1](https://github.com/radix-ng/primitives/commit/fcd14e1))
|
125
|
+
|
126
|
+
- added beta presence ([55b4a75](https://github.com/radix-ng/primitives/commit/55b4a75))
|
127
|
+
|
128
|
+
- **alert-dialog:** poc code ([f314588](https://github.com/radix-ng/primitives/commit/f314588))
|
129
|
+
|
130
|
+
## 0.5.0 (2024-04-26)
|
131
|
+
|
132
|
+
|
133
|
+
### 🚀 Features
|
134
|
+
|
135
|
+
- added Accordion primitive ([2e95121](https://github.com/radix-ng/primitives/commit/2e95121))
|
136
|
+
|
137
|
+
- **toggle-group:** added Toggle Group primitive ([88a38d3](https://github.com/radix-ng/primitives/commit/88a38d3))
|
138
|
+
|
139
|
+
|
140
|
+
### 🩹 Fixes
|
141
|
+
|
142
|
+
- **label:** added setter for UniqueId ([774c82f](https://github.com/radix-ng/primitives/commit/774c82f))
|
143
|
+
|
144
|
+
## 0.4.0 (2024-04-22)
|
145
|
+
|
146
|
+
|
147
|
+
### 🚀 Features
|
148
|
+
|
149
|
+
- **toggle:** added Toggle primitive ([f9a98dc](https://github.com/radix-ng/primitives/commit/f9a98dc))
|
150
|
+
|
151
|
+
## 0.3.0 (2024-04-20)
|
152
|
+
|
153
|
+
|
154
|
+
### 🚀 Features
|
155
|
+
|
156
|
+
- added overlay and tooltip ([e993fb3](https://github.com/radix-ng/primitives/commit/e993fb3))
|
157
|
+
|
158
|
+
- **avatar:** added primitive ([f76e8e9](https://github.com/radix-ng/primitives/commit/f76e8e9))
|
159
|
+
|
160
|
+
## 0.2.0 (2024-04-16)
|
161
|
+
|
162
|
+
### 🚀 Features
|
163
|
+
|
164
|
+
- **radio:** added Radio Group ([f0b0eed](https://github.com/radix-ng/primitives/commit/f0b0eed))
|
165
|
+
|
166
|
+
### 🩹 Fixes
|
167
|
+
|
168
|
+
- **checkbox:** updated story and styles ([7999532](https://github.com/radix-ng/primitives/commit/7999532))
|
169
|
+
|
170
|
+
- **styles:** radix variables ([532a6d1](https://github.com/radix-ng/primitives/commit/532a6d1))
|
171
|
+
|
172
|
+
## 0.1.1 (2024-04-14)
|
173
|
+
|
174
|
+
### 🩹 Fixes
|
175
|
+
|
176
|
+
- nx release publish target ([a27032f](https://github.com/radix-ng/primitives/commit/a27032f))
|
177
|
+
|
178
|
+
## 0.1.0 (2024-04-14)
|
179
|
+
|
180
|
+
### 🚀 Features
|
181
|
+
|
182
|
+
- **progress:** added progress meter ([17f3ffb](https://github.com/radix-ng/primitives/commit/17f3ffb))
|
package/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2024 radix-ng
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { RdxAccordionContentDirective } from '../src/accordion-content.directive';
|
2
|
+
|
3
|
+
xdescribe('RdxAccordionContentDirective', () => {
|
4
|
+
it('should create an instance', () => {
|
5
|
+
const directive = new RdxAccordionContentDirective();
|
6
|
+
expect(directive).toBeTruthy();
|
7
|
+
});
|
8
|
+
});
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { RdxAccordionHeaderDirective } from '../src/accordion-header.directive';
|
2
|
+
|
3
|
+
xdescribe('RdxAccordionHeaderDirective', () => {
|
4
|
+
it('should create an instance', () => {
|
5
|
+
const directive = new RdxAccordionHeaderDirective();
|
6
|
+
expect(directive).toBeTruthy();
|
7
|
+
});
|
8
|
+
});
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { RdxAccordionItemDirective } from '../src/accordion-item.directive';
|
2
|
+
|
3
|
+
xdescribe('RdxAccordionItemDirective', () => {
|
4
|
+
it('should create an instance', () => {
|
5
|
+
const directive = new RdxAccordionItemDirective();
|
6
|
+
expect(directive).toBeTruthy();
|
7
|
+
});
|
8
|
+
});
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { RdxAccordionRootDirective } from '../src/accordion-root.directive';
|
2
|
+
|
3
|
+
xdescribe('RdxAccordionRootDirective', () => {
|
4
|
+
it('should create an instance', () => {
|
5
|
+
const directive = new RdxAccordionRootDirective();
|
6
|
+
expect(directive).toBeTruthy();
|
7
|
+
});
|
8
|
+
});
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { RdxAccordionTriggerDirective } from '../src/accordion-trigger.directive';
|
2
|
+
|
3
|
+
xdescribe('RdxAccordionTriggerDirective', () => {
|
4
|
+
it('should create an instance', () => {
|
5
|
+
const directive = new RdxAccordionTriggerDirective();
|
6
|
+
expect(directive).toBeTruthy();
|
7
|
+
});
|
8
|
+
});
|
@@ -0,0 +1,46 @@
|
|
1
|
+
import { Directive, ElementRef, inject } from '@angular/core';
|
2
|
+
import { RdxAccordionItemDirective } from './accordion-item.directive';
|
3
|
+
|
4
|
+
@Directive({
|
5
|
+
selector: '[rdxAccordionContent]',
|
6
|
+
standalone: true,
|
7
|
+
exportAs: 'rdxAccordionContent',
|
8
|
+
host: {
|
9
|
+
'[attr.role]': '"region"',
|
10
|
+
'[style.display]': 'hidden ? "none" : ""',
|
11
|
+
'[attr.data-state]': 'item.dataState',
|
12
|
+
'[attr.data-disabled]': 'item.disabled',
|
13
|
+
'[attr.data-orientation]': 'item.orientation',
|
14
|
+
'(animationend)': 'onAnimationEnd()'
|
15
|
+
}
|
16
|
+
})
|
17
|
+
export class RdxAccordionContentDirective {
|
18
|
+
protected readonly item = inject(RdxAccordionItemDirective);
|
19
|
+
protected readonly nativeElement = inject(ElementRef).nativeElement;
|
20
|
+
|
21
|
+
protected hidden = false;
|
22
|
+
|
23
|
+
protected onAnimationEnd() {
|
24
|
+
this.hidden = !this.item.expanded;
|
25
|
+
|
26
|
+
const { height, width } = this.nativeElement.getBoundingClientRect();
|
27
|
+
|
28
|
+
this.nativeElement.style.setProperty('--radix-collapsible-content-height', `${height}px`);
|
29
|
+
this.nativeElement.style.setProperty('--radix-collapsible-content-width', `${width}px`);
|
30
|
+
|
31
|
+
this.nativeElement.style.setProperty(
|
32
|
+
'--radix-accordion-content-height',
|
33
|
+
'var(--radix-collapsible-content-height)'
|
34
|
+
);
|
35
|
+
this.nativeElement.style.setProperty(
|
36
|
+
'--radix-accordion-content-width',
|
37
|
+
'var(--radix-collapsible-content-width)'
|
38
|
+
);
|
39
|
+
}
|
40
|
+
|
41
|
+
onToggle() {
|
42
|
+
if (!this.item.expanded) {
|
43
|
+
this.hidden = false;
|
44
|
+
}
|
45
|
+
}
|
46
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import { Directive, inject } from '@angular/core';
|
2
|
+
import { RdxAccordionItemDirective } from './accordion-item.directive';
|
3
|
+
|
4
|
+
@Directive({
|
5
|
+
selector: '[rdxAccordionHeader]',
|
6
|
+
standalone: true,
|
7
|
+
host: {
|
8
|
+
'[attr.data-state]': 'item.dataState',
|
9
|
+
'[attr.data-disabled]': 'item.disabled',
|
10
|
+
'[attr.data-orientation]': 'item.orientation'
|
11
|
+
}
|
12
|
+
})
|
13
|
+
export class RdxAccordionHeaderDirective {
|
14
|
+
protected readonly item = inject(RdxAccordionItemDirective);
|
15
|
+
}
|
@@ -0,0 +1,216 @@
|
|
1
|
+
import { FocusableOption } from '@angular/cdk/a11y';
|
2
|
+
import { UniqueSelectionDispatcher } from '@angular/cdk/collections';
|
3
|
+
import {
|
4
|
+
booleanAttribute,
|
5
|
+
ChangeDetectorRef,
|
6
|
+
ContentChild,
|
7
|
+
Directive,
|
8
|
+
EventEmitter,
|
9
|
+
forwardRef,
|
10
|
+
inject,
|
11
|
+
Input,
|
12
|
+
OnDestroy,
|
13
|
+
Output
|
14
|
+
} from '@angular/core';
|
15
|
+
import { Subscription } from 'rxjs';
|
16
|
+
import { RdxAccordionContentDirective } from './accordion-content.directive';
|
17
|
+
import { RdxAccordionOrientation, RdxAccordionRootToken } from './accordion-root.directive';
|
18
|
+
import { RdxAccordionTriggerDirective } from './accordion-trigger.directive';
|
19
|
+
|
20
|
+
export type RdxAccordionItemState = 'open' | 'closed';
|
21
|
+
|
22
|
+
let nextId = 0;
|
23
|
+
|
24
|
+
@Directive({
|
25
|
+
selector: '[rdxAccordionItem]',
|
26
|
+
standalone: true,
|
27
|
+
exportAs: 'rdxAccordionItem',
|
28
|
+
host: {
|
29
|
+
'[attr.data-state]': 'dataState',
|
30
|
+
'[attr.data-disabled]': 'disabled',
|
31
|
+
'[attr.data-orientation]': 'orientation'
|
32
|
+
},
|
33
|
+
providers: [
|
34
|
+
{ provide: RdxAccordionRootToken, useValue: undefined }]
|
35
|
+
})
|
36
|
+
export class RdxAccordionItemDirective implements FocusableOption, OnDestroy {
|
37
|
+
/**
|
38
|
+
* @ignore
|
39
|
+
*/
|
40
|
+
protected readonly accordion = inject(RdxAccordionRootToken, { skipSelf: true });
|
41
|
+
/**
|
42
|
+
* @ignore
|
43
|
+
*/
|
44
|
+
protected readonly changeDetectorRef = inject(ChangeDetectorRef);
|
45
|
+
/**
|
46
|
+
* @ignore
|
47
|
+
*/
|
48
|
+
protected readonly expansionDispatcher = inject(UniqueSelectionDispatcher);
|
49
|
+
|
50
|
+
/**
|
51
|
+
* @ignore
|
52
|
+
*/
|
53
|
+
@ContentChild(RdxAccordionTriggerDirective, { descendants: true }) trigger: RdxAccordionTriggerDirective;
|
54
|
+
|
55
|
+
/**
|
56
|
+
* @ignore
|
57
|
+
*/
|
58
|
+
@ContentChild(forwardRef(() => RdxAccordionContentDirective), { descendants: true })
|
59
|
+
content: RdxAccordionContentDirective;
|
60
|
+
|
61
|
+
get dataState(): RdxAccordionItemState {
|
62
|
+
return this.expanded ? 'open' : 'closed';
|
63
|
+
}
|
64
|
+
|
65
|
+
/**
|
66
|
+
* The unique AccordionItem id.
|
67
|
+
* @ignore
|
68
|
+
*/
|
69
|
+
readonly id: string = `rdx-accordion-item-${nextId++}`;
|
70
|
+
|
71
|
+
get orientation(): RdxAccordionOrientation {
|
72
|
+
return this.accordion.orientation;
|
73
|
+
}
|
74
|
+
|
75
|
+
/** Whether the AccordionItem is expanded. */
|
76
|
+
@Input({ transform: booleanAttribute })
|
77
|
+
set expanded(expanded: boolean) {
|
78
|
+
// Only emit events and update the internal value if the value changes.
|
79
|
+
if (this._expanded !== expanded) {
|
80
|
+
this._expanded = expanded;
|
81
|
+
this.expandedChange.emit(expanded);
|
82
|
+
|
83
|
+
if (expanded) {
|
84
|
+
this.opened.emit();
|
85
|
+
/**
|
86
|
+
* In the unique selection dispatcher, the id parameter is the id of the CdkAccordionItem,
|
87
|
+
* the name value is the id of the accordion.
|
88
|
+
*/
|
89
|
+
const accordionId = this.accordion ? this.accordion.id : this.value;
|
90
|
+
this.expansionDispatcher.notify(this.value, accordionId);
|
91
|
+
} else {
|
92
|
+
this.closed.emit();
|
93
|
+
}
|
94
|
+
|
95
|
+
// Ensures that the animation will run when the value is set outside of an `@Input`.
|
96
|
+
// This includes cases like the open, close and toggle methods.
|
97
|
+
this.changeDetectorRef.markForCheck();
|
98
|
+
}
|
99
|
+
}
|
100
|
+
|
101
|
+
get expanded(): boolean {
|
102
|
+
return this._expanded;
|
103
|
+
}
|
104
|
+
|
105
|
+
private _expanded = false;
|
106
|
+
|
107
|
+
@Input()
|
108
|
+
set value(value: string) {
|
109
|
+
this._value = value;
|
110
|
+
}
|
111
|
+
|
112
|
+
get value(): string {
|
113
|
+
return this._value || this.id;
|
114
|
+
}
|
115
|
+
|
116
|
+
private _value?: string;
|
117
|
+
|
118
|
+
/** Whether the AccordionItem is disabled. */
|
119
|
+
@Input({ transform: booleanAttribute })
|
120
|
+
set disabled(value: boolean) {
|
121
|
+
this._disabled = value;
|
122
|
+
}
|
123
|
+
|
124
|
+
get disabled(): boolean {
|
125
|
+
return this.accordion.disabled ?? this._disabled;
|
126
|
+
}
|
127
|
+
|
128
|
+
private _disabled = false;
|
129
|
+
|
130
|
+
/** Event emitted every time the AccordionItem is closed. */
|
131
|
+
@Output() readonly closed: EventEmitter<void> = new EventEmitter<void>();
|
132
|
+
/** Event emitted every time the AccordionItem is opened. */
|
133
|
+
@Output() readonly opened: EventEmitter<void> = new EventEmitter<void>();
|
134
|
+
|
135
|
+
/**
|
136
|
+
* Event emitted when the AccordionItem is destroyed.
|
137
|
+
* @ignore
|
138
|
+
*/
|
139
|
+
readonly destroyed: EventEmitter<void> = new EventEmitter<void>();
|
140
|
+
|
141
|
+
/**
|
142
|
+
* Emits whenever the expanded state of the accordion changes.
|
143
|
+
* Primarily used to facilitate two-way binding.
|
144
|
+
* @docs-private
|
145
|
+
*/
|
146
|
+
@Output() readonly expandedChange: EventEmitter<boolean> = new EventEmitter<boolean>();
|
147
|
+
|
148
|
+
/** Unregister function for expansionDispatcher. */
|
149
|
+
private removeUniqueSelectionListener: () => void;
|
150
|
+
|
151
|
+
/** Subscription to openAll/closeAll events. */
|
152
|
+
private openCloseAllSubscription = Subscription.EMPTY;
|
153
|
+
|
154
|
+
constructor() {
|
155
|
+
this.removeUniqueSelectionListener = this.expansionDispatcher.listen((id: string, accordionId: string) => {
|
156
|
+
if (this.accordion.isMultiple) {
|
157
|
+
if (this.accordion.id === accordionId && id.includes(this.value)) {
|
158
|
+
this.expanded = true;
|
159
|
+
}
|
160
|
+
} else {
|
161
|
+
this.expanded = this.accordion.id === accordionId && id.includes(this.value);
|
162
|
+
}
|
163
|
+
});
|
164
|
+
|
165
|
+
// When an accordion item is hosted in an accordion, subscribe to open/close events.
|
166
|
+
if (this.accordion) {
|
167
|
+
this.openCloseAllSubscription = this.subscribeToOpenCloseAllActions();
|
168
|
+
}
|
169
|
+
}
|
170
|
+
|
171
|
+
/** Emits an event for the accordion item being destroyed. */
|
172
|
+
ngOnDestroy() {
|
173
|
+
this.opened.complete();
|
174
|
+
this.closed.complete();
|
175
|
+
this.destroyed.emit();
|
176
|
+
this.destroyed.complete();
|
177
|
+
this.removeUniqueSelectionListener();
|
178
|
+
this.openCloseAllSubscription.unsubscribe();
|
179
|
+
}
|
180
|
+
|
181
|
+
focus(): void {
|
182
|
+
this.trigger.focus();
|
183
|
+
}
|
184
|
+
|
185
|
+
/** Toggles the expanded state of the accordion item. */
|
186
|
+
toggle(): void {
|
187
|
+
if (!this.disabled) {
|
188
|
+
this.content.onToggle();
|
189
|
+
|
190
|
+
this.expanded = !this.expanded;
|
191
|
+
}
|
192
|
+
}
|
193
|
+
|
194
|
+
/** Sets the expanded state of the accordion item to false. */
|
195
|
+
close(): void {
|
196
|
+
if (!this.disabled) {
|
197
|
+
this.expanded = false;
|
198
|
+
}
|
199
|
+
}
|
200
|
+
|
201
|
+
/** Sets the expanded state of the accordion item to true. */
|
202
|
+
open(): void {
|
203
|
+
if (!this.disabled) {
|
204
|
+
this.expanded = true;
|
205
|
+
}
|
206
|
+
}
|
207
|
+
|
208
|
+
private subscribeToOpenCloseAllActions(): Subscription {
|
209
|
+
return this.accordion.openCloseAllActions.subscribe((expanded) => {
|
210
|
+
// Only change expanded state if item is enabled
|
211
|
+
if (!this.disabled) {
|
212
|
+
this.expanded = expanded;
|
213
|
+
}
|
214
|
+
});
|
215
|
+
}
|
216
|
+
}
|