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.
Files changed (211) hide show
  1. package/README.md +14 -4
  2. package/accordion/accordion-trigger/accordion-trigger.directive.d.ts +2 -1
  3. package/autofill/README.md +3 -0
  4. package/autofill/autofill/autofill.directive.d.ts +19 -0
  5. package/{select/select-button/select-button.token.d.ts → autofill/autofill/autofill.token.d.ts} +4 -4
  6. package/autofill/index.d.ts +9 -0
  7. package/avatar/avatar/avatar.directive.d.ts +2 -1
  8. package/button/README.md +3 -0
  9. package/button/button/button.directive.d.ts +27 -0
  10. package/{select/select-option/select-option.token.d.ts → button/button/button.token.d.ts} +4 -4
  11. package/button/index.d.ts +9 -0
  12. package/checkbox/checkbox/checkbox.directive.d.ts +11 -61
  13. package/checkbox/index.d.ts +0 -4
  14. package/esm2022/a11y/visually-hidden/visually-hidden.directive.mjs +3 -3
  15. package/esm2022/accordion/accordion/accordion.directive.mjs +5 -4
  16. package/esm2022/accordion/accordion-content/accordion-content.directive.mjs +5 -6
  17. package/esm2022/accordion/accordion-item/accordion-item.directive.mjs +5 -5
  18. package/esm2022/accordion/accordion-trigger/accordion-trigger.directive.mjs +8 -5
  19. package/esm2022/autofill/autofill/autofill.directive.mjs +71 -0
  20. package/esm2022/autofill/autofill/autofill.token.mjs +16 -0
  21. package/esm2022/autofill/index.mjs +10 -0
  22. package/esm2022/autofill/ng-primitives-autofill.mjs +5 -0
  23. package/esm2022/avatar/avatar/avatar.directive.mjs +7 -4
  24. package/esm2022/avatar/avatar-fallback/avatar-fallback.directive.mjs +3 -3
  25. package/esm2022/avatar/avatar-image/avatar-image.directive.mjs +3 -3
  26. package/esm2022/button/button/button.directive.mjs +47 -0
  27. package/esm2022/button/button/button.token.mjs +16 -0
  28. package/esm2022/button/index.mjs +10 -0
  29. package/esm2022/button/ng-primitives-button.mjs +5 -0
  30. package/esm2022/checkbox/checkbox/checkbox.directive.mjs +29 -79
  31. package/esm2022/checkbox/index.mjs +1 -5
  32. package/esm2022/file-upload/file-upload/file-upload.directive.mjs +7 -4
  33. package/esm2022/focus-trap/focus-trap/focus-trap.directive.mjs +262 -0
  34. package/esm2022/focus-trap/focus-trap/focus-trap.token.mjs +16 -0
  35. package/esm2022/focus-trap/index.mjs +10 -0
  36. package/esm2022/focus-trap/ng-primitives-focus-trap.mjs +5 -0
  37. package/esm2022/form-field/description/description.directive.mjs +14 -14
  38. package/esm2022/form-field/error/error.directive.mjs +27 -29
  39. package/esm2022/form-field/form-control/form-control.directive.mjs +22 -16
  40. package/esm2022/form-field/form-field/form-field.directive.mjs +3 -3
  41. package/esm2022/form-field/form-field/form-field.token.mjs +3 -7
  42. package/esm2022/form-field/label/label.directive.mjs +56 -17
  43. package/esm2022/input/index.mjs +10 -0
  44. package/esm2022/input/input/input.directive.mjs +55 -0
  45. package/esm2022/input/input/input.token.mjs +16 -0
  46. package/esm2022/input/ng-primitives-input.mjs +5 -0
  47. package/esm2022/interactions/focus/focus.directive.mjs +15 -10
  48. package/esm2022/interactions/focus-visible/focus-visible.directive.mjs +12 -7
  49. package/esm2022/interactions/hover/hover.directive.mjs +16 -11
  50. package/esm2022/interactions/index.mjs +5 -1
  51. package/esm2022/interactions/move/move.directive.mjs +216 -0
  52. package/esm2022/interactions/move/move.token.mjs +16 -0
  53. package/esm2022/interactions/press/press.directive.mjs +118 -0
  54. package/esm2022/interactions/press/press.token.mjs +16 -0
  55. package/esm2022/internal/disabled/disabled.mjs +19 -0
  56. package/esm2022/internal/index.mjs +11 -0
  57. package/esm2022/internal/ng-primitives-internal.mjs +5 -0
  58. package/esm2022/internal/orientation/orientation.mjs +19 -0
  59. package/esm2022/internal/style-injector/style-injector.mjs +81 -0
  60. package/esm2022/progress/progress/progress.directive.mjs +3 -3
  61. package/esm2022/progress/progress-indicator/progress-indicator.directive.mjs +3 -3
  62. package/esm2022/radio/radio-group/radio-group.directive.mjs +14 -54
  63. package/esm2022/radio/radio-indicator/radio-indicator.directive.mjs +8 -5
  64. package/esm2022/radio/radio-item/radio-item.directive.mjs +8 -6
  65. package/esm2022/resize/resize/resize.directive.mjs +3 -3
  66. package/esm2022/roving-focus/roving-focus-group/roving-focus-group.directive.mjs +14 -9
  67. package/esm2022/roving-focus/roving-focus-item/roving-focus-item.directive.mjs +3 -3
  68. package/esm2022/search/index.mjs +10 -0
  69. package/esm2022/search/ng-primitives-search.mjs +5 -0
  70. package/esm2022/search/search-field/search-field.directive.mjs +47 -0
  71. package/esm2022/search/search-field/search-field.token.mjs +16 -0
  72. package/esm2022/select/index.mjs +1 -7
  73. package/esm2022/select/select/select.directive.mjs +23 -36
  74. package/esm2022/select/select/select.token.mjs +1 -1
  75. package/esm2022/slider/slider/slider.directive.mjs +18 -5
  76. package/esm2022/slider/slider-range/slider-range.directive.mjs +6 -5
  77. package/esm2022/slider/slider-thumb/slider-thumb.directive.mjs +7 -4
  78. package/esm2022/slider/slider-track/slider-track.directive.mjs +8 -4
  79. package/esm2022/switch/switch/switch.directive.mjs +18 -58
  80. package/esm2022/switch/switch-thumb/switch-thumb.directive.mjs +9 -6
  81. package/esm2022/tabs/tab-button/tab-button.directive.mjs +8 -6
  82. package/esm2022/tabs/tab-list/tab-list.directive.mjs +3 -3
  83. package/esm2022/tabs/tab-panel/tab-panel.directive.mjs +5 -6
  84. package/esm2022/tabs/tabset/tabset.directive.mjs +14 -18
  85. package/esm2022/textarea/index.mjs +10 -0
  86. package/esm2022/textarea/ng-primitives-textarea.mjs +5 -0
  87. package/esm2022/textarea/textarea/textarea.directive.mjs +37 -0
  88. package/esm2022/textarea/textarea/textarea.token.mjs +16 -0
  89. package/esm2022/toggle/toggle/toggle.directive.mjs +33 -13
  90. package/esm2022/tooltip/tooltip/tooltip.directive.mjs +3 -3
  91. package/esm2022/tooltip/tooltip-trigger/tooltip-trigger.directive.mjs +7 -7
  92. package/esm2022/utils/helpers/focus-manager.mjs +3 -3
  93. package/esm2022/utils/index.mjs +2 -2
  94. package/esm2022/utils/signals/async.mjs +11 -17
  95. package/fesm2022/ng-primitives-a11y.mjs +3 -3
  96. package/fesm2022/ng-primitives-accordion.mjs +19 -16
  97. package/fesm2022/ng-primitives-accordion.mjs.map +1 -1
  98. package/fesm2022/ng-primitives-autofill.mjs +100 -0
  99. package/fesm2022/ng-primitives-autofill.mjs.map +1 -0
  100. package/fesm2022/ng-primitives-avatar.mjs +13 -10
  101. package/fesm2022/ng-primitives-avatar.mjs.map +1 -1
  102. package/fesm2022/ng-primitives-button.mjs +76 -0
  103. package/fesm2022/ng-primitives-button.mjs.map +1 -0
  104. package/fesm2022/ng-primitives-checkbox.mjs +25 -203
  105. package/fesm2022/ng-primitives-checkbox.mjs.map +1 -1
  106. package/fesm2022/ng-primitives-file-upload.mjs +6 -3
  107. package/fesm2022/ng-primitives-file-upload.mjs.map +1 -1
  108. package/fesm2022/ng-primitives-focus-trap.mjs +291 -0
  109. package/fesm2022/ng-primitives-focus-trap.mjs.map +1 -0
  110. package/fesm2022/ng-primitives-form-field.mjs +119 -80
  111. package/fesm2022/ng-primitives-form-field.mjs.map +1 -1
  112. package/fesm2022/ng-primitives-input.mjs +84 -0
  113. package/fesm2022/ng-primitives-input.mjs.map +1 -0
  114. package/fesm2022/ng-primitives-interactions.mjs +394 -26
  115. package/fesm2022/ng-primitives-interactions.mjs.map +1 -1
  116. package/fesm2022/ng-primitives-internal.mjs +132 -0
  117. package/fesm2022/ng-primitives-internal.mjs.map +1 -0
  118. package/fesm2022/ng-primitives-progress.mjs +6 -6
  119. package/fesm2022/ng-primitives-radio.mjs +25 -62
  120. package/fesm2022/ng-primitives-radio.mjs.map +1 -1
  121. package/fesm2022/ng-primitives-resize.mjs +3 -3
  122. package/fesm2022/ng-primitives-roving-focus.mjs +15 -10
  123. package/fesm2022/ng-primitives-roving-focus.mjs.map +1 -1
  124. package/fesm2022/ng-primitives-search.mjs +76 -0
  125. package/fesm2022/ng-primitives-search.mjs.map +1 -0
  126. package/fesm2022/ng-primitives-select.mjs +23 -395
  127. package/fesm2022/ng-primitives-select.mjs.map +1 -1
  128. package/fesm2022/ng-primitives-slider.mjs +35 -14
  129. package/fesm2022/ng-primitives-slider.mjs.map +1 -1
  130. package/fesm2022/ng-primitives-switch.mjs +23 -62
  131. package/fesm2022/ng-primitives-switch.mjs.map +1 -1
  132. package/fesm2022/ng-primitives-tabs.mjs +27 -30
  133. package/fesm2022/ng-primitives-tabs.mjs.map +1 -1
  134. package/fesm2022/ng-primitives-textarea.mjs +66 -0
  135. package/fesm2022/ng-primitives-textarea.mjs.map +1 -0
  136. package/fesm2022/ng-primitives-toggle.mjs +32 -12
  137. package/fesm2022/ng-primitives-toggle.mjs.map +1 -1
  138. package/fesm2022/ng-primitives-tooltip.mjs +9 -9
  139. package/fesm2022/ng-primitives-tooltip.mjs.map +1 -1
  140. package/fesm2022/ng-primitives-utils.mjs +14 -20
  141. package/fesm2022/ng-primitives-utils.mjs.map +1 -1
  142. package/file-upload/file-upload/file-upload.directive.d.ts +2 -1
  143. package/focus-trap/README.md +3 -0
  144. package/focus-trap/focus-trap/focus-trap.directive.d.ts +64 -0
  145. package/{select/select-options/select-options.token.d.ts → focus-trap/focus-trap/focus-trap.token.d.ts} +4 -4
  146. package/focus-trap/index.d.ts +9 -0
  147. package/form-field/description/description.directive.d.ts +1 -1
  148. package/form-field/error/error.directive.d.ts +9 -5
  149. package/form-field/form-control/form-control.directive.d.ts +7 -3
  150. package/form-field/form-field/form-field.token.d.ts +1 -1
  151. package/form-field/label/label.directive.d.ts +3 -2
  152. package/input/README.md +3 -0
  153. package/input/index.d.ts +9 -0
  154. package/input/input/input.directive.d.ts +33 -0
  155. package/input/input/input.token.d.ts +14 -0
  156. package/interactions/focus/focus.directive.d.ts +6 -2
  157. package/interactions/focus-visible/focus-visible.directive.d.ts +5 -1
  158. package/interactions/hover/hover.directive.d.ts +5 -1
  159. package/interactions/index.d.ts +4 -0
  160. package/interactions/move/move.directive.d.ts +126 -0
  161. package/interactions/move/move.token.d.ts +14 -0
  162. package/interactions/press/press.directive.d.ts +59 -0
  163. package/interactions/press/press.token.d.ts +14 -0
  164. package/internal/README.md +3 -0
  165. package/internal/disabled/disabled.d.ts +21 -0
  166. package/internal/index.d.ts +10 -0
  167. package/internal/orientation/orientation.d.ts +22 -0
  168. package/internal/style-injector/style-injector.d.ts +36 -0
  169. package/package.json +49 -7
  170. package/radio/radio-group/radio-group.directive.d.ts +4 -41
  171. package/radio/radio-indicator/radio-indicator.directive.d.ts +2 -1
  172. package/radio/radio-item/radio-item.directive.d.ts +2 -1
  173. package/roving-focus/roving-focus-group/roving-focus-group.directive.d.ts +7 -2
  174. package/search/README.md +3 -0
  175. package/search/index.d.ts +9 -0
  176. package/search/search-field/search-field.directive.d.ts +15 -0
  177. package/search/search-field/search-field.token.d.ts +14 -0
  178. package/select/index.d.ts +0 -6
  179. package/select/select/select.directive.d.ts +7 -22
  180. package/select/select/select.token.d.ts +2 -2
  181. package/slider/slider/slider.directive.d.ts +4 -2
  182. package/slider/slider-thumb/slider-thumb.directive.d.ts +2 -1
  183. package/slider/slider-track/slider-track.directive.d.ts +1 -1
  184. package/switch/switch/switch.directive.d.ts +5 -45
  185. package/switch/switch-thumb/switch-thumb.directive.d.ts +2 -1
  186. package/tabs/tab-button/tab-button.directive.d.ts +2 -1
  187. package/tabs/tabset/tabset.directive.d.ts +3 -9
  188. package/textarea/README.md +3 -0
  189. package/textarea/index.d.ts +9 -0
  190. package/textarea/textarea/textarea.directive.d.ts +20 -0
  191. package/textarea/textarea/textarea.token.d.ts +14 -0
  192. package/toggle/toggle/toggle.directive.d.ts +16 -4
  193. package/utils/index.d.ts +1 -1
  194. package/utils/signals/async.d.ts +10 -12
  195. package/checkbox/checkbox-indicator/checkbox-indicator.directive.d.ts +0 -19
  196. package/checkbox/checkbox-indicator/checkbox-indicator.token.d.ts +0 -15
  197. package/checkbox/checkbox-input/checkbox-input.directive.d.ts +0 -10
  198. package/checkbox/checkbox-label/checkbox-label.directive.d.ts +0 -9
  199. package/esm2022/checkbox/checkbox-indicator/checkbox-indicator.directive.mjs +0 -51
  200. package/esm2022/checkbox/checkbox-indicator/checkbox-indicator.token.mjs +0 -17
  201. package/esm2022/checkbox/checkbox-input/checkbox-input.directive.mjs +0 -40
  202. package/esm2022/checkbox/checkbox-label/checkbox-label.directive.mjs +0 -32
  203. package/esm2022/select/select-button/select-button.directive.mjs +0 -84
  204. package/esm2022/select/select-button/select-button.token.mjs +0 -16
  205. package/esm2022/select/select-option/select-option.directive.mjs +0 -90
  206. package/esm2022/select/select-option/select-option.token.mjs +0 -16
  207. package/esm2022/select/select-options/select-options.directive.mjs +0 -157
  208. package/esm2022/select/select-options/select-options.token.mjs +0 -16
  209. package/select/select-button/select-button.directive.d.ts +0 -51
  210. package/select/select-option/select-option.directive.d.ts +0 -57
  211. package/select/select-options/select-options.directive.d.ts +0 -65
