@angular/cdk-experimental 21.0.0-next.0 → 21.0.0-next.10

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 (73) hide show
  1. package/fesm2022/{polyfill.mjs → _polyfill-chunk.mjs} +1 -1
  2. package/fesm2022/_polyfill-chunk.mjs.map +1 -0
  3. package/fesm2022/cdk-experimental.mjs +1 -1
  4. package/fesm2022/cdk-experimental.mjs.map +1 -1
  5. package/fesm2022/column-resize.mjs +54 -54
  6. package/fesm2022/column-resize.mjs.map +1 -1
  7. package/fesm2022/popover-edit.mjs +44 -44
  8. package/fesm2022/popover-edit.mjs.map +1 -1
  9. package/fesm2022/scrolling.mjs +7 -7
  10. package/fesm2022/scrolling.mjs.map +1 -1
  11. package/fesm2022/selection.mjs +19 -19
  12. package/fesm2022/selection.mjs.map +1 -1
  13. package/fesm2022/table-scroll-container.mjs +7 -7
  14. package/fesm2022/table-scroll-container.mjs.map +1 -1
  15. package/package.json +10 -45
  16. package/{column-resize/index.d.ts → types/column-resize.d.ts} +37 -37
  17. package/{popover-edit/index.d.ts → types/popover-edit.d.ts} +30 -30
  18. package/{scrolling/index.d.ts → types/scrolling.d.ts} +6 -6
  19. package/{selection/index.d.ts → types/selection.d.ts} +14 -14
  20. package/{table-scroll-container/index.d.ts → types/table-scroll-container.d.ts} +6 -6
  21. package/accordion/index.d.ts +0 -92
  22. package/accordion.d.d.ts +0 -89
  23. package/combobox/index.d.ts +0 -94
  24. package/deferred-content/index.d.ts +0 -37
  25. package/expansion.d.d.ts +0 -71
  26. package/fesm2022/accordion.mjs +0 -192
  27. package/fesm2022/accordion.mjs.map +0 -1
  28. package/fesm2022/accordion2.mjs +0 -152
  29. package/fesm2022/accordion2.mjs.map +0 -1
  30. package/fesm2022/combobox.mjs +0 -340
  31. package/fesm2022/combobox.mjs.map +0 -1
  32. package/fesm2022/deferred-content.mjs +0 -60
  33. package/fesm2022/deferred-content.mjs.map +0 -1
  34. package/fesm2022/expansion.mjs +0 -87
  35. package/fesm2022/expansion.mjs.map +0 -1
  36. package/fesm2022/list-navigation.mjs +0 -263
  37. package/fesm2022/list-navigation.mjs.map +0 -1
  38. package/fesm2022/list.mjs +0 -355
  39. package/fesm2022/list.mjs.map +0 -1
  40. package/fesm2022/listbox.mjs +0 -160
  41. package/fesm2022/listbox.mjs.map +0 -1
  42. package/fesm2022/option.mjs +0 -231
  43. package/fesm2022/option.mjs.map +0 -1
  44. package/fesm2022/polyfill.mjs.map +0 -1
  45. package/fesm2022/radio-group.mjs +0 -202
  46. package/fesm2022/radio-group.mjs.map +0 -1
  47. package/fesm2022/radio-group2.mjs +0 -143
  48. package/fesm2022/radio-group2.mjs.map +0 -1
  49. package/fesm2022/tabs.mjs +0 -299
  50. package/fesm2022/tabs.mjs.map +0 -1
  51. package/fesm2022/tabs2.mjs +0 -211
  52. package/fesm2022/tabs2.mjs.map +0 -1
  53. package/fesm2022/toolbar.mjs +0 -168
  54. package/fesm2022/toolbar.mjs.map +0 -1
  55. package/fesm2022/toolbar2.mjs +0 -224
  56. package/fesm2022/toolbar2.mjs.map +0 -1
  57. package/fesm2022/tree.mjs +0 -631
  58. package/fesm2022/tree.mjs.map +0 -1
  59. package/fesm2022/ui-patterns.mjs +0 -21
  60. package/fesm2022/ui-patterns.mjs.map +0 -1
  61. package/list.d.d.ts +0 -207
  62. package/listbox/index.d.ts +0 -87
  63. package/listbox.d.d.ts +0 -101
  64. package/pointer-event-manager.d.d.ts +0 -189
  65. package/radio-group/index.d.ts +0 -85
  66. package/radio-group.d.d.ts +0 -80
  67. package/tabs/index.d.ts +0 -157
  68. package/tabs.d.d.ts +0 -137
  69. package/toolbar/index.d.ts +0 -89
  70. package/toolbar.d.d.ts +0 -136
  71. package/tree/index.d.ts +0 -273
  72. package/ui-patterns/index.d.ts +0 -9
  73. /package/{index.d.ts → types/cdk-experimental.d.ts} +0 -0
