@radix-ng/primitives 0.24.0 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/avatar/src/avatar-fallback.directive.d.ts +1 -1
- package/compodoc/documentation.json +14105 -11035
- package/core/index.d.ts +3 -2
- package/core/src/positioning/constants.d.ts +3 -0
- package/core/src/positioning/types.d.ts +42 -0
- package/{popover/src/popover.utils.d.ts → core/src/positioning/utils.d.ts} +4 -4
- package/dialog/src/dialog-trigger.directive.d.ts +12 -0
- package/fesm2022/radix-ng-primitives-accordion.mjs +19 -19
- package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs +22 -22
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-aspect-ratio.mjs +3 -3
- package/fesm2022/radix-ng-primitives-aspect-ratio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-avatar.mjs +17 -17
- package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-checkbox.mjs +16 -16
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-collapsible.mjs +9 -9
- package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-context-menu.mjs +34 -34
- package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +224 -236
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dialog.mjs +31 -26
- package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dropdown-menu.mjs +34 -34
- package/fesm2022/radix-ng-primitives-dropdown-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-label.mjs +3 -3
- package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +22 -22
- package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menubar.mjs +31 -31
- package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs +75 -277
- package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-progress.mjs +10 -10
- package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-radio.mjs +12 -12
- package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-roving-focus.mjs +6 -6
- package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-select.mjs +34 -35
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-separator.mjs +3 -3
- package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs +31 -34
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-switch.mjs +18 -15
- package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tabs.mjs +16 -16
- package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle-group.mjs +9 -9
- package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle.mjs +6 -6
- package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tooltip.mjs +1023 -511
- package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs +9 -9
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
- package/package.json +3 -57
- package/popover/index.d.ts +0 -1
- package/popover/src/popover-arrow.directive.d.ts +6 -6
- package/popover/src/popover-content.directive.d.ts +9 -8
- package/popover/src/popover-root.directive.d.ts +9 -8
- package/popover/src/popover.types.d.ts +0 -31
- package/popover/src/utils/cdk-event.service.d.ts +1 -0
- package/switch/src/switch-root.directive.d.ts +4 -1
- package/tooltip/README.md +2 -0
- package/tooltip/index.d.ts +9 -6
- package/tooltip/src/tooltip-anchor.directive.d.ts +28 -0
- package/tooltip/src/tooltip-anchor.token.d.ts +3 -0
- package/tooltip/src/tooltip-arrow.directive.d.ts +23 -8
- package/tooltip/src/tooltip-close.directive.d.ts +18 -0
- package/tooltip/src/tooltip-close.token.d.ts +3 -0
- package/tooltip/src/tooltip-content-attributes.component.d.ts +17 -0
- package/tooltip/src/tooltip-content-attributes.token.d.ts +3 -0
- package/tooltip/src/tooltip-content.directive.d.ts +88 -20
- package/tooltip/src/tooltip-root.directive.d.ts +122 -57
- package/tooltip/src/tooltip-root.inject.d.ts +3 -0
- package/tooltip/src/tooltip-trigger.directive.d.ts +11 -11
- package/tooltip/src/tooltip.types.d.ts +16 -16
- package/tooltip/src/utils/cdk-event.service.d.ts +30 -0
- package/tooltip/src/utils/constants.d.ts +1 -0
- package/tooltip/src/utils/types.d.ts +7 -0
- package/core/src/control-value-accessor/index.d.ts +0 -75
- package/core/src/create-inject-context/assert-injector.d.ts +0 -51
- package/core/src/create-inject-context/index.d.ts +0 -68
- package/core/src/types.d.ts +0 -23
- package/esm2022/accordion/index.mjs +0 -40
- package/esm2022/accordion/radix-ng-primitives-accordion.mjs +0 -5
- package/esm2022/accordion/src/accordion-content.directive.mjs +0 -42
- package/esm2022/accordion/src/accordion-header.directive.mjs +0 -23
- package/esm2022/accordion/src/accordion-item.directive.mjs +0 -196
- package/esm2022/accordion/src/accordion-root.directive.mjs +0 -200
- package/esm2022/accordion/src/accordion-trigger.directive.mjs +0 -42
- package/esm2022/alert-dialog/index.mjs +0 -41
- 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 -24
- 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 -46
- package/esm2022/aspect-ratio/index.mjs +0 -2
- package/esm2022/aspect-ratio/radix-ng-primitives-aspect-ratio.mjs +0 -5
- package/esm2022/aspect-ratio/src/aspect-ratio.directive.mjs +0 -57
- package/esm2022/avatar/index.mjs +0 -31
- package/esm2022/avatar/radix-ng-primitives-avatar.mjs +0 -5
- package/esm2022/avatar/src/avatar-fallback.directive.mjs +0 -67
- package/esm2022/avatar/src/avatar-image.directive.mjs +0 -65
- package/esm2022/avatar/src/avatar-root.directive.mjs +0 -26
- package/esm2022/avatar/src/avatar.config.mjs +0 -17
- package/esm2022/checkbox/index.mjs +0 -36
- 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 -44
- 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 -42
- package/esm2022/collapsible/src/collapsible-content.token.mjs +0 -3
- package/esm2022/collapsible/src/collapsible-root.directive.mjs +0 -127
- package/esm2022/collapsible/src/collapsible-trigger.directive.mjs +0 -49
- package/esm2022/context-menu/index.mjs +0 -65
- package/esm2022/context-menu/radix-ng-primitives-context-menu.mjs +0 -5
- package/esm2022/context-menu/src/context-menu-content.directive.mjs +0 -56
- package/esm2022/context-menu/src/context-menu-item-checkbox.directive.mjs +0 -39
- package/esm2022/context-menu/src/context-menu-item-indicator.directive.mjs +0 -22
- package/esm2022/context-menu/src/context-menu-item-radio-group.directive.mjs +0 -37
- package/esm2022/context-menu/src/context-menu-item-radio.directive.mjs +0 -67
- package/esm2022/context-menu/src/context-menu-item-selectable.mjs +0 -31
- package/esm2022/context-menu/src/context-menu-item.directive.mjs +0 -70
- package/esm2022/context-menu/src/context-menu-label.directive.mjs +0 -14
- package/esm2022/context-menu/src/context-menu-separator.directive.mjs +0 -21
- package/esm2022/context-menu/src/context-menu-trigger.directive.mjs +0 -92
- package/esm2022/core/index.mjs +0 -11
- package/esm2022/core/radix-ng-primitives-core.mjs +0 -5
- package/esm2022/core/src/accessor/provide-value-accessor.mjs +0 -19
- package/esm2022/core/src/auto-focus.directive.mjs +0 -80
- package/esm2022/core/src/control-value-accessor/index.mjs +0 -103
- package/esm2022/core/src/create-inject-context/assert-injector.mjs +0 -15
- package/esm2022/core/src/create-inject-context/index.mjs +0 -116
- package/esm2022/core/src/document.mjs +0 -6
- package/esm2022/core/src/id-generator.mjs +0 -43
- package/esm2022/core/src/inject-ng-control.mjs +0 -17
- package/esm2022/core/src/is-client.mjs +0 -6
- package/esm2022/core/src/is-inside-form.mjs +0 -7
- package/esm2022/core/src/types.mjs +0 -2
- package/esm2022/core/src/window.mjs +0 -15
- package/esm2022/dialog/index.mjs +0 -50
- package/esm2022/dialog/radix-ng-primitives-dialog.mjs +0 -5
- package/esm2022/dialog/src/dialog-close.directive.mjs +0 -25
- package/esm2022/dialog/src/dialog-content.directive.mjs +0 -46
- package/esm2022/dialog/src/dialog-description.directive.mjs +0 -14
- package/esm2022/dialog/src/dialog-dismiss.directive.mjs +0 -25
- package/esm2022/dialog/src/dialog-ref.mjs +0 -46
- package/esm2022/dialog/src/dialog-title.directive.mjs +0 -14
- package/esm2022/dialog/src/dialog-trigger.directive.mjs +0 -54
- package/esm2022/dialog/src/dialog.config.mjs +0 -6
- package/esm2022/dialog/src/dialog.injectors.mjs +0 -10
- package/esm2022/dialog/src/dialog.providers.mjs +0 -26
- package/esm2022/dialog/src/dialog.service.mjs +0 -96
- package/esm2022/dropdown-menu/index.mjs +0 -68
- 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 -39
- 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 -67
- package/esm2022/dropdown-menu/src/dropdown-menu-item-selectable.mjs +0 -31
- package/esm2022/dropdown-menu/src/dropdown-menu-item.directive.mjs +0 -73
- 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 -210
- 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 -57
- 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/popover/index.mjs +0 -51
- package/esm2022/popover/radix-ng-primitives-popover.mjs +0 -5
- package/esm2022/popover/src/popover-anchor.directive.mjs +0 -75
- package/esm2022/popover/src/popover-anchor.token.mjs +0 -3
- package/esm2022/popover/src/popover-arrow.directive.mjs +0 -117
- package/esm2022/popover/src/popover-arrow.token.mjs +0 -3
- package/esm2022/popover/src/popover-close.directive.mjs +0 -49
- package/esm2022/popover/src/popover-close.token.mjs +0 -3
- package/esm2022/popover/src/popover-content-attributes.component.mjs +0 -70
- package/esm2022/popover/src/popover-content-attributes.token.mjs +0 -3
- package/esm2022/popover/src/popover-content.directive.mjs +0 -270
- package/esm2022/popover/src/popover-root.directive.mjs +0 -320
- package/esm2022/popover/src/popover-root.inject.mjs +0 -7
- package/esm2022/popover/src/popover-trigger.directive.mjs +0 -41
- package/esm2022/popover/src/popover.constants.mjs +0 -90
- package/esm2022/popover/src/popover.types.mjs +0 -31
- package/esm2022/popover/src/popover.utils.mjs +0 -107
- package/esm2022/popover/src/utils/cdk-event.service.mjs +0 -153
- package/esm2022/popover/src/utils/constants.mjs +0 -2
- package/esm2022/popover/src/utils/types.mjs +0 -2
- package/esm2022/progress/index.mjs +0 -25
- package/esm2022/progress/radix-ng-primitives-progress.mjs +0 -5
- package/esm2022/progress/src/progress-indicator.directive.mjs +0 -33
- package/esm2022/progress/src/progress-root.directive.mjs +0 -132
- package/esm2022/radio/index.mjs +0 -5
- 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-input.directive.mjs +0 -37
- package/esm2022/radio/src/radio-item.directive.mjs +0 -86
- package/esm2022/radio/src/radio-root.directive.mjs +0 -104
- package/esm2022/radio/src/radio-tokens.mjs +0 -3
- package/esm2022/radix-ng-primitives.mjs +0 -5
- package/esm2022/roving-focus/index.mjs +0 -3
- package/esm2022/roving-focus/radix-ng-primitives-roving-focus.mjs +0 -5
- package/esm2022/roving-focus/src/roving-focus-group.directive.mjs +0 -138
- package/esm2022/roving-focus/src/roving-focus-item.directive.mjs +0 -133
- package/esm2022/roving-focus/src/utils.mjs +0 -47
- package/esm2022/select/index.mjs +0 -65
- package/esm2022/select/radix-ng-primitives-select.mjs +0 -5
- package/esm2022/select/src/select-content.directive.mjs +0 -53
- package/esm2022/select/src/select-group.directive.mjs +0 -18
- package/esm2022/select/src/select-icon.directive.mjs +0 -18
- package/esm2022/select/src/select-item-indicator.directive.mjs +0 -23
- package/esm2022/select/src/select-item.directive.mjs +0 -122
- package/esm2022/select/src/select-label.directive.mjs +0 -15
- package/esm2022/select/src/select-separator.directive.mjs +0 -18
- package/esm2022/select/src/select-trigger.directive.mjs +0 -38
- package/esm2022/select/src/select-value.directive.mjs +0 -21
- package/esm2022/select/src/select.component.mjs +0 -234
- 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 -61
- package/esm2022/slider/index.mjs +0 -28
- package/esm2022/slider/radix-ng-primitives-slider.mjs +0 -5
- package/esm2022/slider/src/slider-horizontal.component.mjs +0 -117
- package/esm2022/slider/src/slider-impl.directive.mjs +0 -89
- package/esm2022/slider/src/slider-orientation-context.service.mjs +0 -27
- package/esm2022/slider/src/slider-range.component.mjs +0 -41
- package/esm2022/slider/src/slider-root.component.mjs +0 -210
- package/esm2022/slider/src/slider-thumb-impl.directive.mjs +0 -106
- package/esm2022/slider/src/slider-thumb.component.mjs +0 -22
- package/esm2022/slider/src/slider-track.component.mjs +0 -27
- package/esm2022/slider/src/slider-vertical.component.mjs +0 -117
- package/esm2022/slider/src/utils.mjs +0 -94
- 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 -44
- package/esm2022/switch/src/switch-root.directive.mjs +0 -145
- package/esm2022/switch/src/switch-thumb.directive.mjs +0 -26
- package/esm2022/tabs/index.mjs +0 -35
- package/esm2022/tabs/radix-ng-primitives-tabs.mjs +0 -5
- package/esm2022/tabs/src/tabs-content.directive.mjs +0 -35
- package/esm2022/tabs/src/tabs-list.directive.mjs +0 -26
- package/esm2022/tabs/src/tabs-root.directive.mjs +0 -57
- package/esm2022/tabs/src/tabs-trigger.directive.mjs +0 -78
- package/esm2022/tabs/src/utils.mjs +0 -7
- package/esm2022/toggle/index.mjs +0 -3
- package/esm2022/toggle/radix-ng-primitives-toggle.mjs +0 -5
- package/esm2022/toggle/src/toggle-visually-hidden-input.directive.mjs +0 -31
- package/esm2022/toggle/src/toggle.directive.mjs +0 -79
- 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-item.directive.mjs +0 -85
- package/esm2022/toggle-group/src/toggle-group-item.token.mjs +0 -3
- package/esm2022/toggle-group/src/toggle-group-multiple.directive.mjs +0 -185
- package/esm2022/toggle-group/src/toggle-group.directive.mjs +0 -179
- package/esm2022/toggle-group/src/toggle-group.token.mjs +0 -6
- package/esm2022/tooltip/index.mjs +0 -41
- package/esm2022/tooltip/radix-ng-primitives-tooltip.mjs +0 -5
- package/esm2022/tooltip/src/get-content-position.mjs +0 -31
- package/esm2022/tooltip/src/tooltip-arrow.directive.mjs +0 -92
- package/esm2022/tooltip/src/tooltip-arrow.token.mjs +0 -3
- package/esm2022/tooltip/src/tooltip-content-attributes.directive.mjs +0 -24
- package/esm2022/tooltip/src/tooltip-content.directive.mjs +0 -48
- package/esm2022/tooltip/src/tooltip-content.token.mjs +0 -3
- package/esm2022/tooltip/src/tooltip-root.directive.mjs +0 -288
- package/esm2022/tooltip/src/tooltip-trigger.directive.mjs +0 -70
- package/esm2022/tooltip/src/tooltip.config.mjs +0 -18
- package/esm2022/tooltip/src/tooltip.constants.mjs +0 -84
- package/esm2022/tooltip/src/tooltip.types.mjs +0 -14
- package/esm2022/visually-hidden/index.mjs +0 -4
- package/esm2022/visually-hidden/radix-ng-primitives-visually-hidden.mjs +0 -5
- package/esm2022/visually-hidden/src/visually-hidden-input-bubble.directive.mjs +0 -74
- package/esm2022/visually-hidden/src/visually-hidden-input.directive.mjs +0 -74
- package/esm2022/visually-hidden/src/visually-hidden.directive.mjs +0 -42
- package/popover/src/popover.constants.d.ts +0 -8
- package/tooltip/src/get-content-position.d.ts +0 -3
- package/tooltip/src/tooltip-content-attributes.directive.d.ts +0 -8
- package/tooltip/src/tooltip-content.token.d.ts +0 -3
- package/tooltip/src/tooltip.config.d.ts +0 -6
- package/tooltip/src/tooltip.constants.d.ts +0 -9
@@ -1,37 +0,0 @@
|
|
1
|
-
import { computed, Directive, input } from '@angular/core';
|
2
|
-
import { RdxVisuallyHiddenDirective } from '@radix-ng/primitives/visually-hidden';
|
3
|
-
import { injectRadioItem } from './radio-item.directive';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
import * as i1 from "@radix-ng/primitives/visually-hidden";
|
6
|
-
export class RdxRadioItemInputDirective {
|
7
|
-
constructor() {
|
8
|
-
this.radioItem = injectRadioItem();
|
9
|
-
this.name = input();
|
10
|
-
this.value = computed(() => this.radioItem.value() || undefined);
|
11
|
-
this.checked = computed(() => this.radioItem.checkedState() || undefined);
|
12
|
-
this.required = input(this.radioItem.required());
|
13
|
-
this.disabled = input(this.radioItem.disabled());
|
14
|
-
}
|
15
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRadioItemInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
16
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: RdxRadioItemInputDirective, isStandalone: true, selector: "[rdxRadioItemInput]", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "radio" }, properties: { "attr.name": "name()", "attr.required": "required()", "attr.disabled": "disabled() ? disabled() : undefined", "attr.checked": "checked()", "value": "value()" } }, exportAs: ["rdxRadioItemInput"], hostDirectives: [{ directive: i1.RdxVisuallyHiddenDirective, inputs: ["feature", "feature"] }], ngImport: i0 }); }
|
17
|
-
}
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRadioItemInputDirective, decorators: [{
|
19
|
-
type: Directive,
|
20
|
-
args: [{
|
21
|
-
selector: '[rdxRadioItemInput]',
|
22
|
-
exportAs: 'rdxRadioItemInput',
|
23
|
-
standalone: true,
|
24
|
-
hostDirectives: [
|
25
|
-
{ directive: RdxVisuallyHiddenDirective, inputs: ['feature'] }
|
26
|
-
],
|
27
|
-
host: {
|
28
|
-
type: 'radio',
|
29
|
-
'[attr.name]': 'name()',
|
30
|
-
'[attr.required]': 'required()',
|
31
|
-
'[attr.disabled]': 'disabled() ? disabled() : undefined',
|
32
|
-
'[attr.checked]': 'checked()',
|
33
|
-
'[value]': 'value()'
|
34
|
-
}
|
35
|
-
}]
|
36
|
-
}] });
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8taXRlbS1pbnB1dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JhZGlvL3NyYy9yYWRpby1pdGVtLWlucHV0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFpQnpELE1BQU0sT0FBTywwQkFBMEI7SUFmdkM7UUFnQnFCLGNBQVMsR0FBRyxlQUFlLEVBQUUsQ0FBQztRQUV0QyxTQUFJLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDdkIsVUFBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLFNBQVMsQ0FBQyxDQUFDO1FBQzVELFlBQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxTQUFTLENBQUMsQ0FBQztRQUNyRSxhQUFRLEdBQUcsS0FBSyxDQUFzQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDakUsYUFBUSxHQUFHLEtBQUssQ0FBc0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0tBQzdFOytHQVJZLDBCQUEwQjttR0FBMUIsMEJBQTBCOzs0RkFBMUIsMEJBQTBCO2tCQWZ0QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixjQUFjLEVBQUU7d0JBQ1osRUFBRSxTQUFTLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUU7cUJBQUM7b0JBQ25FLElBQUksRUFBRTt3QkFDRixJQUFJLEVBQUUsT0FBTzt3QkFDYixhQUFhLEVBQUUsUUFBUTt3QkFDdkIsaUJBQWlCLEVBQUUsWUFBWTt3QkFDL0IsaUJBQWlCLEVBQUUscUNBQXFDO3dCQUN4RCxnQkFBZ0IsRUFBRSxXQUFXO3dCQUM3QixTQUFTLEVBQUUsU0FBUztxQkFDdkI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgRGlyZWN0aXZlLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmR4VmlzdWFsbHlIaWRkZW5EaXJlY3RpdmUgfSBmcm9tICdAcmFkaXgtbmcvcHJpbWl0aXZlcy92aXN1YWxseS1oaWRkZW4nO1xuaW1wb3J0IHsgaW5qZWN0UmFkaW9JdGVtIH0gZnJvbSAnLi9yYWRpby1pdGVtLmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3JkeFJhZGlvSXRlbUlucHV0XScsXG4gICAgZXhwb3J0QXM6ICdyZHhSYWRpb0l0ZW1JbnB1dCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBob3N0RGlyZWN0aXZlczogW1xuICAgICAgICB7IGRpcmVjdGl2ZTogUmR4VmlzdWFsbHlIaWRkZW5EaXJlY3RpdmUsIGlucHV0czogWydmZWF0dXJlJ10gfV0sXG4gICAgaG9zdDoge1xuICAgICAgICB0eXBlOiAncmFkaW8nLFxuICAgICAgICAnW2F0dHIubmFtZV0nOiAnbmFtZSgpJyxcbiAgICAgICAgJ1thdHRyLnJlcXVpcmVkXSc6ICdyZXF1aXJlZCgpJyxcbiAgICAgICAgJ1thdHRyLmRpc2FibGVkXSc6ICdkaXNhYmxlZCgpID8gZGlzYWJsZWQoKSA6IHVuZGVmaW5lZCcsXG4gICAgICAgICdbYXR0ci5jaGVja2VkXSc6ICdjaGVja2VkKCknLFxuICAgICAgICAnW3ZhbHVlXSc6ICd2YWx1ZSgpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmR4UmFkaW9JdGVtSW5wdXREaXJlY3RpdmUge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmFkaW9JdGVtID0gaW5qZWN0UmFkaW9JdGVtKCk7XG5cbiAgICByZWFkb25seSBuYW1lID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIHJlYWRvbmx5IHZhbHVlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yYWRpb0l0ZW0udmFsdWUoKSB8fCB1bmRlZmluZWQpO1xuICAgIHJlYWRvbmx5IGNoZWNrZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJhZGlvSXRlbS5jaGVja2VkU3RhdGUoKSB8fCB1bmRlZmluZWQpO1xuICAgIHJlYWRvbmx5IHJlcXVpcmVkID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odGhpcy5yYWRpb0l0ZW0ucmVxdWlyZWQoKSk7XG4gICAgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPih0aGlzLnJhZGlvSXRlbS5kaXNhYmxlZCgpKTtcbn1cbiJdfQ==
|
@@ -1,86 +0,0 @@
|
|
1
|
-
import { booleanAttribute, computed, Directive, ElementRef, inject, InjectionToken, input, signal } from '@angular/core';
|
2
|
-
import { RdxRovingFocusItemDirective } from '@radix-ng/primitives/roving-focus';
|
3
|
-
import { RDX_RADIO_GROUP } from './radio-tokens';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
import * as i1 from "@radix-ng/primitives/roving-focus";
|
6
|
-
export const RdxRadioItemToken = new InjectionToken('RadioItemToken');
|
7
|
-
export function injectRadioItem() {
|
8
|
-
return inject(RdxRadioItemToken);
|
9
|
-
}
|
10
|
-
export class RdxRadioItemDirective {
|
11
|
-
constructor() {
|
12
|
-
this.radioGroup = inject(RDX_RADIO_GROUP);
|
13
|
-
this.elementRef = inject(ElementRef);
|
14
|
-
this.value = input.required();
|
15
|
-
this.id = input();
|
16
|
-
this.required = input();
|
17
|
-
this.disabled = input(false, { transform: booleanAttribute });
|
18
|
-
this.disabledState = computed(() => this.radioGroup.disableState() || this.disabled());
|
19
|
-
this.checkedState = computed(() => this.radioGroup.value() === this.value());
|
20
|
-
this.ARROW_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];
|
21
|
-
this.isArrowKeyPressedSignal = signal(false);
|
22
|
-
}
|
23
|
-
/** @ignore */
|
24
|
-
ngOnInit() {
|
25
|
-
if (this.radioGroup.defaultValue === this.value()) {
|
26
|
-
this.radioGroup.select(this.value());
|
27
|
-
}
|
28
|
-
}
|
29
|
-
/** @ignore */
|
30
|
-
onClick() {
|
31
|
-
if (!this.disabledState()) {
|
32
|
-
this.radioGroup.select(this.value());
|
33
|
-
this.isArrowKeyPressedSignal.set(true);
|
34
|
-
}
|
35
|
-
}
|
36
|
-
/** @ignore */
|
37
|
-
onKeyDown(event) {
|
38
|
-
if (this.ARROW_KEYS.includes(event.key)) {
|
39
|
-
this.isArrowKeyPressedSignal.set(true);
|
40
|
-
}
|
41
|
-
}
|
42
|
-
/** @ignore */
|
43
|
-
onKeyUp() {
|
44
|
-
this.isArrowKeyPressedSignal.set(false);
|
45
|
-
}
|
46
|
-
/** @ignore */
|
47
|
-
onFocus() {
|
48
|
-
this.radioGroup.select(this.value());
|
49
|
-
setTimeout(() => {
|
50
|
-
/**
|
51
|
-
* When navigating with arrow keys, focus triggers on the radio item.
|
52
|
-
* To "check" the radio, we programmatically trigger a click event.
|
53
|
-
*/
|
54
|
-
if (this.isArrowKeyPressedSignal()) {
|
55
|
-
this.elementRef.nativeElement.click();
|
56
|
-
}
|
57
|
-
}, 0);
|
58
|
-
}
|
59
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRadioItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
60
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: RdxRadioItemDirective, isStandalone: true, selector: "[rdxRadioItem]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "button", "role": "radio" }, listeners: { "click": "onClick()", "keydown": "onKeyDown($event)", "keyup": "onKeyUp()", "focus": "onFocus()" }, properties: { "attr.aria-checked": "checkedState()", "attr.data-disabled": "disabledState() ? \"\" : null", "attr.data-state": "checkedState() ? \"checked\" : \"unchecked\"", "disabled": "disabledState()" } }, providers: [{ provide: RdxRadioItemToken, useExisting: RdxRadioItemDirective }], exportAs: ["rdxRadioItem"], hostDirectives: [{ directive: i1.RdxRovingFocusItemDirective, inputs: ["tabStopId", "id", "focusable", "focusable", "active", "active", "allowShiftKey", "allowShiftKey"] }], ngImport: i0 }); }
|
61
|
-
}
|
62
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRadioItemDirective, decorators: [{
|
63
|
-
type: Directive,
|
64
|
-
args: [{
|
65
|
-
selector: '[rdxRadioItem]',
|
66
|
-
exportAs: 'rdxRadioItem',
|
67
|
-
standalone: true,
|
68
|
-
providers: [{ provide: RdxRadioItemToken, useExisting: RdxRadioItemDirective }],
|
69
|
-
hostDirectives: [
|
70
|
-
{ directive: RdxRovingFocusItemDirective, inputs: ['tabStopId: id', 'focusable', 'active', 'allowShiftKey'] }
|
71
|
-
],
|
72
|
-
host: {
|
73
|
-
type: 'button',
|
74
|
-
role: 'radio',
|
75
|
-
'[attr.aria-checked]': 'checkedState()',
|
76
|
-
'[attr.data-disabled]': 'disabledState() ? "" : null',
|
77
|
-
'[attr.data-state]': 'checkedState() ? "checked" : "unchecked"',
|
78
|
-
'[disabled]': 'disabledState()',
|
79
|
-
'(click)': 'onClick()',
|
80
|
-
'(keydown)': 'onKeyDown($event)',
|
81
|
-
'(keyup)': 'onKeyUp()',
|
82
|
-
'(focus)': 'onFocus()'
|
83
|
-
}
|
84
|
-
}]
|
85
|
-
}] });
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8taXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JhZGlvL3NyYy9yYWRpby1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUVMLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUVqRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBd0IsZ0JBQWdCLENBQUMsQ0FBQztBQUU3RixNQUFNLFVBQVUsZUFBZTtJQUMzQixPQUFPLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUF1QkQsTUFBTSxPQUFPLHFCQUFxQjtJQXJCbEM7UUFzQnFCLGVBQVUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV4QyxVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBRWpDLE9BQUUsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUVyQixhQUFRLEdBQUcsS0FBSyxFQUFXLENBQUM7UUFFNUIsYUFBUSxHQUFHLEtBQUssQ0FBd0IsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUV0RSxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxD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dCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGNvbXB1dGVkLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBpbnB1dCxcbiAgICBPbkluaXQsXG4gICAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmR4Um92aW5nRm9jdXNJdGVtRGlyZWN0aXZlIH0gZnJvbSAnQHJhZGl4LW5nL3ByaW1pdGl2ZXMvcm92aW5nLWZvY3VzJztcbmltcG9ydCB7IFJEWF9SQURJT19HUk9VUCB9IGZyb20gJy4vcmFkaW8tdG9rZW5zJztcblxuZXhwb3J0IGNvbnN0IFJkeFJhZGlvSXRlbVRva2VuID0gbmV3IEluamVjdGlvblRva2VuPFJkeFJhZGlvSXRlbURpcmVjdGl2ZT4oJ1JhZGlvSXRlbVRva2VuJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSYWRpb0l0ZW0oKTogUmR4UmFkaW9JdGVtRGlyZWN0aXZlIHtcbiAgICByZXR1cm4gaW5qZWN0KFJkeFJhZGlvSXRlbVRva2VuKTtcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcmR4UmFkaW9JdGVtXScsXG4gICAgZXhwb3J0QXM6ICdyZHhSYWRpb0l0ZW0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBSZHhSYWRpb0l0ZW1Ub2tlbiwgdXNlRXhpc3Rpbmc6IFJkeFJhZGlvSXRlbURpcmVjdGl2ZSB9XSxcbiAgICBob3N0RGlyZWN0aXZlczogW1xuICAgICAgICB7IGRpcmVjdGl2ZTogUmR4Um92aW5nRm9jdXNJdGVtRGlyZWN0aXZlLCBpbnB1dHM6IFsndGFiU3RvcElkOiBpZCcsICdmb2N1c2FibGUnLCAnYWN0aXZlJywgJ2FsbG93U2hpZnRLZXknXSB9XSxcblxuICAgIGhvc3Q6IHtcbiAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIHJvbGU6ICdyYWRpbycsXG4gICAgICAgICdbYXR0ci5hcmlhLWNoZWNrZWRdJzogJ2NoZWNrZWRTdGF0ZSgpJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtZGlzYWJsZWRdJzogJ2Rpc2FibGVkU3RhdGUoKSA/IFwiXCIgOiBudWxsJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtc3RhdGVdJzogJ2NoZWNrZWRTdGF0ZSgpID8gXCJjaGVja2VkXCIgOiBcInVuY2hlY2tlZFwiJyxcbiAgICAgICAgJ1tkaXNhYmxlZF0nOiAnZGlzYWJsZWRTdGF0ZSgpJyxcbiAgICAgICAgJyhjbGljayknOiAnb25DbGljaygpJyxcbiAgICAgICAgJyhrZXlkb3duKSc6ICdvbktleURvd24oJGV2ZW50KScsXG4gICAgICAgICcoa2V5dXApJzogJ29uS2V5VXAoKScsXG4gICAgICAgICcoZm9jdXMpJzogJ29uRm9jdXMoKSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFJkeFJhZGlvSXRlbURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSByYWRpb0dyb3VwID0gaW5qZWN0KFJEWF9SQURJT19HUk9VUCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICAgcmVhZG9ubHkgdmFsdWUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG5cbiAgICByZWFkb25seSBpZCA9IGlucHV0PHN0cmluZz4oKTtcblxuICAgIHJlYWRvbmx5IHJlcXVpcmVkID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICAgIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0PihmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlzYWJsZWRTdGF0ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMucmFkaW9Hcm91cC5kaXNhYmxlU3RhdGUoKSB8fCB0aGlzLmRpc2FibGVkKCkpO1xuXG4gICAgcmVhZG9ubHkgY2hlY2tlZFN0YXRlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yYWRpb0dyb3VwLnZhbHVlKCkgPT09IHRoaXMudmFsdWUoKSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IEFSUk9XX0tFWVMgPSBbJ0Fycm93VXAnLCAnQXJyb3dEb3duJywgJ0Fycm93TGVmdCcsICdBcnJvd1JpZ2h0J107XG4gICAgcHJpdmF0ZSByZWFkb25seSBpc0Fycm93S2V5UHJlc3NlZFNpZ25hbCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5yYWRpb0dyb3VwLmRlZmF1bHRWYWx1ZSA9PT0gdGhpcy52YWx1ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnJhZGlvR3JvdXAuc2VsZWN0KHRoaXMudmFsdWUoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIG9uQ2xpY2soKSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZFN0YXRlKCkpIHtcbiAgICAgICAgICAgIHRoaXMucmFkaW9Hcm91cC5zZWxlY3QodGhpcy52YWx1ZSgpKTtcbiAgICAgICAgICAgIHRoaXMuaXNBcnJvd0tleVByZXNzZWRTaWduYWwuc2V0KHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuQVJST1dfS0VZUy5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICAgICAgICB0aGlzLmlzQXJyb3dLZXlQcmVzc2VkU2lnbmFsLnNldCh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgb25LZXlVcCgpIHtcbiAgICAgICAgdGhpcy5pc0Fycm93S2V5UHJlc3NlZFNpZ25hbC5zZXQoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgb25Gb2N1cygpIHtcbiAgICAgICAgdGhpcy5yYWRpb0dyb3VwLnNlbGVjdCh0aGlzLnZhbHVlKCkpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2hlbiBuYXZpZ2F0aW5nIHdpdGggYXJyb3cga2V5cywgZm9jdXMgdHJpZ2dlcnMgb24gdGhlIHJhZGlvIGl0ZW0uXG4gICAgICAgICAgICAgKiBUbyBcImNoZWNrXCIgdGhlIHJhZGlvLCB3ZSBwcm9ncmFtbWF0aWNhbGx5IHRyaWdnZXIgYSBjbGljayBldmVudC5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNBcnJvd0tleVByZXNzZWRTaWduYWwoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuICAgIH1cbn1cbiJdfQ==
|
@@ -1,104 +0,0 @@
|
|
1
|
-
import { booleanAttribute, computed, Directive, input, Input, model, output, signal } from '@angular/core';
|
2
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
3
|
-
import { RdxRovingFocusGroupDirective } from '@radix-ng/primitives/roving-focus';
|
4
|
-
import { RDX_RADIO_GROUP } from './radio-tokens';
|
5
|
-
import * as i0 from "@angular/core";
|
6
|
-
import * as i1 from "@radix-ng/primitives/roving-focus";
|
7
|
-
export class RdxRadioGroupDirective {
|
8
|
-
constructor() {
|
9
|
-
this.value = model(null);
|
10
|
-
this.disabled = input(false, { transform: booleanAttribute });
|
11
|
-
this.required = input(false, { transform: booleanAttribute });
|
12
|
-
this.orientation = input();
|
13
|
-
/**
|
14
|
-
* Event handler called when the value changes.
|
15
|
-
*/
|
16
|
-
this.onValueChange = output();
|
17
|
-
this.disable = signal(this.disabled());
|
18
|
-
this.disableState = computed(() => this.disable() || this.disabled());
|
19
|
-
/**
|
20
|
-
* The callback function to call when the value of the radio group changes.
|
21
|
-
*/
|
22
|
-
this.onChange = () => {
|
23
|
-
/* Empty */
|
24
|
-
};
|
25
|
-
/**
|
26
|
-
* The callback function to call when the radio group is touched.
|
27
|
-
* @ignore
|
28
|
-
*/
|
29
|
-
this.onTouched = () => {
|
30
|
-
/* Empty */
|
31
|
-
};
|
32
|
-
}
|
33
|
-
/**
|
34
|
-
* Select a radio item.
|
35
|
-
* @param value The value of the radio item to select.
|
36
|
-
* @ignore
|
37
|
-
*/
|
38
|
-
select(value) {
|
39
|
-
this.value.set(value);
|
40
|
-
this.onValueChange.emit(value);
|
41
|
-
this.onChange?.(value);
|
42
|
-
this.onTouched();
|
43
|
-
}
|
44
|
-
/**
|
45
|
-
* Update the value of the radio group.
|
46
|
-
* @param value The new value of the radio group.
|
47
|
-
* @ignore
|
48
|
-
*/
|
49
|
-
writeValue(value) {
|
50
|
-
this.value.set(value);
|
51
|
-
}
|
52
|
-
/**
|
53
|
-
* Register a callback function to call when the value of the radio group changes.
|
54
|
-
* @param fn The callback function to call when the value of the radio group changes.
|
55
|
-
* @ignore
|
56
|
-
*/
|
57
|
-
registerOnChange(fn) {
|
58
|
-
this.onChange = fn;
|
59
|
-
}
|
60
|
-
/** @ignore */
|
61
|
-
registerOnTouched(fn) {
|
62
|
-
this.onTouched = fn;
|
63
|
-
}
|
64
|
-
/**
|
65
|
-
* Set the disabled state of the radio group.
|
66
|
-
* @param isDisabled Whether the radio group is disabled.
|
67
|
-
* @ignore
|
68
|
-
*/
|
69
|
-
setDisabledState(isDisabled) {
|
70
|
-
this.disable.set(isDisabled);
|
71
|
-
}
|
72
|
-
onKeydown() {
|
73
|
-
if (this.disableState())
|
74
|
-
return;
|
75
|
-
}
|
76
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRadioGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
77
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: RdxRadioGroupDirective, isStandalone: true, selector: "[rdxRadioRoot]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: false, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", onValueChange: "onValueChange" }, host: { attributes: { "role": "radiogroup" }, listeners: { "keydown": "onKeydown()" }, properties: { "attr.aria-orientation": "orientation()", "attr.aria-required": "required()", "attr.data-disabled": "disableState() ? \"\" : null" } }, providers: [
|
78
|
-
{ provide: RDX_RADIO_GROUP, useExisting: RdxRadioGroupDirective },
|
79
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting: RdxRadioGroupDirective, multi: true }
|
80
|
-
], exportAs: ["rdxRadioRoot"], hostDirectives: [{ directive: i1.RdxRovingFocusGroupDirective, inputs: ["dir", "dir", "orientation", "orientation", "loop", "loop"] }], ngImport: i0 }); }
|
81
|
-
}
|
82
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRadioGroupDirective, decorators: [{
|
83
|
-
type: Directive,
|
84
|
-
args: [{
|
85
|
-
selector: '[rdxRadioRoot]',
|
86
|
-
exportAs: 'rdxRadioRoot',
|
87
|
-
standalone: true,
|
88
|
-
providers: [
|
89
|
-
{ provide: RDX_RADIO_GROUP, useExisting: RdxRadioGroupDirective },
|
90
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting: RdxRadioGroupDirective, multi: true }
|
91
|
-
],
|
92
|
-
hostDirectives: [{ directive: RdxRovingFocusGroupDirective, inputs: ['dir', 'orientation', 'loop'] }],
|
93
|
-
host: {
|
94
|
-
role: 'radiogroup',
|
95
|
-
'[attr.aria-orientation]': 'orientation()',
|
96
|
-
'[attr.aria-required]': 'required()',
|
97
|
-
'[attr.data-disabled]': 'disableState() ? "" : null',
|
98
|
-
'(keydown)': 'onKeydown()'
|
99
|
-
}
|
100
|
-
}]
|
101
|
-
}], propDecorators: { defaultValue: [{
|
102
|
-
type: Input
|
103
|
-
}] } });
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tcm9vdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JhZGlvL3NyYy9yYWRpby1yb290LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQWUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RixPQUFPLEVBQXdDLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFtQnZGLE1BQU0sT0FBTyxzQkFBc0I7SUFqQm5DO1FBa0JhLFVBQUssR0FBRyxLQUFLLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBRW5DLGFBQVEsR0FBRyxLQUFLLENBQXdCLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFJaEYsYUFBUSxHQUFHLEtBQUssQ0FBd0IsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUVoRixnQkFBVyxHQUFHLEtBQUssRUFBZSxDQUFDO1FBRTVDOztXQUVHO1FBQ00sa0JBQWEsR0FBRyxNQUFNLEVBQVUsQ0FBQztRQUV6QixZQUFPLEdBQUcsTUFBTSxDQUFVLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELGlCQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUUxRTs7V0FFRztRQUNLLGFBQVEsR0FBNEIsR0FBRyxFQUFFO1lBQzdDLFdBQVc7UUFDZixDQUFDLENBQUM7UUFFRjs7O1dBR0c7UUFDSCxjQUFTLEdBQWUsR0FBRyxFQUFFO1lBQ3pCLFdBQVc7UUFDZixDQUFDLENBQUM7S0FpREw7SUEvQ0c7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxLQUFhO1FBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsS0FBYTtRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGdCQUFnQixDQUFDLEVBQTJCO1FBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxjQUFjO0lBQ2QsaUJBQWlCLENBQUMsRUFBYztRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGdCQUFnQixDQUFDLFVBQW1CO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFUyxTQUFTO1FBQ2YsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQUUsT0FBTztJQUNwQyxDQUFDOytHQWhGUSxzQkFBc0I7bUdBQXRCLHNCQUFzQiwyZ0NBYnBCO1lBQ1AsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRTtZQUNqRSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtTQUNuRjs7NEZBVVEsc0JBQXNCO2tCQWpCbEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUUsY0FBYztvQkFDeEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDUCxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyx3QkFBd0IsRUFBRTt3QkFDakUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3FCQUNuRjtvQkFDRCxjQUFjLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7b0JBQ3JHLElBQUksRUFBRTt3QkFDRixJQUFJLEVBQUUsWUFBWTt3QkFDbEIseUJBQXlCLEVBQUUsZUFBZTt3QkFDMUMsc0JBQXNCLEVBQUUsWUFBWTt3QkFDcEMsc0JBQXNCLEVBQUUsNEJBQTRCO3dCQUNwRCxXQUFXLEVBQUUsYUFBYTtxQkFDN0I7aUJBQ0o7OEJBTVksWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBjb21wdXRlZCwgRGlyZWN0aXZlLCBpbnB1dCwgSW5wdXQsIG1vZGVsLCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT3JpZW50YXRpb24sIFJkeFJvdmluZ0ZvY3VzR3JvdXBEaXJlY3RpdmUgfSBmcm9tICdAcmFkaXgtbmcvcHJpbWl0aXZlcy9yb3ZpbmctZm9jdXMnO1xuaW1wb3J0IHsgUmFkaW9Hcm91cERpcmVjdGl2ZSwgUmFkaW9Hcm91cFByb3BzLCBSRFhfUkFESU9fR1JPVVAgfSBmcm9tICcuL3JhZGlvLXRva2Vucyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3JkeFJhZGlvUm9vdF0nLFxuICAgIGV4cG9ydEFzOiAncmR4UmFkaW9Sb290JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IFJEWF9SQURJT19HUk9VUCwgdXNlRXhpc3Rpbmc6IFJkeFJhZGlvR3JvdXBEaXJlY3RpdmUgfSxcbiAgICAgICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IFJkeFJhZGlvR3JvdXBEaXJlY3RpdmUsIG11bHRpOiB0cnVlIH1cbiAgICBdLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbeyBkaXJlY3RpdmU6IFJkeFJvdmluZ0ZvY3VzR3JvdXBEaXJlY3RpdmUsIGlucHV0czogWydkaXInLCAnb3JpZW50YXRpb24nLCAnbG9vcCddIH1dLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgcm9sZTogJ3JhZGlvZ3JvdXAnLFxuICAgICAgICAnW2F0dHIuYXJpYS1vcmllbnRhdGlvbl0nOiAnb3JpZW50YXRpb24oKScsXG4gICAgICAgICdbYXR0ci5hcmlhLXJlcXVpcmVkXSc6ICdyZXF1aXJlZCgpJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtZGlzYWJsZWRdJzogJ2Rpc2FibGVTdGF0ZSgpID8gXCJcIiA6IG51bGwnLFxuICAgICAgICAnKGtleWRvd24pJzogJ29uS2V5ZG93bigpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmR4UmFkaW9Hcm91cERpcmVjdGl2ZSBpbXBsZW1lbnRzIFJhZGlvR3JvdXBQcm9wcywgUmFkaW9Hcm91cERpcmVjdGl2ZSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIHJlYWRvbmx5IHZhbHVlID0gbW9kZWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4sIEJvb2xlYW5JbnB1dD4oZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gICAgQElucHV0KCkgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuXG4gICAgcmVhZG9ubHkgcmVxdWlyZWQgPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAgIHJlYWRvbmx5IG9yaWVudGF0aW9uID0gaW5wdXQ8T3JpZW50YXRpb24+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBoYW5kbGVyIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IG9uVmFsdWVDaGFuZ2UgPSBvdXRwdXQ8c3RyaW5nPigpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaXNhYmxlID0gc2lnbmFsPGJvb2xlYW4+KHRoaXMuZGlzYWJsZWQoKSk7XG4gICAgcmVhZG9ubHkgZGlzYWJsZVN0YXRlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5kaXNhYmxlKCkgfHwgdGhpcy5kaXNhYmxlZCgpKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSByYWRpbyBncm91cCBjaGFuZ2VzLlxuICAgICAqL1xuICAgIHByaXZhdGUgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkID0gKCkgPT4ge1xuICAgICAgICAvKiBFbXB0eSAqL1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSByYWRpbyBncm91cCBpcyB0b3VjaGVkLlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgICAgIC8qIEVtcHR5ICovXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFNlbGVjdCBhIHJhZGlvIGl0ZW0uXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgcmFkaW8gaXRlbSB0byBzZWxlY3QuXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIHNlbGVjdCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUuc2V0KHZhbHVlKTtcbiAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlPy4odmFsdWUpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgdmFsdWUgb2YgdGhlIHJhZGlvIGdyb3VwLlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgbmV3IHZhbHVlIG9mIHRoZSByYWRpbyBncm91cC5cbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUuc2V0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlciBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgdmFsdWUgb2YgdGhlIHJhZGlvIGdyb3VwIGNoYW5nZXMuXG4gICAgICogQHBhcmFtIGZuIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSByYWRpbyBncm91cCBjaGFuZ2VzLlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb2YgdGhlIHJhZGlvIGdyb3VwLlxuICAgICAqIEBwYXJhbSBpc0Rpc2FibGVkIFdoZXRoZXIgdGhlIHJhZGlvIGdyb3VwIGlzIGRpc2FibGVkLlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlLnNldChpc0Rpc2FibGVkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25LZXlkb3duKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlU3RhdGUoKSkgcmV0dXJuO1xuICAgIH1cbn1cbiJdfQ==
|
@@ -1,3 +0,0 @@
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
2
|
-
export const RDX_RADIO_GROUP = new InjectionToken('RdxRadioGroup');
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tdG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9yYWRpby9zcmMvcmFkaW8tdG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQWlELE1BQU0sZUFBZSxDQUFDO0FBZ0I5RixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQXNCLGVBQWUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEluamVjdGlvblRva2VuLCBJbnB1dFNpZ25hbFdpdGhUcmFuc2Zvcm0sIE1vZGVsU2lnbmFsLCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBSYWRpb0dyb3VwUHJvcHMge1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgZGlzYWJsZWQ/OiBJbnB1dFNpZ25hbFdpdGhUcmFuc2Zvcm08Ym9vbGVhbiwgQm9vbGVhbklucHV0PjtcbiAgICBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XG4gICAgdmFsdWU6IE1vZGVsU2lnbmFsPHN0cmluZyB8IG51bGw+O1xuICAgIGRpc2FibGVTdGF0ZTogU2lnbmFsPGJvb2xlYW4+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhZGlvR3JvdXBEaXJlY3RpdmUgZXh0ZW5kcyBSYWRpb0dyb3VwUHJvcHMge1xuICAgIHNlbGVjdCh2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IHZvaWQ7XG5cbiAgICBvblRvdWNoZWQoKTogdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IFJEWF9SQURJT19HUk9VUCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSYWRpb0dyb3VwRGlyZWN0aXZlPignUmR4UmFkaW9Hcm91cCcpO1xuIl19
|
@@ -1,5 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Generated bundle index. Do not edit.
|
3
|
-
*/
|
4
|
-
export * from './index';
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaXgtbmctcHJpbWl0aXZlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcmFkaXgtbmctcHJpbWl0aXZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
@@ -1,3 +0,0 @@
|
|
1
|
-
export * from './src/roving-focus-group.directive';
|
2
|
-
export * from './src/roving-focus-item.directive';
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JvdmluZy1mb2N1cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsbUNBQW1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy9yb3ZpbmctZm9jdXMtZ3JvdXAuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL3JvdmluZy1mb2N1cy1pdGVtLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCB0eXBlIHsgRGlyZWN0aW9uLCBPcmllbnRhdGlvbiB9IGZyb20gJy4vc3JjL3V0aWxzJztcbiJdfQ==
|
@@ -1,5 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Generated bundle index. Do not edit.
|
3
|
-
*/
|
4
|
-
export * from './index';
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaXgtbmctcHJpbWl0aXZlcy1yb3ZpbmctZm9jdXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JvdmluZy1mb2N1cy9yYWRpeC1uZy1wcmltaXRpdmVzLXJvdmluZy1mb2N1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
@@ -1,138 +0,0 @@
|
|
1
|
-
import { booleanAttribute, Directive, ElementRef, EventEmitter, inject, Input, NgZone, Output, signal } from '@angular/core';
|
2
|
-
import { ENTRY_FOCUS, EVENT_OPTIONS, focusFirst } from './utils';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
export class RdxRovingFocusGroupDirective {
|
5
|
-
constructor() {
|
6
|
-
this.ngZone = inject(NgZone);
|
7
|
-
this.elementRef = inject(ElementRef);
|
8
|
-
this.dir = 'ltr';
|
9
|
-
this.loop = true;
|
10
|
-
this.preventScrollOnEntryFocus = false;
|
11
|
-
this.entryFocus = new EventEmitter();
|
12
|
-
this.currentTabStopIdChange = new EventEmitter();
|
13
|
-
/** @ignore */
|
14
|
-
this.currentTabStopId = signal(null);
|
15
|
-
/** @ignore */
|
16
|
-
this.focusableItems = signal([]);
|
17
|
-
this.isClickFocus = signal(false);
|
18
|
-
this.isTabbingBackOut = signal(false);
|
19
|
-
this.focusableItemsCount = signal(0);
|
20
|
-
}
|
21
|
-
/** @ignore */
|
22
|
-
get dataOrientation() {
|
23
|
-
return this.orientation || 'horizontal';
|
24
|
-
}
|
25
|
-
/** @ignore */
|
26
|
-
get tabIndex() {
|
27
|
-
return this.isTabbingBackOut() || this.getFocusableItemsCount() === 0 ? -1 : 0;
|
28
|
-
}
|
29
|
-
/** @ignore */
|
30
|
-
handleBlur() {
|
31
|
-
this.isTabbingBackOut.set(false);
|
32
|
-
}
|
33
|
-
/** @ignore */
|
34
|
-
handleMouseUp() {
|
35
|
-
// reset `isClickFocus` after 1 tick because handleFocus might not triggered due to focused element
|
36
|
-
this.ngZone.runOutsideAngular(() => {
|
37
|
-
// eslint-disable-next-line promise/catch-or-return,promise/always-return
|
38
|
-
Promise.resolve().then(() => {
|
39
|
-
this.ngZone.run(() => {
|
40
|
-
this.isClickFocus.set(false);
|
41
|
-
});
|
42
|
-
});
|
43
|
-
});
|
44
|
-
}
|
45
|
-
/** @ignore */
|
46
|
-
handleFocus(event) {
|
47
|
-
// We normally wouldn't need this check, because we already check
|
48
|
-
// that the focus is on the current target and not bubbling to it.
|
49
|
-
// We do this because Safari doesn't focus buttons when clicked, and
|
50
|
-
// instead, the wrapper will get focused and not through a bubbling event.
|
51
|
-
const isKeyboardFocus = !this.isClickFocus();
|
52
|
-
if (event.currentTarget === this.elementRef.nativeElement &&
|
53
|
-
event.target === event.currentTarget &&
|
54
|
-
isKeyboardFocus &&
|
55
|
-
!this.isTabbingBackOut()) {
|
56
|
-
const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);
|
57
|
-
this.elementRef.nativeElement.dispatchEvent(entryFocusEvent);
|
58
|
-
this.entryFocus.emit(entryFocusEvent);
|
59
|
-
if (!entryFocusEvent.defaultPrevented) {
|
60
|
-
const items = this.focusableItems().filter((item) => item.dataset['disabled'] !== '');
|
61
|
-
const activeItem = items.find((item) => item.getAttribute('data-active') === 'true');
|
62
|
-
const currentItem = items.find((item) => item.id === this.currentTabStopId());
|
63
|
-
const candidateItems = [activeItem, currentItem, ...items].filter(Boolean);
|
64
|
-
focusFirst(candidateItems, this.preventScrollOnEntryFocus);
|
65
|
-
}
|
66
|
-
}
|
67
|
-
this.isClickFocus.set(false);
|
68
|
-
}
|
69
|
-
/** @ignore */
|
70
|
-
handleMouseDown() {
|
71
|
-
this.isClickFocus.set(true);
|
72
|
-
}
|
73
|
-
/** @ignore */
|
74
|
-
onItemFocus(tabStopId) {
|
75
|
-
this.currentTabStopId.set(tabStopId);
|
76
|
-
this.currentTabStopIdChange.emit(tabStopId);
|
77
|
-
}
|
78
|
-
/** @ignore */
|
79
|
-
onItemShiftTab() {
|
80
|
-
this.isTabbingBackOut.set(true);
|
81
|
-
}
|
82
|
-
/** @ignore */
|
83
|
-
onFocusableItemAdd() {
|
84
|
-
this.focusableItemsCount.update((count) => count + 1);
|
85
|
-
}
|
86
|
-
/** @ignore */
|
87
|
-
onFocusableItemRemove() {
|
88
|
-
this.focusableItemsCount.update((count) => Math.max(0, count - 1));
|
89
|
-
}
|
90
|
-
/** @ignore */
|
91
|
-
registerItem(item) {
|
92
|
-
const currentItems = this.focusableItems();
|
93
|
-
this.focusableItems.set([...currentItems, item]);
|
94
|
-
}
|
95
|
-
/** @ignore */
|
96
|
-
unregisterItem(item) {
|
97
|
-
const currentItems = this.focusableItems();
|
98
|
-
this.focusableItems.set(currentItems.filter((el) => el !== item));
|
99
|
-
}
|
100
|
-
/** @ignore */
|
101
|
-
getFocusableItemsCount() {
|
102
|
-
return this.focusableItemsCount();
|
103
|
-
}
|
104
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRovingFocusGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
105
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.11", type: RdxRovingFocusGroupDirective, isStandalone: true, selector: "[rdxRovingFocusGroup]", inputs: { orientation: "orientation", dir: "dir", loop: ["loop", "loop", booleanAttribute], preventScrollOnEntryFocus: ["preventScrollOnEntryFocus", "preventScrollOnEntryFocus", booleanAttribute] }, outputs: { entryFocus: "entryFocus", currentTabStopIdChange: "currentTabStopIdChange" }, host: { listeners: { "focus": "handleFocus($event)", "blur": "handleBlur()", "mouseup": "handleMouseUp()", "mousedown": "handleMouseDown()" }, properties: { "attr.data-orientation": "dataOrientation", "attr.tabindex": "tabIndex", "attr.dir": "dir" }, styleAttribute: "outline: none;" }, ngImport: i0 }); }
|
106
|
-
}
|
107
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRovingFocusGroupDirective, decorators: [{
|
108
|
-
type: Directive,
|
109
|
-
args: [{
|
110
|
-
selector: '[rdxRovingFocusGroup]',
|
111
|
-
standalone: true,
|
112
|
-
host: {
|
113
|
-
'[attr.data-orientation]': 'dataOrientation',
|
114
|
-
'[attr.tabindex]': 'tabIndex',
|
115
|
-
'[attr.dir]': 'dir',
|
116
|
-
'(focus)': 'handleFocus($event)',
|
117
|
-
'(blur)': 'handleBlur()',
|
118
|
-
'(mouseup)': 'handleMouseUp()',
|
119
|
-
'(mousedown)': 'handleMouseDown()',
|
120
|
-
style: 'outline: none;'
|
121
|
-
}
|
122
|
-
}]
|
123
|
-
}], propDecorators: { orientation: [{
|
124
|
-
type: Input
|
125
|
-
}], dir: [{
|
126
|
-
type: Input
|
127
|
-
}], loop: [{
|
128
|
-
type: Input,
|
129
|
-
args: [{ transform: booleanAttribute }]
|
130
|
-
}], preventScrollOnEntryFocus: [{
|
131
|
-
type: Input,
|
132
|
-
args: [{ transform: booleanAttribute }]
|
133
|
-
}], entryFocus: [{
|
134
|
-
type: Output
|
135
|
-
}], currentTabStopIdChange: [{
|
136
|
-
type: Output
|
137
|
-
}] } });
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm92aW5nLWZvY3VzLWdyb3VwLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcm92aW5nLWZvY3VzL3NyYy9yb3ZpbmctZm9jdXMtZ3JvdXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsV0FBVyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQWUsTUFBTSxTQUFTLENBQUM7O0FBZ0J6RixNQUFNLE9BQU8sNEJBQTRCO0lBZHpDO1FBZXFCLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUd4QyxRQUFHLEdBQWMsS0FBSyxDQUFDO1FBQ1EsU0FBSSxHQUFZLElBQUksQ0FBQztRQUNyQiw4QkFBeUIsR0FBWSxLQUFLLENBQUM7UUFFekUsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFDdkMsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFFckUsY0FBYztRQUNMLHFCQUFnQixHQUFHLE1BQU0sQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFFeEQsY0FBYztRQUNMLG1CQUFjLEdBQUcsTUFBTSxDQUFnQixFQUFFLENBQUMsQ0FBQztRQUVuQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBc0dwRDtJQXBHRyxjQUFjO0lBQ2Qs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Q0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7K0dBekhRLDRCQUE0QjttR0FBNUIsNEJBQTRCLGtJQU1qQixnQkFBZ0IseUZBQ2hCLGdCQUFnQjs7NEZBUDNCLDRCQUE0QjtrQkFkeEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNGLHlCQUF5QixFQUFFLGlCQUFpQjt3QkFDNUMsaUJBQWlCLEVBQUUsVUFBVTt3QkFDN0IsWUFBWSxFQUFFLEtBQUs7d0JBQ25CLFNBQVMsRUFBRSxxQkFBcUI7d0JBQ2hDLFFBQVEsRUFBRSxjQUFjO3dCQUN4QixXQUFXLEVBQUUsaUJBQWlCO3dCQUM5QixhQUFhLEVBQUUsbUJBQW1CO3dCQUNsQyxLQUFLLEVBQUUsZ0JBQWdCO3FCQUMxQjtpQkFDSjs4QkFLWSxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDa0MsSUFBSTtzQkFBM0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSx5QkFBeUI7c0JBQWhFLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBRTVCLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE91dHB1dCxcbiAgICBzaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEaXJlY3Rpb24sIEVOVFJZX0ZPQ1VTLCBFVkVOVF9PUFRJT05TLCBmb2N1c0ZpcnN0LCBPcmllbnRhdGlvbiB9IGZyb20gJy4vdXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyZHhSb3ZpbmdGb2N1c0dyb3VwXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5kYXRhLW9yaWVudGF0aW9uXSc6ICdkYXRhT3JpZW50YXRpb24nLFxuICAgICAgICAnW2F0dHIudGFiaW5kZXhdJzogJ3RhYkluZGV4JyxcbiAgICAgICAgJ1thdHRyLmRpcl0nOiAnZGlyJyxcbiAgICAgICAgJyhmb2N1cyknOiAnaGFuZGxlRm9jdXMoJGV2ZW50KScsXG4gICAgICAgICcoYmx1ciknOiAnaGFuZGxlQmx1cigpJyxcbiAgICAgICAgJyhtb3VzZXVwKSc6ICdoYW5kbGVNb3VzZVVwKCknLFxuICAgICAgICAnKG1vdXNlZG93biknOiAnaGFuZGxlTW91c2VEb3duKCknLFxuICAgICAgICBzdHlsZTogJ291dGxpbmU6IG5vbmU7J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmR4Um92aW5nRm9jdXNHcm91cERpcmVjdGl2ZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICBASW5wdXQoKSBvcmllbnRhdGlvbjogT3JpZW50YXRpb24gfCB1bmRlZmluZWQ7XG4gICAgQElucHV0KCkgZGlyOiBEaXJlY3Rpb24gPSAnbHRyJztcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgbG9vcDogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHByZXZlbnRTY3JvbGxPbkVudHJ5Rm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoKSBlbnRyeUZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgY3VycmVudFRhYlN0b3BJZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgbnVsbD4oKTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgY3VycmVudFRhYlN0b3BJZCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgZm9jdXNhYmxlSXRlbXMgPSBzaWduYWw8SFRNTEVsZW1lbnRbXT4oW10pO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBpc0NsaWNrRm9jdXMgPSBzaWduYWwoZmFsc2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNUYWJiaW5nQmFja091dCA9IHNpZ25hbChmYWxzZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmb2N1c2FibGVJdGVtc0NvdW50ID0gc2lnbmFsKDApO1xuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBnZXQgZGF0YU9yaWVudGF0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcmllbnRhdGlvbiB8fCAnaG9yaXpvbnRhbCc7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBnZXQgdGFiSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVGFiYmluZ0JhY2tPdXQoKSB8fCB0aGlzLmdldEZvY3VzYWJsZUl0ZW1zQ291bnQoKSA9PT0gMCA/IC0xIDogMDtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIGhhbmRsZUJsdXIoKSB7XG4gICAgICAgIHRoaXMuaXNUYWJiaW5nQmFja091dC5zZXQoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgaGFuZGxlTW91c2VVcCgpIHtcbiAgICAgICAgLy8gcmVzZXQgYGlzQ2xpY2tGb2N1c2AgYWZ0ZXIgMSB0aWNrIGJlY2F1c2UgaGFuZGxlRm9jdXMgbWlnaHQgbm90IHRyaWdnZXJlZCBkdWUgdG8gZm9jdXNlZCBlbGVtZW50XG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9taXNlL2NhdGNoLW9yLXJldHVybixwcm9taXNlL2Fsd2F5cy1yZXR1cm5cbiAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDbGlja0ZvY3VzLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBoYW5kbGVGb2N1cyhldmVudDogRm9jdXNFdmVudCkge1xuICAgICAgICAvLyBXZSBub3JtYWxseSB3b3VsZG4ndCBuZWVkIHRoaXMgY2hlY2ssIGJlY2F1c2Ugd2UgYWxyZWFkeSBjaGVja1xuICAgICAgICAvLyB0aGF0IHRoZSBmb2N1cyBpcyBvbiB0aGUgY3VycmVudCB0YXJnZXQgYW5kIG5vdCBidWJibGluZyB0byBpdC5cbiAgICAgICAgLy8gV2UgZG8gdGhpcyBiZWNhdXNlIFNhZmFyaSBkb2Vzbid0IGZvY3VzIGJ1dHRvbnMgd2hlbiBjbGlja2VkLCBhbmRcbiAgICAgICAgLy8gaW5zdGVhZCwgdGhlIHdyYXBwZXIgd2lsbCBnZXQgZm9jdXNlZCBhbmQgbm90IHRocm91Z2ggYSBidWJibGluZyBldmVudC5cbiAgICAgICAgY29uc3QgaXNLZXlib2FyZEZvY3VzID0gIXRoaXMuaXNDbGlja0ZvY3VzKCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldCA9PT0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgJiZcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldCA9PT0gZXZlbnQuY3VycmVudFRhcmdldCAmJlxuICAgICAgICAgICAgaXNLZXlib2FyZEZvY3VzICYmXG4gICAgICAgICAgICAhdGhpcy5pc1RhYmJpbmdCYWNrT3V0KClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBlbnRyeUZvY3VzRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoRU5UUllfRk9DVVMsIEVWRU5UX09QVElPTlMpO1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChlbnRyeUZvY3VzRXZlbnQpO1xuICAgICAgICAgICAgdGhpcy5lbnRyeUZvY3VzLmVtaXQoZW50cnlGb2N1c0V2ZW50KTtcblxuICAgICAgICAgICAgaWYgKCFlbnRyeUZvY3VzRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5mb2N1c2FibGVJdGVtcygpLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5kYXRhc2V0WydkaXNhYmxlZCddICE9PSAnJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlSXRlbSA9IGl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uZ2V0QXR0cmlidXRlKCdkYXRhLWFjdGl2ZScpID09PSAndHJ1ZScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gaXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gdGhpcy5jdXJyZW50VGFiU3RvcElkKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZUl0ZW1zID0gW2FjdGl2ZUl0ZW0sIGN1cnJlbnRJdGVtLCAuLi5pdGVtc10uZmlsdGVyKEJvb2xlYW4pIGFzIEhUTUxFbGVtZW50W107XG5cbiAgICAgICAgICAgICAgICBmb2N1c0ZpcnN0KGNhbmRpZGF0ZUl0ZW1zLCB0aGlzLnByZXZlbnRTY3JvbGxPbkVudHJ5Rm9jdXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNDbGlja0ZvY3VzLnNldChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBoYW5kbGVNb3VzZURvd24oKSB7XG4gICAgICAgIHRoaXMuaXNDbGlja0ZvY3VzLnNldCh0cnVlKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIG9uSXRlbUZvY3VzKHRhYlN0b3BJZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRhYlN0b3BJZC5zZXQodGFiU3RvcElkKTtcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiU3RvcElkQ2hhbmdlLmVtaXQodGFiU3RvcElkKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIG9uSXRlbVNoaWZ0VGFiKCkge1xuICAgICAgICB0aGlzLmlzVGFiYmluZ0JhY2tPdXQuc2V0KHRydWUpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgb25Gb2N1c2FibGVJdGVtQWRkKCkge1xuICAgICAgICB0aGlzLmZvY3VzYWJsZUl0ZW1zQ291bnQudXBkYXRlKChjb3VudCkgPT4gY291bnQgKyAxKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIG9uRm9jdXNhYmxlSXRlbVJlbW92ZSgpIHtcbiAgICAgICAgdGhpcy5mb2N1c2FibGVJdGVtc0NvdW50LnVwZGF0ZSgoY291bnQpID0+IE1hdGgubWF4KDAsIGNvdW50IC0gMSkpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVnaXN0ZXJJdGVtKGl0ZW06IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtcyA9IHRoaXMuZm9jdXNhYmxlSXRlbXMoKTtcbiAgICAgICAgdGhpcy5mb2N1c2FibGVJdGVtcy5zZXQoWy4uLmN1cnJlbnRJdGVtcywgaXRlbV0pO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgdW5yZWdpc3Rlckl0ZW0oaXRlbTogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgY3VycmVudEl0ZW1zID0gdGhpcy5mb2N1c2FibGVJdGVtcygpO1xuICAgICAgICB0aGlzLmZvY3VzYWJsZUl0ZW1zLnNldChjdXJyZW50SXRlbXMuZmlsdGVyKChlbCkgPT4gZWwgIT09IGl0ZW0pKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIGdldEZvY3VzYWJsZUl0ZW1zQ291bnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvY3VzYWJsZUl0ZW1zQ291bnQoKTtcbiAgICB9XG59XG4iXX0=
|
@@ -1,133 +0,0 @@
|
|
1
|
-
import { booleanAttribute, computed, Directive, ElementRef, inject, Input, NgZone } from '@angular/core';
|
2
|
-
import { RdxRovingFocusGroupDirective } from './roving-focus-group.directive';
|
3
|
-
import { focusFirst, generateId, getFocusIntent, wrapArray } from './utils';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
export class RdxRovingFocusItemDirective {
|
6
|
-
constructor() {
|
7
|
-
this.elementRef = inject(ElementRef);
|
8
|
-
this.ngZone = inject(NgZone);
|
9
|
-
this.parent = inject(RdxRovingFocusGroupDirective);
|
10
|
-
this.focusable = true;
|
11
|
-
this.active = true;
|
12
|
-
this.allowShiftKey = false;
|
13
|
-
this.id = computed(() => this.tabStopId || generateId());
|
14
|
-
/** @ignore */
|
15
|
-
this.isCurrentTabStop = computed(() => this.parent.currentTabStopId() === this.id());
|
16
|
-
}
|
17
|
-
/**
|
18
|
-
* Lifecycle hook triggered on initialization.
|
19
|
-
* Registers the element with the parent roving focus group if it is focusable.
|
20
|
-
* @ignore
|
21
|
-
*/
|
22
|
-
ngOnInit() {
|
23
|
-
if (this.focusable) {
|
24
|
-
this.parent.registerItem(this.elementRef.nativeElement);
|
25
|
-
this.parent.onFocusableItemAdd();
|
26
|
-
}
|
27
|
-
}
|
28
|
-
/**
|
29
|
-
* Lifecycle hook triggered on destruction.
|
30
|
-
* Unregisters the element from the parent roving focus group if it is focusable.
|
31
|
-
* @ignore
|
32
|
-
*/
|
33
|
-
ngOnDestroy() {
|
34
|
-
if (this.focusable) {
|
35
|
-
this.parent.unregisterItem(this.elementRef.nativeElement);
|
36
|
-
this.parent.onFocusableItemRemove();
|
37
|
-
}
|
38
|
-
}
|
39
|
-
/**
|
40
|
-
* Determines the `tabIndex` of the element.
|
41
|
-
* Returns `0` if the element is the current tab stop; otherwise, returns `-1`.
|
42
|
-
* @ignore
|
43
|
-
*/
|
44
|
-
get tabIndex() {
|
45
|
-
return this.isCurrentTabStop() ? 0 : -1;
|
46
|
-
}
|
47
|
-
/** @ignore */
|
48
|
-
handleMouseDown(event) {
|
49
|
-
if (!this.focusable) {
|
50
|
-
// We prevent focusing non-focusable items on `mousedown`.
|
51
|
-
// Even though the item has tabIndex={-1}, that only means take it out of the tab order.
|
52
|
-
event.preventDefault();
|
53
|
-
}
|
54
|
-
else {
|
55
|
-
// Safari doesn't focus a button when clicked so we run our logic on mousedown also
|
56
|
-
this.parent.onItemFocus(this.id());
|
57
|
-
}
|
58
|
-
}
|
59
|
-
/** @ignore */
|
60
|
-
onFocus() {
|
61
|
-
this.parent.onItemFocus(this.id());
|
62
|
-
}
|
63
|
-
/**
|
64
|
-
* Handles the `keydown` event for keyboard navigation within the roving focus group.
|
65
|
-
* Supports navigation based on orientation and direction, and focuses appropriate elements.
|
66
|
-
*
|
67
|
-
* @param event The `KeyboardEvent` object.
|
68
|
-
* @ignore
|
69
|
-
*/
|
70
|
-
handleKeydown(event) {
|
71
|
-
if (event.key === 'Tab' && event.shiftKey) {
|
72
|
-
this.parent.onItemShiftTab();
|
73
|
-
return;
|
74
|
-
}
|
75
|
-
if (event.target !== this.elementRef.nativeElement)
|
76
|
-
return;
|
77
|
-
const focusIntent = getFocusIntent(event, this.parent.orientation, this.parent.dir);
|
78
|
-
if (focusIntent !== undefined) {
|
79
|
-
if (event.metaKey || event.ctrlKey || event.altKey || (this.allowShiftKey ? false : event.shiftKey)) {
|
80
|
-
return;
|
81
|
-
}
|
82
|
-
event.preventDefault();
|
83
|
-
let candidateNodes = this.parent.focusableItems().filter((item) => item.dataset['disabled'] !== '');
|
84
|
-
if (focusIntent === 'last') {
|
85
|
-
candidateNodes.reverse();
|
86
|
-
}
|
87
|
-
else if (focusIntent === 'prev' || focusIntent === 'next') {
|
88
|
-
if (focusIntent === 'prev')
|
89
|
-
candidateNodes.reverse();
|
90
|
-
const currentIndex = candidateNodes.indexOf(this.elementRef.nativeElement);
|
91
|
-
candidateNodes = this.parent.loop
|
92
|
-
? wrapArray(candidateNodes, currentIndex + 1)
|
93
|
-
: candidateNodes.slice(currentIndex + 1);
|
94
|
-
}
|
95
|
-
this.ngZone.runOutsideAngular(() => {
|
96
|
-
// eslint-disable-next-line promise/always-return,promise/catch-or-return
|
97
|
-
Promise.resolve().then(() => {
|
98
|
-
focusFirst(candidateNodes, false, this.elementRef.nativeElement);
|
99
|
-
});
|
100
|
-
});
|
101
|
-
}
|
102
|
-
}
|
103
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRovingFocusItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
104
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.11", type: RdxRovingFocusItemDirective, isStandalone: true, selector: "[rdxRovingFocusItem]", inputs: { focusable: ["focusable", "focusable", booleanAttribute], active: ["active", "active", booleanAttribute], tabStopId: "tabStopId", allowShiftKey: ["allowShiftKey", "allowShiftKey", booleanAttribute] }, host: { listeners: { "mousedown": "handleMouseDown($event)", "keydown": "handleKeydown($event)", "focus": "onFocus()" }, properties: { "attr.tabindex": "tabIndex", "attr.data-orientation": "parent.orientation", "attr.data-active": "active", "attr.data-disabled": "!focusable ? \"\" : undefined" } }, ngImport: i0 }); }
|
105
|
-
}
|
106
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRovingFocusItemDirective, decorators: [{
|
107
|
-
type: Directive,
|
108
|
-
args: [{
|
109
|
-
selector: '[rdxRovingFocusItem]',
|
110
|
-
standalone: true,
|
111
|
-
host: {
|
112
|
-
'[attr.tabindex]': 'tabIndex',
|
113
|
-
'[attr.data-orientation]': 'parent.orientation',
|
114
|
-
'[attr.data-active]': 'active',
|
115
|
-
'[attr.data-disabled]': '!focusable ? "" : undefined',
|
116
|
-
'(mousedown)': 'handleMouseDown($event)',
|
117
|
-
'(keydown)': 'handleKeydown($event)',
|
118
|
-
'(focus)': 'onFocus()'
|
119
|
-
}
|
120
|
-
}]
|
121
|
-
}], propDecorators: { focusable: [{
|
122
|
-
type: Input,
|
123
|
-
args: [{ transform: booleanAttribute }]
|
124
|
-
}], active: [{
|
125
|
-
type: Input,
|
126
|
-
args: [{ transform: booleanAttribute }]
|
127
|
-
}], tabStopId: [{
|
128
|
-
type: Input
|
129
|
-
}], allowShiftKey: [{
|
130
|
-
type: Input,
|
131
|
-
args: [{ transform: booleanAttribute }]
|
132
|
-
}] } });
|
133
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm92aW5nLWZvY3VzLWl0ZW0uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9yb3ZpbmctZm9jdXMvc3JjL3JvdmluZy1mb2N1cy1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUdULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBZTVFLE1BQU0sT0FBTywyQkFBMkI7SUFieEM7UUFjcUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLFdBQU0sR0FBRyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUV6QixjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLFdBQU0sR0FBWSxJQUFJLENBQUM7UUFFdkIsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFdEQsT0FBRSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFckUsY0FBYztRQUNMLHFCQUFnQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FpRzVGO0lBL0ZHOzs7O09BSUc7SUFDSCxRQUFRO1FBQ0osSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDckMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsV0FBVztRQUNQLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3hDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELGNBQWM7SUFDZCxlQUFlLENBQUMsS0FBaUI7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNsQiwwREFBMEQ7WUFDMUQsd0ZBQXdGO1lBQ3hGLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMzQixDQUFDO2FBQU0sQ0FBQztZQUNKLG1GQUFtRjtZQUNuRixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN2QyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxPQUFPO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGFBQWEsQ0FBQyxLQUFvQjtRQUM5QixJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssS0FBSyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzdCLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYTtZQUFFLE9BQU87UUFFM0QsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXBGLElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzVCLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNsRyxPQUFPO1lBQ1gsQ0FBQztZQUVELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUV2QixJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUVwRyxJQUFJLFdBQVcsS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDekIsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzdCLENBQUM7aUJBQU0sSUFBSSxXQUFXLEtBQUssTUFBTSxJQUFJLFdBQVcsS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDMUQsSUFBSSxXQUFXLEtBQUssTUFBTTtvQkFBRSxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3JELE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFFM0UsY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSTtvQkFDN0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsWUFBWSxHQUFHLENBQUMsQ0FBQztvQkFDN0MsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2pELENBQUM7WUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtnQkFDL0IseUVBQXlFO2dCQUN6RSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDeEIsVUFBVSxDQUFDLGNBQWMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDckUsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDTCxDQUFDOytHQTdHUSwyQkFBMkI7bUdBQTNCLDJCQUEyQix3R0FLaEIsZ0JBQWdCLGdDQUNoQixnQkFBZ0IsNkVBRWhCLGdCQUFnQjs7NEZBUjNCLDJCQUEyQjtrQkFidkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNGLGlCQUFpQixFQUFFLFVBQVU7d0JBQzdCLHlCQUF5QixFQUFFLG9CQUFvQjt3QkFDL0Msb0JBQW9CLEVBQUUsUUFBUTt3QkFDOUIsc0JBQXNCLEVBQUUsNkJBQTZCO3dCQUNyRCxhQUFhLEVBQUUseUJBQXlCO3dCQUN4QyxXQUFXLEVBQUUsdUJBQXVCO3dCQUNwQyxTQUFTLEVBQUUsV0FBVztxQkFDekI7aUJBQ0o7OEJBTTJDLFNBQVM7c0JBQWhELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsTUFBTTtzQkFBN0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDN0IsU0FBUztzQkFBakIsS0FBSztnQkFDa0MsYUFBYTtzQkFBcEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBjb21wdXRlZCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZHhSb3ZpbmdGb2N1c0dyb3VwRGlyZWN0aXZlIH0gZnJvbSAnLi9yb3ZpbmctZm9jdXMtZ3JvdXAuZGlyZWN0aXZlJztcbmltcG9ydCB7IGZvY3VzRmlyc3QsIGdlbmVyYXRlSWQsIGdldEZvY3VzSW50ZW50LCB3cmFwQXJyYXkgfSBmcm9tICcuL3V0aWxzJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcmR4Um92aW5nRm9jdXNJdGVtXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiAndGFiSW5kZXgnLFxuICAgICAgICAnW2F0dHIuZGF0YS1vcmllbnRhdGlvbl0nOiAncGFyZW50Lm9yaWVudGF0aW9uJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtYWN0aXZlXSc6ICdhY3RpdmUnLFxuICAgICAgICAnW2F0dHIuZGF0YS1kaXNhYmxlZF0nOiAnIWZvY3VzYWJsZSA/IFwiXCIgOiB1bmRlZmluZWQnLFxuICAgICAgICAnKG1vdXNlZG93biknOiAnaGFuZGxlTW91c2VEb3duKCRldmVudCknLFxuICAgICAgICAnKGtleWRvd24pJzogJ2hhbmRsZUtleWRvd24oJGV2ZW50KScsXG4gICAgICAgICcoZm9jdXMpJzogJ29uRm9jdXMoKSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFJkeFJvdmluZ0ZvY3VzSXRlbURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGFyZW50ID0gaW5qZWN0KFJkeFJvdmluZ0ZvY3VzR3JvdXBEaXJlY3RpdmUpO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGZvY3VzYWJsZTogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGFjdGl2ZTogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgdGFiU3RvcElkOiBzdHJpbmc7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGFsbG93U2hpZnRLZXk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgaWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRhYlN0b3BJZCB8fCBnZW5lcmF0ZUlkKCkpO1xuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICByZWFkb25seSBpc0N1cnJlbnRUYWJTdG9wID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wYXJlbnQuY3VycmVudFRhYlN0b3BJZCgpID09PSB0aGlzLmlkKCkpO1xuXG4gICAgLyoqXG4gICAgICogTGlmZWN5Y2xlIGhvb2sgdHJpZ2dlcmVkIG9uIGluaXRpYWxpemF0aW9uLlxuICAgICAqIFJlZ2lzdGVycyB0aGUgZWxlbWVudCB3aXRoIHRoZSBwYXJlbnQgcm92aW5nIGZvY3VzIGdyb3VwIGlmIGl0IGlzIGZvY3VzYWJsZS5cbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVnaXN0ZXJJdGVtKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIHRoaXMucGFyZW50Lm9uRm9jdXNhYmxlSXRlbUFkZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGlmZWN5Y2xlIGhvb2sgdHJpZ2dlcmVkIG9uIGRlc3RydWN0aW9uLlxuICAgICAqIFVucmVnaXN0ZXJzIHRoZSBlbGVtZW50IGZyb20gdGhlIHBhcmVudCByb3ZpbmcgZm9jdXMgZ3JvdXAgaWYgaXQgaXMgZm9jdXNhYmxlLlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudC51bnJlZ2lzdGVySXRlbSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLnBhcmVudC5vbkZvY3VzYWJsZUl0ZW1SZW1vdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgdGhlIGB0YWJJbmRleGAgb2YgdGhlIGVsZW1lbnQuXG4gICAgICogUmV0dXJucyBgMGAgaWYgdGhlIGVsZW1lbnQgaXMgdGhlIGN1cnJlbnQgdGFiIHN0b3A7IG90aGVyd2lzZSwgcmV0dXJucyBgLTFgLlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBnZXQgdGFiSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQ3VycmVudFRhYlN0b3AoKSA/IDAgOiAtMTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIGhhbmRsZU1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuZm9jdXNhYmxlKSB7XG4gICAgICAgICAgICAvLyBXZSBwcmV2ZW50IGZvY3VzaW5nIG5vbi1mb2N1c2FibGUgaXRlbXMgb24gYG1vdXNlZG93bmAuXG4gICAgICAgICAgICAvLyBFdmVuIHRob3VnaCB0aGUgaXRlbSBoYXMgdGFiSW5kZXg9ey0xfSwgdGhhdCBvbmx5IG1lYW5zIHRha2UgaXQgb3V0IG9mIHRoZSB0YWIgb3JkZXIuXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gU2FmYXJpIGRvZXNuJ3QgZm9jdXMgYSBidXR0b24gd2hlbiBjbGlja2VkIHNvIHdlIHJ1biBvdXIgbG9naWMgb24gbW91c2Vkb3duIGFsc29cbiAgICAgICAgICAgIHRoaXMucGFyZW50Lm9uSXRlbUZvY3VzKHRoaXMuaWQoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIG9uRm9jdXMoKSB7XG4gICAgICAgIHRoaXMucGFyZW50Lm9uSXRlbUZvY3VzKHRoaXMuaWQoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlcyB0aGUgYGtleWRvd25gIGV2ZW50IGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgcm92aW5nIGZvY3VzIGdyb3VwLlxuICAgICAqIFN1cHBvcnRzIG5hdmlnYXRpb24gYmFzZWQgb24gb3JpZW50YXRpb24gYW5kIGRpcmVjdGlvbiwgYW5kIGZvY3VzZXMgYXBwcm9wcmlhdGUgZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXZlbnQgVGhlIGBLZXlib2FyZEV2ZW50YCBvYmplY3QuXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIGhhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ1RhYicgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50Lm9uSXRlbVNoaWZ0VGFiKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGZvY3VzSW50ZW50ID0gZ2V0Rm9jdXNJbnRlbnQoZXZlbnQsIHRoaXMucGFyZW50Lm9yaWVudGF0aW9uLCB0aGlzLnBhcmVudC5kaXIpO1xuXG4gICAgICAgIGlmIChmb2N1c0ludGVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50LmFsdEtleSB8fCAodGhpcy5hbGxvd1NoaWZ0S2V5ID8gZmFsc2UgOiBldmVudC5zaGlmdEtleSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIGxldCBjYW5kaWRhdGVOb2RlcyA9IHRoaXMucGFyZW50LmZvY3VzYWJsZUl0ZW1zKCkuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmRhdGFzZXRbJ2Rpc2FibGVkJ10gIT09ICcnKTtcblxuICAgICAgICAgICAgaWYgKGZvY3VzSW50ZW50ID09PSAnbGFzdCcpIHtcbiAgICAgICAgICAgICAgICBjYW5kaWRhdGVOb2Rlcy5yZXZlcnNlKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZvY3VzSW50ZW50ID09PSAncHJldicgfHwgZm9jdXNJbnRlbnQgPT09ICduZXh0Jykge1xuICAgICAgICAgICAgICAgIGlmIChmb2N1c0ludGVudCA9PT0gJ3ByZXYnKSBjYW5kaWRhdGVOb2Rlcy5yZXZlcnNlKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gY2FuZGlkYXRlTm9kZXMuaW5kZXhPZih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICBjYW5kaWRhdGVOb2RlcyA9IHRoaXMucGFyZW50Lmxvb3BcbiAgICAgICAgICAgICAgICAgICAgPyB3cmFwQXJyYXkoY2FuZGlkYXRlTm9kZXMsIGN1cnJlbnRJbmRleCArIDEpXG4gICAgICAgICAgICAgICAgICAgIDogY2FuZGlkYXRlTm9kZXMuc2xpY2UoY3VycmVudEluZGV4ICsgMSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvbWlzZS9hbHdheXMtcmV0dXJuLHByb21pc2UvY2F0Y2gtb3ItcmV0dXJuXG4gICAgICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZvY3VzRmlyc3QoY2FuZGlkYXRlTm9kZXMsIGZhbHNlLCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|