@angular/cdk-experimental 20.0.0-next.5 → 20.0.0-next.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/column-resize/index.d.ts +3 -2
- package/combobox/index.d.ts +3 -2
- package/deferred-content/index.d.ts +37 -0
- package/fesm2022/cdk-experimental.mjs +1 -1
- package/fesm2022/cdk-experimental.mjs.map +1 -1
- package/fesm2022/column-resize.mjs +52 -52
- package/fesm2022/column-resize.mjs.map +1 -1
- package/fesm2022/combobox.mjs +11 -11
- package/fesm2022/combobox.mjs.map +1 -1
- package/fesm2022/deferred-content.mjs +60 -0
- package/fesm2022/deferred-content.mjs.map +1 -0
- package/fesm2022/{option-a8c77cfa.mjs → list-focus-DtTH4bDx.mjs} +34 -291
- package/fesm2022/list-focus-DtTH4bDx.mjs.map +1 -0
- package/fesm2022/listbox.mjs +14 -10
- package/fesm2022/listbox.mjs.map +1 -1
- package/fesm2022/option-Bgpacz3g.mjs +319 -0
- package/fesm2022/option-Bgpacz3g.mjs.map +1 -0
- package/fesm2022/{polyfill-c4e47556.mjs → polyfill-DRXnWbMt.mjs} +2 -2
- package/fesm2022/polyfill-DRXnWbMt.mjs.map +1 -0
- package/fesm2022/popover-edit.mjs +45 -46
- package/fesm2022/popover-edit.mjs.map +1 -1
- package/fesm2022/scrolling.mjs +8 -8
- package/fesm2022/scrolling.mjs.map +1 -1
- package/fesm2022/selection.mjs +21 -21
- package/fesm2022/selection.mjs.map +1 -1
- package/fesm2022/table-scroll-container.mjs +7 -7
- package/fesm2022/table-scroll-container.mjs.map +1 -1
- package/fesm2022/tabs-cBelBNjZ.mjs +190 -0
- package/fesm2022/tabs-cBelBNjZ.mjs.map +1 -0
- package/fesm2022/tabs.mjs +224 -0
- package/fesm2022/tabs.mjs.map +1 -0
- package/fesm2022/ui-patterns.mjs +3 -1
- package/fesm2022/ui-patterns.mjs.map +1 -1
- package/{listbox.d-e1f2866f.d.ts → list-focus.d-1SGksIi8.d.ts} +9 -151
- package/listbox/index.d.ts +6 -3
- package/listbox.d-C-LFh0S9.d.ts +160 -0
- package/package.json +13 -2
- package/popover-edit/index.d.ts +2 -1
- package/selection/index.d.ts +2 -1
- package/tabs/index.d.ts +128 -0
- package/tabs.d-BIIDt2Rf.d.ts +107 -0
- package/ui-patterns/index.d.ts +3 -1
- package/fesm2022/option-a8c77cfa.mjs.map +0 -1
- package/fesm2022/polyfill-c4e47556.mjs.map +0 -1
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
import { KeyboardEventManager, ModifierKey, PointerEventManager, ListNavigation, ListSelection, ListFocus } from './list-focus-DtTH4bDx.mjs';
|
|
2
|
+
import { computed, signal } from '@angular/core';
|
|
3
|
+
|
|
4
|
+
/** Controls typeahead for a list of items. */
|
|
5
|
+
class ListTypeahead {
|
|
6
|
+
inputs;
|
|
7
|
+
/** A reference to the timeout for resetting the typeahead search. */
|
|
8
|
+
timeout;
|
|
9
|
+
/** The navigation controller of the parent list. */
|
|
10
|
+
navigation;
|
|
11
|
+
/** Whether the user is actively typing a typeahead search query. */
|
|
12
|
+
isTyping = computed(() => this._query().length > 0);
|
|
13
|
+
/** Keeps track of the characters that typeahead search is being called with. */
|
|
14
|
+
_query = signal('');
|
|
15
|
+
/** The index where that the typeahead search was initiated from. */
|
|
16
|
+
_startIndex = signal(undefined);
|
|
17
|
+
constructor(inputs) {
|
|
18
|
+
this.inputs = inputs;
|
|
19
|
+
this.navigation = inputs.navigation;
|
|
20
|
+
}
|
|
21
|
+
/** Performs a typeahead search, appending the given character to the search string. */
|
|
22
|
+
search(char) {
|
|
23
|
+
if (char.length !== 1) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (!this.isTyping() && char === ' ') {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (this._startIndex() === undefined) {
|
|
30
|
+
this._startIndex.set(this.navigation.inputs.activeIndex());
|
|
31
|
+
}
|
|
32
|
+
clearTimeout(this.timeout);
|
|
33
|
+
this._query.update(q => q + char.toLowerCase());
|
|
34
|
+
const item = this._getItem();
|
|
35
|
+
if (item) {
|
|
36
|
+
this.navigation.goto(item);
|
|
37
|
+
}
|
|
38
|
+
this.timeout = setTimeout(() => {
|
|
39
|
+
this._query.set('');
|
|
40
|
+
this._startIndex.set(undefined);
|
|
41
|
+
}, this.inputs.typeaheadDelay() * 1000);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Returns the first item whose search term matches the
|
|
45
|
+
* current query starting from the the current anchor index.
|
|
46
|
+
*/
|
|
47
|
+
_getItem() {
|
|
48
|
+
let items = this.navigation.inputs.items();
|
|
49
|
+
const after = items.slice(this._startIndex() + 1);
|
|
50
|
+
const before = items.slice(0, this._startIndex());
|
|
51
|
+
items = this.navigation.inputs.wrap() ? after.concat(before) : after; // TODO: Always wrap?
|
|
52
|
+
items.push(this.navigation.inputs.items()[this._startIndex()]);
|
|
53
|
+
const focusableItems = [];
|
|
54
|
+
for (const item of items) {
|
|
55
|
+
if (this.navigation.isFocusable(item)) {
|
|
56
|
+
focusableItems.push(item);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return focusableItems.find(i => i.searchTerm().toLowerCase().startsWith(this._query()));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** Controls the state of a listbox. */
|
|
64
|
+
class ListboxPattern {
|
|
65
|
+
inputs;
|
|
66
|
+
/** Controls navigation for the listbox. */
|
|
67
|
+
navigation;
|
|
68
|
+
/** Controls selection for the listbox. */
|
|
69
|
+
selection;
|
|
70
|
+
/** Controls typeahead for the listbox. */
|
|
71
|
+
typeahead;
|
|
72
|
+
/** Controls focus for the listbox. */
|
|
73
|
+
focusManager;
|
|
74
|
+
/** Whether the list is vertically or horizontally oriented. */
|
|
75
|
+
orientation;
|
|
76
|
+
/** Whether the listbox is disabled. */
|
|
77
|
+
disabled;
|
|
78
|
+
/** Whether the listbox is readonly. */
|
|
79
|
+
readonly;
|
|
80
|
+
/** The tabindex of the listbox. */
|
|
81
|
+
tabindex = computed(() => this.focusManager.getListTabindex());
|
|
82
|
+
/** The id of the current active item. */
|
|
83
|
+
activedescendant = computed(() => this.focusManager.getActiveDescendant());
|
|
84
|
+
/** Whether multiple items in the list can be selected at once. */
|
|
85
|
+
multi;
|
|
86
|
+
/** The number of items in the listbox. */
|
|
87
|
+
setsize = computed(() => this.navigation.inputs.items().length);
|
|
88
|
+
/** Whether the listbox selection follows focus. */
|
|
89
|
+
followFocus = computed(() => this.inputs.selectionMode() === 'follow');
|
|
90
|
+
/** The key used to navigate to the previous item in the list. */
|
|
91
|
+
prevKey = computed(() => {
|
|
92
|
+
if (this.inputs.orientation() === 'vertical') {
|
|
93
|
+
return 'ArrowUp';
|
|
94
|
+
}
|
|
95
|
+
return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';
|
|
96
|
+
});
|
|
97
|
+
/** The key used to navigate to the next item in the list. */
|
|
98
|
+
nextKey = computed(() => {
|
|
99
|
+
if (this.inputs.orientation() === 'vertical') {
|
|
100
|
+
return 'ArrowDown';
|
|
101
|
+
}
|
|
102
|
+
return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';
|
|
103
|
+
});
|
|
104
|
+
/** Represents the space key. Does nothing when the user is actively using typeahead. */
|
|
105
|
+
dynamicSpaceKey = computed(() => (this.typeahead.isTyping() ? '' : ' '));
|
|
106
|
+
/** The regexp used to decide if a key should trigger typeahead. */
|
|
107
|
+
typeaheadRegexp = /^.$/; // TODO: Ignore spaces?
|
|
108
|
+
/** The keydown event manager for the listbox. */
|
|
109
|
+
keydown = computed(() => {
|
|
110
|
+
const manager = new KeyboardEventManager();
|
|
111
|
+
if (this.readonly()) {
|
|
112
|
+
return manager
|
|
113
|
+
.on(this.prevKey, () => this.prev())
|
|
114
|
+
.on(this.nextKey, () => this.next())
|
|
115
|
+
.on('Home', () => this.first())
|
|
116
|
+
.on('End', () => this.last())
|
|
117
|
+
.on(this.typeaheadRegexp, e => this.search(e.key));
|
|
118
|
+
}
|
|
119
|
+
if (!this.followFocus()) {
|
|
120
|
+
manager
|
|
121
|
+
.on(this.prevKey, () => this.prev())
|
|
122
|
+
.on(this.nextKey, () => this.next())
|
|
123
|
+
.on('Home', () => this.first())
|
|
124
|
+
.on('End', () => this.last())
|
|
125
|
+
.on(this.typeaheadRegexp, e => this.search(e.key));
|
|
126
|
+
}
|
|
127
|
+
if (this.followFocus()) {
|
|
128
|
+
manager
|
|
129
|
+
.on(this.prevKey, () => this.prev({ selectOne: true }))
|
|
130
|
+
.on(this.nextKey, () => this.next({ selectOne: true }))
|
|
131
|
+
.on('Home', () => this.first({ selectOne: true }))
|
|
132
|
+
.on('End', () => this.last({ selectOne: true }))
|
|
133
|
+
.on(this.typeaheadRegexp, e => this.search(e.key, { selectOne: true }));
|
|
134
|
+
}
|
|
135
|
+
if (this.inputs.multi()) {
|
|
136
|
+
manager
|
|
137
|
+
.on(ModifierKey.Shift, 'Enter', () => this._updateSelection({ selectFromAnchor: true }))
|
|
138
|
+
.on(ModifierKey.Shift, this.prevKey, () => this.prev({ toggle: true }))
|
|
139
|
+
.on(ModifierKey.Shift, this.nextKey, () => this.next({ toggle: true }))
|
|
140
|
+
.on([ModifierKey.Ctrl, ModifierKey.Meta], 'A', () => this._updateSelection({ selectAll: true }))
|
|
141
|
+
.on([ModifierKey.Ctrl | ModifierKey.Shift, ModifierKey.Meta | ModifierKey.Shift], 'Home', () => this.first({ selectFromActive: true }))
|
|
142
|
+
.on([ModifierKey.Ctrl | ModifierKey.Shift, ModifierKey.Meta | ModifierKey.Shift], 'End', () => this.last({ selectFromActive: true }))
|
|
143
|
+
.on(ModifierKey.Shift, this.dynamicSpaceKey, () => this._updateSelection({ selectFromAnchor: true }));
|
|
144
|
+
}
|
|
145
|
+
if (!this.followFocus() && this.inputs.multi()) {
|
|
146
|
+
manager.on(this.dynamicSpaceKey, () => this._updateSelection({ toggle: true }));
|
|
147
|
+
manager.on('Enter', () => this._updateSelection({ toggle: true }));
|
|
148
|
+
}
|
|
149
|
+
if (!this.followFocus() && !this.inputs.multi()) {
|
|
150
|
+
manager.on(this.dynamicSpaceKey, () => this._updateSelection({ toggleOne: true }));
|
|
151
|
+
manager.on('Enter', () => this._updateSelection({ toggleOne: true }));
|
|
152
|
+
}
|
|
153
|
+
if (this.inputs.multi() && this.followFocus()) {
|
|
154
|
+
manager
|
|
155
|
+
.on([ModifierKey.Ctrl, ModifierKey.Meta], this.prevKey, () => this.prev())
|
|
156
|
+
.on([ModifierKey.Ctrl, ModifierKey.Meta], this.nextKey, () => this.next())
|
|
157
|
+
.on([ModifierKey.Ctrl, ModifierKey.Meta], ' ', () => this._updateSelection({ toggle: true }))
|
|
158
|
+
.on([ModifierKey.Ctrl, ModifierKey.Meta], 'Enter', () => this._updateSelection({ toggle: true }))
|
|
159
|
+
.on([ModifierKey.Ctrl, ModifierKey.Meta], 'Home', () => this.first()) // TODO: Not in spec but prob should be.
|
|
160
|
+
.on([ModifierKey.Ctrl, ModifierKey.Meta], 'End', () => this.last()); // TODO: Not in spec but prob should be.
|
|
161
|
+
}
|
|
162
|
+
return manager;
|
|
163
|
+
});
|
|
164
|
+
/** The pointerdown event manager for the listbox. */
|
|
165
|
+
pointerdown = computed(() => {
|
|
166
|
+
const manager = new PointerEventManager();
|
|
167
|
+
if (this.readonly()) {
|
|
168
|
+
return manager.on(e => this.goto(e));
|
|
169
|
+
}
|
|
170
|
+
if (!this.multi() && this.followFocus()) {
|
|
171
|
+
return manager.on(e => this.goto(e, { selectOne: true }));
|
|
172
|
+
}
|
|
173
|
+
if (!this.multi() && !this.followFocus()) {
|
|
174
|
+
return manager.on(e => this.goto(e, { toggle: true }));
|
|
175
|
+
}
|
|
176
|
+
if (this.multi() && this.followFocus()) {
|
|
177
|
+
return manager
|
|
178
|
+
.on(e => this.goto(e, { selectOne: true }))
|
|
179
|
+
.on(ModifierKey.Ctrl, e => this.goto(e, { toggle: true }))
|
|
180
|
+
.on(ModifierKey.Shift, e => this.goto(e, { toggleFromAnchor: true }));
|
|
181
|
+
}
|
|
182
|
+
if (this.multi() && !this.followFocus()) {
|
|
183
|
+
return manager
|
|
184
|
+
.on(e => this.goto(e, { toggle: true }))
|
|
185
|
+
.on(ModifierKey.Shift, e => this.goto(e, { toggleFromAnchor: true }));
|
|
186
|
+
}
|
|
187
|
+
return manager;
|
|
188
|
+
});
|
|
189
|
+
constructor(inputs) {
|
|
190
|
+
this.inputs = inputs;
|
|
191
|
+
this.disabled = inputs.disabled;
|
|
192
|
+
this.readonly = inputs.readonly;
|
|
193
|
+
this.orientation = inputs.orientation;
|
|
194
|
+
this.multi = inputs.multi;
|
|
195
|
+
this.navigation = new ListNavigation(inputs);
|
|
196
|
+
this.selection = new ListSelection({ ...inputs, navigation: this.navigation });
|
|
197
|
+
this.typeahead = new ListTypeahead({ ...inputs, navigation: this.navigation });
|
|
198
|
+
this.focusManager = new ListFocus({ ...inputs, navigation: this.navigation });
|
|
199
|
+
}
|
|
200
|
+
/** Handles keydown events for the listbox. */
|
|
201
|
+
onKeydown(event) {
|
|
202
|
+
if (!this.disabled()) {
|
|
203
|
+
this.keydown().handle(event);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
onPointerdown(event) {
|
|
207
|
+
if (!this.disabled()) {
|
|
208
|
+
this.pointerdown().handle(event);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/** Navigates to the first option in the listbox. */
|
|
212
|
+
first(opts) {
|
|
213
|
+
this.navigation.first();
|
|
214
|
+
this.focusManager.focus();
|
|
215
|
+
this._updateSelection(opts);
|
|
216
|
+
}
|
|
217
|
+
/** Navigates to the last option in the listbox. */
|
|
218
|
+
last(opts) {
|
|
219
|
+
this.navigation.last();
|
|
220
|
+
this.focusManager.focus();
|
|
221
|
+
this._updateSelection(opts);
|
|
222
|
+
}
|
|
223
|
+
/** Navigates to the next option in the listbox. */
|
|
224
|
+
next(opts) {
|
|
225
|
+
this.navigation.next();
|
|
226
|
+
this.focusManager.focus();
|
|
227
|
+
this._updateSelection(opts);
|
|
228
|
+
}
|
|
229
|
+
/** Navigates to the previous option in the listbox. */
|
|
230
|
+
prev(opts) {
|
|
231
|
+
this.navigation.prev();
|
|
232
|
+
this.focusManager.focus();
|
|
233
|
+
this._updateSelection(opts);
|
|
234
|
+
}
|
|
235
|
+
/** Navigates to the given item in the listbox. */
|
|
236
|
+
goto(event, opts) {
|
|
237
|
+
const item = this._getItem(event);
|
|
238
|
+
if (item) {
|
|
239
|
+
this.navigation.goto(item);
|
|
240
|
+
this.focusManager.focus();
|
|
241
|
+
this._updateSelection(opts);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/** Handles typeahead search navigation for the listbox. */
|
|
245
|
+
search(char, opts) {
|
|
246
|
+
this.typeahead.search(char);
|
|
247
|
+
this.focusManager.focus();
|
|
248
|
+
this._updateSelection(opts);
|
|
249
|
+
}
|
|
250
|
+
/** Handles updating selection for the listbox. */
|
|
251
|
+
_updateSelection(opts) {
|
|
252
|
+
if (opts?.select) {
|
|
253
|
+
this.selection.select();
|
|
254
|
+
}
|
|
255
|
+
if (opts?.toggle) {
|
|
256
|
+
this.selection.toggle();
|
|
257
|
+
}
|
|
258
|
+
if (opts?.toggleOne) {
|
|
259
|
+
this.selection.toggleOne();
|
|
260
|
+
}
|
|
261
|
+
if (opts?.selectOne) {
|
|
262
|
+
this.selection.selectOne();
|
|
263
|
+
}
|
|
264
|
+
if (opts?.selectAll) {
|
|
265
|
+
this.selection.selectAll();
|
|
266
|
+
}
|
|
267
|
+
if (opts?.selectFromAnchor) {
|
|
268
|
+
this.selection.selectFromPrevSelectedItem();
|
|
269
|
+
}
|
|
270
|
+
if (opts?.selectFromActive) {
|
|
271
|
+
this.selection.selectFromActive();
|
|
272
|
+
}
|
|
273
|
+
if (opts?.toggleFromAnchor) {
|
|
274
|
+
this.selection.toggleFromPrevSelectedItem();
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
_getItem(e) {
|
|
278
|
+
if (!(e.target instanceof HTMLElement)) {
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
const element = e.target.closest('[role="option"]'); // TODO: Use a different identifier.
|
|
282
|
+
return this.inputs.items().find(i => i.element() === element);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/** Represents an option in a listbox. */
|
|
287
|
+
class OptionPattern {
|
|
288
|
+
/** A unique identifier for the option. */
|
|
289
|
+
id;
|
|
290
|
+
/** The value of the option. */
|
|
291
|
+
value;
|
|
292
|
+
/** The position of the option in the list. */
|
|
293
|
+
index = computed(() => this.listbox()
|
|
294
|
+
?.navigation.inputs.items()
|
|
295
|
+
.findIndex(i => i.id() === this.id()) ?? -1);
|
|
296
|
+
/** Whether the option is selected. */
|
|
297
|
+
selected = computed(() => this.listbox()?.selection.inputs.value().includes(this.value()));
|
|
298
|
+
/** Whether the option is disabled. */
|
|
299
|
+
disabled;
|
|
300
|
+
/** The text used by the typeahead search. */
|
|
301
|
+
searchTerm;
|
|
302
|
+
/** A reference to the parent listbox. */
|
|
303
|
+
listbox;
|
|
304
|
+
/** The tabindex of the option. */
|
|
305
|
+
tabindex = computed(() => this.listbox()?.focusManager.getItemTabindex(this));
|
|
306
|
+
/** The html element that should receive focus. */
|
|
307
|
+
element;
|
|
308
|
+
constructor(args) {
|
|
309
|
+
this.id = args.id;
|
|
310
|
+
this.value = args.value;
|
|
311
|
+
this.listbox = args.listbox;
|
|
312
|
+
this.element = args.element;
|
|
313
|
+
this.disabled = args.disabled;
|
|
314
|
+
this.searchTerm = args.searchTerm;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
export { ListboxPattern, OptionPattern };
|
|
319
|
+
//# sourceMappingURL=option-Bgpacz3g.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"option-Bgpacz3g.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/src/cdk-experimental/ui-patterns/behaviors/list-typeahead/list-typeahead.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/src/cdk-experimental/ui-patterns/listbox/listbox.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/src/cdk-experimental/ui-patterns/listbox/option.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, signal} from '@angular/core';\nimport {SignalLike} from '../signal-like/signal-like';\nimport {ListNavigationItem, ListNavigation} from '../list-navigation/list-navigation';\n\n/**\n * Represents an item in a collection, such as a listbox option, than can be navigated to by\n * typeahead.\n */\nexport interface ListTypeaheadItem extends ListNavigationItem {\n /** The text used by the typeahead search. */\n searchTerm: SignalLike<string>;\n}\n\n/**\n * Represents the required inputs for a collection that contains items that can be navigated to by\n * typeahead.\n */\nexport interface ListTypeaheadInputs {\n /** The amount of time before the typeahead search is reset. */\n typeaheadDelay: SignalLike<number>;\n}\n\n/** Controls typeahead for a list of items. */\nexport class ListTypeahead<T extends ListTypeaheadItem> {\n /** A reference to the timeout for resetting the typeahead search. */\n timeout?: ReturnType<typeof setTimeout> | undefined;\n\n /** The navigation controller of the parent list. */\n navigation: ListNavigation<T>;\n\n /** Whether the user is actively typing a typeahead search query. */\n isTyping = computed(() => this._query().length > 0);\n\n /** Keeps track of the characters that typeahead search is being called with. */\n private _query = signal('');\n\n /** The index where that the typeahead search was initiated from. */\n private _startIndex = signal<number | undefined>(undefined);\n\n constructor(readonly inputs: ListTypeaheadInputs & {navigation: ListNavigation<T>}) {\n this.navigation = inputs.navigation;\n }\n\n /** Performs a typeahead search, appending the given character to the search string. */\n search(char: string) {\n if (char.length !== 1) {\n return;\n }\n\n if (!this.isTyping() && char === ' ') {\n return;\n }\n\n if (this._startIndex() === undefined) {\n this._startIndex.set(this.navigation.inputs.activeIndex());\n }\n\n clearTimeout(this.timeout);\n this._query.update(q => q + char.toLowerCase());\n const item = this._getItem();\n\n if (item) {\n this.navigation.goto(item);\n }\n\n this.timeout = setTimeout(() => {\n this._query.set('');\n this._startIndex.set(undefined);\n }, this.inputs.typeaheadDelay() * 1000);\n }\n\n /**\n * Returns the first item whose search term matches the\n * current query starting from the the current anchor index.\n */\n private _getItem() {\n let items = this.navigation.inputs.items();\n const after = items.slice(this._startIndex()! + 1);\n const before = items.slice(0, this._startIndex()!);\n items = this.navigation.inputs.wrap() ? after.concat(before) : after; // TODO: Always wrap?\n items.push(this.navigation.inputs.items()[this._startIndex()!]);\n\n const focusableItems = [];\n for (const item of items) {\n if (this.navigation.isFocusable(item)) {\n focusableItems.push(item);\n }\n }\n\n return focusableItems.find(i => i.searchTerm().toLowerCase().startsWith(this._query()));\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 {ModifierKey as Modifier} from '../behaviors/event-manager/event-manager';\nimport {KeyboardEventManager} from '../behaviors/event-manager/keyboard-event-manager';\nimport {PointerEventManager} from '../behaviors/event-manager/pointer-event-manager';\nimport {OptionPattern} from './option';\nimport {ListSelection, ListSelectionInputs} from '../behaviors/list-selection/list-selection';\nimport {ListTypeahead, ListTypeaheadInputs} from '../behaviors/list-typeahead/list-typeahead';\nimport {ListNavigation, ListNavigationInputs} from '../behaviors/list-navigation/list-navigation';\nimport {ListFocus, ListFocusInputs} from '../behaviors/list-focus/list-focus';\nimport {computed} from '@angular/core';\nimport {SignalLike} from '../behaviors/signal-like/signal-like';\n\n/** The selection operations that the listbox can perform. */\ninterface SelectOptions {\n select?: boolean;\n toggle?: boolean;\n toggleOne?: boolean;\n selectOne?: boolean;\n selectAll?: boolean;\n selectFromAnchor?: boolean;\n selectFromActive?: boolean;\n toggleFromAnchor?: boolean;\n}\n\n/** Represents the required inputs for a listbox. */\nexport type ListboxInputs<V> = ListNavigationInputs<OptionPattern<V>> &\n ListSelectionInputs<OptionPattern<V>, V> &\n ListTypeaheadInputs &\n ListFocusInputs<OptionPattern<V>> & {\n disabled: SignalLike<boolean>;\n readonly: SignalLike<boolean>;\n };\n\n/** Controls the state of a listbox. */\nexport class ListboxPattern<V> {\n /** Controls navigation for the listbox. */\n navigation: ListNavigation<OptionPattern<V>>;\n\n /** Controls selection for the listbox. */\n selection: ListSelection<OptionPattern<V>, V>;\n\n /** Controls typeahead for the listbox. */\n typeahead: ListTypeahead<OptionPattern<V>>;\n\n /** Controls focus for the listbox. */\n focusManager: ListFocus<OptionPattern<V>>;\n\n /** Whether the list is vertically or horizontally oriented. */\n orientation: SignalLike<'vertical' | 'horizontal'>;\n\n /** Whether the listbox is disabled. */\n disabled: SignalLike<boolean>;\n\n /** Whether the listbox is readonly. */\n readonly: SignalLike<boolean>;\n\n /** The tabindex of the listbox. */\n tabindex = computed(() => this.focusManager.getListTabindex());\n\n /** The id of the current active item. */\n activedescendant = computed(() => this.focusManager.getActiveDescendant());\n\n /** Whether multiple items in the list can be selected at once. */\n multi: SignalLike<boolean>;\n\n /** The number of items in the listbox. */\n setsize = computed(() => this.navigation.inputs.items().length);\n\n /** Whether the listbox selection follows focus. */\n followFocus = computed(() => this.inputs.selectionMode() === 'follow');\n\n /** The key used to navigate to the previous item in the list. */\n prevKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowUp';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** The key used to navigate to the next item in the list. */\n nextKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowDown';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** Represents the space key. Does nothing when the user is actively using typeahead. */\n dynamicSpaceKey = computed(() => (this.typeahead.isTyping() ? '' : ' '));\n\n /** The regexp used to decide if a key should trigger typeahead. */\n typeaheadRegexp = /^.$/; // TODO: Ignore spaces?\n\n /** The keydown event manager for the listbox. */\n keydown = computed(() => {\n const manager = new KeyboardEventManager();\n\n if (this.readonly()) {\n return manager\n .on(this.prevKey, () => this.prev())\n .on(this.nextKey, () => this.next())\n .on('Home', () => this.first())\n .on('End', () => this.last())\n .on(this.typeaheadRegexp, e => this.search(e.key));\n }\n\n if (!this.followFocus()) {\n manager\n .on(this.prevKey, () => this.prev())\n .on(this.nextKey, () => this.next())\n .on('Home', () => this.first())\n .on('End', () => this.last())\n .on(this.typeaheadRegexp, e => this.search(e.key));\n }\n\n if (this.followFocus()) {\n manager\n .on(this.prevKey, () => this.prev({selectOne: true}))\n .on(this.nextKey, () => this.next({selectOne: true}))\n .on('Home', () => this.first({selectOne: true}))\n .on('End', () => this.last({selectOne: true}))\n .on(this.typeaheadRegexp, e => this.search(e.key, {selectOne: true}));\n }\n\n if (this.inputs.multi()) {\n manager\n .on(Modifier.Shift, 'Enter', () => this._updateSelection({selectFromAnchor: true}))\n .on(Modifier.Shift, this.prevKey, () => this.prev({toggle: true}))\n .on(Modifier.Shift, this.nextKey, () => this.next({toggle: true}))\n .on([Modifier.Ctrl, Modifier.Meta], 'A', () => this._updateSelection({selectAll: true}))\n .on([Modifier.Ctrl | Modifier.Shift, Modifier.Meta | Modifier.Shift], 'Home', () =>\n this.first({selectFromActive: true}),\n )\n .on([Modifier.Ctrl | Modifier.Shift, Modifier.Meta | Modifier.Shift], 'End', () =>\n this.last({selectFromActive: true}),\n )\n .on(Modifier.Shift, this.dynamicSpaceKey, () =>\n this._updateSelection({selectFromAnchor: true}),\n );\n }\n\n if (!this.followFocus() && this.inputs.multi()) {\n manager.on(this.dynamicSpaceKey, () => this._updateSelection({toggle: true}));\n manager.on('Enter', () => this._updateSelection({toggle: true}));\n }\n\n if (!this.followFocus() && !this.inputs.multi()) {\n manager.on(this.dynamicSpaceKey, () => this._updateSelection({toggleOne: true}));\n manager.on('Enter', () => this._updateSelection({toggleOne: true}));\n }\n\n if (this.inputs.multi() && this.followFocus()) {\n manager\n .on([Modifier.Ctrl, Modifier.Meta], this.prevKey, () => this.prev())\n .on([Modifier.Ctrl, Modifier.Meta], this.nextKey, () => this.next())\n .on([Modifier.Ctrl, Modifier.Meta], ' ', () => this._updateSelection({toggle: true}))\n .on([Modifier.Ctrl, Modifier.Meta], 'Enter', () => this._updateSelection({toggle: true}))\n .on([Modifier.Ctrl, Modifier.Meta], 'Home', () => this.first()) // TODO: Not in spec but prob should be.\n .on([Modifier.Ctrl, Modifier.Meta], 'End', () => this.last()); // TODO: Not in spec but prob should be.\n }\n\n return manager;\n });\n\n /** The pointerdown event manager for the listbox. */\n pointerdown = computed(() => {\n const manager = new PointerEventManager();\n\n if (this.readonly()) {\n return manager.on(e => this.goto(e));\n }\n\n if (!this.multi() && this.followFocus()) {\n return manager.on(e => this.goto(e, {selectOne: true}));\n }\n\n if (!this.multi() && !this.followFocus()) {\n return manager.on(e => this.goto(e, {toggle: true}));\n }\n\n if (this.multi() && this.followFocus()) {\n return manager\n .on(e => this.goto(e, {selectOne: true}))\n .on(Modifier.Ctrl, e => this.goto(e, {toggle: true}))\n .on(Modifier.Shift, e => this.goto(e, {toggleFromAnchor: true}));\n }\n\n if (this.multi() && !this.followFocus()) {\n return manager\n .on(e => this.goto(e, {toggle: true}))\n .on(Modifier.Shift, e => this.goto(e, {toggleFromAnchor: true}));\n }\n\n return manager;\n });\n\n constructor(readonly inputs: ListboxInputs<V>) {\n this.disabled = inputs.disabled;\n this.readonly = inputs.readonly;\n this.orientation = inputs.orientation;\n this.multi = inputs.multi;\n\n this.navigation = new ListNavigation(inputs);\n this.selection = new ListSelection({...inputs, navigation: this.navigation});\n this.typeahead = new ListTypeahead({...inputs, navigation: this.navigation});\n this.focusManager = new ListFocus({...inputs, navigation: this.navigation});\n }\n\n /** Handles keydown events for the listbox. */\n onKeydown(event: KeyboardEvent) {\n if (!this.disabled()) {\n this.keydown().handle(event);\n }\n }\n\n onPointerdown(event: PointerEvent) {\n if (!this.disabled()) {\n this.pointerdown().handle(event);\n }\n }\n\n /** Navigates to the first option in the listbox. */\n first(opts?: SelectOptions) {\n this.navigation.first();\n this.focusManager.focus();\n this._updateSelection(opts);\n }\n\n /** Navigates to the last option in the listbox. */\n last(opts?: SelectOptions) {\n this.navigation.last();\n this.focusManager.focus();\n this._updateSelection(opts);\n }\n\n /** Navigates to the next option in the listbox. */\n next(opts?: SelectOptions) {\n this.navigation.next();\n this.focusManager.focus();\n this._updateSelection(opts);\n }\n\n /** Navigates to the previous option in the listbox. */\n prev(opts?: SelectOptions) {\n this.navigation.prev();\n this.focusManager.focus();\n this._updateSelection(opts);\n }\n\n /** Navigates to the given item in the listbox. */\n goto(event: PointerEvent, opts?: SelectOptions) {\n const item = this._getItem(event);\n\n if (item) {\n this.navigation.goto(item);\n this.focusManager.focus();\n this._updateSelection(opts);\n }\n }\n\n /** Handles typeahead search navigation for the listbox. */\n search(char: string, opts?: SelectOptions) {\n this.typeahead.search(char);\n this.focusManager.focus();\n this._updateSelection(opts);\n }\n\n /** Handles updating selection for the listbox. */\n private _updateSelection(opts?: SelectOptions) {\n if (opts?.select) {\n this.selection.select();\n }\n if (opts?.toggle) {\n this.selection.toggle();\n }\n if (opts?.toggleOne) {\n this.selection.toggleOne();\n }\n if (opts?.selectOne) {\n this.selection.selectOne();\n }\n if (opts?.selectAll) {\n this.selection.selectAll();\n }\n if (opts?.selectFromAnchor) {\n this.selection.selectFromPrevSelectedItem();\n }\n if (opts?.selectFromActive) {\n this.selection.selectFromActive();\n }\n if (opts?.toggleFromAnchor) {\n this.selection.toggleFromPrevSelectedItem();\n }\n }\n\n private _getItem(e: PointerEvent) {\n if (!(e.target instanceof HTMLElement)) {\n return;\n }\n\n const element = e.target.closest('[role=\"option\"]'); // TODO: Use a different identifier.\n return this.inputs.items().find(i => i.element() === element);\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 {computed} from '@angular/core';\nimport {ListSelection, ListSelectionItem} from '../behaviors/list-selection/list-selection';\nimport {ListTypeaheadItem} from '../behaviors/list-typeahead/list-typeahead';\nimport {ListNavigation, ListNavigationItem} from '../behaviors/list-navigation/list-navigation';\nimport {ListFocus, ListFocusItem} from '../behaviors/list-focus/list-focus';\nimport {SignalLike} from '../behaviors/signal-like/signal-like';\n\n/**\n * Represents the properties exposed by a listbox that need to be accessed by an option.\n * This exists to avoid circular dependency errors between the listbox and option.\n */\ninterface ListboxPattern<V> {\n focusManager: ListFocus<OptionPattern<V>>;\n selection: ListSelection<OptionPattern<V>, V>;\n navigation: ListNavigation<OptionPattern<V>>;\n}\n\n/** Represents the required inputs for an option in a listbox. */\nexport interface OptionInputs<V>\n extends ListNavigationItem,\n ListSelectionItem<V>,\n ListTypeaheadItem,\n ListFocusItem {\n listbox: SignalLike<ListboxPattern<V> | undefined>;\n}\n\n/** Represents an option in a listbox. */\nexport class OptionPattern<V> {\n /** A unique identifier for the option. */\n id: SignalLike<string>;\n\n /** The value of the option. */\n value: SignalLike<V>;\n\n /** The position of the option in the list. */\n index = computed(\n () =>\n this.listbox()\n ?.navigation.inputs.items()\n .findIndex(i => i.id() === this.id()) ?? -1,\n );\n\n /** Whether the option is selected. */\n selected = computed(() => this.listbox()?.selection.inputs.value().includes(this.value()));\n\n /** Whether the option is disabled. */\n disabled: SignalLike<boolean>;\n\n /** The text used by the typeahead search. */\n searchTerm: SignalLike<string>;\n\n /** A reference to the parent listbox. */\n listbox: SignalLike<ListboxPattern<V> | undefined>;\n\n /** The tabindex of the option. */\n tabindex = computed(() => this.listbox()?.focusManager.getItemTabindex(this));\n\n /** The html element that should receive focus. */\n element: SignalLike<HTMLElement>;\n\n constructor(args: OptionInputs<V>) {\n this.id = args.id;\n this.value = args.value;\n this.listbox = args.listbox;\n this.element = args.element;\n this.disabled = args.disabled;\n this.searchTerm = args.searchTerm;\n }\n}\n"],"names":["Modifier"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polyfill-DRXnWbMt.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/src/cdk-experimental/popover-edit/polyfill.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\n/** closest implementation that is able to start from non-Element Nodes. */\nexport function closest(\n element: EventTarget | Element | null | undefined,\n selector: string,\n): Element | null {\n if (!(element instanceof Node)) {\n return null;\n }\n\n let curr: Node | null = element;\n while (curr != null && !(curr instanceof Element)) {\n curr = curr.parentNode;\n }\n\n return curr?.closest(selector) ?? null;\n}\n"],"names":[],"mappings":"AAQA;AACgB,SAAA,OAAO,CACrB,OAAiD,EACjD,QAAgB,EAAA;AAEhB,IAAA,IAAI,EAAE,OAAO,YAAY,IAAI,CAAC,EAAE;AAC9B,QAAA,OAAO,IAAI;;IAGb,IAAI,IAAI,GAAgB,OAAO;IAC/B,OAAO,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,YAAY,OAAO,CAAC,EAAE;AACjD,QAAA,IAAI,GAAG,IAAI,CAAC,UAAU;;IAGxB,OAAO,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI;AACxC;;;;"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export { c as _closest } from './polyfill-c4e47556.mjs';
|
|
1
|
+
import { closest } from './polyfill-DRXnWbMt.mjs';
|
|
3
2
|
import * as i0 from '@angular/core';
|
|
4
3
|
import { inject, NgZone, Injectable, Injector, afterNextRender, ElementRef, EventEmitter, Directive, Input, Renderer2, ViewContainerRef, TemplateRef, NgModule } from '@angular/core';
|
|
5
4
|
import { Subject, pipe, combineLatest, Observable, merge } from 'rxjs';
|
|
@@ -200,10 +199,10 @@ class EditEventDispatcher {
|
|
|
200
199
|
_mapAllRowsToSingleRow(mapper) {
|
|
201
200
|
return this.allRows.pipe(map(mapper), this._startWithNullDistinct);
|
|
202
201
|
}
|
|
203
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
204
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
202
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: EditEventDispatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
203
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: EditEventDispatcher });
|
|
205
204
|
}
|
|
206
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
205
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: EditEventDispatcher, decorators: [{
|
|
207
206
|
type: Injectable
|
|
208
207
|
}], ctorParameters: () => [] });
|
|
209
208
|
function computeHoverContentState([firstRow, lastRow, activeRow, hoverRow,]) {
|
|
@@ -302,10 +301,10 @@ class EditRef {
|
|
|
302
301
|
reset(value) {
|
|
303
302
|
this._form.reset(value || this._revertFormValue);
|
|
304
303
|
}
|
|
305
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
306
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
304
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: EditRef, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
305
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: EditRef });
|
|
307
306
|
}
|
|
308
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
307
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: EditRef, decorators: [{
|
|
309
308
|
type: Injectable
|
|
310
309
|
}], ctorParameters: () => [] });
|
|
311
310
|
|
|
@@ -371,10 +370,10 @@ class FocusDispatcher {
|
|
|
371
370
|
}
|
|
372
371
|
event.preventDefault();
|
|
373
372
|
}
|
|
374
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
375
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
373
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: FocusDispatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
374
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: FocusDispatcher, providedIn: 'root' });
|
|
376
375
|
}
|
|
377
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
376
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: FocusDispatcher, decorators: [{
|
|
378
377
|
type: Injectable,
|
|
379
378
|
args: [{ providedIn: 'root' }]
|
|
380
379
|
}], ctorParameters: () => [] });
|
|
@@ -492,10 +491,10 @@ class CdkEditControl {
|
|
|
492
491
|
_triggerFormSubmit() {
|
|
493
492
|
this.elementRef.nativeElement.dispatchEvent(new Event('submit'));
|
|
494
493
|
}
|
|
495
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
496
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.
|
|
494
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: CdkEditControl, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
495
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.5", type: CdkEditControl, isStandalone: true, selector: "form[cdkEditControl]", inputs: { clickOutBehavior: ["cdkEditControlClickOutBehavior", "clickOutBehavior"], preservedFormValue: ["cdkEditControlPreservedFormValue", "preservedFormValue"], ignoreSubmitUnlessValid: ["cdkEditControlIgnoreSubmitUnlessValid", "ignoreSubmitUnlessValid"] }, outputs: { preservedFormValueChange: "cdkEditControlPreservedFormValueChange" }, host: { listeners: { "ngSubmit": "handleFormSubmit()", "document:click": "handlePossibleClickOut($event)", "keydown": "_handleKeydown($event)" } }, providers: [EditRef], ngImport: i0 });
|
|
497
496
|
}
|
|
498
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
497
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: CdkEditControl, decorators: [{
|
|
499
498
|
type: Directive,
|
|
500
499
|
args: [{
|
|
501
500
|
selector: 'form[cdkEditControl]',
|
|
@@ -521,10 +520,10 @@ class CdkEditRevert {
|
|
|
521
520
|
revertEdit() {
|
|
522
521
|
this.editRef.reset();
|
|
523
522
|
}
|
|
524
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
525
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.
|
|
523
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: CdkEditRevert, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
524
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.5", type: CdkEditRevert, isStandalone: true, selector: "button[cdkEditRevert]", inputs: { type: "type" }, host: { attributes: { "type": "button" }, listeners: { "click": "revertEdit()" } }, ngImport: i0 });
|
|
526
525
|
}
|
|
527
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
526
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: CdkEditRevert, decorators: [{
|
|
528
527
|
type: Directive,
|
|
529
528
|
args: [{
|
|
530
529
|
selector: 'button[cdkEditRevert]',
|
|
@@ -555,10 +554,10 @@ class CdkEditClose {
|
|
|
555
554
|
// the same event sequence if focus was moved quickly.
|
|
556
555
|
this.editRef.close();
|
|
557
556
|
}
|
|
558
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
559
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.
|
|
557
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: CdkEditClose, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
558
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.5", type: CdkEditClose, isStandalone: true, selector: "[cdkEditClose]", host: { listeners: { "click": "closeEdit()", "keydown.enter": "closeEdit()", "keydown.space": "closeEdit()" } }, ngImport: i0 });
|
|
560
559
|
}
|
|
561
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
560
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: CdkEditClose, decorators: [{
|
|
562
561
|
type: Directive,
|
|
563
562
|
args: [{
|
|
564
563
|
selector: '[cdkEditClose]',
|
|
@@ -585,10 +584,10 @@ class EditServices {
|
|
|
585
584
|
overlay = inject(Overlay);
|
|
586
585
|
scrollDispatcher = inject(ScrollDispatcher);
|
|
587
586
|
viewportRuler = inject(ViewportRuler);
|
|
588
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
589
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
587
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: EditServices, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
588
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: EditServices });
|
|
590
589
|
}
|
|
591
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
590
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: EditServices, decorators: [{
|
|
592
591
|
type: Injectable
|
|
593
592
|
}] });
|
|
594
593
|
|
|
@@ -635,10 +634,10 @@ class FocusEscapeNotifierFactory {
|
|
|
635
634
|
create(element) {
|
|
636
635
|
return new FocusEscapeNotifier(element, this._checker, this._ngZone, this._document);
|
|
637
636
|
}
|
|
638
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
639
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
637
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: FocusEscapeNotifierFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
638
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: FocusEscapeNotifierFactory, providedIn: 'root' });
|
|
640
639
|
}
|
|
641
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
640
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: FocusEscapeNotifierFactory, decorators: [{
|
|
642
641
|
type: Injectable,
|
|
643
642
|
args: [{ providedIn: 'root' }]
|
|
644
643
|
}] });
|
|
@@ -751,10 +750,10 @@ class CdkEditable {
|
|
|
751
750
|
.subscribe(this.focusDispatcher.keyObserver);
|
|
752
751
|
});
|
|
753
752
|
}
|
|
754
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
755
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.
|
|
753
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: CdkEditable, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
754
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.5", type: CdkEditable, isStandalone: true, selector: "table[editable], cdk-table[editable], mat-table[editable]", providers: [EditEventDispatcher, EditServices], ngImport: i0 });
|
|
756
755
|
}
|
|
757
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
756
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: CdkEditable, decorators: [{
|
|
758
757
|
type: Directive,
|
|
759
758
|
args: [{
|
|
760
759
|
selector: 'table[editable], cdk-table[editable], mat-table[editable]',
|
|
@@ -952,10 +951,10 @@ class CdkPopoverEdit {
|
|
|
952
951
|
}
|
|
953
952
|
return { width: lastCell.getBoundingClientRect().right - firstCell.getBoundingClientRect().left };
|
|
954
953
|
}
|
|
955
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
956
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.
|
|
954
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: CdkPopoverEdit, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
955
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.5", type: CdkPopoverEdit, isStandalone: true, selector: "[cdkPopoverEdit]:not([cdkPopoverEditTabOut])", inputs: { template: ["cdkPopoverEdit", "template"], context: ["cdkPopoverEditContext", "context"], colspan: ["cdkPopoverEditColspan", "colspan"], disabled: ["cdkPopoverEditDisabled", "disabled"], ariaLabel: ["cdkPopoverEditAriaLabel", "ariaLabel"] }, host: { properties: { "attr.tabindex": "disabled ? null : 0", "attr.aria-haspopup": "!disabled" }, classAttribute: "cdk-popover-edit-cell" }, ngImport: i0 });
|
|
957
956
|
}
|
|
958
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
957
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: CdkPopoverEdit, decorators: [{
|
|
959
958
|
type: Directive,
|
|
960
959
|
args: [{
|
|
961
960
|
selector: '[cdkPopoverEdit]:not([cdkPopoverEditTabOut])',
|
|
@@ -982,10 +981,10 @@ class CdkPopoverEditTabOut extends CdkPopoverEdit {
|
|
|
982
981
|
this.closeEditOverlay();
|
|
983
982
|
});
|
|
984
983
|
}
|
|
985
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
986
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.
|
|
984
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: CdkPopoverEditTabOut, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
985
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.5", type: CdkPopoverEditTabOut, isStandalone: true, selector: "[cdkPopoverEdit][cdkPopoverEditTabOut]", inputs: { template: ["cdkPopoverEdit", "template"], context: ["cdkPopoverEditContext", "context"], colspan: ["cdkPopoverEditColspan", "colspan"], disabled: ["cdkPopoverEditDisabled", "disabled"], ariaLabel: ["cdkPopoverEditAriaLabel", "ariaLabel"] }, host: { properties: { "attr.tabindex": "disabled ? null : 0", "attr.aria-haspopup": "!disabled" }, classAttribute: "cdk-popover-edit-cell" }, usesInheritance: true, ngImport: i0 });
|
|
987
986
|
}
|
|
988
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
987
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: CdkPopoverEditTabOut, decorators: [{
|
|
989
988
|
type: Directive,
|
|
990
989
|
args: [{
|
|
991
990
|
selector: '[cdkPopoverEdit][cdkPopoverEditTabOut]',
|
|
@@ -1069,10 +1068,10 @@ class CdkRowHoverContent {
|
|
|
1069
1068
|
}
|
|
1070
1069
|
});
|
|
1071
1070
|
}
|
|
1072
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
1073
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.
|
|
1071
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: CdkRowHoverContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1072
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.5", type: CdkRowHoverContent, isStandalone: true, selector: "[cdkRowHoverContent]", ngImport: i0 });
|
|
1074
1073
|
}
|
|
1075
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
1074
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: CdkRowHoverContent, decorators: [{
|
|
1076
1075
|
type: Directive,
|
|
1077
1076
|
args: [{
|
|
1078
1077
|
selector: '[cdkRowHoverContent]',
|
|
@@ -1097,10 +1096,10 @@ class CdkEditOpen {
|
|
|
1097
1096
|
this.editEventDispatcher.editing.next(closest(this.elementRef.nativeElement, CELL_SELECTOR));
|
|
1098
1097
|
evt.stopPropagation();
|
|
1099
1098
|
}
|
|
1100
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
1101
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.
|
|
1099
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: CdkEditOpen, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1100
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0-next.5", type: CdkEditOpen, isStandalone: true, selector: "[cdkEditOpen]", host: { listeners: { "click": "openEdit($event)" } }, ngImport: i0 });
|
|
1102
1101
|
}
|
|
1103
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
1102
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: CdkEditOpen, decorators: [{
|
|
1104
1103
|
type: Directive,
|
|
1105
1104
|
args: [{
|
|
1106
1105
|
selector: '[cdkEditOpen]',
|
|
@@ -1121,8 +1120,8 @@ const EXPORTED_DECLARATIONS = [
|
|
|
1121
1120
|
CdkEditOpen,
|
|
1122
1121
|
];
|
|
1123
1122
|
class CdkPopoverEditModule {
|
|
1124
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
1125
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.0-next.
|
|
1123
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: CdkPopoverEditModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1124
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.0-next.5", ngImport: i0, type: CdkPopoverEditModule, imports: [OverlayModule, CdkPopoverEdit,
|
|
1126
1125
|
CdkPopoverEditTabOut,
|
|
1127
1126
|
CdkRowHoverContent,
|
|
1128
1127
|
CdkEditControl,
|
|
@@ -1137,9 +1136,9 @@ class CdkPopoverEditModule {
|
|
|
1137
1136
|
CdkEditClose,
|
|
1138
1137
|
CdkEditable,
|
|
1139
1138
|
CdkEditOpen] });
|
|
1140
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
1139
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: CdkPopoverEditModule, imports: [OverlayModule] });
|
|
1141
1140
|
}
|
|
1142
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.
|
|
1141
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: CdkPopoverEditModule, decorators: [{
|
|
1143
1142
|
type: NgModule,
|
|
1144
1143
|
args: [{
|
|
1145
1144
|
imports: [OverlayModule, ...EXPORTED_DECLARATIONS],
|
|
@@ -1147,5 +1146,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.4",
|
|
|
1147
1146
|
}]
|
|
1148
1147
|
}] });
|
|
1149
1148
|
|
|
1150
|
-
export { CdkEditClose, CdkEditControl, CdkEditOpen, CdkEditRevert, CdkEditable, CdkPopoverEdit, CdkPopoverEditModule, CdkPopoverEditTabOut, CdkRowHoverContent, EditEventDispatcher, EditRef, FocusDispatcher, FormValueContainer, HoverContentState, CELL_SELECTOR as _CELL_SELECTOR };
|
|
1149
|
+
export { CdkEditClose, CdkEditControl, CdkEditOpen, CdkEditRevert, CdkEditable, CdkPopoverEdit, CdkPopoverEditModule, CdkPopoverEditTabOut, CdkRowHoverContent, EditEventDispatcher, EditRef, FocusDispatcher, FormValueContainer, HoverContentState, CELL_SELECTOR as _CELL_SELECTOR, closest as _closest };
|
|
1151
1150
|
//# sourceMappingURL=popover-edit.mjs.map
|