@@ -1,152 +0,0 @@
1
- import { computed } from '@angular/core';
2
- import { ListExpansion, ExpansionControl } from './expansion.mjs';
3
- import { ListFocus, ListNavigation, KeyboardEventManager, PointerEventManager } from './list-navigation.mjs';
4
-
5
- const focusMode = () => 'roving';
6
- /** A pattern controls the nested Accordions. */
7
- class AccordionGroupPattern {
8
- inputs;
9
- /** Controls navigation for the group. */
10
- navigation;
11
- /** Controls focus for the group. */
12
- focusManager;
13
- /** Controls expansion for the group. */
14
- expansionManager;
15
- constructor(inputs) {
16
- this.inputs = inputs;
17
- this.wrap = inputs.wrap;
18
- this.orientation = inputs.orientation;
19
- this.textDirection = inputs.textDirection;
20
- this.activeItem = inputs.activeItem;
21
- this.disabled = inputs.disabled;
22
- this.multiExpandable = inputs.multiExpandable;
23
- this.items = inputs.items;
24
- this.expandedIds = inputs.expandedIds;
25
- this.skipDisabled = inputs.skipDisabled;
26
- this.focusManager = new ListFocus({
27
- ...inputs,
28
- focusMode,
29
- });
30
- this.navigation = new ListNavigation({
31
- ...inputs,
32
- focusMode,
33
- focusManager: this.focusManager,
34
- });
35
- this.expansionManager = new ListExpansion({
36
- ...inputs,
37
- });
38
- }
39
- }
40
- /** A pattern controls the expansion state of an accordion. */
41
- class AccordionTriggerPattern {
42
- inputs;
43
- /** Whether this tab has expandable content. */
44
- expandable;
45
- /** The unique identifier used by the expansion behavior. */
46
- expansionId;
47
- /** Whether an accordion is expanded. */
48
- expanded;
49
- /** Controls the expansion state for the trigger. */
50
- expansionControl;
51
- /** Whether the trigger is active. */
52
- active = computed(() => this.inputs.accordionGroup().activeItem() === this);
53
- /** Id of the accordion panel controlled by the trigger. */
54
- controls = computed(() => this.inputs.accordionPanel()?.id());
55
- /** The tabindex of the trigger. */
56
- tabindex = computed(() => (this.inputs.accordionGroup().focusManager.isFocusable(this) ? 0 : -1));
57
- /** Whether the trigger is disabled. Disabling an accordion group disables all the triggers. */
58
- disabled = computed(() => this.inputs.disabled() || this.inputs.accordionGroup().disabled());
59
- /** The index of the trigger within its accordion group. */
60
- index = computed(() => this.inputs.accordionGroup().items().indexOf(this));
61
- constructor(inputs) {
62
- this.inputs = inputs;
63
- this.id = inputs.id;
64
- this.element = inputs.element;
65
- this.value = inputs.value;
66
- this.accordionGroup = inputs.accordionGroup;
67
- this.accordionPanel = inputs.accordionPanel;
68
- this.expansionControl = new ExpansionControl({
69
- ...inputs,
70
- expansionId: inputs.value,
71
- expandable: () => true,
72
- expansionManager: inputs.accordionGroup().expansionManager,
73
- });
74
- this.expandable = this.expansionControl.isExpandable;
75
- this.expansionId = this.expansionControl.expansionId;
76
- this.expanded = this.expansionControl.isExpanded;
77
- }
78
- /** The key used to navigate to the previous accordion trigger. */
79
- prevKey = computed(() => {
80
- if (this.inputs.accordionGroup().orientation() === 'vertical') {
81
- return 'ArrowUp';
82
- }
83
- return this.inputs.accordionGroup().textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';
84
- });
85
- /** The key used to navigate to the next accordion trigger. */
86
- nextKey = computed(() => {
87
- if (this.inputs.accordionGroup().orientation() === 'vertical') {
88
- return 'ArrowDown';
89
- }
90
- return this.inputs.accordionGroup().textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';
91
- });
92
- /** The keydown event manager for the accordion trigger. */
93
- keydown = computed(() => {
94
- return new KeyboardEventManager()
95
- .on(this.prevKey, () => this.accordionGroup().navigation.prev())
96
- .on(this.nextKey, () => this.accordionGroup().navigation.next())
97
- .on('Home', () => this.accordionGroup().navigation.first())
98
- .on('End', () => this.accordionGroup().navigation.last())
99
- .on(' ', () => this.expansionControl.toggle())
100
- .on('Enter', () => this.expansionControl.toggle());
101
- });
102
- /** The pointerdown event manager for the accordion trigger. */
103
- pointerdown = computed(() => {
104
- return new PointerEventManager().on(e => {
105
- const item = this._getItem(e);
106
- if (item) {
107
- this.accordionGroup().navigation.goto(item);
108
- this.expansionControl.toggle();
109
- }
110
- });
111
- });
112
- /** Handles keydown events on the trigger, delegating to the group if not disabled. */
113
- onKeydown(event) {
114
- this.keydown().handle(event);
115
- }
116
- /** Handles pointerdown events on the trigger, delegating to the group if not disabled. */
117
- onPointerdown(event) {
118
- this.pointerdown().handle(event);
119
- }
120
- /** Handles focus events on the trigger. This ensures the tabbing changes the active index. */
121
- onFocus(event) {
122
- const item = this._getItem(event);
123
- if (item && this.inputs.accordionGroup().focusManager.isFocusable(item)) {
124
- this.accordionGroup().focusManager.focus(item);
125
- }
126
- }
127
- _getItem(e) {
128
- if (!(e.target instanceof HTMLElement)) {
129
- return;
130
- }
131
- const element = e.target.closest('[role="button"]');
132
- return this.accordionGroup()
133
- .items()
134
- .find(i => i.element() === element);
135
- }
136
- }
137
- /** Represents an accordion panel. */
138
- class AccordionPanelPattern {
139
- inputs;
140
- /** Whether the accordion panel is hidden. True if the associated trigger is not expanded. */
141
- hidden;
142
- constructor(inputs) {
143
- this.inputs = inputs;
144
- this.id = inputs.id;
145
- this.value = inputs.value;
146
- this.accordionTrigger = inputs.accordionTrigger;
147
- this.hidden = computed(() => inputs.accordionTrigger()?.expanded() === false);
148
- }
149
- }
150
-
151
- export { AccordionGroupPattern, AccordionPanelPattern, AccordionTriggerPattern };
152
- //# sourceMappingURL=accordion2.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"accordion2.mjs","sources":["../../../../../k8-fastbuild-ST-c646aa77115d/bin/src/cdk-experimental/ui-patterns/accordion/accordion.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {computed} from '@angular/core';\nimport {KeyboardEventManager, PointerEventManager} from '../behaviors/event-manager';\nimport {\n ExpansionItem,\n ExpansionControl,\n ListExpansion,\n ListExpansionInputs,\n} from '../behaviors/expansion/expansion';\nimport {ListFocus, ListFocusInputs, ListFocusItem} from '../behaviors/list-focus/list-focus';\nimport {\n ListNavigation,\n ListNavigationInputs,\n ListNavigationItem,\n} from '../behaviors/list-navigation/list-navigation';\nimport {SignalLike} from '../behaviors/signal-like/signal-like';\n\n/** Inputs of the AccordionGroupPattern. */\nexport type AccordionGroupInputs = Omit<\n ListNavigationInputs<AccordionTriggerPattern> &\n ListFocusInputs<AccordionTriggerPattern> &\n Omit<ListExpansionInputs, 'items'>,\n 'focusMode'\n>;\n\nconst focusMode = () => 'roving' as const;\n\nexport interface AccordionGroupPattern extends AccordionGroupInputs {}\n/** A pattern controls the nested Accordions. */\nexport class AccordionGroupPattern {\n /** Controls navigation for the group. */\n navigation: ListNavigation<AccordionTriggerPattern>;\n\n /** Controls focus for the group. */\n focusManager: ListFocus<AccordionTriggerPattern>;\n\n /** Controls expansion for the group. */\n expansionManager: ListExpansion;\n\n constructor(readonly inputs: AccordionGroupInputs) {\n this.wrap = inputs.wrap;\n this.orientation = inputs.orientation;\n this.textDirection = inputs.textDirection;\n this.activeItem = inputs.activeItem;\n this.disabled = inputs.disabled;\n this.multiExpandable = inputs.multiExpandable;\n this.items = inputs.items;\n this.expandedIds = inputs.expandedIds;\n this.skipDisabled = inputs.skipDisabled;\n this.focusManager = new ListFocus({\n ...inputs,\n focusMode,\n });\n this.navigation = new ListNavigation({\n ...inputs,\n focusMode,\n focusManager: this.focusManager,\n });\n this.expansionManager = new ListExpansion({\n ...inputs,\n });\n }\n}\n\n/** Inputs for the AccordionTriggerPattern. */\nexport type AccordionTriggerInputs = Omit<ListNavigationItem & ListFocusItem, 'index'> &\n Omit<ExpansionItem, 'expansionId' | 'expandable'> & {\n /** A local unique identifier for the trigger. */\n value: SignalLike<string>;\n\n /** The parent accordion group that controls this trigger. */\n accordionGroup: SignalLike<AccordionGroupPattern>;\n\n /** The accordion panel controlled by this trigger. */\n accordionPanel: SignalLike<AccordionPanelPattern | undefined>;\n };\n\nexport interface AccordionTriggerPattern extends AccordionTriggerInputs {}\n/** A pattern controls the expansion state of an accordion. */\nexport class AccordionTriggerPattern {\n /** Whether this tab has expandable content. */\n expandable: SignalLike<boolean>;\n\n /** The unique identifier used by the expansion behavior. */\n expansionId: SignalLike<string>;\n\n /** Whether an accordion is expanded. */\n expanded: SignalLike<boolean>;\n\n /** Controls the expansion state for the trigger. */\n expansionControl: ExpansionControl;\n\n /** Whether the trigger is active. */\n active = computed(() => this.inputs.accordionGroup().activeItem() === this);\n\n /** Id of the accordion panel controlled by the trigger. */\n controls = computed(() => this.inputs.accordionPanel()?.id());\n\n /** The tabindex of the trigger. */\n tabindex = computed(() => (this.inputs.accordionGroup().focusManager.isFocusable(this) ? 0 : -1));\n\n /** Whether the trigger is disabled. Disabling an accordion group disables all the triggers. */\n disabled = computed(() => this.inputs.disabled() || this.inputs.accordionGroup().disabled());\n\n /** The index of the trigger within its accordion group. */\n index = computed(() => this.inputs.accordionGroup().items().indexOf(this));\n\n constructor(readonly inputs: AccordionTriggerInputs) {\n this.id = inputs.id;\n this.element = inputs.element;\n this.value = inputs.value;\n this.accordionGroup = inputs.accordionGroup;\n this.accordionPanel = inputs.accordionPanel;\n this.expansionControl = new ExpansionControl({\n ...inputs,\n expansionId: inputs.value,\n expandable: () => true,\n expansionManager: inputs.accordionGroup().expansionManager,\n });\n this.expandable = this.expansionControl.isExpandable;\n this.expansionId = this.expansionControl.expansionId;\n this.expanded = this.expansionControl.isExpanded;\n }\n\n /** The key used to navigate to the previous accordion trigger. */\n prevKey = computed(() => {\n if (this.inputs.accordionGroup().orientation() === 'vertical') {\n return 'ArrowUp';\n }\n return this.inputs.accordionGroup().textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** The key used to navigate to the next accordion trigger. */\n nextKey = computed(() => {\n if (this.inputs.accordionGroup().orientation() === 'vertical') {\n return 'ArrowDown';\n }\n return this.inputs.accordionGroup().textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The keydown event manager for the accordion trigger. */\n keydown = computed(() => {\n return new KeyboardEventManager()\n .on(this.prevKey, () => this.accordionGroup().navigation.prev())\n .on(this.nextKey, () => this.accordionGroup().navigation.next())\n .on('Home', () => this.accordionGroup().navigation.first())\n .on('End', () => this.accordionGroup().navigation.last())\n .on(' ', () => this.expansionControl.toggle())\n .on('Enter', () => this.expansionControl.toggle());\n });\n\n /** The pointerdown event manager for the accordion trigger. */\n pointerdown = computed(() => {\n return new PointerEventManager().on(e => {\n const item = this._getItem(e);\n\n if (item) {\n this.accordionGroup().navigation.goto(item);\n this.expansionControl.toggle();\n }\n });\n });\n\n /** Handles keydown events on the trigger, delegating to the group if not disabled. */\n onKeydown(event: KeyboardEvent): void {\n this.keydown().handle(event);\n }\n\n /** Handles pointerdown events on the trigger, delegating to the group if not disabled. */\n onPointerdown(event: PointerEvent): void {\n this.pointerdown().handle(event);\n }\n\n /** Handles focus events on the trigger. This ensures the tabbing changes the active index. */\n onFocus(event: FocusEvent): void {\n const item = this._getItem(event);\n\n if (item && this.inputs.accordionGroup().focusManager.isFocusable(item)) {\n this.accordionGroup().focusManager.focus(item);\n }\n }\n\n private _getItem(e: Event) {\n if (!(e.target instanceof HTMLElement)) {\n return;\n }\n\n const element = e.target.closest('[role=\"button\"]');\n return this.accordionGroup()\n .items()\n .find(i => i.element() === element);\n }\n}\n\n/** Represents the required inputs for the AccordionPanelPattern. */\nexport interface AccordionPanelInputs {\n /** A global unique identifier for the panel. */\n id: SignalLike<string>;\n\n /** A local unique identifier for the panel, matching its trigger's value. */\n value: SignalLike<string>;\n\n /** The parent accordion trigger that controls this panel. */\n accordionTrigger: SignalLike<AccordionTriggerPattern | undefined>;\n}\n\nexport interface AccordionPanelPattern extends AccordionPanelInputs {}\n/** Represents an accordion panel. */\nexport class AccordionPanelPattern {\n /** Whether the accordion panel is hidden. True if the associated trigger is not expanded. */\n hidden: SignalLike<boolean>;\n\n constructor(readonly inputs: AccordionPanelInputs) {\n this.id = inputs.id;\n this.value = inputs.value;\n this.accordionTrigger = inputs.accordionTrigger;\n this.hidden = computed(() => inputs.accordionTrigger()?.expanded() === false);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,340 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, HOST_TAG_NAME, ElementRef, ViewContainerRef, Injector, DOCUMENT, ChangeDetectorRef, EventEmitter, Directive, Input, Output, NgModule } from '@angular/core';
3
- import { createOverlayRef, OverlayConfig, createBlockScrollStrategy, createFlexibleConnectedPositionStrategy, OverlayModule } from '@angular/cdk/overlay';
4
- import { Directionality } from '@angular/cdk/bidi';
5
- import { coerceBooleanProperty, coerceArray } from '@angular/cdk/coercion';
6
- import { DOWN_ARROW, ENTER, ESCAPE, TAB } from '@angular/cdk/keycodes';
7
- import { _getEventTarget } from '@angular/cdk/platform';
8
- import { TemplatePortal } from '@angular/cdk/portal';
9
- import { _IdGenerator } from '@angular/cdk/a11y';
10
-
11
- const allowedOpenActions = ['focus', 'click', 'downKey', 'toggle'];
12
- const CDK_COMBOBOX = new InjectionToken('CDK_COMBOBOX');
13
- class CdkCombobox {
14
- _tagName = inject(HOST_TAG_NAME);
15
- _elementRef = inject(ElementRef);
16
- _viewContainerRef = inject(ViewContainerRef);
17
- _injector = inject(Injector);
18
- _doc = inject(DOCUMENT);
19
- _directionality = inject(Directionality, { optional: true });
20
- _changeDetectorRef = inject(ChangeDetectorRef);
21
- _overlayRef;
22
- _panelPortal;
23
- _panelTemplateRef;
24
- value;
25
- get disabled() {
26
- return this._disabled;
27
- }
28
- set disabled(value) {
29
- this._disabled = coerceBooleanProperty(value);
30
- }
31
- _disabled = false;
32
- get openActions() {
33
- return this._openActions;
34
- }
35
- set openActions(action) {
36
- this._openActions = this._coerceOpenActionProperty(action);
37
- }
38
- _openActions = ['click'];
39
- /** Whether the textContent is automatically updated upon change of the combobox value. */
40
- get autoSetText() {
41
- return this._autoSetText;
42
- }
43
- set autoSetText(value) {
44
- this._autoSetText = coerceBooleanProperty(value);
45
- }
46
- _autoSetText = true;
47
- opened = new EventEmitter();
48
- closed = new EventEmitter();
49
- panelValueChanged = new EventEmitter();
50
- contentId = '';
51
- contentType;
52
- ngOnDestroy() {
53
- if (this._overlayRef) {
54
- this._overlayRef.dispose();
55
- }
56
- this.opened.complete();
57
- this.closed.complete();
58
- this.panelValueChanged.complete();
59
- }
60
- _keydown(event) {
61
- const { keyCode } = event;
62
- if (keyCode === DOWN_ARROW) {
63
- if (this.isOpen()) {
64
- // TODO: instead of using a focus function, potentially use cdk/a11y focus trapping
65
- this._doc.getElementById(this.contentId)?.focus();
66
- }
67
- else if (this._openActions.indexOf('downKey') !== -1) {
68
- this.open();
69
- }
70
- }
71
- else if (keyCode === ENTER) {
72
- if (this._openActions.indexOf('toggle') !== -1) {
73
- this.toggle();
74
- }
75
- else if (this._openActions.indexOf('click') !== -1) {
76
- this.open();
77
- }
78
- }
79
- else if (keyCode === ESCAPE) {
80
- event.preventDefault();
81
- this.close();
82
- }
83
- else if (keyCode === TAB) {
84
- this.close();
85
- }
86
- }
87
- /** Handles click or focus interactions. */
88
- _handleInteractions(interaction) {
89
- if (interaction === 'click') {
90
- if (this._openActions.indexOf('toggle') !== -1) {
91
- this.toggle();
92
- }
93
- else if (this._openActions.indexOf('click') !== -1) {
94
- this.open();
95
- }
96
- }
97
- else if (interaction === 'focus') {
98
- if (this._openActions.indexOf('focus') !== -1) {
99
- this.open();
100
- }
101
- }
102
- }
103
- /** Given a click in the document, determines if the click was inside a combobox. */
104
- _attemptClose(event) {
105
- if (this.isOpen()) {
106
- let target = _getEventTarget(event);
107
- while (target instanceof Element) {
108
- if (target.className.indexOf('cdk-combobox') !== -1) {
109
- return;
110
- }
111
- target = target.parentElement;
112
- }
113
- }
114
- this.close();
115
- }
116
- /** Toggles the open state of the panel. */
117
- toggle() {
118
- if (this.hasPanel()) {
119
- this.isOpen() ? this.close() : this.open();
120
- }
121
- }
122
- /** If the combobox is closed and not disabled, opens the panel. */
123
- open() {
124
- if (!this.isOpen() && !this.disabled) {
125
- this.opened.next();
126
- this._overlayRef =
127
- this._overlayRef || createOverlayRef(this._injector, this._getOverlayConfig());
128
- this._overlayRef.attach(this._getPanelContent());
129
- this._changeDetectorRef.markForCheck();
130
- if (!this._isTextTrigger()) {
131
- // TODO: instead of using a focus function, potentially use cdk/a11y focus trapping
132
- this._doc.getElementById(this.contentId)?.focus();
133
- }
134
- }
135
- }
136
- /** If the combobox is open and not disabled, closes the panel. */
137
- close() {
138
- if (this.isOpen() && !this.disabled) {
139
- this.closed.next();
140
- this._overlayRef.detach();
141
- this._changeDetectorRef.markForCheck();
142
- }
143
- }
144
- /** Returns true if panel is currently opened. */
145
- isOpen() {
146
- return this._overlayRef ? this._overlayRef.hasAttached() : false;
147
- }
148
- /** Returns true if combobox has a child panel. */
149
- hasPanel() {
150
- return !!this._panelTemplateRef;
151
- }
152
- _getTabIndex() {
153
- return this.disabled ? null : '0';
154
- }
155
- _setComboboxValue(value) {
156
- const valueChanged = this.value !== value;
157
- this.value = value;
158
- if (valueChanged) {
159
- this.panelValueChanged.emit(coerceArray(value));
160
- if (this._autoSetText) {
161
- this._setTextContent(value);
162
- }
163
- }
164
- }
165
- updateAndClose(value) {
166
- this._setComboboxValue(value);
167
- this.close();
168
- }
169
- _setTextContent(content) {
170
- const contentArray = coerceArray(content);
171
- this._elementRef.nativeElement.textContent = contentArray.join(' ');
172
- }
173
- _isTextTrigger() {
174
- // TODO: Should check if the trigger is contenteditable.
175
- const tagName = this._tagName.toLowerCase();
176
- return tagName === 'input' || tagName === 'textarea';
177
- }
178
- _getOverlayConfig() {
179
- return new OverlayConfig({
180
- positionStrategy: this._getOverlayPositionStrategy(),
181
- scrollStrategy: createBlockScrollStrategy(this._injector),
182
- direction: this._directionality || undefined,
183
- });
184
- }
185
- _getOverlayPositionStrategy() {
186
- return createFlexibleConnectedPositionStrategy(this._injector, this._elementRef).withPositions(this._getOverlayPositions());
187
- }
188
- _getOverlayPositions() {
189
- return [
190
- { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },
191
- { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },
192
- { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },
193
- { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },
194
- ];
195
- }
196
- _getPanelInjector() {
197
- return this._injector;
198
- }
199
- _getPanelContent() {
200
- const hasPanelChanged = this._panelTemplateRef !== this._panelPortal?.templateRef;
201
- if (this._panelTemplateRef && (!this._panelPortal || hasPanelChanged)) {
202
- this._panelPortal = new TemplatePortal(this._panelTemplateRef, this._viewContainerRef, undefined, this._getPanelInjector());
203
- }
204
- return this._panelPortal;
205
- }
206
- _coerceOpenActionProperty(input) {
207
- let actions = typeof input === 'string' ? input.trim().split(/[ ,]+/) : input;
208
- if ((typeof ngDevMode === 'undefined' || ngDevMode) &&
209
- actions?.some(a => allowedOpenActions.indexOf(a) === -1)) {
210
- throw Error(`${input} is not a support open action for CdkCombobox`);
211
- }
212
- return actions;
213
- }
214
- /** Registers the content's id and the content type with the panel. */
215
- _registerContent(contentId, contentType) {
216
- if ((typeof ngDevMode === 'undefined' || ngDevMode) &&
217
- contentType !== 'listbox' &&
218
- contentType !== 'dialog') {
219
- throw Error('CdkComboboxPanel currently only supports listbox or dialog content.');
220
- }
221
- this.contentId = contentId;
222
- this.contentType = contentType;
223
- }
224
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkCombobox, deps: [], target: i0.ɵɵFactoryTarget.Directive });
225
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-rc.1", type: CdkCombobox, isStandalone: true, selector: "[cdkCombobox]", inputs: { _panelTemplateRef: ["cdkComboboxTriggerFor", "_panelTemplateRef"], value: "value", disabled: "disabled", openActions: "openActions", autoSetText: "autoSetText" }, outputs: { opened: "comboboxPanelOpened", closed: "comboboxPanelClosed", panelValueChanged: "panelValueChanged" }, host: { attributes: { "role": "combobox" }, listeners: { "click": "_handleInteractions(\"click\")", "focus": "_handleInteractions(\"focus\")", "keydown": "_keydown($event)", "document:click": "_attemptClose($event)" }, properties: { "attr.aria-disabled": "disabled", "attr.aria-owns": "contentId", "attr.aria-haspopup": "contentType", "attr.aria-expanded": "isOpen()", "attr.tabindex": "_getTabIndex()" }, classAttribute: "cdk-combobox" }, providers: [{ provide: CDK_COMBOBOX, useExisting: CdkCombobox }], exportAs: ["cdkCombobox"], ngImport: i0 });
226
- }
227
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkCombobox, decorators: [{
228
- type: Directive,
229
- args: [{
230
- selector: '[cdkCombobox]',
231
- exportAs: 'cdkCombobox',
232
- host: {
233
- 'role': 'combobox',
234
- 'class': 'cdk-combobox',
235
- '(click)': '_handleInteractions("click")',
236
- '(focus)': '_handleInteractions("focus")',
237
- '(keydown)': '_keydown($event)',
238
- '(document:click)': '_attemptClose($event)',
239
- '[attr.aria-disabled]': 'disabled',
240
- '[attr.aria-owns]': 'contentId',
241
- '[attr.aria-haspopup]': 'contentType',
242
- '[attr.aria-expanded]': 'isOpen()',
243
- '[attr.tabindex]': '_getTabIndex()',
244
- },
245
- providers: [{ provide: CDK_COMBOBOX, useExisting: CdkCombobox }],
246
- }]
247
- }], propDecorators: { _panelTemplateRef: [{
248
- type: Input,
249
- args: ['cdkComboboxTriggerFor']
250
- }], value: [{
251
- type: Input
252
- }], disabled: [{
253
- type: Input
254
- }], openActions: [{
255
- type: Input
256
- }], autoSetText: [{
257
- type: Input
258
- }], opened: [{
259
- type: Output,
260
- args: ['comboboxPanelOpened']
261
- }], closed: [{
262
- type: Output,
263
- args: ['comboboxPanelClosed']
264
- }], panelValueChanged: [{
265
- type: Output,
266
- args: ['panelValueChanged']
267
- }] } });
268
-
269
- class CdkComboboxPopup {
270
- _elementRef = inject(ElementRef);
271
- _combobox = inject(CDK_COMBOBOX);
272
- get role() {
273
- return this._role;
274
- }
275
- set role(value) {
276
- this._role = value;
277
- }
278
- _role = 'dialog';
279
- get firstFocus() {
280
- return this._firstFocusElement;
281
- }
282
- set firstFocus(id) {
283
- this._firstFocusElement = id;
284
- }
285
- _firstFocusElement;
286
- id = inject(_IdGenerator).getId('cdk-combobox-popup-');
287
- ngOnInit() {
288
- this.registerWithPanel();
289
- }
290
- registerWithPanel() {
291
- this._combobox._registerContent(this.id, this._role);
292
- }
293
- focusFirstElement() {
294
- if (this._firstFocusElement) {
295
- this._firstFocusElement.focus();
296
- }
297
- else {
298
- this._elementRef.nativeElement.focus();
299
- }
300
- }
301
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkComboboxPopup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
302
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-rc.1", type: CdkComboboxPopup, isStandalone: true, selector: "[cdkComboboxPopup]", inputs: { role: "role", firstFocus: "firstFocus", id: "id" }, host: { attributes: { "tabindex": "-1" }, listeners: { "focus": "focusFirstElement()" }, properties: { "attr.role": "role", "id": "id" }, classAttribute: "cdk-combobox-popup" }, exportAs: ["cdkComboboxPopup"], ngImport: i0 });
303
- }
304
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkComboboxPopup, decorators: [{
305
- type: Directive,
306
- args: [{
307
- selector: '[cdkComboboxPopup]',
308
- exportAs: 'cdkComboboxPopup',
309
- host: {
310
- 'class': 'cdk-combobox-popup',
311
- '[attr.role]': 'role',
312
- '[id]': 'id',
313
- 'tabindex': '-1',
314
- '(focus)': 'focusFirstElement()',
315
- },
316
- }]
317
- }], propDecorators: { role: [{
318
- type: Input
319
- }], firstFocus: [{
320
- type: Input
321
- }], id: [{
322
- type: Input
323
- }] } });
324
-
325
- const EXPORTED_DECLARATIONS = [CdkCombobox, CdkComboboxPopup];
326
- class CdkComboboxModule {
327
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkComboboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
328
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkComboboxModule, imports: [OverlayModule, CdkCombobox, CdkComboboxPopup], exports: [CdkCombobox, CdkComboboxPopup] });
329
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkComboboxModule, imports: [OverlayModule] });
330
- }
331
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkComboboxModule, decorators: [{
332
- type: NgModule,
333
- args: [{
334
- imports: [OverlayModule, ...EXPORTED_DECLARATIONS],
335
- exports: EXPORTED_DECLARATIONS,
336
- }]
337
- }] });
338
-
339
- export { CDK_COMBOBOX, CdkCombobox, CdkComboboxModule, CdkComboboxPopup };
340
- //# sourceMappingURL=combobox.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"combobox.mjs","sources":["../../../../../k8-fastbuild-ST-c646aa77115d/bin/src/cdk-experimental/combobox/combobox.ts","../../../../../k8-fastbuild-ST-c646aa77115d/bin/src/cdk-experimental/combobox/combobox-popup.ts","../../../../../k8-fastbuild-ST-c646aa77115d/bin/src/cdk-experimental/combobox/combobox-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\nimport {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput, coerceArray, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {DOWN_ARROW, ENTER, ESCAPE, TAB} from '@angular/cdk/keycodes';\nimport {\n ConnectedPosition,\n createBlockScrollStrategy,\n createFlexibleConnectedPositionStrategy,\n createOverlayRef,\n FlexibleConnectedPositionStrategy,\n OverlayConfig,\n OverlayRef,\n} from '@angular/cdk/overlay';\nimport {_getEventTarget} from '@angular/cdk/platform';\nimport {TemplatePortal} from '@angular/cdk/portal';\n\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n HOST_TAG_NAME,\n InjectionToken,\n Injector,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n ViewContainerRef,\n inject,\n DOCUMENT,\n} from '@angular/core';\n\nexport type AriaHasPopupValue = 'false' | 'true' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog';\nexport type OpenAction = 'focus' | 'click' | 'downKey' | 'toggle';\nexport type OpenActionInput = OpenAction | OpenAction[] | string | null | undefined;\n\nconst allowedOpenActions = ['focus', 'click', 'downKey', 'toggle'];\n\nexport const CDK_COMBOBOX = new InjectionToken<CdkCombobox>('CDK_COMBOBOX');\n\n@Directive({\n selector: '[cdkCombobox]',\n exportAs: 'cdkCombobox',\n host: {\n 'role': 'combobox',\n 'class': 'cdk-combobox',\n '(click)': '_handleInteractions(\"click\")',\n '(focus)': '_handleInteractions(\"focus\")',\n '(keydown)': '_keydown($event)',\n '(document:click)': '_attemptClose($event)',\n '[attr.aria-disabled]': 'disabled',\n '[attr.aria-owns]': 'contentId',\n '[attr.aria-haspopup]': 'contentType',\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.tabindex]': '_getTabIndex()',\n },\n providers: [{provide: CDK_COMBOBOX, useExisting: CdkCombobox}],\n})\nexport class CdkCombobox<T = unknown> implements OnDestroy {\n private readonly _tagName = inject(HOST_TAG_NAME);\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected readonly _viewContainerRef = inject(ViewContainerRef);\n private readonly _injector = inject(Injector);\n private readonly _doc = inject(DOCUMENT);\n private readonly _directionality = inject(Directionality, {optional: true});\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _overlayRef: OverlayRef;\n private _panelPortal: TemplatePortal;\n\n @Input('cdkComboboxTriggerFor')\n _panelTemplateRef: TemplateRef<unknown>;\n\n @Input()\n value: T | T[];\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled: boolean = false;\n\n @Input()\n get openActions(): OpenAction[] {\n return this._openActions;\n }\n set openActions(action: OpenActionInput) {\n this._openActions = this._coerceOpenActionProperty(action);\n }\n private _openActions: OpenAction[] = ['click'];\n\n /** Whether the textContent is automatically updated upon change of the combobox value. */\n @Input()\n get autoSetText(): boolean {\n return this._autoSetText;\n }\n set autoSetText(value: BooleanInput) {\n this._autoSetText = coerceBooleanProperty(value);\n }\n private _autoSetText: boolean = true;\n\n @Output('comboboxPanelOpened') readonly opened: EventEmitter<void> = new EventEmitter<void>();\n @Output('comboboxPanelClosed') readonly closed: EventEmitter<void> = new EventEmitter<void>();\n @Output('panelValueChanged') readonly panelValueChanged: EventEmitter<T[]> = new EventEmitter<\n T[]\n >();\n\n contentId: string = '';\n contentType: AriaHasPopupValue;\n\n ngOnDestroy() {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n }\n\n this.opened.complete();\n this.closed.complete();\n this.panelValueChanged.complete();\n }\n\n _keydown(event: KeyboardEvent) {\n const {keyCode} = event;\n\n if (keyCode === DOWN_ARROW) {\n if (this.isOpen()) {\n // TODO: instead of using a focus function, potentially use cdk/a11y focus trapping\n this._doc.getElementById(this.contentId)?.focus();\n } else if (this._openActions.indexOf('downKey') !== -1) {\n this.open();\n }\n } else if (keyCode === ENTER) {\n if (this._openActions.indexOf('toggle') !== -1) {\n this.toggle();\n } else if (this._openActions.indexOf('click') !== -1) {\n this.open();\n }\n } else if (keyCode === ESCAPE) {\n event.preventDefault();\n this.close();\n } else if (keyCode === TAB) {\n this.close();\n }\n }\n\n /** Handles click or focus interactions. */\n _handleInteractions(interaction: OpenAction) {\n if (interaction === 'click') {\n if (this._openActions.indexOf('toggle') !== -1) {\n this.toggle();\n } else if (this._openActions.indexOf('click') !== -1) {\n this.open();\n }\n } else if (interaction === 'focus') {\n if (this._openActions.indexOf('focus') !== -1) {\n this.open();\n }\n }\n }\n\n /** Given a click in the document, determines if the click was inside a combobox. */\n _attemptClose(event: MouseEvent) {\n if (this.isOpen()) {\n let target = _getEventTarget(event);\n while (target instanceof Element) {\n if (target.className.indexOf('cdk-combobox') !== -1) {\n return;\n }\n target = target.parentElement;\n }\n }\n\n this.close();\n }\n\n /** Toggles the open state of the panel. */\n toggle() {\n if (this.hasPanel()) {\n this.isOpen() ? this.close() : this.open();\n }\n }\n\n /** If the combobox is closed and not disabled, opens the panel. */\n open() {\n if (!this.isOpen() && !this.disabled) {\n this.opened.next();\n this._overlayRef =\n this._overlayRef || createOverlayRef(this._injector, this._getOverlayConfig());\n this._overlayRef.attach(this._getPanelContent());\n this._changeDetectorRef.markForCheck();\n if (!this._isTextTrigger()) {\n // TODO: instead of using a focus function, potentially use cdk/a11y focus trapping\n this._doc.getElementById(this.contentId)?.focus();\n }\n }\n }\n\n /** If the combobox is open and not disabled, closes the panel. */\n close() {\n if (this.isOpen() && !this.disabled) {\n this.closed.next();\n this._overlayRef.detach();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /** Returns true if panel is currently opened. */\n isOpen(): boolean {\n return this._overlayRef ? this._overlayRef.hasAttached() : false;\n }\n\n /** Returns true if combobox has a child panel. */\n hasPanel(): boolean {\n return !!this._panelTemplateRef;\n }\n\n _getTabIndex(): string | null {\n return this.disabled ? null : '0';\n }\n\n private _setComboboxValue(value: T | T[]) {\n const valueChanged = this.value !== value;\n this.value = value;\n\n if (valueChanged) {\n this.panelValueChanged.emit(coerceArray(value));\n if (this._autoSetText) {\n this._setTextContent(value);\n }\n }\n }\n\n updateAndClose(value: T | T[]) {\n this._setComboboxValue(value);\n this.close();\n }\n\n private _setTextContent(content: T | T[]) {\n const contentArray = coerceArray(content);\n this._elementRef.nativeElement.textContent = contentArray.join(' ');\n }\n\n private _isTextTrigger() {\n // TODO: Should check if the trigger is contenteditable.\n const tagName = this._tagName.toLowerCase();\n return tagName === 'input' || tagName === 'textarea';\n }\n\n private _getOverlayConfig() {\n return new OverlayConfig({\n positionStrategy: this._getOverlayPositionStrategy(),\n scrollStrategy: createBlockScrollStrategy(this._injector),\n direction: this._directionality || undefined,\n });\n }\n\n private _getOverlayPositionStrategy(): FlexibleConnectedPositionStrategy {\n return createFlexibleConnectedPositionStrategy(this._injector, this._elementRef).withPositions(\n this._getOverlayPositions(),\n );\n }\n\n private _getOverlayPositions(): ConnectedPosition[] {\n return [\n {originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top'},\n {originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom'},\n {originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top'},\n {originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom'},\n ];\n }\n\n private _getPanelInjector() {\n return this._injector;\n }\n\n private _getPanelContent() {\n const hasPanelChanged = this._panelTemplateRef !== this._panelPortal?.templateRef;\n if (this._panelTemplateRef && (!this._panelPortal || hasPanelChanged)) {\n this._panelPortal = new TemplatePortal(\n this._panelTemplateRef,\n this._viewContainerRef,\n undefined,\n this._getPanelInjector(),\n );\n }\n\n return this._panelPortal;\n }\n\n private _coerceOpenActionProperty(input: OpenActionInput): OpenAction[] {\n let actions = typeof input === 'string' ? input.trim().split(/[ ,]+/) : input;\n if (\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n actions?.some(a => allowedOpenActions.indexOf(a) === -1)\n ) {\n throw Error(`${input} is not a support open action for CdkCombobox`);\n }\n return actions as OpenAction[];\n }\n\n /** Registers the content's id and the content type with the panel. */\n _registerContent(contentId: string, contentType: AriaHasPopupValue) {\n if (\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n contentType !== 'listbox' &&\n contentType !== 'dialog'\n ) {\n throw Error('CdkComboboxPanel currently only supports listbox or dialog content.');\n }\n this.contentId = contentId;\n this.contentType = contentType;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Directive, ElementRef, Input, OnInit, inject} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {AriaHasPopupValue, CDK_COMBOBOX, CdkCombobox} from './combobox';\n\n@Directive({\n selector: '[cdkComboboxPopup]',\n exportAs: 'cdkComboboxPopup',\n host: {\n 'class': 'cdk-combobox-popup',\n '[attr.role]': 'role',\n '[id]': 'id',\n 'tabindex': '-1',\n '(focus)': 'focusFirstElement()',\n },\n})\nexport class CdkComboboxPopup<T = unknown> implements OnInit {\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _combobox = inject<CdkCombobox>(CDK_COMBOBOX);\n\n @Input()\n get role(): AriaHasPopupValue {\n return this._role;\n }\n set role(value: AriaHasPopupValue) {\n this._role = value;\n }\n private _role: AriaHasPopupValue = 'dialog';\n\n @Input()\n get firstFocus(): HTMLElement {\n return this._firstFocusElement;\n }\n set firstFocus(id: HTMLElement) {\n this._firstFocusElement = id;\n }\n private _firstFocusElement: HTMLElement;\n\n @Input() id: string = inject(_IdGenerator).getId('cdk-combobox-popup-');\n\n ngOnInit() {\n this.registerWithPanel();\n }\n\n registerWithPanel(): void {\n this._combobox._registerContent(this.id, this._role);\n }\n\n focusFirstElement() {\n if (this._firstFocusElement) {\n this._firstFocusElement.focus();\n } else {\n this._elementRef.nativeElement.focus();\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {CdkCombobox} from './combobox';\nimport {CdkComboboxPopup} from './combobox-popup';\n\nconst EXPORTED_DECLARATIONS = [CdkCombobox, CdkComboboxPopup];\n@NgModule({\n imports: [OverlayModule, ...EXPORTED_DECLARATIONS],\n exports: EXPORTED_DECLARATIONS,\n})\nexport class CdkComboboxModule {}\n"],"names":[],"mappings":"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"}
@@ -1,60 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { signal, input, Directive, inject, TemplateRef, ViewContainerRef, effect } from '@angular/core';
3
-
4
- /**
5
- * A container directive controls the visibility of its content.
6
- */
7
- class DeferredContentAware {
8
- contentVisible = signal(false, ...(ngDevMode ? [{ debugName: "contentVisible" }] : []));
9
- preserveContent = input(false, ...(ngDevMode ? [{ debugName: "preserveContent" }] : []));
10
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: DeferredContentAware, deps: [], target: i0.ɵɵFactoryTarget.Directive });
11
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0-rc.1", type: DeferredContentAware, isStandalone: true, inputs: { preserveContent: { classPropertyName: "preserveContent", publicName: "preserveContent", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
12
- }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: DeferredContentAware, decorators: [{
14
- type: Directive
15
- }] });
16
- /**
17
- * DeferredContent loads/unloads the content based on the visibility.
18
- * The visibilty signal is sent from a parent directive implements
19
- * DeferredContentAware.
20
- *
21
- * Use this directive as a host directive. For example:
22
- *
23
- * ```ts
24
- * @Directive({
25
- * selector: 'ng-template[cdkAccordionContent]',
26
- * hostDirectives: [DeferredContent],
27
- * })
28
- * class CdkAccordionContent {}
29
- * ```
30
- */
31
- class DeferredContent {
32
- _deferredContentAware = inject(DeferredContentAware);
33
- _templateRef = inject(TemplateRef);
34
- _viewContainerRef = inject(ViewContainerRef);
35
- _isRendered = false;
36
- constructor() {
37
- effect(() => {
38
- if (this._deferredContentAware.preserveContent() ||
39
- this._deferredContentAware.contentVisible()) {
40
- if (this._isRendered)
41
- return;
42
- this._viewContainerRef.clear();
43
- this._viewContainerRef.createEmbeddedView(this._templateRef);
44
- this._isRendered = true;
45
- }
46
- else {
47
- this._viewContainerRef.clear();
48
- this._isRendered = false;
49
- }
50
- });
51
- }
52
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: DeferredContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
53
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-rc.1", type: DeferredContent, isStandalone: true, ngImport: i0 });
54
- }
55
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: DeferredContent, decorators: [{
56
- type: Directive
57
- }], ctorParameters: () => [] });
58
-
59
- export { DeferredContent, DeferredContentAware };
60
- //# sourceMappingURL=deferred-content.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deferred-content.mjs","sources":["../../../../../k8-fastbuild-ST-c646aa77115d/bin/src/cdk-experimental/deferred-content/deferred-content.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n effect,\n inject,\n input,\n TemplateRef,\n signal,\n ViewContainerRef,\n} from '@angular/core';\n\n/**\n * A container directive controls the visibility of its content.\n */\n@Directive()\nexport class DeferredContentAware {\n contentVisible = signal(false);\n readonly preserveContent = input(false);\n}\n\n/**\n * DeferredContent loads/unloads the content based on the visibility.\n * The visibilty signal is sent from a parent directive implements\n * DeferredContentAware.\n *\n * Use this directive as a host directive. For example:\n *\n * ```ts\n * @Directive({\n * selector: 'ng-template[cdkAccordionContent]',\n * hostDirectives: [DeferredContent],\n * })\n * class CdkAccordionContent {}\n * ```\n */\n@Directive()\nexport class DeferredContent {\n private readonly _deferredContentAware = inject(DeferredContentAware);\n private readonly _templateRef = inject(TemplateRef);\n private readonly _viewContainerRef = inject(ViewContainerRef);\n private _isRendered = false;\n\n constructor() {\n effect(() => {\n if (\n this._deferredContentAware.preserveContent() ||\n this._deferredContentAware.contentVisible()\n ) {\n if (this._isRendered) return;\n this._viewContainerRef.clear();\n this._viewContainerRef.createEmbeddedView(this._templateRef);\n this._isRendered = true;\n } else {\n this._viewContainerRef.clear();\n this._isRendered = false;\n }\n });\n }\n}\n"],"names":[],"mappings":";;;AAkBA;;AAEG;MAEU,oBAAoB,CAAA;AAC/B,IAAA,cAAc,GAAG,MAAM,CAAC,KAAK,0DAAC;AACrB,IAAA,eAAe,GAAG,KAAK,CAAC,KAAK,2DAAC;4GAF5B,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;gGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;gGAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC;;AAMD;;;;;;;;;;;;;;AAcG;MAEU,eAAe,CAAA;AACT,IAAA,qBAAqB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACpD,IAAA,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;AAClC,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACrD,WAAW,GAAG,KAAK;AAE3B,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IACE,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE;AAC5C,gBAAA,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,EAC3C;gBACA,IAAI,IAAI,CAAC,WAAW;oBAAE;AACtB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;gBAC9B,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC;AAC5D,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;;iBAClB;AACL,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAC9B,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK;;AAE5B,SAAC,CAAC;;4GApBO,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;gGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;gGAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;;;;"}