ng-primitives 0.0.7 → 0.2.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/README.md +14 -4
- package/accordion/accordion-trigger/accordion-trigger.directive.d.ts +2 -1
- package/autofill/README.md +3 -0
- package/autofill/autofill/autofill.directive.d.ts +19 -0
- package/{select/select-button/select-button.token.d.ts → autofill/autofill/autofill.token.d.ts} +4 -4
- package/autofill/index.d.ts +9 -0
- package/avatar/avatar/avatar.directive.d.ts +2 -1
- package/button/README.md +3 -0
- package/button/button/button.directive.d.ts +27 -0
- package/{select/select-option/select-option.token.d.ts → button/button/button.token.d.ts} +4 -4
- package/button/index.d.ts +9 -0
- package/checkbox/checkbox/checkbox.directive.d.ts +11 -61
- package/checkbox/index.d.ts +0 -4
- package/esm2022/a11y/visually-hidden/visually-hidden.directive.mjs +3 -3
- package/esm2022/accordion/accordion/accordion.directive.mjs +5 -4
- package/esm2022/accordion/accordion-content/accordion-content.directive.mjs +5 -6
- package/esm2022/accordion/accordion-item/accordion-item.directive.mjs +5 -5
- package/esm2022/accordion/accordion-trigger/accordion-trigger.directive.mjs +8 -5
- package/esm2022/autofill/autofill/autofill.directive.mjs +71 -0
- package/esm2022/autofill/autofill/autofill.token.mjs +16 -0
- package/esm2022/autofill/index.mjs +10 -0
- package/esm2022/autofill/ng-primitives-autofill.mjs +5 -0
- package/esm2022/avatar/avatar/avatar.directive.mjs +7 -4
- package/esm2022/avatar/avatar-fallback/avatar-fallback.directive.mjs +3 -3
- package/esm2022/avatar/avatar-image/avatar-image.directive.mjs +3 -3
- package/esm2022/button/button/button.directive.mjs +47 -0
- package/esm2022/button/button/button.token.mjs +16 -0
- package/esm2022/button/index.mjs +10 -0
- package/esm2022/button/ng-primitives-button.mjs +5 -0
- package/esm2022/checkbox/checkbox/checkbox.directive.mjs +29 -79
- package/esm2022/checkbox/index.mjs +1 -5
- package/esm2022/file-upload/file-upload/file-upload.directive.mjs +7 -4
- package/esm2022/focus-trap/focus-trap/focus-trap.directive.mjs +262 -0
- package/esm2022/focus-trap/focus-trap/focus-trap.token.mjs +16 -0
- package/esm2022/focus-trap/index.mjs +10 -0
- package/esm2022/focus-trap/ng-primitives-focus-trap.mjs +5 -0
- package/esm2022/form-field/description/description.directive.mjs +14 -14
- package/esm2022/form-field/error/error.directive.mjs +27 -29
- package/esm2022/form-field/form-control/form-control.directive.mjs +22 -16
- package/esm2022/form-field/form-field/form-field.directive.mjs +3 -3
- package/esm2022/form-field/form-field/form-field.token.mjs +3 -7
- package/esm2022/form-field/label/label.directive.mjs +56 -17
- package/esm2022/input/index.mjs +10 -0
- package/esm2022/input/input/input.directive.mjs +55 -0
- package/esm2022/input/input/input.token.mjs +16 -0
- package/esm2022/input/ng-primitives-input.mjs +5 -0
- package/esm2022/interactions/focus/focus.directive.mjs +15 -10
- package/esm2022/interactions/focus-visible/focus-visible.directive.mjs +12 -7
- package/esm2022/interactions/hover/hover.directive.mjs +16 -11
- package/esm2022/interactions/index.mjs +5 -1
- package/esm2022/interactions/move/move.directive.mjs +216 -0
- package/esm2022/interactions/move/move.token.mjs +16 -0
- package/esm2022/interactions/press/press.directive.mjs +118 -0
- package/esm2022/interactions/press/press.token.mjs +16 -0
- package/esm2022/internal/disabled/disabled.mjs +19 -0
- package/esm2022/internal/index.mjs +11 -0
- package/esm2022/internal/ng-primitives-internal.mjs +5 -0
- package/esm2022/internal/orientation/orientation.mjs +19 -0
- package/esm2022/internal/style-injector/style-injector.mjs +81 -0
- package/esm2022/progress/progress/progress.directive.mjs +3 -3
- package/esm2022/progress/progress-indicator/progress-indicator.directive.mjs +3 -3
- package/esm2022/radio/radio-group/radio-group.directive.mjs +14 -54
- package/esm2022/radio/radio-indicator/radio-indicator.directive.mjs +8 -5
- package/esm2022/radio/radio-item/radio-item.directive.mjs +8 -6
- package/esm2022/resize/resize/resize.directive.mjs +3 -3
- package/esm2022/roving-focus/roving-focus-group/roving-focus-group.directive.mjs +14 -9
- package/esm2022/roving-focus/roving-focus-item/roving-focus-item.directive.mjs +3 -3
- package/esm2022/search/index.mjs +10 -0
- package/esm2022/search/ng-primitives-search.mjs +5 -0
- package/esm2022/search/search-field/search-field.directive.mjs +47 -0
- package/esm2022/search/search-field/search-field.token.mjs +16 -0
- package/esm2022/select/index.mjs +1 -7
- package/esm2022/select/select/select.directive.mjs +23 -36
- package/esm2022/select/select/select.token.mjs +1 -1
- package/esm2022/slider/slider/slider.directive.mjs +18 -5
- package/esm2022/slider/slider-range/slider-range.directive.mjs +6 -5
- package/esm2022/slider/slider-thumb/slider-thumb.directive.mjs +7 -4
- package/esm2022/slider/slider-track/slider-track.directive.mjs +8 -4
- package/esm2022/switch/switch/switch.directive.mjs +18 -58
- package/esm2022/switch/switch-thumb/switch-thumb.directive.mjs +9 -6
- package/esm2022/tabs/tab-button/tab-button.directive.mjs +8 -6
- package/esm2022/tabs/tab-list/tab-list.directive.mjs +3 -3
- package/esm2022/tabs/tab-panel/tab-panel.directive.mjs +5 -6
- package/esm2022/tabs/tabset/tabset.directive.mjs +14 -18
- package/esm2022/textarea/index.mjs +10 -0
- package/esm2022/textarea/ng-primitives-textarea.mjs +5 -0
- package/esm2022/textarea/textarea/textarea.directive.mjs +37 -0
- package/esm2022/textarea/textarea/textarea.token.mjs +16 -0
- package/esm2022/toggle/toggle/toggle.directive.mjs +33 -13
- package/esm2022/tooltip/tooltip/tooltip.directive.mjs +3 -3
- package/esm2022/tooltip/tooltip-trigger/tooltip-trigger.directive.mjs +7 -7
- package/esm2022/utils/helpers/focus-manager.mjs +3 -3
- package/esm2022/utils/index.mjs +2 -2
- package/esm2022/utils/signals/async.mjs +11 -17
- package/fesm2022/ng-primitives-a11y.mjs +3 -3
- package/fesm2022/ng-primitives-accordion.mjs +19 -16
- package/fesm2022/ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/ng-primitives-autofill.mjs +100 -0
- package/fesm2022/ng-primitives-autofill.mjs.map +1 -0
- package/fesm2022/ng-primitives-avatar.mjs +13 -10
- package/fesm2022/ng-primitives-avatar.mjs.map +1 -1
- package/fesm2022/ng-primitives-button.mjs +76 -0
- package/fesm2022/ng-primitives-button.mjs.map +1 -0
- package/fesm2022/ng-primitives-checkbox.mjs +25 -203
- package/fesm2022/ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/ng-primitives-file-upload.mjs +6 -3
- package/fesm2022/ng-primitives-file-upload.mjs.map +1 -1
- package/fesm2022/ng-primitives-focus-trap.mjs +291 -0
- package/fesm2022/ng-primitives-focus-trap.mjs.map +1 -0
- package/fesm2022/ng-primitives-form-field.mjs +119 -80
- package/fesm2022/ng-primitives-form-field.mjs.map +1 -1
- package/fesm2022/ng-primitives-input.mjs +84 -0
- package/fesm2022/ng-primitives-input.mjs.map +1 -0
- package/fesm2022/ng-primitives-interactions.mjs +394 -26
- package/fesm2022/ng-primitives-interactions.mjs.map +1 -1
- package/fesm2022/ng-primitives-internal.mjs +132 -0
- package/fesm2022/ng-primitives-internal.mjs.map +1 -0
- package/fesm2022/ng-primitives-progress.mjs +6 -6
- package/fesm2022/ng-primitives-radio.mjs +25 -62
- package/fesm2022/ng-primitives-radio.mjs.map +1 -1
- package/fesm2022/ng-primitives-resize.mjs +3 -3
- package/fesm2022/ng-primitives-roving-focus.mjs +15 -10
- package/fesm2022/ng-primitives-roving-focus.mjs.map +1 -1
- package/fesm2022/ng-primitives-search.mjs +76 -0
- package/fesm2022/ng-primitives-search.mjs.map +1 -0
- package/fesm2022/ng-primitives-select.mjs +23 -395
- package/fesm2022/ng-primitives-select.mjs.map +1 -1
- package/fesm2022/ng-primitives-slider.mjs +35 -14
- package/fesm2022/ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/ng-primitives-switch.mjs +23 -62
- package/fesm2022/ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/ng-primitives-tabs.mjs +27 -30
- package/fesm2022/ng-primitives-tabs.mjs.map +1 -1
- package/fesm2022/ng-primitives-textarea.mjs +66 -0
- package/fesm2022/ng-primitives-textarea.mjs.map +1 -0
- package/fesm2022/ng-primitives-toggle.mjs +32 -12
- package/fesm2022/ng-primitives-toggle.mjs.map +1 -1
- package/fesm2022/ng-primitives-tooltip.mjs +9 -9
- package/fesm2022/ng-primitives-tooltip.mjs.map +1 -1
- package/fesm2022/ng-primitives-utils.mjs +14 -20
- package/fesm2022/ng-primitives-utils.mjs.map +1 -1
- package/file-upload/file-upload/file-upload.directive.d.ts +2 -1
- package/focus-trap/README.md +3 -0
- package/focus-trap/focus-trap/focus-trap.directive.d.ts +64 -0
- package/{select/select-options/select-options.token.d.ts → focus-trap/focus-trap/focus-trap.token.d.ts} +4 -4
- package/focus-trap/index.d.ts +9 -0
- package/form-field/description/description.directive.d.ts +1 -1
- package/form-field/error/error.directive.d.ts +9 -5
- package/form-field/form-control/form-control.directive.d.ts +7 -3
- package/form-field/form-field/form-field.token.d.ts +1 -1
- package/form-field/label/label.directive.d.ts +3 -2
- package/input/README.md +3 -0
- package/input/index.d.ts +9 -0
- package/input/input/input.directive.d.ts +33 -0
- package/input/input/input.token.d.ts +14 -0
- package/interactions/focus/focus.directive.d.ts +6 -2
- package/interactions/focus-visible/focus-visible.directive.d.ts +5 -1
- package/interactions/hover/hover.directive.d.ts +5 -1
- package/interactions/index.d.ts +4 -0
- package/interactions/move/move.directive.d.ts +126 -0
- package/interactions/move/move.token.d.ts +14 -0
- package/interactions/press/press.directive.d.ts +59 -0
- package/interactions/press/press.token.d.ts +14 -0
- package/internal/README.md +3 -0
- package/internal/disabled/disabled.d.ts +21 -0
- package/internal/index.d.ts +10 -0
- package/internal/orientation/orientation.d.ts +22 -0
- package/internal/style-injector/style-injector.d.ts +36 -0
- package/package.json +49 -7
- package/radio/radio-group/radio-group.directive.d.ts +4 -41
- package/radio/radio-indicator/radio-indicator.directive.d.ts +2 -1
- package/radio/radio-item/radio-item.directive.d.ts +2 -1
- package/roving-focus/roving-focus-group/roving-focus-group.directive.d.ts +7 -2
- package/search/README.md +3 -0
- package/search/index.d.ts +9 -0
- package/search/search-field/search-field.directive.d.ts +15 -0
- package/search/search-field/search-field.token.d.ts +14 -0
- package/select/index.d.ts +0 -6
- package/select/select/select.directive.d.ts +7 -22
- package/select/select/select.token.d.ts +2 -2
- package/slider/slider/slider.directive.d.ts +4 -2
- package/slider/slider-thumb/slider-thumb.directive.d.ts +2 -1
- package/slider/slider-track/slider-track.directive.d.ts +1 -1
- package/switch/switch/switch.directive.d.ts +5 -45
- package/switch/switch-thumb/switch-thumb.directive.d.ts +2 -1
- package/tabs/tab-button/tab-button.directive.d.ts +2 -1
- package/tabs/tabset/tabset.directive.d.ts +3 -9
- package/textarea/README.md +3 -0
- package/textarea/index.d.ts +9 -0
- package/textarea/textarea/textarea.directive.d.ts +20 -0
- package/textarea/textarea/textarea.token.d.ts +14 -0
- package/toggle/toggle/toggle.directive.d.ts +16 -4
- package/utils/index.d.ts +1 -1
- package/utils/signals/async.d.ts +10 -12
- package/checkbox/checkbox-indicator/checkbox-indicator.directive.d.ts +0 -19
- package/checkbox/checkbox-indicator/checkbox-indicator.token.d.ts +0 -15
- package/checkbox/checkbox-input/checkbox-input.directive.d.ts +0 -10
- package/checkbox/checkbox-label/checkbox-label.directive.d.ts +0 -9
- package/esm2022/checkbox/checkbox-indicator/checkbox-indicator.directive.mjs +0 -51
- package/esm2022/checkbox/checkbox-indicator/checkbox-indicator.token.mjs +0 -17
- package/esm2022/checkbox/checkbox-input/checkbox-input.directive.mjs +0 -40
- package/esm2022/checkbox/checkbox-label/checkbox-label.directive.mjs +0 -32
- package/esm2022/select/select-button/select-button.directive.mjs +0 -84
- package/esm2022/select/select-button/select-button.token.mjs +0 -16
- package/esm2022/select/select-option/select-option.directive.mjs +0 -90
- package/esm2022/select/select-option/select-option.token.mjs +0 -16
- package/esm2022/select/select-options/select-options.directive.mjs +0 -157
- package/esm2022/select/select-options/select-options.token.mjs +0 -16
- package/select/select-button/select-button.directive.d.ts +0 -51
- package/select/select-option/select-option.directive.d.ts +0 -57
- package/select/select-options/select-options.directive.d.ts +0 -65
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright © 2024 Angular Primitives.
|
|
3
|
-
* https://github.com/ng-primitives/ng-primitives
|
|
4
|
-
*
|
|
5
|
-
* This source code is licensed under the CC BY-ND 4.0 license found in the
|
|
6
|
-
* LICENSE file in the root directory of this source tree.
|
|
7
|
-
*/
|
|
8
|
-
import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
|
|
9
|
-
import { ChangeDetectorRef, Directive, ElementRef, Injector, contentChildren, effect, inject, input, signal, } from '@angular/core';
|
|
10
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
11
|
-
import { uniqueId } from 'ng-primitives/utils';
|
|
12
|
-
import { NgpSelectOptionToken } from '../select-option/select-option.token';
|
|
13
|
-
import { injectSelect } from '../select/select.token';
|
|
14
|
-
import { NgpSelectOptionsToken } from './select-options.token';
|
|
15
|
-
import * as i0 from "@angular/core";
|
|
16
|
-
export class NgpSelectOptions {
|
|
17
|
-
/**
|
|
18
|
-
* Focus the options list when it becomes visible.
|
|
19
|
-
*/
|
|
20
|
-
constructor() {
|
|
21
|
-
/**
|
|
22
|
-
* Access the parent select component.
|
|
23
|
-
*/
|
|
24
|
-
this.select = injectSelect();
|
|
25
|
-
/**
|
|
26
|
-
* Access the injector.
|
|
27
|
-
*/
|
|
28
|
-
this.injector = inject(Injector);
|
|
29
|
-
/**
|
|
30
|
-
* Access the element reference.
|
|
31
|
-
*/
|
|
32
|
-
this.element = inject(ElementRef);
|
|
33
|
-
/**
|
|
34
|
-
* Access the change detector.
|
|
35
|
-
*/
|
|
36
|
-
this.changeDetector = inject(ChangeDetectorRef);
|
|
37
|
-
/**
|
|
38
|
-
* Access all the options in the list.
|
|
39
|
-
*/
|
|
40
|
-
this.options = contentChildren(NgpSelectOptionToken, {
|
|
41
|
-
descendants: true,
|
|
42
|
-
});
|
|
43
|
-
/**
|
|
44
|
-
* Optionally define an id for the options list. By default, the id is generated.
|
|
45
|
-
*/
|
|
46
|
-
this.id = input(uniqueId('select-options'));
|
|
47
|
-
/**
|
|
48
|
-
* Handle the active descendant.
|
|
49
|
-
*/
|
|
50
|
-
this.activeDescendantKeyManager = new ActiveDescendantKeyManager(this.options, this.injector);
|
|
51
|
-
/**
|
|
52
|
-
* Get the active descendant id
|
|
53
|
-
*/
|
|
54
|
-
this.activeDescendant = signal(null);
|
|
55
|
-
// update the mounted state when the select dropdown is opened or closed
|
|
56
|
-
effect(() => (this.select.open() ? this.open() : this.close()), { allowSignalWrites: true });
|
|
57
|
-
// whenever the active descendant changes update the active descendant id
|
|
58
|
-
this.activeDescendantKeyManager.change
|
|
59
|
-
.pipe(takeUntilDestroyed())
|
|
60
|
-
.subscribe(() => this.activeDescendant.set(this.activeDescendantKeyManager.activeItem?.id() ?? null));
|
|
61
|
-
}
|
|
62
|
-
ngAfterViewInit() {
|
|
63
|
-
// by default the selected option should be active when the options list is opened.
|
|
64
|
-
// if there is no selected option, the first option should be active.
|
|
65
|
-
if (this.select.value() === null) {
|
|
66
|
-
this.activeDescendantKeyManager.setFirstItemActive();
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
const selectedOption = this.options().find(option => option.value() === this.select.value());
|
|
70
|
-
this.activeDescendantKeyManager.setActiveItem(selectedOption ?? this.options()[0]);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Handle the opening of the options list.
|
|
75
|
-
*/
|
|
76
|
-
open() {
|
|
77
|
-
// force change detection to ensure the options list is visible before focusing
|
|
78
|
-
this.changeDetector.detectChanges();
|
|
79
|
-
this.element.nativeElement.focus();
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Handle the closing of the options list.
|
|
83
|
-
* @param origin
|
|
84
|
-
*/
|
|
85
|
-
close(origin) {
|
|
86
|
-
// if the options list is already closed, do nothing
|
|
87
|
-
if (!this.select.open()) {
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
this.select.open.set(false);
|
|
91
|
-
this.select.button().focus(origin);
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* If the user clicks outside of the options list, close the dropdown.
|
|
95
|
-
* @param event
|
|
96
|
-
*/
|
|
97
|
-
closeOnOutsideClick(event) {
|
|
98
|
-
// if the user performs a click that is not within the options list or the slect button, close the dropdown
|
|
99
|
-
if (this.select.open() &&
|
|
100
|
-
!this.element.nativeElement.contains(event.target) &&
|
|
101
|
-
!this.select.button().element.nativeElement.contains(event.target)) {
|
|
102
|
-
this.close();
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Handle keyboard events.
|
|
107
|
-
*
|
|
108
|
-
* - If the user presses the tab key keep focus on the dropdown.
|
|
109
|
-
* - If the user presses the escape key, close the dropdown.
|
|
110
|
-
* @param event
|
|
111
|
-
*/
|
|
112
|
-
keydown(event) {
|
|
113
|
-
// forward the keyboard event to the active descendant key manager
|
|
114
|
-
this.activeDescendantKeyManager.onKeydown(event);
|
|
115
|
-
// prevent the default tab behavior - this is essentially a focus trap
|
|
116
|
-
if (event.key === 'Tab') {
|
|
117
|
-
event.preventDefault();
|
|
118
|
-
event.stopPropagation();
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
// if the escape key is pressed, close the dropdown
|
|
122
|
-
if (event.key === 'Escape') {
|
|
123
|
-
this.close('keyboard');
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
// if the space or enter key is pressed, select the active option
|
|
127
|
-
if (event.key === ' ' || event.key === 'Enter') {
|
|
128
|
-
const activeItem = this.activeDescendantKeyManager.activeItem;
|
|
129
|
-
if (activeItem && !activeItem.isDisabled()) {
|
|
130
|
-
this.select.value.set(activeItem.value());
|
|
131
|
-
this.close('keyboard');
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSelectOptions, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
136
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.0.2", type: NgpSelectOptions, isStandalone: true, selector: "[ngpSelectOptions]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "listbox" }, listeners: { "keydown": "keydown($event)", "document:click": "closeOnOutsideClick($event)" }, properties: { "attr.id": "id()", "attr.aria-labelledby": "select.button().id()", "attr.tabindex": "0", "attr.aria-activedescendant": "activeDescendant()", "attr.data-state": "select.open() ? \"open\" : \"closed\"" } }, providers: [{ provide: NgpSelectOptionsToken, useExisting: NgpSelectOptions }], queries: [{ propertyName: "options", predicate: NgpSelectOptionToken, descendants: true, isSignal: true }], exportAs: ["ngpSelectOptions"], ngImport: i0 }); }
|
|
137
|
-
}
|
|
138
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSelectOptions, decorators: [{
|
|
139
|
-
type: Directive,
|
|
140
|
-
args: [{
|
|
141
|
-
standalone: true,
|
|
142
|
-
selector: '[ngpSelectOptions]',
|
|
143
|
-
exportAs: 'ngpSelectOptions',
|
|
144
|
-
providers: [{ provide: NgpSelectOptionsToken, useExisting: NgpSelectOptions }],
|
|
145
|
-
host: {
|
|
146
|
-
role: 'listbox',
|
|
147
|
-
'[attr.id]': 'id()',
|
|
148
|
-
'[attr.aria-labelledby]': 'select.button().id()',
|
|
149
|
-
'[attr.tabindex]': '0',
|
|
150
|
-
'[attr.aria-activedescendant]': 'activeDescendant()',
|
|
151
|
-
'[attr.data-state]': 'select.open() ? "open" : "closed"',
|
|
152
|
-
'(keydown)': 'keydown($event)',
|
|
153
|
-
'(document:click)': 'closeOnOutsideClick($event)',
|
|
154
|
-
},
|
|
155
|
-
}]
|
|
156
|
-
}], ctorParameters: () => [] });
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9wdGlvbnMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctcHJpbWl0aXZlcy9zZWxlY3Qvc3JjL3NlbGVjdC1vcHRpb25zL3NlbGVjdC1vcHRpb25zLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEVBQUUsMEJBQTBCLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsUUFBUSxFQUVSLGVBQWUsRUFDZixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFrQi9ELE1BQU0sT0FBTyxnQkFBZ0I7SUE4QzNCOztPQUVHO0lBQ0g7UUFoREE7O1dBRUc7UUFDZ0IsV0FBTSxHQUFHLFlBQVksRUFBSyxDQUFDO1FBRTlDOztXQUVHO1FBQ2MsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU3Qzs7V0FFRztRQUNnQixZQUFPLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQUV6RTs7V0FFRztRQUNnQixtQkFBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRTlEOztXQUVHO1FBQ2MsWUFBTyxHQUFHLGVBQWUsQ0FBcUIsb0JBQW9CLEVBQUU7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QUM5QixRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxXQUFXLGtCQUFrQixFQUFFLENBQUM7b0JBQzlFLElBQUksRUFBRTt3QkFDSixJQUFJLEVBQUUsU0FBUzt3QkFDZixXQUFXLEVBQUUsTUFBTTt3QkFDbkIsd0JBQXdCLEVBQUUsc0JBQXNCO3dCQUNoRCxpQkFBaUIsRUFBRSxHQUFHO3dCQUN0Qiw4QkFBOEIsRUFBRSxvQkFBb0I7d0JBQ3BELG1CQUFtQixFQUFFLG1DQUFtQzt3QkFDeEQsV0FBVyxFQUFFLGlCQUFpQjt3QkFDOUIsa0JBQWtCLEVBQUUsNkJBQTZCO3FCQUNsRDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIDIwMjQgQW5ndWxhciBQcmltaXRpdmVzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25nLXByaW1pdGl2ZXMvbmctcHJpbWl0aXZlc1xuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIENDIEJZLU5EIDQuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgeyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciwgRm9jdXNPcmlnaW4gfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3RvcixcbiAgU2lnbmFsLFxuICBjb250ZW50Q2hpbGRyZW4sXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IHVuaXF1ZUlkIH0gZnJvbSAnbmctcHJpbWl0aXZlcy91dGlscyc7XG5pbXBvcnQgeyBOZ3BTZWxlY3RPcHRpb24gfSBmcm9tICcuLi9zZWxlY3Qtb3B0aW9uL3NlbGVjdC1vcHRpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IE5ncFNlbGVjdE9wdGlvblRva2VuIH0gZnJvbSAnLi4vc2VsZWN0LW9wdGlvbi9zZWxlY3Qtb3B0aW9uLnRva2VuJztcbmltcG9ydCB7IGluamVjdFNlbGVjdCB9IGZyb20gJy4uL3NlbGVjdC9zZWxlY3QudG9rZW4nO1xuaW1wb3J0IHsgTmdwU2VsZWN0T3B0aW9uc1Rva2VuIH0gZnJvbSAnLi9zZWxlY3Qtb3B0aW9ucy50b2tlbic7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tuZ3BTZWxlY3RPcHRpb25zXScsXG4gIGV4cG9ydEFzOiAnbmdwU2VsZWN0T3B0aW9ucycsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTmdwU2VsZWN0T3B0aW9uc1Rva2VuLCB1c2VFeGlzdGluZzogTmdwU2VsZWN0T3B0aW9ucyB9XSxcbiAgaG9zdDoge1xuICAgIHJvbGU6ICdsaXN0Ym94JyxcbiAgICAnW2F0dHIuaWRdJzogJ2lkKCknLFxuICAgICdbYXR0ci5hcmlhLWxhYmVsbGVkYnldJzogJ3NlbGVjdC5idXR0b24oKS5pZCgpJyxcbiAgICAnW2F0dHIudGFiaW5kZXhdJzogJzAnLFxuICAgICdbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdJzogJ2FjdGl2ZURlc2NlbmRhbnQoKScsXG4gICAgJ1thdHRyLmRhdGEtc3RhdGVdJzogJ3NlbGVjdC5vcGVuKCkgPyBcIm9wZW5cIiA6IFwiY2xvc2VkXCInLFxuICAgICcoa2V5ZG93biknOiAna2V5ZG93bigkZXZlbnQpJyxcbiAgICAnKGRvY3VtZW50OmNsaWNrKSc6ICdjbG9zZU9uT3V0c2lkZUNsaWNrKCRldmVudCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBOZ3BTZWxlY3RPcHRpb25zPFQ+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIHBhcmVudCBzZWxlY3QgY29tcG9uZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlbGVjdCA9IGluamVjdFNlbGVjdDxUPigpO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIGluamVjdG9yLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgZWxlbWVudCByZWZlcmVuY2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZWxlbWVudCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG5cbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgY2hhbmdlIGRldGVjdG9yLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAvKipcbiAgICogQWNjZXNzIGFsbCB0aGUgb3B0aW9ucyBpbiB0aGUgbGlzdC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9ucyA9IGNvbnRlbnRDaGlsZHJlbjxOZ3BTZWxlY3RPcHRpb248VD4+KE5ncFNlbGVjdE9wdGlvblRva2VuLCB7XG4gICAgZGVzY2VuZGFudHM6IHRydWUsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbGx5IGRlZmluZSBhbiBpZCBmb3IgdGhlIG9wdGlvbnMgbGlzdC4gQnkgZGVmYXVsdCwgdGhlIGlkIGlzIGdlbmVyYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGlkID0gaW5wdXQodW5pcXVlSWQoJ3NlbGVjdC1vcHRpb25zJykpO1xuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIGFjdGl2ZSBkZXNjZW5kYW50LlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBhY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciA9IG5ldyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcihcbiAgICB0aGlzLm9wdGlvbnMgYXMgU2lnbmFsPE5ncFNlbGVjdE9wdGlvbjxUPltdPixcbiAgICB0aGlzLmluamVjdG9yLFxuICApO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGFjdGl2ZSBkZXNjZW5kYW50IGlkXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2ZURlc2NlbmRhbnQgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqXG4gICAqIEZvY3VzIHRoZSBvcHRpb25zIGxpc3Qgd2hlbiBpdCBiZWNvbWVzIHZpc2libGUuXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyB1cGRhdGUgdGhlIG1vdW50ZWQgc3RhdGUgd2hlbiB0aGUgc2VsZWN0IGRyb3Bkb3duIGlzIG9wZW5lZCBvciBjbG9zZWRcbiAgICBlZmZlY3QoKCkgPT4gKHRoaXMuc2VsZWN0Lm9wZW4oKSA/IHRoaXMub3BlbigpIDogdGhpcy5jbG9zZSgpKSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcblxuICAgIC8vIHdoZW5ldmVyIHRoZSBhY3RpdmUgZGVzY2VuZGFudCBjaGFuZ2VzIHVwZGF0ZSB0aGUgYWN0aXZlIGRlc2NlbmRhbnQgaWRcbiAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyLmNoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+XG4gICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudC5zZXQodGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5hY3RpdmVJdGVtPy5pZCgpID8/IG51bGwpLFxuICAgICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBieSBkZWZhdWx0IHRoZSBzZWxlY3RlZCBvcHRpb24gc2hvdWxkIGJlIGFjdGl2ZSB3aGVuIHRoZSBvcHRpb25zIGxpc3QgaXMgb3BlbmVkLlxuICAgIC8vIGlmIHRoZXJlIGlzIG5vIHNlbGVjdGVkIG9wdGlvbiwgdGhlIGZpcnN0IG9wdGlvbiBzaG91bGQgYmUgYWN0aXZlLlxuICAgIGlmICh0aGlzLnNlbGVjdC52YWx1ZSgpID09PSBudWxsKSB7XG4gICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyLnNldEZpcnN0SXRlbUFjdGl2ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9IHRoaXMub3B0aW9ucygpLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSgpID09PSB0aGlzLnNlbGVjdC52YWx1ZSgpKTtcbiAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIuc2V0QWN0aXZlSXRlbShzZWxlY3RlZE9wdGlvbiA/PyB0aGlzLm9wdGlvbnMoKVswXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgb3BlbmluZyBvZiB0aGUgb3B0aW9ucyBsaXN0LlxuICAgKi9cbiAgcHJpdmF0ZSBvcGVuKCk6IHZvaWQge1xuICAgIC8vIGZvcmNlIGNoYW5nZSBkZXRlY3Rpb24gdG8gZW5zdXJlIHRoZSBvcHRpb25zIGxpc3QgaXMgdmlzaWJsZSBiZWZvcmUgZm9jdXNpbmdcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgY2xvc2luZyBvZiB0aGUgb3B0aW9ucyBsaXN0LlxuICAgKiBAcGFyYW0gb3JpZ2luXG4gICAqL1xuICBwcml2YXRlIGNsb3NlKG9yaWdpbj86IEZvY3VzT3JpZ2luKTogdm9pZCB7XG4gICAgLy8gaWYgdGhlIG9wdGlvbnMgbGlzdCBpcyBhbHJlYWR5IGNsb3NlZCwgZG8gbm90aGluZ1xuICAgIGlmICghdGhpcy5zZWxlY3Qub3BlbigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3Qub3Blbi5zZXQoZmFsc2UpO1xuICAgIHRoaXMuc2VsZWN0LmJ1dHRvbigpLmZvY3VzKG9yaWdpbik7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIHVzZXIgY2xpY2tzIG91dHNpZGUgb2YgdGhlIG9wdGlvbnMgbGlzdCwgY2xvc2UgdGhlIGRyb3Bkb3duLlxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICovXG4gIHByb3RlY3RlZCBjbG9zZU9uT3V0c2lkZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgLy8gaWYgdGhlIHVzZXIgcGVyZm9ybXMgYSBjbGljayB0aGF0IGlzIG5vdCB3aXRoaW4gdGhlIG9wdGlvbnMgbGlzdCBvciB0aGUgc2xlY3QgYnV0dG9uLCBjbG9zZSB0aGUgZHJvcGRvd25cbiAgICBpZiAoXG4gICAgICB0aGlzLnNlbGVjdC5vcGVuKCkgJiZcbiAgICAgICF0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICF0aGlzLnNlbGVjdC5idXR0b24oKS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpXG4gICAgKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBrZXlib2FyZCBldmVudHMuXG4gICAqXG4gICAqIC0gSWYgdGhlIHVzZXIgcHJlc3NlcyB0aGUgdGFiIGtleSBrZWVwIGZvY3VzIG9uIHRoZSBkcm9wZG93bi5cbiAgICogLSBJZiB0aGUgdXNlciBwcmVzc2VzIHRoZSBlc2NhcGUga2V5LCBjbG9zZSB0aGUgZHJvcGRvd24uXG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgcHJvdGVjdGVkIGtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAvLyBmb3J3YXJkIHRoZSBrZXlib2FyZCBldmVudCB0byB0aGUgYWN0aXZlIGRlc2NlbmRhbnQga2V5IG1hbmFnZXJcbiAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyLm9uS2V5ZG93bihldmVudCk7XG5cbiAgICAvLyBwcmV2ZW50IHRoZSBkZWZhdWx0IHRhYiBiZWhhdmlvciAtIHRoaXMgaXMgZXNzZW50aWFsbHkgYSBmb2N1cyB0cmFwXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ1RhYicpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBpZiB0aGUgZXNjYXBlIGtleSBpcyBwcmVzc2VkLCBjbG9zZSB0aGUgZHJvcGRvd25cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5jbG9zZSgna2V5Ym9hcmQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBpZiB0aGUgc3BhY2Ugb3IgZW50ZXIga2V5IGlzIHByZXNzZWQsIHNlbGVjdCB0aGUgYWN0aXZlIG9wdGlvblxuICAgIGlmIChldmVudC5rZXkgPT09ICcgJyB8fCBldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgIGNvbnN0IGFjdGl2ZUl0ZW0gPSB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW07XG5cbiAgICAgIGlmIChhY3RpdmVJdGVtICYmICFhY3RpdmVJdGVtLmlzRGlzYWJsZWQoKSkge1xuICAgICAgICB0aGlzLnNlbGVjdC52YWx1ZS5zZXQoYWN0aXZlSXRlbS52YWx1ZSgpKTtcbiAgICAgICAgdGhpcy5jbG9zZSgna2V5Ym9hcmQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright © 2024 Angular Primitives.
|
|
3
|
-
* https://github.com/ng-primitives/ng-primitives
|
|
4
|
-
*
|
|
5
|
-
* This source code is licensed under the CC BY-ND 4.0 license found in the
|
|
6
|
-
* LICENSE file in the root directory of this source tree.
|
|
7
|
-
*/
|
|
8
|
-
import { InjectionToken, inject } from '@angular/core';
|
|
9
|
-
export const NgpSelectOptionsToken = new InjectionToken('NgpSelectOptionsToken');
|
|
10
|
-
/**
|
|
11
|
-
* Inject the SelectOptions directive instance
|
|
12
|
-
*/
|
|
13
|
-
export function injectSelectOptions() {
|
|
14
|
-
return inject(NgpSelectOptionsToken);
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9wdGlvbnMudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL3NlbGVjdC9zcmMvc2VsZWN0LW9wdGlvbnMvc2VsZWN0LW9wdGlvbnMudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQ3JELHVCQUF1QixDQUN4QixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CO0lBQ2pDLE9BQU8sTUFBTSxDQUFDLHFCQUFxQixDQUF3QixDQUFDO0FBQzlELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCDCqSAyMDI0IEFuZ3VsYXIgUHJpbWl0aXZlcy5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wcmltaXRpdmVzL25nLXByaW1pdGl2ZXNcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBDQyBCWS1ORCA0LjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBOZ3BTZWxlY3RPcHRpb25zIH0gZnJvbSAnLi9zZWxlY3Qtb3B0aW9ucy5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY29uc3QgTmdwU2VsZWN0T3B0aW9uc1Rva2VuID0gbmV3IEluamVjdGlvblRva2VuPE5ncFNlbGVjdE9wdGlvbnM8dW5rbm93bj4+KFxuICAnTmdwU2VsZWN0T3B0aW9uc1Rva2VuJyxcbik7XG5cbi8qKlxuICogSW5qZWN0IHRoZSBTZWxlY3RPcHRpb25zIGRpcmVjdGl2ZSBpbnN0YW5jZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0U2VsZWN0T3B0aW9uczxUPigpOiBOZ3BTZWxlY3RPcHRpb25zPFQ+IHtcbiAgcmV0dXJuIGluamVjdChOZ3BTZWxlY3RPcHRpb25zVG9rZW4pIGFzIE5ncFNlbGVjdE9wdGlvbnM8VD47XG59XG4iXX0=
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright © 2024 Angular Primitives.
|
|
3
|
-
* https://github.com/ng-primitives/ng-primitives
|
|
4
|
-
*
|
|
5
|
-
* This source code is licensed under the CC BY-ND 4.0 license found in the
|
|
6
|
-
* LICENSE file in the root directory of this source tree.
|
|
7
|
-
*/
|
|
8
|
-
import { FocusOrigin } from '@angular/cdk/a11y';
|
|
9
|
-
import { ElementRef } from '@angular/core';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
export declare class NgpSelectButton {
|
|
12
|
-
/**
|
|
13
|
-
* Access the parent select component.
|
|
14
|
-
*/
|
|
15
|
-
protected readonly select: import("ng-primitives/select").NgpSelect<unknown>;
|
|
16
|
-
/**
|
|
17
|
-
* Access the disposable helpers.
|
|
18
|
-
*/
|
|
19
|
-
private readonly disposables;
|
|
20
|
-
/**
|
|
21
|
-
* Access the element reference.
|
|
22
|
-
* @internal
|
|
23
|
-
*/
|
|
24
|
-
readonly element: ElementRef<HTMLElement>;
|
|
25
|
-
/**
|
|
26
|
-
* Access the focus manager
|
|
27
|
-
*/
|
|
28
|
-
private readonly focusManager;
|
|
29
|
-
/**
|
|
30
|
-
* Optionally define an id for the button. By default, the id is generated.
|
|
31
|
-
*/
|
|
32
|
-
readonly id: import("@angular/core").InputSignal<string>;
|
|
33
|
-
/**
|
|
34
|
-
* Toggle the select open state.
|
|
35
|
-
*/
|
|
36
|
-
protected toggle(): void;
|
|
37
|
-
/**
|
|
38
|
-
* Handle keyboard events. If the list is closed, open it when the user presses the arrow keys.
|
|
39
|
-
* If the list is open then we navigate using active descendant.
|
|
40
|
-
* @param event
|
|
41
|
-
*/
|
|
42
|
-
protected keydown(event: KeyboardEvent): void;
|
|
43
|
-
/**
|
|
44
|
-
* Focus the button element.
|
|
45
|
-
* @param origin
|
|
46
|
-
* @internal
|
|
47
|
-
*/
|
|
48
|
-
focus(origin?: FocusOrigin): void;
|
|
49
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NgpSelectButton, never>;
|
|
50
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<NgpSelectButton, "button[ngpSelectButton]", ["ngpSelectButton"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
51
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright © 2024 Angular Primitives.
|
|
3
|
-
* https://github.com/ng-primitives/ng-primitives
|
|
4
|
-
*
|
|
5
|
-
* This source code is licensed under the CC BY-ND 4.0 license found in the
|
|
6
|
-
* LICENSE file in the root directory of this source tree.
|
|
7
|
-
*/
|
|
8
|
-
import { Highlightable } from '@angular/cdk/a11y';
|
|
9
|
-
import { BooleanInput } from '@angular/cdk/coercion';
|
|
10
|
-
import { ElementRef } from '@angular/core';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
export declare class NgpSelectOption<T> implements Highlightable {
|
|
13
|
-
/**
|
|
14
|
-
* Access the parent select component.
|
|
15
|
-
*/
|
|
16
|
-
protected readonly select: import("ng-primitives/select").NgpSelect<T>;
|
|
17
|
-
/**
|
|
18
|
-
* Access the element reference.
|
|
19
|
-
*/
|
|
20
|
-
protected readonly element: ElementRef<any>;
|
|
21
|
-
/**
|
|
22
|
-
* Optionally define an id for the option. By default, the id is generated.
|
|
23
|
-
*/
|
|
24
|
-
readonly id: import("@angular/core").InputSignal<string>;
|
|
25
|
-
/**
|
|
26
|
-
* The value of the option.
|
|
27
|
-
*/
|
|
28
|
-
readonly value: import("@angular/core").InputSignal<T>;
|
|
29
|
-
/**
|
|
30
|
-
* Whether the option is disabled.
|
|
31
|
-
*/
|
|
32
|
-
readonly isDisabled: import("@angular/core").InputSignalWithTransform<boolean, BooleanInput>;
|
|
33
|
-
/**
|
|
34
|
-
* Whether the option is the active descendant.
|
|
35
|
-
*/
|
|
36
|
-
protected readonly active: import("@angular/core").WritableSignal<boolean>;
|
|
37
|
-
/**
|
|
38
|
-
* Determine if the option is selected.
|
|
39
|
-
*/
|
|
40
|
-
protected readonly selected: import("@angular/core").Signal<boolean>;
|
|
41
|
-
/**
|
|
42
|
-
* Set the active styles for the option.
|
|
43
|
-
* @internal
|
|
44
|
-
*/
|
|
45
|
-
setActiveStyles(): void;
|
|
46
|
-
/**
|
|
47
|
-
* Set the inactive styles for the option.
|
|
48
|
-
* @internal
|
|
49
|
-
*/
|
|
50
|
-
setInactiveStyles(): void;
|
|
51
|
-
/**
|
|
52
|
-
* Handle the click event on the option.
|
|
53
|
-
*/
|
|
54
|
-
protected selectOption(): void;
|
|
55
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NgpSelectOption<any>, never>;
|
|
56
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<NgpSelectOption<any>, "[ngpSelectOption]", ["ngpSelectOption"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "ngpSelectOptionValue"; "required": true; "isSignal": true; }; "isDisabled": { "alias": "ngpSelectOptionDisabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
57
|
-
}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { AfterViewInit, ChangeDetectorRef, ElementRef } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class NgpSelectOptions<T> implements AfterViewInit {
|
|
4
|
-
/**
|
|
5
|
-
* Access the parent select component.
|
|
6
|
-
*/
|
|
7
|
-
protected readonly select: import("ng-primitives/select").NgpSelect<T>;
|
|
8
|
-
/**
|
|
9
|
-
* Access the injector.
|
|
10
|
-
*/
|
|
11
|
-
private readonly injector;
|
|
12
|
-
/**
|
|
13
|
-
* Access the element reference.
|
|
14
|
-
*/
|
|
15
|
-
protected readonly element: ElementRef<HTMLElement>;
|
|
16
|
-
/**
|
|
17
|
-
* Access the change detector.
|
|
18
|
-
*/
|
|
19
|
-
protected readonly changeDetector: ChangeDetectorRef;
|
|
20
|
-
/**
|
|
21
|
-
* Access all the options in the list.
|
|
22
|
-
*/
|
|
23
|
-
private readonly options;
|
|
24
|
-
/**
|
|
25
|
-
* Optionally define an id for the options list. By default, the id is generated.
|
|
26
|
-
*/
|
|
27
|
-
readonly id: import("@angular/core").InputSignal<string>;
|
|
28
|
-
/**
|
|
29
|
-
* Handle the active descendant.
|
|
30
|
-
*/
|
|
31
|
-
private readonly activeDescendantKeyManager;
|
|
32
|
-
/**
|
|
33
|
-
* Get the active descendant id
|
|
34
|
-
*/
|
|
35
|
-
private readonly activeDescendant;
|
|
36
|
-
/**
|
|
37
|
-
* Focus the options list when it becomes visible.
|
|
38
|
-
*/
|
|
39
|
-
constructor();
|
|
40
|
-
ngAfterViewInit(): void;
|
|
41
|
-
/**
|
|
42
|
-
* Handle the opening of the options list.
|
|
43
|
-
*/
|
|
44
|
-
private open;
|
|
45
|
-
/**
|
|
46
|
-
* Handle the closing of the options list.
|
|
47
|
-
* @param origin
|
|
48
|
-
*/
|
|
49
|
-
private close;
|
|
50
|
-
/**
|
|
51
|
-
* If the user clicks outside of the options list, close the dropdown.
|
|
52
|
-
* @param event
|
|
53
|
-
*/
|
|
54
|
-
protected closeOnOutsideClick(event: MouseEvent): void;
|
|
55
|
-
/**
|
|
56
|
-
* Handle keyboard events.
|
|
57
|
-
*
|
|
58
|
-
* - If the user presses the tab key keep focus on the dropdown.
|
|
59
|
-
* - If the user presses the escape key, close the dropdown.
|
|
60
|
-
* @param event
|
|
61
|
-
*/
|
|
62
|
-
protected keydown(event: KeyboardEvent): void;
|
|
63
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NgpSelectOptions<any>, never>;
|
|
64
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<NgpSelectOptions<any>, "[ngpSelectOptions]", ["ngpSelectOptions"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, ["options"], never, true, never>;
|
|
65
|
-
}
|