igniteui-webcomponents 6.4.0-alpha.0 → 6.4.0-alpha.1
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/animations/player.d.ts +37 -11
- package/animations/player.js +32 -41
- package/animations/player.js.map +1 -1
- package/components/accordion/accordion.d.ts +18 -12
- package/components/accordion/accordion.js +82 -65
- package/components/accordion/accordion.js.map +1 -1
- package/components/badge/badge.d.ts +8 -0
- package/components/badge/badge.js +16 -1
- package/components/badge/badge.js.map +1 -1
- package/components/badge/themes/badge.base.css.js +1 -1
- package/components/badge/themes/badge.base.css.js.map +1 -1
- package/components/badge/themes/dark/badge.indigo.css.js +1 -1
- package/components/badge/themes/dark/badge.indigo.css.js.map +1 -1
- package/components/badge/themes/shared/badge.bootstrap.css.js +1 -1
- package/components/badge/themes/shared/badge.bootstrap.css.js.map +1 -1
- package/components/badge/themes/shared/badge.common.css.js +1 -1
- package/components/badge/themes/shared/badge.common.css.js.map +1 -1
- package/components/badge/themes/shared/badge.fluent.css.d.ts +1 -0
- package/components/badge/themes/shared/badge.fluent.css.js +3 -0
- package/components/badge/themes/shared/badge.fluent.css.js.map +1 -0
- package/components/badge/themes/shared/badge.indigo.css.js +1 -1
- package/components/badge/themes/shared/badge.indigo.css.js.map +1 -1
- package/components/badge/themes/shared/badge.material.css.d.ts +1 -0
- package/components/badge/themes/shared/badge.material.css.js +3 -0
- package/components/badge/themes/shared/badge.material.css.js.map +1 -0
- package/components/badge/themes/themes.js +6 -4
- package/components/badge/themes/themes.js.map +1 -1
- package/components/banner/banner.d.ts +2 -3
- package/components/banner/banner.js +13 -19
- package/components/banner/banner.js.map +1 -1
- package/components/chat/chat-input.d.ts +1 -0
- package/components/chat/chat-input.js +6 -1
- package/components/chat/chat-input.js.map +1 -1
- package/components/chat/chat-message.js +2 -2
- package/components/chat/chat-message.js.map +1 -1
- package/components/chat/chat.d.ts +1 -0
- package/components/chat/chat.js +4 -2
- package/components/chat/chat.js.map +1 -1
- package/components/chat/types.d.ts +2 -0
- package/components/chat/types.js.map +1 -1
- package/components/chat/utils.d.ts +2 -2
- package/components/chat/utils.js +3 -3
- package/components/chat/utils.js.map +1 -1
- package/components/checkbox/themes/checkbox.base.css.js +1 -1
- package/components/checkbox/themes/checkbox.base.css.js.map +1 -1
- package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js +1 -1
- package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js.map +1 -1
- package/components/combo/combo.d.ts +11 -9
- package/components/combo/combo.js +34 -49
- package/components/combo/combo.js.map +1 -1
- package/components/combo/controllers/navigation.d.ts +39 -43
- package/components/combo/controllers/navigation.js +153 -175
- package/components/combo/controllers/navigation.js.map +1 -1
- package/components/date-range-picker/date-range-picker.d.ts +4 -0
- package/components/date-range-picker/date-range-picker.js.map +1 -1
- package/components/dialog/themes/shared/dialog.common.css.js +1 -1
- package/components/dialog/themes/shared/dialog.common.css.js.map +1 -1
- package/components/expansion-panel/expansion-panel.d.ts +6 -5
- package/components/expansion-panel/expansion-panel.js +33 -42
- package/components/expansion-panel/expansion-panel.js.map +1 -1
- package/components/stepper/step.d.ts +1 -1
- package/components/stepper/step.js +4 -6
- package/components/stepper/step.js.map +1 -1
- package/components/tooltip/themes/tooltip.base.css.js +1 -1
- package/components/tooltip/themes/tooltip.base.css.js.map +1 -1
- package/components/tooltip/tooltip.d.ts +2 -0
- package/components/tooltip/tooltip.js +9 -2
- package/components/tooltip/tooltip.js.map +1 -1
- package/components/tree/tree-item.js +1 -5
- package/components/tree/tree-item.js.map +1 -1
- package/custom-elements.json +1149 -1091
- package/igniteui-webcomponents.css-data.json +1 -1
- package/igniteui-webcomponents.html-data.json +1 -1
- package/package.json +1 -1
- package/web-types.json +2 -2
|
@@ -1,198 +1,176 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { addKeybindings, altKey, arrowDown, arrowUp, endKey, enterKey, escapeKey, homeKey, shiftKey, spaceBar, tabKey, } from '../../common/controllers/key-bindings.js';
|
|
2
|
+
export class ComboNavigationController {
|
|
3
|
+
get active() {
|
|
4
|
+
return this._active;
|
|
5
|
+
}
|
|
6
|
+
set active(value) {
|
|
7
|
+
this._active = value;
|
|
8
|
+
this.combo.requestUpdate();
|
|
9
|
+
}
|
|
8
10
|
get input() {
|
|
9
|
-
return this.
|
|
11
|
+
return this._config.input.value;
|
|
10
12
|
}
|
|
11
|
-
get
|
|
12
|
-
return this.
|
|
13
|
+
get searchInput() {
|
|
14
|
+
return this._config.search.value;
|
|
13
15
|
}
|
|
14
|
-
|
|
15
|
-
this.
|
|
16
|
+
get list() {
|
|
17
|
+
return this._config.list.value;
|
|
16
18
|
}
|
|
17
|
-
|
|
18
|
-
this.
|
|
19
|
+
get _firstItem() {
|
|
20
|
+
return this.state.dataState.findIndex((rec) => !rec.header);
|
|
19
21
|
}
|
|
20
|
-
|
|
21
|
-
this.
|
|
22
|
+
get _lastItem() {
|
|
23
|
+
return this.state.dataState.length - 1;
|
|
22
24
|
}
|
|
23
|
-
|
|
24
|
-
this.
|
|
25
|
+
async _hide() {
|
|
26
|
+
return await this.combo._hide(true);
|
|
25
27
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return item === START_INDEX ? START_INDEX : item;
|
|
28
|
+
async _show() {
|
|
29
|
+
return await this.combo._show(true);
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
_toggleSelection(index) {
|
|
32
|
+
this.combo.toggleSelect(index);
|
|
32
33
|
}
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
_select(index) {
|
|
35
|
+
this.combo.selectByIndex(index);
|
|
35
36
|
}
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
_scrollToActive(behavior) {
|
|
38
|
+
this.list.element(this.active)?.scrollIntoView({
|
|
38
39
|
block: 'center',
|
|
39
|
-
behavior,
|
|
40
|
+
behavior: behavior ?? 'auto',
|
|
40
41
|
});
|
|
41
|
-
|
|
42
|
+
this.list.requestUpdate();
|
|
42
43
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
this.host.requestUpdate();
|
|
49
|
-
}
|
|
50
|
-
constructor(host, state) {
|
|
51
|
-
this.host = host;
|
|
52
|
-
this.state = state;
|
|
53
|
-
this.hostHandlers = new Map(Object.entries({
|
|
54
|
-
Escape: this.escape,
|
|
55
|
-
}));
|
|
56
|
-
this.mainInputHandlers = new Map(Object.entries({
|
|
57
|
-
Escape: this.escape,
|
|
58
|
-
ArrowUp: this.hide,
|
|
59
|
-
ArrowDown: this.mainInputArrowDown,
|
|
60
|
-
Tab: this.tab,
|
|
61
|
-
Enter: this.enter,
|
|
62
|
-
}));
|
|
63
|
-
this.searchInputHandlers = new Map(Object.entries({
|
|
64
|
-
Escape: this.escape,
|
|
65
|
-
ArrowUp: this.escape,
|
|
66
|
-
ArrowDown: this.inputArrowDown,
|
|
67
|
-
Tab: this.inputArrowDown,
|
|
68
|
-
}));
|
|
69
|
-
this.listHandlers = new Map(Object.entries({
|
|
70
|
-
ArrowDown: this.arrowDown,
|
|
71
|
-
ArrowUp: this.arrowUp,
|
|
72
|
-
' ': this.space,
|
|
73
|
-
Enter: this.enter,
|
|
74
|
-
Escape: this.escape,
|
|
75
|
-
Tab: this.tab,
|
|
76
|
-
Home: this.home,
|
|
77
|
-
End: this.end,
|
|
78
|
-
}));
|
|
79
|
-
this._active = START_INDEX;
|
|
80
|
-
this.host.addController(this);
|
|
81
|
-
}
|
|
82
|
-
home(container) {
|
|
83
|
-
this.active = this.firstItem;
|
|
84
|
-
this.scrollToActive(container, 'smooth');
|
|
85
|
-
}
|
|
86
|
-
end(container) {
|
|
87
|
-
this.active = this.lastItem;
|
|
88
|
-
this.scrollToActive(container, 'smooth');
|
|
89
|
-
}
|
|
90
|
-
space() {
|
|
91
|
-
if (this.active === START_INDEX) {
|
|
92
|
-
return;
|
|
44
|
+
_getNearestItem(start, delta) {
|
|
45
|
+
let index = start;
|
|
46
|
+
const items = this.state.dataState;
|
|
47
|
+
while (items[index + delta]?.header) {
|
|
48
|
+
index += delta;
|
|
93
49
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
50
|
+
index += delta;
|
|
51
|
+
return index >= 0 && index < items.length ? index : -1;
|
|
52
|
+
}
|
|
53
|
+
_getNextItem(delta) {
|
|
54
|
+
const next = this._getNearestItem(this._active, delta);
|
|
55
|
+
if (next === -1 && this.active === this._firstItem) {
|
|
56
|
+
this.searchInput.checkVisibility()
|
|
57
|
+
? this.searchInput.focus()
|
|
58
|
+
: this._onEscape();
|
|
97
59
|
}
|
|
60
|
+
this.active = next;
|
|
98
61
|
}
|
|
99
|
-
|
|
100
|
-
this.
|
|
101
|
-
this.
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
this.
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
}
|
|
139
|
-
getNextItem(direction) {
|
|
140
|
-
const next = this.getNearestItem(this.currentItem, direction);
|
|
141
|
-
if (next === -1) {
|
|
142
|
-
if (this.active === this.firstItem) {
|
|
62
|
+
constructor(combo, state, config) {
|
|
63
|
+
this.combo = combo;
|
|
64
|
+
this.state = state;
|
|
65
|
+
this._active = -1;
|
|
66
|
+
this._onSpace = () => {
|
|
67
|
+
if (this._active === -1) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const item = this.state.dataState[this._active];
|
|
71
|
+
if (!item.header) {
|
|
72
|
+
this._toggleSelection(this._active);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
this._onEnter = async () => {
|
|
76
|
+
if (this._active === -1) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const item = this.state.dataState[this._active];
|
|
80
|
+
if (!item.header && this.combo.singleSelect) {
|
|
81
|
+
this._select(this.active);
|
|
82
|
+
}
|
|
83
|
+
if (await this._hide()) {
|
|
84
|
+
this.input.select();
|
|
85
|
+
this.combo.focus();
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
this._onTab = async ({ shiftKey }) => {
|
|
89
|
+
if (this.combo.open) {
|
|
90
|
+
if (shiftKey) {
|
|
91
|
+
this.combo.focus();
|
|
92
|
+
}
|
|
93
|
+
await this._hide();
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
this._onEscape = async () => {
|
|
97
|
+
if (!this.combo.open) {
|
|
98
|
+
this.combo.clearSelection();
|
|
99
|
+
}
|
|
100
|
+
if (await this._hide()) {
|
|
143
101
|
this.input.focus();
|
|
144
|
-
this.active = START_INDEX;
|
|
145
102
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
103
|
+
};
|
|
104
|
+
this._onMainInputArrowDown = async () => {
|
|
105
|
+
if (!this.combo.open && !(await this._show())) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if (this.combo.singleSelect) {
|
|
109
|
+
this._onSearchArrowDown();
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
this._onSearchArrowDown = () => {
|
|
113
|
+
this.list.focus();
|
|
114
|
+
this._onArrowDown();
|
|
115
|
+
};
|
|
116
|
+
this._onHome = () => {
|
|
117
|
+
this.active = this._firstItem;
|
|
118
|
+
this._scrollToActive();
|
|
119
|
+
};
|
|
120
|
+
this._onEnd = () => {
|
|
121
|
+
this.active = this._lastItem;
|
|
122
|
+
this._scrollToActive();
|
|
123
|
+
};
|
|
124
|
+
this._onArrowUp = () => {
|
|
125
|
+
this._getNextItem(-1);
|
|
126
|
+
this._scrollToActive();
|
|
127
|
+
};
|
|
128
|
+
this._onArrowDown = () => {
|
|
129
|
+
this._getNextItem(1);
|
|
130
|
+
this._scrollToActive();
|
|
131
|
+
};
|
|
132
|
+
this.combo.addController(this);
|
|
133
|
+
this._config = config;
|
|
134
|
+
const bindingDefaults = {
|
|
135
|
+
triggers: ['keydownRepeat'],
|
|
136
|
+
};
|
|
137
|
+
const skip = () => this.combo.disabled;
|
|
138
|
+
addKeybindings(this.combo, { skip, bindingDefaults })
|
|
139
|
+
.set(tabKey, this._onTab, { preventDefault: false })
|
|
140
|
+
.set([shiftKey, tabKey], this._onTab, {
|
|
141
|
+
preventDefault: false,
|
|
142
|
+
})
|
|
143
|
+
.set(escapeKey, this._onEscape);
|
|
144
|
+
addKeybindings(this.combo, {
|
|
145
|
+
skip,
|
|
146
|
+
ref: this._config.input,
|
|
147
|
+
bindingDefaults,
|
|
148
|
+
})
|
|
149
|
+
.set(arrowUp, async () => await this._hide())
|
|
150
|
+
.set([altKey, arrowDown], this._onMainInputArrowDown)
|
|
151
|
+
.set(arrowDown, this._onMainInputArrowDown)
|
|
152
|
+
.set(enterKey, this._onEnter);
|
|
153
|
+
addKeybindings(this.combo, {
|
|
154
|
+
skip,
|
|
155
|
+
ref: this._config.search,
|
|
156
|
+
bindingDefaults,
|
|
157
|
+
})
|
|
158
|
+
.set(arrowUp, this._onEscape)
|
|
159
|
+
.set(arrowDown, this._onSearchArrowDown);
|
|
160
|
+
addKeybindings(this.combo, {
|
|
161
|
+
skip,
|
|
162
|
+
ref: this._config.list,
|
|
163
|
+
bindingDefaults,
|
|
164
|
+
})
|
|
165
|
+
.set(arrowUp, this._onArrowUp)
|
|
166
|
+
.set(arrowDown, this._onArrowDown)
|
|
167
|
+
.set(homeKey, this._onHome)
|
|
168
|
+
.set(endKey, this._onEnd)
|
|
169
|
+
.set(spaceBar, this._onSpace)
|
|
170
|
+
.set(enterKey, this._onEnter);
|
|
161
171
|
}
|
|
162
|
-
hostConnected() { }
|
|
163
172
|
hostDisconnected() {
|
|
164
|
-
this.
|
|
165
|
-
}
|
|
166
|
-
navigateTo(item, container) {
|
|
167
|
-
this.active = this.dataState.indexOf(item);
|
|
168
|
-
this.scrollToActive(container, 'smooth');
|
|
169
|
-
}
|
|
170
|
-
navigateHost(event) {
|
|
171
|
-
if (this.hostHandlers.has(event.key)) {
|
|
172
|
-
event.preventDefault();
|
|
173
|
-
this.hostHandlers.get(event.key).call(this);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
navigateMainInput(event, container) {
|
|
177
|
-
event.stopPropagation();
|
|
178
|
-
if (this.mainInputHandlers.has(event.key)) {
|
|
179
|
-
event.preventDefault();
|
|
180
|
-
this.mainInputHandlers.get(event.key).call(this, container);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
navigateSearchInput(event, container) {
|
|
184
|
-
event.stopPropagation();
|
|
185
|
-
if (this.searchInputHandlers.has(event.key)) {
|
|
186
|
-
event.preventDefault();
|
|
187
|
-
this.searchInputHandlers.get(event.key).call(this, container);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
navigateList(event, container) {
|
|
191
|
-
event.stopPropagation();
|
|
192
|
-
if (this.listHandlers.has(event.key)) {
|
|
193
|
-
event.preventDefault();
|
|
194
|
-
this.listHandlers.get(event.key).call(this, container);
|
|
195
|
-
}
|
|
173
|
+
this._active = -1;
|
|
196
174
|
}
|
|
197
175
|
}
|
|
198
176
|
//# sourceMappingURL=navigation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../../src/components/combo/controllers/navigation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReactiveController } from 'lit';\n\nimport type IgcComboListComponent from '../combo-list.js';\nimport type { ComboHost, ComboRecord } from '../types.js';\nimport type { DataController } from './data.js';\n\nconst START_INDEX: Readonly<number> = -1;\n\nenum DIRECTION {\n Up = -1,\n Down = 1,\n}\n\nexport class NavigationController<T extends object>\n implements ReactiveController\n{\n protected hostHandlers = new Map(\n Object.entries({\n Escape: this.escape,\n })\n );\n\n protected mainInputHandlers = new Map(\n Object.entries({\n Escape: this.escape,\n ArrowUp: this.hide,\n ArrowDown: this.mainInputArrowDown,\n Tab: this.tab,\n Enter: this.enter,\n })\n );\n\n protected searchInputHandlers = new Map(\n Object.entries({\n Escape: this.escape,\n ArrowUp: this.escape,\n ArrowDown: this.inputArrowDown,\n Tab: this.inputArrowDown,\n })\n );\n\n protected listHandlers = new Map(\n Object.entries({\n ArrowDown: this.arrowDown,\n ArrowUp: this.arrowUp,\n ' ': this.space,\n Enter: this.enter,\n Escape: this.escape,\n Tab: this.tab,\n Home: this.home,\n End: this.end,\n })\n );\n\n protected _active = START_INDEX;\n\n public get input() {\n // @ts-expect-error protected access\n return this.host.singleSelect ? this.host._input : this.host._searchInput;\n }\n\n public get dataState() {\n return this.state.dataState;\n }\n\n public show() {\n // @ts-expect-error protected access\n this.host._show(true);\n }\n\n public hide() {\n // @ts-expect-error protected access\n this.host._hide(true);\n }\n\n public toggleSelect(index: number) {\n // @ts-expect-error protected access\n this.host.toggleSelect(index);\n }\n\n public select(index: number) {\n // @ts-expect-error protected access\n this.host.selectByIndex(index);\n }\n\n protected get currentItem() {\n const item = this.active;\n return item === START_INDEX ? START_INDEX : item;\n }\n\n protected get firstItem() {\n return this.dataState.findIndex((i: ComboRecord<T>) => i.header !== true);\n }\n\n protected get lastItem() {\n return this.dataState.length - 1;\n }\n\n protected scrollToActive(\n container: IgcComboListComponent,\n behavior: ScrollBehavior = 'auto'\n ) {\n container.element(this.active)?.scrollIntoView({\n block: 'center',\n behavior,\n });\n\n container.requestUpdate();\n }\n\n public get active() {\n return this._active;\n }\n\n public set active(node: number) {\n this._active = node;\n this.host.requestUpdate();\n }\n\n constructor(\n protected host: ComboHost<T>,\n protected state: DataController<T>\n ) {\n this.host.addController(this);\n }\n\n protected home(container: IgcComboListComponent) {\n this.active = this.firstItem;\n this.scrollToActive(container, 'smooth');\n }\n\n protected end(container: IgcComboListComponent) {\n this.active = this.lastItem;\n this.scrollToActive(container, 'smooth');\n }\n\n protected space() {\n if (this.active === START_INDEX) {\n return;\n }\n\n const item = this.dataState[this.active];\n\n if (!item.header) {\n this.toggleSelect(this.active);\n }\n }\n\n protected escape() {\n this.hide();\n this.host.focus();\n }\n\n protected enter() {\n if (this.active === START_INDEX) {\n return;\n }\n\n const item = this.dataState[this.active];\n\n if (!item.header && this.host.singleSelect) {\n this.select(this.active);\n }\n\n this.hide();\n requestAnimationFrame(() => this.input.select());\n this.host.focus();\n }\n\n protected inputArrowDown(container: IgcComboListComponent) {\n container.focus();\n this.arrowDown(container);\n }\n\n protected async mainInputArrowDown(container: IgcComboListComponent) {\n this.show();\n await container.updateComplete;\n\n if (this.host.singleSelect) {\n container.focus();\n this.arrowDown(container);\n }\n }\n\n protected tab() {\n this.hide();\n this.host.blur();\n }\n\n protected arrowDown(container: IgcComboListComponent) {\n this.getNextItem(DIRECTION.Down);\n this.scrollToActive(container);\n }\n\n protected arrowUp(container: IgcComboListComponent) {\n this.getNextItem(DIRECTION.Up);\n this.scrollToActive(container);\n }\n\n protected getNextItem(direction: DIRECTION) {\n const next = this.getNearestItem(this.currentItem, direction);\n\n if (next === -1) {\n if (this.active === this.firstItem) {\n this.input.focus();\n this.active = START_INDEX;\n }\n return;\n }\n\n this.active = next;\n }\n\n protected getNearestItem(startIndex: number, direction: number) {\n let index = startIndex;\n const items = this.dataState;\n\n while (items[index + direction]?.header) {\n index += direction;\n }\n\n index += direction;\n\n if (index >= 0 && index < items.length) {\n return index;\n }\n return -1;\n }\n\n public hostConnected() {}\n\n public hostDisconnected() {\n this.active = START_INDEX;\n }\n\n public navigateTo(item: T, container: IgcComboListComponent) {\n this.active = this.dataState.indexOf(item as ComboRecord<T>);\n this.scrollToActive(container, 'smooth');\n }\n\n public navigateHost(event: KeyboardEvent) {\n if (this.hostHandlers.has(event.key)) {\n event.preventDefault();\n this.hostHandlers.get(event.key)!.call(this);\n }\n }\n\n public navigateMainInput(\n event: KeyboardEvent,\n container: IgcComboListComponent\n ) {\n event.stopPropagation();\n\n if (this.mainInputHandlers.has(event.key)) {\n event.preventDefault();\n this.mainInputHandlers.get(event.key)!.call(this, container);\n }\n }\n\n public navigateSearchInput(\n event: KeyboardEvent,\n container: IgcComboListComponent\n ) {\n event.stopPropagation();\n\n if (this.searchInputHandlers.has(event.key)) {\n event.preventDefault();\n this.searchInputHandlers.get(event.key)!.call(this, container);\n }\n }\n\n public navigateList(event: KeyboardEvent, container: IgcComboListComponent) {\n event.stopPropagation();\n\n if (this.listHandlers.has(event.key)) {\n event.preventDefault();\n this.listHandlers.get(event.key)!.call(this, container);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../../src/components/combo/controllers/navigation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReactiveController } from 'lit';\nimport type { Ref } from 'lit/directives/ref.js';\nimport {\n addKeybindings,\n altKey,\n arrowDown,\n arrowUp,\n endKey,\n enterKey,\n escapeKey,\n homeKey,\n type KeyBindingOptions,\n shiftKey,\n spaceBar,\n tabKey,\n} from '../../common/controllers/key-bindings.js';\nimport type IgcInputComponent from '../../input/input.js';\nimport type IgcComboListComponent from '../combo-list.js';\nimport type { ComboHost } from '../types.js';\nimport type { DataController } from './data.js';\n\ntype ComboNavigationConfig = {\n /** The primary input of the combo component. */\n input: Ref<IgcInputComponent>;\n /** The search input of the combo component. */\n search: Ref<IgcInputComponent>;\n /** The combo virtualized dropdown list. */\n list: Ref<IgcComboListComponent>;\n};\n\nexport class ComboNavigationController<T extends object> {\n private _active = -1;\n private _config: ComboNavigationConfig;\n\n public get active(): number {\n return this._active;\n }\n\n public set active(value: number) {\n this._active = value;\n this.combo.requestUpdate();\n }\n\n public get input(): IgcInputComponent {\n return this._config.input.value!;\n }\n\n public get searchInput(): IgcInputComponent {\n return this._config.search.value!;\n }\n\n public get list(): IgcComboListComponent {\n return this._config.list.value!;\n }\n\n protected get _firstItem(): number {\n return this.state.dataState.findIndex((rec) => !rec.header);\n }\n\n protected get _lastItem(): number {\n return this.state.dataState.length - 1;\n }\n\n protected async _hide(): Promise<boolean> {\n // @ts-expect-error: protected access\n return await this.combo._hide(true);\n }\n\n protected async _show(): Promise<boolean> {\n // @ts-expect-error: protected access\n return await this.combo._show(true);\n }\n\n protected _toggleSelection(index: number): void {\n // @ts-expect-error protected access\n this.combo.toggleSelect(index);\n }\n\n protected _select(index: number): void {\n // @ts-expect-error: protected access\n this.combo.selectByIndex(index);\n }\n\n private _onSpace = (): void => {\n if (this._active === -1) {\n return;\n }\n\n const item = this.state.dataState[this._active];\n if (!item.header) {\n this._toggleSelection(this._active);\n }\n };\n\n private _onEnter = async (): Promise<void> => {\n if (this._active === -1) {\n return;\n }\n\n const item = this.state.dataState[this._active];\n\n if (!item.header && this.combo.singleSelect) {\n this._select(this.active);\n }\n\n if (await this._hide()) {\n this.input.select();\n this.combo.focus();\n }\n };\n\n private _onTab = async ({ shiftKey }: KeyboardEvent): Promise<void> => {\n if (this.combo.open) {\n if (shiftKey) {\n // Move focus to the main input of the combo\n // before the Shift+Tab behavior kicks in.\n this.combo.focus();\n }\n await this._hide();\n }\n };\n\n private _onEscape = async (): Promise<void> => {\n if (!this.combo.open) {\n this.combo.clearSelection();\n }\n\n if (await this._hide()) {\n this.input.focus();\n }\n };\n\n private _onMainInputArrowDown = async (): Promise<void> => {\n if (!this.combo.open && !(await this._show())) {\n return;\n }\n\n if (this.combo.singleSelect) {\n this._onSearchArrowDown();\n }\n };\n\n private _onSearchArrowDown = (): void => {\n this.list.focus();\n this._onArrowDown();\n };\n\n private _onHome = (): void => {\n this.active = this._firstItem;\n this._scrollToActive();\n };\n\n private _onEnd = (): void => {\n this.active = this._lastItem;\n this._scrollToActive();\n };\n\n private _onArrowUp = (): void => {\n this._getNextItem(-1);\n this._scrollToActive();\n };\n\n private _onArrowDown = (): void => {\n this._getNextItem(1);\n this._scrollToActive();\n };\n\n private _scrollToActive(behavior?: ScrollBehavior): void {\n this.list.element(this.active)?.scrollIntoView({\n block: 'center',\n behavior: behavior ?? 'auto',\n });\n\n this.list.requestUpdate();\n }\n\n private _getNearestItem(start: number, delta: -1 | 1): number {\n let index = start;\n const items = this.state.dataState;\n\n while (items[index + delta]?.header) {\n index += delta;\n }\n\n index += delta;\n\n return index >= 0 && index < items.length ? index : -1;\n }\n\n private _getNextItem(delta: -1 | 1): void {\n const next = this._getNearestItem(this._active, delta);\n\n if (next === -1 && this.active === this._firstItem) {\n this.searchInput.checkVisibility() // Non single-select or disable-filtering combo configuration\n ? this.searchInput.focus() // Delegate to search input handlers\n : this._onEscape(); // Close dropdown and move focus back to main input\n }\n\n this.active = next;\n }\n\n constructor(\n protected combo: ComboHost<T>,\n protected state: DataController<T>,\n config: ComboNavigationConfig\n ) {\n this.combo.addController(this as ReactiveController);\n this._config = config;\n\n const bindingDefaults = {\n triggers: ['keydownRepeat'],\n } as KeyBindingOptions;\n\n const skip = (): boolean => this.combo.disabled;\n\n // Combo\n addKeybindings(this.combo, { skip, bindingDefaults })\n .set(tabKey, this._onTab, { preventDefault: false })\n .set([shiftKey, tabKey], this._onTab, {\n preventDefault: false,\n })\n .set(escapeKey, this._onEscape);\n\n // Main input\n addKeybindings(this.combo, {\n skip,\n ref: this._config.input,\n bindingDefaults,\n })\n .set(arrowUp, async () => await this._hide())\n .set([altKey, arrowDown], this._onMainInputArrowDown)\n .set(arrowDown, this._onMainInputArrowDown)\n .set(enterKey, this._onEnter);\n\n // Search input\n addKeybindings(this.combo, {\n skip,\n ref: this._config.search,\n bindingDefaults,\n })\n .set(arrowUp, this._onEscape)\n .set(arrowDown, this._onSearchArrowDown);\n\n // List\n addKeybindings(this.combo, {\n skip,\n ref: this._config.list,\n bindingDefaults,\n })\n .set(arrowUp, this._onArrowUp)\n .set(arrowDown, this._onArrowDown)\n .set(homeKey, this._onHome)\n .set(endKey, this._onEnd)\n .set(spaceBar, this._onSpace)\n .set(enterKey, this._onEnter);\n }\n\n public hostDisconnected(): void {\n this._active = -1;\n }\n}\n"]}
|
|
@@ -151,6 +151,10 @@ export default class IgcDateRangePickerComponent extends IgcDateRangePickerCompo
|
|
|
151
151
|
private readonly _endSuffixes;
|
|
152
152
|
private readonly _actions;
|
|
153
153
|
private readonly _headerDateSlotItems;
|
|
154
|
+
/**
|
|
155
|
+
* The value of the picker
|
|
156
|
+
* @attr
|
|
157
|
+
*/
|
|
154
158
|
set value(value: DateRangeValue | string | null | undefined);
|
|
155
159
|
get value(): DateRangeValue | null;
|
|
156
160
|
/**
|