@@ -9,19 +9,31 @@ import { BooleanInput } from '@angular/cdk/coercion';
9
9
  import * as i0 from "@angular/core";
10
10
  export declare class NgpToggle {
11
11
  /**
12
- * Whether the toggle is pressed.
12
+ * Access the element.
13
+ */
14
+ private readonly element;
15
+ /**
16
+ * Whether the toggle is selected.
13
17
  * @default false
14
18
  */
15
- readonly pressed: import("@angular/core").ModelSignal<boolean>;
19
+ readonly selected: import("@angular/core").ModelSignal<boolean>;
16
20
  /**
17
21
  * Whether the toggle is disabled.
18
22
  * @default false
19
23
  */
20
24
  readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, BooleanInput>;
21
25
  /**
22
- * Toggle the pressed state.
26
+ * Determine if the element is a button.
27
+ */
28
+ protected isButton: boolean;
29
+ /**
30
+ * Toggle the selected state.
23
31
  */
24
32
  toggle(): void;
33
+ /**
34
+ * If the element is not a button or a link the space key should toggle the selected state.
35
+ */
36
+ protected onKeyDown(event: KeyboardEvent): void;
25
37
  static ɵfac: i0.ɵɵFactoryDeclaration<NgpToggle, never>;
26
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgpToggle, "button[ngpToggle]", ["ngpToggle"], { "pressed": { "alias": "ngpTogglePressed"; "required": false; "isSignal": true; }; "disabled": { "alias": "ngpToggleDisabled"; "required": false; "isSignal": true; }; }, { "pressed": "ngpTogglePressedChange"; }, never, never, true, never>;
38
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgpToggle, "[ngpToggle]", ["ngpToggle"], { "selected": { "alias": "ngpToggleSelected"; "required": false; "isSignal": true; }; "disabled": { "alias": "ngpToggleDisabled"; "required": false; "isSignal": true; }; }, { "selected": "ngpToggleSelectedChange"; }, never, never, true, never>;
27
39
  }
package/utils/index.d.ts CHANGED
@@ -8,5 +8,5 @@
8
8
  export { injectDisposables } from './helpers/disposables';
9
9
  export { FocusManager } from './helpers/focus-manager';
10
10
  export { uniqueId } from './helpers/unique-id';
11
- export { computedAsync, onChange } from './signals/async';
11
+ export { onBooleanChange, onChange } from './signals/async';
12
12
  export { injectDimensions } from './ui/dimensions';
@@ -6,18 +6,6 @@
6
6
  * LICENSE file in the root directory of this source tree.
7
7
  */
8
8
  import { Injector, Signal } from '@angular/core';
9
- import { Observable } from 'rxjs';
10
- /**
11
- * Create a signal from an observable that is updated asynchronously.
12
- * @param fn The function that returns an observable.
13
- * @param options Options for the effect.
14
- * @param options.injector
15
- * @returns A signal that emits the value of the observable.
16
- * @internal
17
- */
18
- export declare function computedAsync<T>(fn: () => Observable<T> | null | undefined, options?: {
19
- injector: Injector;
20
- }): Signal<T | null>;
21
9
  /**
22
10
  * Listen for changes to a signal and call a function when the signal changes.
23
11
  * @param source
@@ -29,3 +17,13 @@ export declare function computedAsync<T>(fn: () => Observable<T> | null | undefi
29
17
  export declare function onChange<T>(source: Signal<T | null | undefined>, fn: (value: T | null | undefined, previousValue: T | null | undefined) => void, options?: {
30
18
  injector: Injector;
31
19
  }): void;
20
+ /**
21
+ * Listen for changes to a boolean signal and call one of two functions when the signal changes.
22
+ * @param source
23
+ * @param onTrue
24
+ * @param onFalse
25
+ * @param options
26
+ */
27
+ export declare function onBooleanChange(source: Signal<boolean>, onTrue: () => void, onFalse: () => void, options?: {
28
+ injector: Injector;
29
+ }): void;
@@ -1,19 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class NgpCheckboxIndicator {
3
- /**
4
- * Access the checkbox that the indicator belongs to.
5
- */
6
- protected readonly checkbox: import("ng-primitives/checkbox").NgpCheckbox;
7
- /**
8
- * The id of the checkbox.
9
- * @internal
10
- */
11
- readonly id: import("@angular/core").InputSignal<string>;
12
- /**
13
- * The tabindex of the checkbox.
14
- * @internal
15
- */
16
- readonly tabindex: import("@angular/core").InputSignalWithTransform<number, unknown>;
17
- static ɵfac: i0.ɵɵFactoryDeclaration<NgpCheckboxIndicator, never>;
18
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgpCheckboxIndicator, "[ngpCheckboxIndicator]", ["ngpCheckboxIndicator"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "tabindex": { "alias": "tabindex"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
19
- }
@@ -1,15 +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 } from '@angular/core';
9
- import type { NgpCheckboxIndicator } from './checkbox-indicator.directive';
10
- export declare const NgpCheckboxIndicatorToken: InjectionToken<NgpCheckboxIndicator>;
11
- /**
12
- * Inject the CheckboxIndicator directive instance
13
- * @returns The CheckboxIndicator directive instance
14
- */
15
- export declare function injectCheckboxIndicator(): NgpCheckboxIndicator;
@@ -1,10 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- import * as i1 from "ng-primitives/a11y";
3
- export declare class NgpCheckboxInput {
4
- /**
5
- * Access the checkbox instance
6
- */
7
- protected readonly checkbox: import("ng-primitives/checkbox").NgpCheckbox;
8
- static ɵfac: i0.ɵɵFactoryDeclaration<NgpCheckboxInput, never>;
9
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgpCheckboxInput, "input[ngpCheckboxInput]", ["ngpCheckboxInput"], {}, {}, never, never, true, [{ directive: typeof i1.NgpVisuallyHidden; inputs: {}; outputs: {}; }]>;
10
- }
@@ -1,9 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class NgpCheckboxLabel {
3
- /**
4
- * Access the checkbox that the label belongs to.
5
- */
6
- protected readonly checkbox: import("ng-primitives/checkbox").NgpCheckbox;
7
- static ɵfac: i0.ɵɵFactoryDeclaration<NgpCheckboxLabel, never>;
8
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgpCheckboxLabel, "[ngpCheckboxLabel]", ["ngpCheckboxLabel"], {}, {}, never, never, true, never>;
9
- }
@@ -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 { Directive, input, numberAttribute } from '@angular/core';
9
- import { uniqueId } from 'ng-primitives/utils';
10
- import { injectCheckbox } from '../checkbox/checkbox.token';
11
- import { NgpCheckboxIndicatorToken } from './checkbox-indicator.token';
12
- import * as i0 from "@angular/core";
13
- export class NgpCheckboxIndicator {
14
- constructor() {
15
- /**
16
- * Access the checkbox that the indicator belongs to.
17
- */
18
- this.checkbox = injectCheckbox();
19
- /**
20
- * The id of the checkbox.
21
- * @internal
22
- */
23
- this.id = input(uniqueId('ngp-checkbox-indicator'));
24
- /**
25
- * The tabindex of the checkbox.
26
- * @internal
27
- */
28
- this.tabindex = input(0, { transform: numberAttribute });
29
- }
30
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpCheckboxIndicator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
31
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.2", type: NgpCheckboxIndicator, isStandalone: true, selector: "[ngpCheckboxIndicator]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "checkbox" }, properties: { "id": "id()", "tabindex": "checkbox.disabled() ? -1 : tabindex()", "style.pointer-events": "\"none\"", "attr.aria-checked": "checkbox.indeterminate() ? \"mixed\" : checkbox.checked()", "attr.data-state": "checkbox.state()", "attr.data-disabled": "checkbox.disabled()" } }, providers: [{ provide: NgpCheckboxIndicatorToken, useExisting: NgpCheckboxIndicator }], exportAs: ["ngpCheckboxIndicator"], ngImport: i0 }); }
32
- }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpCheckboxIndicator, decorators: [{
34
- type: Directive,
35
- args: [{
36
- standalone: true,
37
- selector: '[ngpCheckboxIndicator]',
38
- exportAs: 'ngpCheckboxIndicator',
39
- providers: [{ provide: NgpCheckboxIndicatorToken, useExisting: NgpCheckboxIndicator }],
40
- host: {
41
- role: 'checkbox',
42
- '[id]': 'id()',
43
- '[tabindex]': 'checkbox.disabled() ? -1 : tabindex()',
44
- '[style.pointer-events]': '"none"',
45
- '[attr.aria-checked]': 'checkbox.indeterminate() ? "mixed" : checkbox.checked()',
46
- '[attr.data-state]': 'checkbox.state()',
47
- '[attr.data-disabled]': 'checkbox.disabled()',
48
- },
49
- }]
50
- }] });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtaW5kaWNhdG9yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXByaW1pdGl2ZXMvY2hlY2tib3gvc3JjL2NoZWNrYm94LWluZGljYXRvci9jaGVja2JveC1pbmRpY2F0b3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQWlCdkUsTUFBTSxPQUFPLG9CQUFvQjtJQWZqQztRQWdCRTs7V0FFRztRQUNnQixhQUFRLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFFL0M7OztXQUdHO1FBQ00sT0FBRSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO1FBRXhEOzs7V0FHRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7S0FDOUQ7OEdBakJZLG9CQUFvQjtrR0FBcEIsb0JBQW9CLDRvQkFYcEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQzs7MkZBVzNFLG9CQUFvQjtrQkFmaEMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsV0FBVyxzQkFBc0IsRUFBRSxDQUFDO29CQUN0RixJQUFJLEVBQUU7d0JBQ0osSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLE1BQU0sRUFBRSxNQUFNO3dCQUNkLFlBQVksRUFBRSx1Q0FBdUM7d0JBQ3JELHdCQUF3QixFQUFFLFFBQVE7d0JBQ2xDLHFCQUFxQixFQUFFLHlEQUF5RDt3QkFDaEYsbUJBQW1CLEVBQUUsa0JBQWtCO3dCQUN2QyxzQkFBc0IsRUFBRSxxQkFBcUI7cUJBQzlDO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgMjAyNCBBbmd1bGFyIFByaW1pdGl2ZXMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbmctcHJpbWl0aXZlcy9uZy1wcmltaXRpdmVzXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQ0MgQlktTkQgNC4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbmltcG9ydCB7IERpcmVjdGl2ZSwgaW5wdXQsIG51bWJlckF0dHJpYnV0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdW5pcXVlSWQgfSBmcm9tICduZy1wcmltaXRpdmVzL3V0aWxzJztcbmltcG9ydCB7IGluamVjdENoZWNrYm94IH0gZnJvbSAnLi4vY2hlY2tib3gvY2hlY2tib3gudG9rZW4nO1xuaW1wb3J0IHsgTmdwQ2hlY2tib3hJbmRpY2F0b3JUb2tlbiB9IGZyb20gJy4vY2hlY2tib3gtaW5kaWNhdG9yLnRva2VuJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW25ncENoZWNrYm94SW5kaWNhdG9yXScsXG4gIGV4cG9ydEFzOiAnbmdwQ2hlY2tib3hJbmRpY2F0b3InLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5ncENoZWNrYm94SW5kaWNhdG9yVG9rZW4sIHVzZUV4aXN0aW5nOiBOZ3BDaGVja2JveEluZGljYXRvciB9XSxcbiAgaG9zdDoge1xuICAgIHJvbGU6ICdjaGVja2JveCcsXG4gICAgJ1tpZF0nOiAnaWQoKScsXG4gICAgJ1t0YWJpbmRleF0nOiAnY2hlY2tib3guZGlzYWJsZWQoKSA/IC0xIDogdGFiaW5kZXgoKScsXG4gICAgJ1tzdHlsZS5wb2ludGVyLWV2ZW50c10nOiAnXCJub25lXCInLFxuICAgICdbYXR0ci5hcmlhLWNoZWNrZWRdJzogJ2NoZWNrYm94LmluZGV0ZXJtaW5hdGUoKSA/IFwibWl4ZWRcIiA6IGNoZWNrYm94LmNoZWNrZWQoKScsXG4gICAgJ1thdHRyLmRhdGEtc3RhdGVdJzogJ2NoZWNrYm94LnN0YXRlKCknLFxuICAgICdbYXR0ci5kYXRhLWRpc2FibGVkXSc6ICdjaGVja2JveC5kaXNhYmxlZCgpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgTmdwQ2hlY2tib3hJbmRpY2F0b3Ige1xuICAvKipcbiAgICogQWNjZXNzIHRoZSBjaGVja2JveCB0aGF0IHRoZSBpbmRpY2F0b3IgYmVsb25ncyB0by5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBjaGVja2JveCA9IGluamVjdENoZWNrYm94KCk7XG5cbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgY2hlY2tib3guXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcmVhZG9ubHkgaWQgPSBpbnB1dCh1bmlxdWVJZCgnbmdwLWNoZWNrYm94LWluZGljYXRvcicpKTtcblxuICAvKipcbiAgICogVGhlIHRhYmluZGV4IG9mIHRoZSBjaGVja2JveC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICByZWFkb25seSB0YWJpbmRleCA9IGlucHV0KDAsIHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSk7XG59XG4iXX0=
@@ -1,17 +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 NgpCheckboxIndicatorToken = new InjectionToken('NgpCheckboxIndicatorToken');
10
- /**
11
- * Inject the CheckboxIndicator directive instance
12
- * @returns The CheckboxIndicator directive instance
13
- */
14
- export function injectCheckboxIndicator() {
15
- return inject(NgpCheckboxIndicatorToken);
16
- }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtaW5kaWNhdG9yLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctcHJpbWl0aXZlcy9jaGVja2JveC9zcmMvY2hlY2tib3gtaW5kaWNhdG9yL2NoZWNrYm94LWluZGljYXRvci50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2RCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLGNBQWMsQ0FDekQsMkJBQTJCLENBQzVCLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsdUJBQXVCO0lBQ3JDLE9BQU8sTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIDIwMjQgQW5ndWxhciBQcmltaXRpdmVzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25nLXByaW1pdGl2ZXMvbmctcHJpbWl0aXZlc1xuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIENDIEJZLU5EIDQuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IE5ncENoZWNrYm94SW5kaWNhdG9yIH0gZnJvbSAnLi9jaGVja2JveC1pbmRpY2F0b3IuZGlyZWN0aXZlJztcblxuZXhwb3J0IGNvbnN0IE5ncENoZWNrYm94SW5kaWNhdG9yVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48TmdwQ2hlY2tib3hJbmRpY2F0b3I+KFxuICAnTmdwQ2hlY2tib3hJbmRpY2F0b3JUb2tlbicsXG4pO1xuXG4vKipcbiAqIEluamVjdCB0aGUgQ2hlY2tib3hJbmRpY2F0b3IgZGlyZWN0aXZlIGluc3RhbmNlXG4gKiBAcmV0dXJucyBUaGUgQ2hlY2tib3hJbmRpY2F0b3IgZGlyZWN0aXZlIGluc3RhbmNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RDaGVja2JveEluZGljYXRvcigpOiBOZ3BDaGVja2JveEluZGljYXRvciB7XG4gIHJldHVybiBpbmplY3QoTmdwQ2hlY2tib3hJbmRpY2F0b3JUb2tlbik7XG59XG4iXX0=
@@ -1,40 +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 { Directive } from '@angular/core';
9
- import { NgpVisuallyHidden } from 'ng-primitives/a11y';
10
- import { injectCheckbox } from '../checkbox/checkbox.token';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "ng-primitives/a11y";
13
- export class NgpCheckboxInput {
14
- constructor() {
15
- /**
16
- * Access the checkbox instance
17
- */
18
- this.checkbox = injectCheckbox();
19
- }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpCheckboxInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
21
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: NgpCheckboxInput, isStandalone: true, selector: "input[ngpCheckboxInput]", host: { attributes: { "type": "checkbox", "tabindex": "-1" }, properties: { "attr.aria-hidden": "true", "checked": "checkbox.checked()", "disabled": "checkbox.disabled()", "required": "checkbox.required()" } }, exportAs: ["ngpCheckboxInput"], hostDirectives: [{ directive: i1.NgpVisuallyHidden }], ngImport: i0 }); }
22
- }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpCheckboxInput, decorators: [{
24
- type: Directive,
25
- args: [{
26
- standalone: true,
27
- selector: 'input[ngpCheckboxInput]',
28
- exportAs: 'ngpCheckboxInput',
29
- hostDirectives: [NgpVisuallyHidden],
30
- host: {
31
- type: 'checkbox',
32
- tabindex: '-1',
33
- '[attr.aria-hidden]': 'true',
34
- '[checked]': 'checkbox.checked()',
35
- '[disabled]': 'checkbox.disabled()',
36
- '[required]': 'checkbox.required()',
37
- },
38
- }]
39
- }] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtaW5wdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctcHJpbWl0aXZlcy9jaGVja2JveC9zcmMvY2hlY2tib3gtaW5wdXQvY2hlY2tib3gtaW5wdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFnQjVELE1BQU0sT0FBTyxnQkFBZ0I7SUFkN0I7UUFlRTs7V0FFRztRQUNnQixhQUFRLEdBQUcsY0FBYyxFQUFFLENBQUM7S0FDaEQ7OEdBTFksZ0JBQWdCO2tHQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBZDVCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLGNBQWMsRUFBRSxDQUFDLGlCQUFpQixDQUFDO29CQUNuQyxJQUFJLEVBQUU7d0JBQ0osSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLFFBQVEsRUFBRSxJQUFJO3dCQUNkLG9CQUFvQixFQUFFLE1BQU07d0JBQzVCLFdBQVcsRUFBRSxvQkFBb0I7d0JBQ2pDLFlBQVksRUFBRSxxQkFBcUI7d0JBQ25DLFlBQVksRUFBRSxxQkFBcUI7cUJBQ3BDO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgMjAyNCBBbmd1bGFyIFByaW1pdGl2ZXMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbmctcHJpbWl0aXZlcy9uZy1wcmltaXRpdmVzXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQ0MgQlktTkQgNC4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbmltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdwVmlzdWFsbHlIaWRkZW4gfSBmcm9tICduZy1wcmltaXRpdmVzL2ExMXknO1xuaW1wb3J0IHsgaW5qZWN0Q2hlY2tib3ggfSBmcm9tICcuLi9jaGVja2JveC9jaGVja2JveC50b2tlbic7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2lucHV0W25ncENoZWNrYm94SW5wdXRdJyxcbiAgZXhwb3J0QXM6ICduZ3BDaGVja2JveElucHV0JyxcbiAgaG9zdERpcmVjdGl2ZXM6IFtOZ3BWaXN1YWxseUhpZGRlbl0sXG4gIGhvc3Q6IHtcbiAgICB0eXBlOiAnY2hlY2tib3gnLFxuICAgIHRhYmluZGV4OiAnLTEnLFxuICAgICdbYXR0ci5hcmlhLWhpZGRlbl0nOiAndHJ1ZScsXG4gICAgJ1tjaGVja2VkXSc6ICdjaGVja2JveC5jaGVja2VkKCknLFxuICAgICdbZGlzYWJsZWRdJzogJ2NoZWNrYm94LmRpc2FibGVkKCknLFxuICAgICdbcmVxdWlyZWRdJzogJ2NoZWNrYm94LnJlcXVpcmVkKCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBOZ3BDaGVja2JveElucHV0IHtcbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgY2hlY2tib3ggaW5zdGFuY2VcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBjaGVja2JveCA9IGluamVjdENoZWNrYm94KCk7XG59XG4iXX0=
@@ -1,32 +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 { Directive } from '@angular/core';
9
- import { injectCheckbox } from '../checkbox/checkbox.token';
10
- import * as i0 from "@angular/core";
11
- export class NgpCheckboxLabel {
12
- constructor() {
13
- /**
14
- * Access the checkbox that the label belongs to.
15
- */
16
- this.checkbox = injectCheckbox();
17
- }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpCheckboxLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
19
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: NgpCheckboxLabel, isStandalone: true, selector: "[ngpCheckboxLabel]", host: { properties: { "attr.for": "checkbox.indicatorId()" } }, exportAs: ["ngpCheckboxLabel"], ngImport: i0 }); }
20
- }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpCheckboxLabel, decorators: [{
22
- type: Directive,
23
- args: [{
24
- standalone: true,
25
- selector: '[ngpCheckboxLabel]',
26
- exportAs: 'ngpCheckboxLabel',
27
- host: {
28
- '[attr.for]': 'checkbox.indicatorId()',
29
- },
30
- }]
31
- }] });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtbGFiZWwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctcHJpbWl0aXZlcy9jaGVja2JveC9zcmMvY2hlY2tib3gtbGFiZWwvY2hlY2tib3gtbGFiZWwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQVU1RCxNQUFNLE9BQU8sZ0JBQWdCO0lBUjdCO1FBU0U7O1dBRUc7UUFDZ0IsYUFBUSxHQUFHLGNBQWMsRUFBRSxDQUFDO0tBQ2hEOzhHQUxZLGdCQUFnQjtrR0FBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQVI1QixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixJQUFJLEVBQUU7d0JBQ0osWUFBWSxFQUFFLHdCQUF3QjtxQkFDdkM7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCDCqSAyMDI0IEFuZ3VsYXIgUHJpbWl0aXZlcy5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wcmltaXRpdmVzL25nLXByaW1pdGl2ZXNcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBDQyBCWS1ORCA0LjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RDaGVja2JveCB9IGZyb20gJy4uL2NoZWNrYm94L2NoZWNrYm94LnRva2VuJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW25ncENoZWNrYm94TGFiZWxdJyxcbiAgZXhwb3J0QXM6ICduZ3BDaGVja2JveExhYmVsJyxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5mb3JdJzogJ2NoZWNrYm94LmluZGljYXRvcklkKCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBOZ3BDaGVja2JveExhYmVsIHtcbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgY2hlY2tib3ggdGhhdCB0aGUgbGFiZWwgYmVsb25ncyB0by5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBjaGVja2JveCA9IGluamVjdENoZWNrYm94KCk7XG59XG4iXX0=
@@ -1,84 +0,0 @@
1
- import { Directive, ElementRef, inject, input } from '@angular/core';
2
- import { FocusManager, injectDisposables, uniqueId } from 'ng-primitives/utils';
3
- import { injectSelect } from '../select/select.token';
4
- import { NgpSelectButtonToken } from './select-button.token';
5
- import * as i0 from "@angular/core";
6
- export class NgpSelectButton {
7
- constructor() {
8
- /**
9
- * Access the parent select component.
10
- */
11
- this.select = injectSelect();
12
- /**
13
- * Access the disposable helpers.
14
- */
15
- this.disposables = injectDisposables();
16
- /**
17
- * Access the element reference.
18
- * @internal
19
- */
20
- this.element = inject(ElementRef);
21
- /**
22
- * Access the focus manager
23
- */
24
- this.focusManager = inject(FocusManager);
25
- /**
26
- * Optionally define an id for the button. By default, the id is generated.
27
- */
28
- this.id = input(uniqueId('select-button'));
29
- }
30
- /**
31
- * Toggle the select open state.
32
- */
33
- toggle() {
34
- this.select.open.update(open => !open);
35
- }
36
- /**
37
- * Handle keyboard events. If the list is closed, open it when the user presses the arrow keys.
38
- * If the list is open then we navigate using active descendant.
39
- * @param event
40
- */
41
- keydown(event) {
42
- if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
43
- this.select.open.set(true);
44
- // stop the event from triggering scrolling on the dropdown
45
- event.preventDefault();
46
- }
47
- // if the escape key is pressed, close the dropdown
48
- if (event.key === 'Escape') {
49
- this.select.open.set(false);
50
- }
51
- }
52
- /**
53
- * Focus the button element.
54
- * @param origin
55
- * @internal
56
- */
57
- focus(origin) {
58
- // we run after the next tick to ensure any in-progress events do not get
59
- // redirected to the button element
60
- this.disposables.requestAnimationFrame(() => this.focusManager.focus(this.element, origin));
61
- }
62
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSelectButton, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
63
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.2", type: NgpSelectButton, isStandalone: true, selector: "button[ngpSelectButton]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "button", "aria-haspopup": "listbox" }, listeners: { "click": "toggle()", "keydown": "keydown($event)" }, properties: { "attr.id": "id()", "attr.aria-expanded": "select.open()", "attr.aria-controls": "select.open() ? select.options()?.id() : null", "attr.data-state": "select.open() ? \"open\" : \"closed\"" } }, providers: [{ provide: NgpSelectButtonToken, useExisting: NgpSelectButton }], exportAs: ["ngpSelectButton"], ngImport: i0 }); }
64
- }
65
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSelectButton, decorators: [{
66
- type: Directive,
67
- args: [{
68
- standalone: true,
69
- selector: 'button[ngpSelectButton]',
70
- exportAs: 'ngpSelectButton',
71
- providers: [{ provide: NgpSelectButtonToken, useExisting: NgpSelectButton }],
72
- host: {
73
- type: 'button',
74
- 'aria-haspopup': 'listbox',
75
- '[attr.id]': 'id()',
76
- '[attr.aria-expanded]': 'select.open()',
77
- '[attr.aria-controls]': 'select.open() ? select.options()?.id() : null',
78
- '[attr.data-state]': 'select.open() ? "open" : "closed"',
79
- '(click)': 'toggle()',
80
- '(keydown)': 'keydown($event)',
81
- },
82
- }]
83
- }] });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWJ1dHRvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL3NlbGVjdC9zcmMvc2VsZWN0LWJ1dHRvbi9zZWxlY3QtYnV0dG9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQWtCN0QsTUFBTSxPQUFPLGVBQWU7SUFoQjVCO1FBaUJFOztXQUVHO1FBQ2dCLFdBQU0sR0FBRyxZQUFZLEVBQVcsQ0FBQztRQUVwRDs7V0FFRztRQUNjLGdCQUFXLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztRQUVuRDs7O1dBR0c7UUFDTSxZQUFPLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQUUvRDs7V0FFRztRQUNjLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXJEOztXQUVHO1FBQ00sT0FBRSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztLQXFDaEQ7SUFuQ0M7O09BRUc7SUFDTyxNQUFNO1FBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLE9BQU8sQ0FBQyxLQUFvQjtRQUNwQyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssV0FBVyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLDJEQUEyRDtZQUMzRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDekIsQ0FBQztRQUVELG1EQUFtRDtRQUNuRCxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxNQUFvQjtRQUN4Qix5RUFBeUU7UUFDekUsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7OEdBN0RVLGVBQWU7a0dBQWYsZUFBZSx3aEJBWmYsQ0FBQyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLENBQUM7OzJGQVlqRSxlQUFlO2tCQWhCM0IsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxpQkFBaUIsRUFBRSxDQUFDO29CQUM1RSxJQUFJLEVBQUU7d0JBQ0osSUFBSSxFQUFFLFFBQVE7d0JBQ2QsZUFBZSxFQUFFLFNBQVM7d0JBQzFCLFdBQVcsRUFBRSxNQUFNO3dCQUNuQixzQkFBc0IsRUFBRSxlQUFlO3dCQUN2QyxzQkFBc0IsRUFBRSwrQ0FBK0M7d0JBQ3ZFLG1CQUFtQixFQUFFLG1DQUFtQzt3QkFDeEQsU0FBUyxFQUFFLFVBQVU7d0JBQ3JCLFdBQVcsRUFBRSxpQkFBaUI7cUJBQy9CO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgMjAyNCBBbmd1bGFyIFByaW1pdGl2ZXMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbmctcHJpbWl0aXZlcy9uZy1wcmltaXRpdmVzXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQ0MgQlktTkQgNC4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbmltcG9ydCB7IEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb2N1c01hbmFnZXIsIGluamVjdERpc3Bvc2FibGVzLCB1bmlxdWVJZCB9IGZyb20gJ25nLXByaW1pdGl2ZXMvdXRpbHMnO1xuaW1wb3J0IHsgaW5qZWN0U2VsZWN0IH0gZnJvbSAnLi4vc2VsZWN0L3NlbGVjdC50b2tlbic7XG5pbXBvcnQgeyBOZ3BTZWxlY3RCdXR0b25Ub2tlbiB9IGZyb20gJy4vc2VsZWN0LWJ1dHRvbi50b2tlbic7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2J1dHRvbltuZ3BTZWxlY3RCdXR0b25dJyxcbiAgZXhwb3J0QXM6ICduZ3BTZWxlY3RCdXR0b24nLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5ncFNlbGVjdEJ1dHRvblRva2VuLCB1c2VFeGlzdGluZzogTmdwU2VsZWN0QnV0dG9uIH1dLFxuICBob3N0OiB7XG4gICAgdHlwZTogJ2J1dHRvbicsXG4gICAgJ2FyaWEtaGFzcG9wdXAnOiAnbGlzdGJveCcsXG4gICAgJ1thdHRyLmlkXSc6ICdpZCgpJyxcbiAgICAnW2F0dHIuYXJpYS1leHBhbmRlZF0nOiAnc2VsZWN0Lm9wZW4oKScsXG4gICAgJ1thdHRyLmFyaWEtY29udHJvbHNdJzogJ3NlbGVjdC5vcGVuKCkgPyBzZWxlY3Qub3B0aW9ucygpPy5pZCgpIDogbnVsbCcsXG4gICAgJ1thdHRyLmRhdGEtc3RhdGVdJzogJ3NlbGVjdC5vcGVuKCkgPyBcIm9wZW5cIiA6IFwiY2xvc2VkXCInLFxuICAgICcoY2xpY2spJzogJ3RvZ2dsZSgpJyxcbiAgICAnKGtleWRvd24pJzogJ2tleWRvd24oJGV2ZW50KScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIE5ncFNlbGVjdEJ1dHRvbiB7XG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIHBhcmVudCBzZWxlY3QgY29tcG9uZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlbGVjdCA9IGluamVjdFNlbGVjdDx1bmtub3duPigpO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIGRpc3Bvc2FibGUgaGVscGVycy5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZGlzcG9zYWJsZXMgPSBpbmplY3REaXNwb3NhYmxlcygpO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIGVsZW1lbnQgcmVmZXJlbmNlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIGZvY3VzIG1hbmFnZXJcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZm9jdXNNYW5hZ2VyID0gaW5qZWN0KEZvY3VzTWFuYWdlcik7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsbHkgZGVmaW5lIGFuIGlkIGZvciB0aGUgYnV0dG9uLiBCeSBkZWZhdWx0LCB0aGUgaWQgaXMgZ2VuZXJhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgaWQgPSBpbnB1dCh1bmlxdWVJZCgnc2VsZWN0LWJ1dHRvbicpKTtcblxuICAvKipcbiAgICogVG9nZ2xlIHRoZSBzZWxlY3Qgb3BlbiBzdGF0ZS5cbiAgICovXG4gIHByb3RlY3RlZCB0b2dnbGUoKSB7XG4gICAgdGhpcy5zZWxlY3Qub3Blbi51cGRhdGUob3BlbiA9PiAhb3Blbik7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGtleWJvYXJkIGV2ZW50cy4gSWYgdGhlIGxpc3QgaXMgY2xvc2VkLCBvcGVuIGl0IHdoZW4gdGhlIHVzZXIgcHJlc3NlcyB0aGUgYXJyb3cga2V5cy5cbiAgICogSWYgdGhlIGxpc3QgaXMgb3BlbiB0aGVuIHdlIG5hdmlnYXRlIHVzaW5nIGFjdGl2ZSBkZXNjZW5kYW50LlxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICovXG4gIHByb3RlY3RlZCBrZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICAgIHRoaXMuc2VsZWN0Lm9wZW4uc2V0KHRydWUpO1xuICAgICAgLy8gc3RvcCB0aGUgZXZlbnQgZnJvbSB0cmlnZ2VyaW5nIHNjcm9sbGluZyBvbiB0aGUgZHJvcGRvd25cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIGVzY2FwZSBrZXkgaXMgcHJlc3NlZCwgY2xvc2UgdGhlIGRyb3Bkb3duXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIHRoaXMuc2VsZWN0Lm9wZW4uc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRm9jdXMgdGhlIGJ1dHRvbiBlbGVtZW50LlxuICAgKiBAcGFyYW0gb3JpZ2luXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZm9jdXMob3JpZ2luPzogRm9jdXNPcmlnaW4pIHtcbiAgICAvLyB3ZSBydW4gYWZ0ZXIgdGhlIG5leHQgdGljayB0byBlbnN1cmUgYW55IGluLXByb2dyZXNzIGV2ZW50cyBkbyBub3QgZ2V0XG4gICAgLy8gcmVkaXJlY3RlZCB0byB0aGUgYnV0dG9uIGVsZW1lbnRcbiAgICB0aGlzLmRpc3Bvc2FibGVzLnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB0aGlzLmZvY3VzTWFuYWdlci5mb2N1cyh0aGlzLmVsZW1lbnQsIG9yaWdpbikpO1xuICB9XG59XG4iXX0=
@@ -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 NgpSelectButtonToken = new InjectionToken('NgpSelectButtonToken');
10
- /**
11
- * Inject the SelectButton directive instance
12
- */
13
- export function injectSelectButton() {
14
- return inject(NgpSelectButtonToken);
15
- }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWJ1dHRvbi50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXByaW1pdGl2ZXMvc2VsZWN0L3NyYy9zZWxlY3QtYnV0dG9uL3NlbGVjdC1idXR0b24udG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQWtCLHNCQUFzQixDQUFDLENBQUM7QUFFaEc7O0dBRUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCO0lBQ2hDLE9BQU8sTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIDIwMjQgQW5ndWxhciBQcmltaXRpdmVzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25nLXByaW1pdGl2ZXMvbmctcHJpbWl0aXZlc1xuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIENDIEJZLU5EIDQuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IE5ncFNlbGVjdEJ1dHRvbiB9IGZyb20gJy4vc2VsZWN0LWJ1dHRvbi5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY29uc3QgTmdwU2VsZWN0QnV0dG9uVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48TmdwU2VsZWN0QnV0dG9uPignTmdwU2VsZWN0QnV0dG9uVG9rZW4nKTtcblxuLyoqXG4gKiBJbmplY3QgdGhlIFNlbGVjdEJ1dHRvbiBkaXJlY3RpdmUgaW5zdGFuY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFNlbGVjdEJ1dHRvbigpOiBOZ3BTZWxlY3RCdXR0b24ge1xuICByZXR1cm4gaW5qZWN0KE5ncFNlbGVjdEJ1dHRvblRva2VuKTtcbn1cbiJdfQ==
@@ -1,90 +0,0 @@
1
- import { Directive, ElementRef, booleanAttribute, computed, inject, input, signal, } from '@angular/core';
2
- import { uniqueId } from 'ng-primitives/utils';
3
- import { injectSelect } from '../select/select.token';
4
- import { NgpSelectOptionToken } from './select-option.token';
5
- import * as i0 from "@angular/core";
6
- export class NgpSelectOption {
7
- constructor() {
8
- /**
9
- * Access the parent select component.
10
- */
11
- this.select = injectSelect();
12
- /**
13
- * Access the element reference.
14
- */
15
- this.element = inject((ElementRef));
16
- /**
17
- * Optionally define an id for the option. By default, the id is generated.
18
- */
19
- this.id = input(uniqueId('select-option'));
20
- /**
21
- * The value of the option.
22
- */
23
- this.value = input.required({
24
- alias: 'ngpSelectOptionValue',
25
- });
26
- /**
27
- * Whether the option is disabled.
28
- */
29
- this.isDisabled = input(false, {
30
- alias: 'ngpSelectOptionDisabled',
31
- transform: booleanAttribute,
32
- });
33
- /**
34
- * Whether the option is the active descendant.
35
- */
36
- this.active = signal(false);
37
- /**
38
- * Determine if the option is selected.
39
- */
40
- this.selected = computed(() => this.select.value() === this.value());
41
- }
42
- /**
43
- * Set the active styles for the option.
44
- * @internal
45
- */
46
- setActiveStyles() {
47
- this.active.set(true);
48
- // scroll the option into view if needed
49
- this.element.nativeElement.scrollIntoView({ block: 'nearest' });
50
- }
51
- /**
52
- * Set the inactive styles for the option.
53
- * @internal
54
- */
55
- setInactiveStyles() {
56
- this.active.set(false);
57
- }
58
- /**
59
- * Handle the click event on the option.
60
- */
61
- selectOption() {
62
- if (!this.isDisabled()) {
63
- this.select.value.update(() => this.value());
64
- // close the dropdown after selecting an option
65
- this.select.open.set(false);
66
- }
67
- }
68
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSelectOption, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
69
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.2", type: NgpSelectOption, isStandalone: true, selector: "[ngpSelectOption]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "ngpSelectOptionValue", isSignal: true, isRequired: true, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "ngpSelectOptionDisabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "option" }, listeners: { "click": "selectOption()" }, properties: { "attr.id": "id()", "attr.aria-selected": "selected()", "attr.aria-disabled": "isDisabled()", "attr.data-state": "selected() ? \"selected\" : \"unselected\"", "attr.data-active": "active() ? \"\" : null", "attr.data-disabled": "isDisabled()" } }, providers: [{ provide: NgpSelectOptionToken, useExisting: NgpSelectOption }], exportAs: ["ngpSelectOption"], ngImport: i0 }); }
70
- }
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSelectOption, decorators: [{
72
- type: Directive,
73
- args: [{
74
- standalone: true,
75
- selector: '[ngpSelectOption]',
76
- exportAs: 'ngpSelectOption',
77
- providers: [{ provide: NgpSelectOptionToken, useExisting: NgpSelectOption }],
78
- host: {
79
- role: 'option',
80
- '[attr.id]': 'id()',
81
- '[attr.aria-selected]': 'selected()',
82
- '[attr.aria-disabled]': 'isDisabled()',
83
- '[attr.data-state]': 'selected() ? "selected" : "unselected"',
84
- '[attr.data-active]': 'active() ? "" : null',
85
- '[attr.data-disabled]': 'isDisabled()',
86
- '(click)': 'selectOption()',
87
- },
88
- }]
89
- }] });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9wdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL3NlbGVjdC9zcmMvc2VsZWN0LW9wdGlvbi9zZWxlY3Qtb3B0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBa0I3RCxNQUFNLE9BQU8sZUFBZTtJQWhCNUI7UUFpQkU7O1dBRUc7UUFDZ0IsV0FBTSxHQUFHLFlBQVksRUFBSyxDQUFDO1FBRTlDOztXQUVHO1FBQ2dCLFlBQU8sR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUF1QixDQUFBLENBQUMsQ0FBQztRQUU3RDs7V0FFRztRQUNNLE9BQUUsR0FBRyxLQUFLLENBQVMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFFdkQ7O1dBRUc7UUFDTSxVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBSTtZQUNqQyxLQUFLLEVBQUUsc0JBQXNCO1NBQzlCLENBQUMsQ0FBQztRQUVIOztXQUVHO1FBQ00sZUFBVSxHQUFHLEtBQUssQ0FBd0IsS0FBSyxFQUFFO1lBQ3hELEtBQUssRUFBRSx5QkFBeUI7WUFDaEMsU0FBUyxFQUFFLGdCQUFnQjtTQUM1QixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNnQixXQUFNLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRW5EOztXQUVHO1FBQ2dCLGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztLQStCcEY7SUE3QkM7OztPQUdHO0lBQ0gsZUFBZTtRQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXRCLHdDQUF3QztRQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ08sWUFBWTtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLCtDQUErQztZQUMvQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7OEdBckVVLGVBQWU7a0dBQWYsZUFBZSw2eUJBWmYsQ0FBQyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLENBQUM7OzJGQVlqRSxlQUFlO2tCQWhCM0IsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxpQkFBaUIsRUFBRSxDQUFDO29CQUM1RSxJQUFJLEVBQUU7d0JBQ0osSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLE1BQU07d0JBQ25CLHNCQUFzQixFQUFFLFlBQVk7d0JBQ3BDLHNCQUFzQixFQUFFLGNBQWM7d0JBQ3RDLG1CQUFtQixFQUFFLHdDQUF3Qzt3QkFDN0Qsb0JBQW9CLEVBQUUsc0JBQXNCO3dCQUM1QyxzQkFBc0IsRUFBRSxjQUFjO3dCQUN0QyxTQUFTLEVBQUUsZ0JBQWdCO3FCQUM1QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIDIwMjQgQW5ndWxhciBQcmltaXRpdmVzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25nLXByaW1pdGl2ZXMvbmctcHJpbWl0aXZlc1xuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIENDIEJZLU5EIDQuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgeyBIaWdobGlnaHRhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB1bmlxdWVJZCB9IGZyb20gJ25nLXByaW1pdGl2ZXMvdXRpbHMnO1xuaW1wb3J0IHsgaW5qZWN0U2VsZWN0IH0gZnJvbSAnLi4vc2VsZWN0L3NlbGVjdC50b2tlbic7XG5pbXBvcnQgeyBOZ3BTZWxlY3RPcHRpb25Ub2tlbiB9IGZyb20gJy4vc2VsZWN0LW9wdGlvbi50b2tlbic7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tuZ3BTZWxlY3RPcHRpb25dJyxcbiAgZXhwb3J0QXM6ICduZ3BTZWxlY3RPcHRpb24nLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5ncFNlbGVjdE9wdGlvblRva2VuLCB1c2VFeGlzdGluZzogTmdwU2VsZWN0T3B0aW9uIH1dLFxuICBob3N0OiB7XG4gICAgcm9sZTogJ29wdGlvbicsXG4gICAgJ1thdHRyLmlkXSc6ICdpZCgpJyxcbiAgICAnW2F0dHIuYXJpYS1zZWxlY3RlZF0nOiAnc2VsZWN0ZWQoKScsXG4gICAgJ1thdHRyLmFyaWEtZGlzYWJsZWRdJzogJ2lzRGlzYWJsZWQoKScsXG4gICAgJ1thdHRyLmRhdGEtc3RhdGVdJzogJ3NlbGVjdGVkKCkgPyBcInNlbGVjdGVkXCIgOiBcInVuc2VsZWN0ZWRcIicsXG4gICAgJ1thdHRyLmRhdGEtYWN0aXZlXSc6ICdhY3RpdmUoKSA/IFwiXCIgOiBudWxsJyxcbiAgICAnW2F0dHIuZGF0YS1kaXNhYmxlZF0nOiAnaXNEaXNhYmxlZCgpJyxcbiAgICAnKGNsaWNrKSc6ICdzZWxlY3RPcHRpb24oKScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIE5ncFNlbGVjdE9wdGlvbjxUPiBpbXBsZW1lbnRzIEhpZ2hsaWdodGFibGUge1xuICAvKipcbiAgICogQWNjZXNzIHRoZSBwYXJlbnQgc2VsZWN0IGNvbXBvbmVudC5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3QgPSBpbmplY3RTZWxlY3Q8VD4oKTtcblxuICAvKipcbiAgICogQWNjZXNzIHRoZSBlbGVtZW50IHJlZmVyZW5jZS5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcblxuICAvKipcbiAgICogT3B0aW9uYWxseSBkZWZpbmUgYW4gaWQgZm9yIHRoZSBvcHRpb24uIEJ5IGRlZmF1bHQsIHRoZSBpZCBpcyBnZW5lcmF0ZWQuXG4gICAqL1xuICByZWFkb25seSBpZCA9IGlucHV0PHN0cmluZz4odW5pcXVlSWQoJ3NlbGVjdC1vcHRpb24nKSk7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgb3B0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWUgPSBpbnB1dC5yZXF1aXJlZDxUPih7XG4gICAgYWxpYXM6ICduZ3BTZWxlY3RPcHRpb25WYWx1ZScsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBvcHRpb24gaXMgZGlzYWJsZWQuXG4gICAqL1xuICByZWFkb25seSBpc0Rpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0PihmYWxzZSwge1xuICAgIGFsaWFzOiAnbmdwU2VsZWN0T3B0aW9uRGlzYWJsZWQnLFxuICAgIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIG9wdGlvbiBpcyB0aGUgYWN0aXZlIGRlc2NlbmRhbnQuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWN0aXZlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lIGlmIHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlbGVjdC52YWx1ZSgpID09PSB0aGlzLnZhbHVlKCkpO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGFjdGl2ZSBzdHlsZXMgZm9yIHRoZSBvcHRpb24uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgc2V0QWN0aXZlU3R5bGVzKCk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlLnNldCh0cnVlKTtcblxuICAgIC8vIHNjcm9sbCB0aGUgb3B0aW9uIGludG8gdmlldyBpZiBuZWVkZWRcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBpbmFjdGl2ZSBzdHlsZXMgZm9yIHRoZSBvcHRpb24uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgc2V0SW5hY3RpdmVTdHlsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmUuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIGNsaWNrIGV2ZW50IG9uIHRoZSBvcHRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0T3B0aW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0Rpc2FibGVkKCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0LnZhbHVlLnVwZGF0ZSgoKSA9PiB0aGlzLnZhbHVlKCkpO1xuICAgICAgLy8gY2xvc2UgdGhlIGRyb3Bkb3duIGFmdGVyIHNlbGVjdGluZyBhbiBvcHRpb25cbiAgICAgIHRoaXMuc2VsZWN0Lm9wZW4uc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -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 NgpSelectOptionToken = new InjectionToken('NgpSelectOptionToken');
10
- /**
11
- * Inject the SelectOption directive instance
12
- */
13
- export function injectSelectOption() {
14
- return inject(NgpSelectOptionToken);
15
- }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9wdGlvbi50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXByaW1pdGl2ZXMvc2VsZWN0L3NyYy9zZWxlY3Qtb3B0aW9uL3NlbGVjdC1vcHRpb24udG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQ3BELHNCQUFzQixDQUN2QixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCO0lBQ2hDLE9BQU8sTUFBTSxDQUFxQixvQkFBb0IsQ0FBQyxDQUFDO0FBQzFELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCDCqSAyMDI0IEFuZ3VsYXIgUHJpbWl0aXZlcy5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wcmltaXRpdmVzL25nLXByaW1pdGl2ZXNcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBDQyBCWS1ORCA0LjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBOZ3BTZWxlY3RPcHRpb24gfSBmcm9tICcuL3NlbGVjdC1vcHRpb24uZGlyZWN0aXZlJztcblxuZXhwb3J0IGNvbnN0IE5ncFNlbGVjdE9wdGlvblRva2VuID0gbmV3IEluamVjdGlvblRva2VuPE5ncFNlbGVjdE9wdGlvbjx1bmtub3duPj4oXG4gICdOZ3BTZWxlY3RPcHRpb25Ub2tlbicsXG4pO1xuXG4vKipcbiAqIEluamVjdCB0aGUgU2VsZWN0T3B0aW9uIGRpcmVjdGl2ZSBpbnN0YW5jZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0U2VsZWN0T3B0aW9uPFQ+KCk6IE5ncFNlbGVjdE9wdGlvbjxUPiB7XG4gIHJldHVybiBpbmplY3Q8TmdwU2VsZWN0T3B0aW9uPFQ+PihOZ3BTZWxlY3RPcHRpb25Ub2tlbik7XG59XG4iXX0=