@ukho/admiralty-core 4.0.0-next.7 → 4.0.0-next.8
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/dist/admiralty/admiralty.esm.js +1 -1
- package/dist/admiralty/admiralty.esm.js.map +1 -1
- package/dist/admiralty/{p-0747bd00.entry.js → p-1e01bb1c.entry.js} +2 -2
- package/dist/admiralty/{p-0747bd00.entry.js.map → p-1e01bb1c.entry.js.map} +1 -1
- package/dist/admiralty/{p-e11fb21b.entry.js → p-6dde3d41.entry.js} +2 -2
- package/dist/admiralty/p-6dde3d41.entry.js.map +1 -0
- package/dist/admiralty/{p-f8e1cfce.entry.js → p-a0466b05.entry.js} +2 -2
- package/dist/admiralty/p-a0466b05.entry.js.map +1 -0
- package/dist/admiralty/p-f2f2c51d.entry.js +2 -0
- package/dist/admiralty/p-f2f2c51d.entry.js.map +1 -0
- package/dist/cjs/admiralty-autocomplete.cjs.entry.js +4 -3
- package/dist/cjs/admiralty-autocomplete.cjs.entry.js.map +1 -1
- package/dist/cjs/admiralty-input.cjs.entry.js +2 -2
- package/dist/cjs/admiralty-input.cjs.entry.js.map +1 -1
- package/dist/cjs/admiralty-progress-bar.cjs.entry.js +9 -3
- package/dist/cjs/admiralty-progress-bar.cjs.entry.js.map +1 -1
- package/dist/cjs/admiralty-tab-group.cjs.entry.js +17 -5
- package/dist/cjs/admiralty-tab-group.cjs.entry.js.map +1 -1
- package/dist/cjs/admiralty.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +1 -3
- package/dist/collection/components/autocomplete/autocomplete.js +5 -4
- package/dist/collection/components/autocomplete/autocomplete.js.map +1 -1
- package/dist/collection/components/input/input.js +2 -2
- package/dist/collection/components/input/input.js.map +1 -1
- package/dist/collection/components/progress-bar/progress-bar.js +9 -3
- package/dist/collection/components/progress-bar/progress-bar.js.map +1 -1
- package/dist/components/admiralty-autocomplete.js +4 -3
- package/dist/components/admiralty-autocomplete.js.map +1 -1
- package/dist/components/admiralty-input.js +121 -1
- package/dist/components/admiralty-input.js.map +1 -1
- package/dist/components/admiralty-progress-bar.js +9 -3
- package/dist/components/admiralty-progress-bar.js.map +1 -1
- package/dist/components/admiralty-tab-group.js +13 -1
- package/dist/components/admiralty-tab-group.js.map +1 -1
- package/dist/esm/admiralty-autocomplete.entry.js +4 -3
- package/dist/esm/admiralty-autocomplete.entry.js.map +1 -1
- package/dist/esm/admiralty-input.entry.js +2 -2
- package/dist/esm/admiralty-input.entry.js.map +1 -1
- package/dist/esm/admiralty-progress-bar.entry.js +9 -3
- package/dist/esm/admiralty-progress-bar.entry.js.map +1 -1
- package/dist/esm/admiralty-tab-group.entry.js +13 -1
- package/dist/esm/admiralty-tab-group.entry.js.map +1 -1
- package/dist/esm/admiralty.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/autocomplete/autocomplete.d.ts +1 -1
- package/dist/types/components/progress-bar/progress-bar.d.ts +3 -1
- package/dist/types/components.d.ts +2 -94
- package/docs/docs.json +3 -218
- package/package.json +2 -2
- package/dist/admiralty/p-26ffce79.entry.js +0 -2
- package/dist/admiralty/p-26ffce79.entry.js.map +0 -1
- package/dist/admiralty/p-a4bd6904.js +0 -2
- package/dist/admiralty/p-a4bd6904.js.map +0 -1
- package/dist/admiralty/p-b7153ca1.entry.js +0 -2
- package/dist/admiralty/p-b7153ca1.entry.js.map +0 -1
- package/dist/admiralty/p-d701641c.entry.js +0 -2
- package/dist/admiralty/p-d701641c.entry.js.map +0 -1
- package/dist/admiralty/p-e11fb21b.entry.js.map +0 -1
- package/dist/admiralty/p-f8e1cfce.entry.js.map +0 -1
- package/dist/cjs/Keys-019752ee.js +0 -16
- package/dist/cjs/Keys-019752ee.js.map +0 -1
- package/dist/cjs/admiralty-type-ahead-item.cjs.entry.js +0 -23
- package/dist/cjs/admiralty-type-ahead-item.cjs.entry.js.map +0 -1
- package/dist/cjs/admiralty-type-ahead.cjs.entry.js +0 -204
- package/dist/cjs/admiralty-type-ahead.cjs.entry.js.map +0 -1
- package/dist/collection/components/type-ahead/type-ahead.css +0 -106
- package/dist/collection/components/type-ahead/type-ahead.js +0 -329
- package/dist/collection/components/type-ahead/type-ahead.js.map +0 -1
- package/dist/collection/components/type-ahead-item/type-ahead-item.css +0 -3
- package/dist/collection/components/type-ahead-item/type-ahead-item.js +0 -43
- package/dist/collection/components/type-ahead-item/type-ahead-item.js.map +0 -1
- package/dist/components/admiralty-type-ahead-item.d.ts +0 -11
- package/dist/components/admiralty-type-ahead-item.js +0 -38
- package/dist/components/admiralty-type-ahead-item.js.map +0 -1
- package/dist/components/admiralty-type-ahead.d.ts +0 -11
- package/dist/components/admiralty-type-ahead.js +0 -254
- package/dist/components/admiralty-type-ahead.js.map +0 -1
- package/dist/components/p-1a2059bb.js +0 -125
- package/dist/components/p-1a2059bb.js.map +0 -1
- package/dist/components/p-a4bd6904.js +0 -16
- package/dist/components/p-a4bd6904.js.map +0 -1
- package/dist/esm/Keys-acfce4b9.js +0 -16
- package/dist/esm/Keys-acfce4b9.js.map +0 -1
- package/dist/esm/admiralty-type-ahead-item.entry.js +0 -19
- package/dist/esm/admiralty-type-ahead-item.entry.js.map +0 -1
- package/dist/esm/admiralty-type-ahead.entry.js +0 -200
- package/dist/esm/admiralty-type-ahead.entry.js.map +0 -1
- package/dist/types/components/type-ahead/type-ahead.d.ts +0 -72
- package/dist/types/components/type-ahead-item/type-ahead-item.d.ts +0 -4
|
@@ -1,329 +0,0 @@
|
|
|
1
|
-
import { Host, h, forceUpdate } from "@stencil/core";
|
|
2
|
-
import { Keys } from "../Keys";
|
|
3
|
-
export class TypeAheadComponent {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.internalId = ++id;
|
|
6
|
-
this.filterList = [];
|
|
7
|
-
this.selectedItemIndex = -1;
|
|
8
|
-
this.isFocused = false;
|
|
9
|
-
this.isSilenced = false;
|
|
10
|
-
this.isAlternateStatusSection = false;
|
|
11
|
-
this.originalSearch = '';
|
|
12
|
-
this.hasBeenFocusedAtLeastOnce = false;
|
|
13
|
-
this.filterResult = new Array();
|
|
14
|
-
this.value = undefined;
|
|
15
|
-
this.label = undefined;
|
|
16
|
-
this.hint = undefined;
|
|
17
|
-
this.placeholder = undefined;
|
|
18
|
-
this.resultsOnInitFocus = false;
|
|
19
|
-
}
|
|
20
|
-
get inputValue() {
|
|
21
|
-
return this.inputControl.value.toString();
|
|
22
|
-
}
|
|
23
|
-
set inputValue(value) {
|
|
24
|
-
this.inputControl.value = value;
|
|
25
|
-
}
|
|
26
|
-
componentDidLoad() {
|
|
27
|
-
if (this.value) {
|
|
28
|
-
this.inputValue = this.value;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
connectedCallback() {
|
|
32
|
-
this.mutation = new MutationObserver(() => {
|
|
33
|
-
this.populateFilterList();
|
|
34
|
-
forceUpdate(this);
|
|
35
|
-
});
|
|
36
|
-
this.mutation.observe(this.el, {
|
|
37
|
-
childList: true,
|
|
38
|
-
subtree: true,
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
disconnectedCallback() {
|
|
42
|
-
if (this.mutation) {
|
|
43
|
-
this.mutation.disconnect();
|
|
44
|
-
this.mutation = undefined;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
populateFilterList() {
|
|
48
|
-
const slotItems = this.el.querySelectorAll('admiralty-type-ahead-item');
|
|
49
|
-
this.filterList = [];
|
|
50
|
-
slotItems.forEach(el => {
|
|
51
|
-
this.filterList.push(el.getAttribute('value'));
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
handleFocusIn() {
|
|
55
|
-
if (this.resultsOnInitFocus && !this.hasBeenFocusedAtLeastOnce) {
|
|
56
|
-
this.performFilter('');
|
|
57
|
-
this.hasBeenFocusedAtLeastOnce = true;
|
|
58
|
-
}
|
|
59
|
-
this.isFocused = true;
|
|
60
|
-
this.isSilenced = false;
|
|
61
|
-
}
|
|
62
|
-
handleFocusOut() {
|
|
63
|
-
this.isFocused = false;
|
|
64
|
-
this.statusText = null;
|
|
65
|
-
this.isSilenced = true;
|
|
66
|
-
}
|
|
67
|
-
textChanged(value) {
|
|
68
|
-
this.originalSearch = value;
|
|
69
|
-
this.performFilter(value);
|
|
70
|
-
this.isSilenced = false;
|
|
71
|
-
this.valueChanged.emit(value);
|
|
72
|
-
}
|
|
73
|
-
handleKeyPressed(event) {
|
|
74
|
-
event.stopImmediatePropagation();
|
|
75
|
-
if (event.key === Keys.UP_ARROW || event.key === Keys.DOWN_ARROW) {
|
|
76
|
-
this.navigateSuggestions(event.key);
|
|
77
|
-
this.updateScroll();
|
|
78
|
-
}
|
|
79
|
-
else if (event.key !== Keys.ENTER) {
|
|
80
|
-
this.textChanged(this.inputValue);
|
|
81
|
-
this.selectCurrentItem();
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
handleKeyDown(event) {
|
|
85
|
-
event.stopImmediatePropagation();
|
|
86
|
-
if (event.key === Keys.TAB || event.key === Keys.ENTER) {
|
|
87
|
-
this.selectCurrentItem();
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
handleItemSelected(value) {
|
|
91
|
-
this.inputValue = value;
|
|
92
|
-
this.textChanged(value);
|
|
93
|
-
this.filterResult = new Array();
|
|
94
|
-
this.selectionChanged.emit(value);
|
|
95
|
-
}
|
|
96
|
-
performFilter(value) {
|
|
97
|
-
const filter = (filterList, text) => {
|
|
98
|
-
const filterResult = filterList.filter(value => {
|
|
99
|
-
return text === null || text.length < 1 || value.toLowerCase().indexOf(text.toLowerCase()) > -1;
|
|
100
|
-
});
|
|
101
|
-
return filterResult;
|
|
102
|
-
};
|
|
103
|
-
this.filterResult = filter(this.filterList, value);
|
|
104
|
-
this.selectedItemIndex = -1;
|
|
105
|
-
}
|
|
106
|
-
addHighlight() {
|
|
107
|
-
if (this.selectedItemIndex > -1) {
|
|
108
|
-
const listItem = this.el.querySelector(`#${this.getListItemId(this.selectedItemIndex)}`);
|
|
109
|
-
listItem.classList.add('highlighted');
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
removeHighlight(i) {
|
|
113
|
-
if (i > -1) {
|
|
114
|
-
const listItem = this.el.querySelector(`#${this.getListItemId(i)}`);
|
|
115
|
-
listItem.classList.remove('highlighted');
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
selectCurrentItem() {
|
|
119
|
-
if (this.selectedItemIndex >= 0) {
|
|
120
|
-
const selectedItemText = this.filterResult[this.selectedItemIndex];
|
|
121
|
-
this.handleItemSelected(selectedItemText);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
handleItemHovered(index) {
|
|
125
|
-
this.removeHighlight(this.selectedItemIndex);
|
|
126
|
-
this.selectedItemIndex = index;
|
|
127
|
-
this.addHighlight();
|
|
128
|
-
}
|
|
129
|
-
handleComponentFocusOut() {
|
|
130
|
-
var _a;
|
|
131
|
-
// Ensure dropdown closed on clicking or tabbing away from this component
|
|
132
|
-
if (((_a = this.filterResult) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
133
|
-
this.filterResult = new Array();
|
|
134
|
-
this.hasBeenFocusedAtLeastOnce = false;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Check if the selected option is in view, and scroll if not
|
|
139
|
-
*/
|
|
140
|
-
updateScroll() {
|
|
141
|
-
const container = this.listContainer;
|
|
142
|
-
const ul = container.querySelector('ul');
|
|
143
|
-
const selectedItem = Array.from(ul.childNodes).find((item) => item.ariaPosInSet === `${this.selectedItemIndex + 1}`);
|
|
144
|
-
if (container && selectedItem && container.scrollHeight + container.clientHeight) {
|
|
145
|
-
selectedItem.scrollIntoView();
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
navigateSuggestions(key) {
|
|
149
|
-
if (key === Keys.UP_ARROW) {
|
|
150
|
-
this.removeHighlight(this.selectedItemIndex);
|
|
151
|
-
this.selectedItemIndex--;
|
|
152
|
-
if (this.selectedItemIndex === -2) {
|
|
153
|
-
this.selectedItemIndex = this.filterResult.length - 1;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
if (key === Keys.DOWN_ARROW) {
|
|
157
|
-
this.removeHighlight(this.selectedItemIndex);
|
|
158
|
-
this.selectedItemIndex++;
|
|
159
|
-
if (this.selectedItemIndex > this.filterResult.length - 1) {
|
|
160
|
-
this.selectedItemIndex = -1;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
if (this.selectedItemIndex === -1) {
|
|
164
|
-
this.inputValue = this.originalSearch;
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
167
|
-
const value = this.filterResult[this.selectedItemIndex];
|
|
168
|
-
this.inputValue = value;
|
|
169
|
-
this.addHighlight();
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
getListItemId(i) {
|
|
173
|
-
const id = this.getId();
|
|
174
|
-
return `${id}-list-item-${i}`;
|
|
175
|
-
}
|
|
176
|
-
getId() {
|
|
177
|
-
return this.el.id != '' ? this.el.id : `admiralty-typeahead-${this.internalId}`;
|
|
178
|
-
}
|
|
179
|
-
render() {
|
|
180
|
-
const id = this.getId();
|
|
181
|
-
const inputId = `${id}-input`;
|
|
182
|
-
const hintId = `${id}-assistive-hint`;
|
|
183
|
-
const listId = `${id}-list`;
|
|
184
|
-
return (h(Host, { key: 'a31dfc130539fc7998a1a858780180c3f58a3dca', onFocusout: _ev => this.handleComponentFocusOut() }, h("div", { key: '2b1d16a096aedc73730e3456a786c79bbb649087', class: "visually-hidden" }, h("div", { key: '7a4ffe9d200afbb32759292ad537af595b46d377', class: "results-status-a", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !this.isSilenced && this.isAlternateStatusSection ? this.statusText : ''), h("div", { key: '246dd3d76841a08ec9304156956279b1319ae956', class: "results-status-b", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !this.isSilenced && !this.isAlternateStatusSection ? this.statusText : '')), h("admiralty-input", { key: '9226118ea71b0c055c3b8b12bdaf183b8d0f1be0', type: "text", ref: el => (this.inputControl = el), id: inputId, label: this.label, hint: this.hint, placeholder: this.placeholder, class: "filterTextInput", onKeyUp: ev => this.handleKeyPressed(ev), onKeyDown: ev => this.handleKeyDown(ev), onFocusin: _ev => this.handleFocusIn(), onFocusout: _ev => this.handleFocusOut(), "aria-expanded": this.isFocused && this.filterResult.length > 0 }), h("span", { key: '2802b19f095e15fef7e346311014f4944578804d', id: hintId, class: "visually-hidden" }, "When autocomplete results are available use up and down arrows to review and enter to select. Touch device users, explore by touch or with swipe gestures."), this.filterResult.length > 0 ? (h("div", { class: "typeahead-list-container", ref: el => (this.listContainer = el) }, h("ul", { class: "typeahead-list", id: listId, role: "listbox" }, this.filterResult.map((item, i) => (h("li", { id: this.getListItemId(i), onMouseDown: _ev => this.handleItemSelected(item), onMouseOver: _ev => this.handleItemHovered(i), "aria-selected": i === this.selectedItemIndex, role: "option", tabindex: "-1", "aria-posinset": i + 1, "aria-setsize": this.filterResult.length }, item)))))) : null, h("slot", { key: '52fb739eff8fe71caa9e39ae6add139cbb4db1a7' })));
|
|
185
|
-
}
|
|
186
|
-
static get is() { return "admiralty-type-ahead"; }
|
|
187
|
-
static get encapsulation() { return "scoped"; }
|
|
188
|
-
static get originalStyleUrls() {
|
|
189
|
-
return {
|
|
190
|
-
"$": ["type-ahead.scss"]
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
static get styleUrls() {
|
|
194
|
-
return {
|
|
195
|
-
"$": ["type-ahead.css"]
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
static get properties() {
|
|
199
|
-
return {
|
|
200
|
-
"value": {
|
|
201
|
-
"type": "string",
|
|
202
|
-
"mutable": false,
|
|
203
|
-
"complexType": {
|
|
204
|
-
"original": "string",
|
|
205
|
-
"resolved": "string",
|
|
206
|
-
"references": {}
|
|
207
|
-
},
|
|
208
|
-
"required": false,
|
|
209
|
-
"optional": false,
|
|
210
|
-
"docs": {
|
|
211
|
-
"tags": [],
|
|
212
|
-
"text": "The value of the textinput"
|
|
213
|
-
},
|
|
214
|
-
"attribute": "value",
|
|
215
|
-
"reflect": false
|
|
216
|
-
},
|
|
217
|
-
"label": {
|
|
218
|
-
"type": "string",
|
|
219
|
-
"mutable": false,
|
|
220
|
-
"complexType": {
|
|
221
|
-
"original": "string",
|
|
222
|
-
"resolved": "string",
|
|
223
|
-
"references": {}
|
|
224
|
-
},
|
|
225
|
-
"required": false,
|
|
226
|
-
"optional": false,
|
|
227
|
-
"docs": {
|
|
228
|
-
"tags": [],
|
|
229
|
-
"text": "The text content of the label for the input box"
|
|
230
|
-
},
|
|
231
|
-
"attribute": "label",
|
|
232
|
-
"reflect": false
|
|
233
|
-
},
|
|
234
|
-
"hint": {
|
|
235
|
-
"type": "string",
|
|
236
|
-
"mutable": false,
|
|
237
|
-
"complexType": {
|
|
238
|
-
"original": "string",
|
|
239
|
-
"resolved": "string",
|
|
240
|
-
"references": {}
|
|
241
|
-
},
|
|
242
|
-
"required": false,
|
|
243
|
-
"optional": false,
|
|
244
|
-
"docs": {
|
|
245
|
-
"tags": [],
|
|
246
|
-
"text": "The hint which will be used under the label to describe the input."
|
|
247
|
-
},
|
|
248
|
-
"attribute": "hint",
|
|
249
|
-
"reflect": false
|
|
250
|
-
},
|
|
251
|
-
"placeholder": {
|
|
252
|
-
"type": "string",
|
|
253
|
-
"mutable": false,
|
|
254
|
-
"complexType": {
|
|
255
|
-
"original": "string",
|
|
256
|
-
"resolved": "string",
|
|
257
|
-
"references": {}
|
|
258
|
-
},
|
|
259
|
-
"required": false,
|
|
260
|
-
"optional": false,
|
|
261
|
-
"docs": {
|
|
262
|
-
"tags": [],
|
|
263
|
-
"text": "The placeholder text for the input field"
|
|
264
|
-
},
|
|
265
|
-
"attribute": "placeholder",
|
|
266
|
-
"reflect": false
|
|
267
|
-
},
|
|
268
|
-
"resultsOnInitFocus": {
|
|
269
|
-
"type": "boolean",
|
|
270
|
-
"mutable": false,
|
|
271
|
-
"complexType": {
|
|
272
|
-
"original": "boolean",
|
|
273
|
-
"resolved": "boolean",
|
|
274
|
-
"references": {}
|
|
275
|
-
},
|
|
276
|
-
"required": false,
|
|
277
|
-
"optional": false,
|
|
278
|
-
"docs": {
|
|
279
|
-
"tags": [],
|
|
280
|
-
"text": "Optional property to show results when input box is initally focused"
|
|
281
|
-
},
|
|
282
|
-
"attribute": "results-on-init-focus",
|
|
283
|
-
"reflect": false,
|
|
284
|
-
"defaultValue": "false"
|
|
285
|
-
}
|
|
286
|
-
};
|
|
287
|
-
}
|
|
288
|
-
static get states() {
|
|
289
|
-
return {
|
|
290
|
-
"filterResult": {}
|
|
291
|
-
};
|
|
292
|
-
}
|
|
293
|
-
static get events() {
|
|
294
|
-
return [{
|
|
295
|
-
"method": "selectionChanged",
|
|
296
|
-
"name": "selectionChanged",
|
|
297
|
-
"bubbles": true,
|
|
298
|
-
"cancelable": true,
|
|
299
|
-
"composed": true,
|
|
300
|
-
"docs": {
|
|
301
|
-
"tags": [],
|
|
302
|
-
"text": "Optional function that will be executed when the user selects an item from the typeahead"
|
|
303
|
-
},
|
|
304
|
-
"complexType": {
|
|
305
|
-
"original": "string",
|
|
306
|
-
"resolved": "string",
|
|
307
|
-
"references": {}
|
|
308
|
-
}
|
|
309
|
-
}, {
|
|
310
|
-
"method": "valueChanged",
|
|
311
|
-
"name": "valueChanged",
|
|
312
|
-
"bubbles": true,
|
|
313
|
-
"cancelable": true,
|
|
314
|
-
"composed": true,
|
|
315
|
-
"docs": {
|
|
316
|
-
"tags": [],
|
|
317
|
-
"text": "Event that is fired whenever the value of the typeahead changes\ne.g. selection from the dropdown or manually typed entry"
|
|
318
|
-
},
|
|
319
|
-
"complexType": {
|
|
320
|
-
"original": "string",
|
|
321
|
-
"resolved": "string",
|
|
322
|
-
"references": {}
|
|
323
|
-
}
|
|
324
|
-
}];
|
|
325
|
-
}
|
|
326
|
-
static get elementRef() { return "el"; }
|
|
327
|
-
}
|
|
328
|
-
let id = 0;
|
|
329
|
-
//# sourceMappingURL=type-ahead.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"type-ahead.js","sourceRoot":"","sources":["../../../src/components/type-ahead/type-ahead.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, EventEmitter, Host, Prop, Event, h, State, Element, forceUpdate } from '@stencil/core';\nimport { Keys } from '../Keys';\n\n@Component({\n tag: 'admiralty-type-ahead',\n styleUrl: 'type-ahead.scss',\n scoped: true,\n})\nexport class TypeAheadComponent {\n private internalId = ++id;\n\n @Element() el: HTMLElement;\n\n listContainer!: HTMLDivElement;\n inputControl!: HTMLAdmiraltyInputElement;\n\n @State() filterResult: string[] = new Array<string>();\n\n filterList: Array<string> = [];\n\n selectedItemIndex = -1;\n isFocused = false;\n\n isSilenced = false;\n isAlternateStatusSection = false;\n statusText: string;\n\n private mutation: MutationObserver;\n\n private originalSearch = '';\n private hasBeenFocusedAtLeastOnce = false;\n\n private get inputValue() {\n return this.inputControl.value.toString();\n }\n\n private set inputValue(value: string) {\n this.inputControl.value = value;\n }\n\n /**\n * The value of the textinput\n */\n @Prop() value: string;\n\n /**\n * The text content of the label for the input box\n */\n @Prop() label: string;\n\n /**\n * The hint which will be used under the label to describe the input.\n */\n @Prop() hint: string;\n\n /**\n * The placeholder text for the input field\n */\n @Prop() placeholder: string;\n\n /**\n * Optional property to show results when input box is initally focused\n */\n @Prop() resultsOnInitFocus: boolean = false;\n\n /**\n * Optional function that will be executed when the user selects an item from the typeahead\n */\n @Event() selectionChanged: EventEmitter<string>;\n\n /**\n * Event that is fired whenever the value of the typeahead changes\n * e.g. selection from the dropdown or manually typed entry\n */\n @Event() valueChanged: EventEmitter<string>;\n\n componentDidLoad() {\n if (this.value) {\n this.inputValue = this.value;\n }\n }\n\n connectedCallback() {\n this.mutation = new MutationObserver(() => {\n this.populateFilterList();\n forceUpdate(this);\n });\n this.mutation.observe(this.el, {\n childList: true,\n subtree: true,\n });\n }\n\n disconnectedCallback() {\n if (this.mutation) {\n this.mutation.disconnect();\n this.mutation = undefined;\n }\n }\n\n populateFilterList() {\n const slotItems = this.el.querySelectorAll('admiralty-type-ahead-item');\n this.filterList = [];\n slotItems.forEach(el => {\n this.filterList.push(el.getAttribute('value'));\n });\n }\n\n handleFocusIn() {\n if (this.resultsOnInitFocus && !this.hasBeenFocusedAtLeastOnce) {\n this.performFilter('');\n this.hasBeenFocusedAtLeastOnce = true;\n }\n\n this.isFocused = true;\n this.isSilenced = false;\n }\n\n handleFocusOut() {\n this.isFocused = false;\n this.statusText = null;\n this.isSilenced = true;\n }\n\n private textChanged(value: string): void {\n this.originalSearch = value;\n this.performFilter(value);\n this.isSilenced = false;\n this.valueChanged.emit(value);\n }\n\n handleKeyPressed(event: KeyboardEvent): void {\n event.stopImmediatePropagation();\n\n if (event.key === Keys.UP_ARROW || event.key === Keys.DOWN_ARROW) {\n this.navigateSuggestions(event.key);\n this.updateScroll();\n } else if (event.key !== Keys.ENTER) {\n this.textChanged(this.inputValue);\n this.selectCurrentItem();\n }\n }\n\n handleKeyDown(event: KeyboardEvent): void {\n event.stopImmediatePropagation();\n\n if (event.key === Keys.TAB || event.key === Keys.ENTER) {\n this.selectCurrentItem();\n }\n }\n\n handleItemSelected(value: string): void {\n this.inputValue = value;\n this.textChanged(value);\n this.filterResult = new Array<string>();\n this.selectionChanged.emit(value);\n }\n\n private performFilter(value: string) {\n const filter = (filterList: string[], text: string) => {\n const filterResult = filterList.filter(value => {\n return text === null || text.length < 1 || value.toLowerCase().indexOf(text.toLowerCase()) > -1;\n });\n return filterResult;\n };\n\n this.filterResult = filter(this.filterList, value);\n\n this.selectedItemIndex = -1;\n }\n\n private addHighlight() {\n if (this.selectedItemIndex > -1) {\n const listItem = this.el.querySelector(`#${this.getListItemId(this.selectedItemIndex)}`);\n listItem.classList.add('highlighted');\n }\n }\n\n private removeHighlight(i: number) {\n if (i > -1) {\n const listItem = this.el.querySelector(`#${this.getListItemId(i)}`);\n listItem.classList.remove('highlighted');\n }\n }\n\n private selectCurrentItem(): void {\n if (this.selectedItemIndex >= 0) {\n const selectedItemText = this.filterResult[this.selectedItemIndex];\n this.handleItemSelected(selectedItemText);\n }\n }\n\n handleItemHovered(index: number): void {\n this.removeHighlight(this.selectedItemIndex);\n this.selectedItemIndex = index;\n this.addHighlight();\n }\n\n handleComponentFocusOut() {\n // Ensure dropdown closed on clicking or tabbing away from this component\n if (this.filterResult?.length > 0) {\n this.filterResult = new Array<string>();\n this.hasBeenFocusedAtLeastOnce = false;\n }\n }\n\n /**\n * Check if the selected option is in view, and scroll if not\n */\n private updateScroll() {\n const container = this.listContainer;\n\n const ul = container.querySelector('ul');\n const selectedItem: any = Array.from(ul.childNodes).find((item: any) => item.ariaPosInSet === `${this.selectedItemIndex + 1}`);\n\n if (container && selectedItem && container.scrollHeight + container.clientHeight) {\n selectedItem.scrollIntoView();\n }\n }\n\n private navigateSuggestions(key: Keys) {\n if (key === Keys.UP_ARROW) {\n this.removeHighlight(this.selectedItemIndex);\n this.selectedItemIndex--;\n if (this.selectedItemIndex === -2) {\n this.selectedItemIndex = this.filterResult.length - 1;\n }\n }\n if (key === Keys.DOWN_ARROW) {\n this.removeHighlight(this.selectedItemIndex);\n this.selectedItemIndex++;\n if (this.selectedItemIndex > this.filterResult.length - 1) {\n this.selectedItemIndex = -1;\n }\n }\n if (this.selectedItemIndex === -1) {\n this.inputValue = this.originalSearch;\n } else {\n const value = this.filterResult[this.selectedItemIndex];\n\n this.inputValue = value;\n\n this.addHighlight();\n }\n }\n\n private getListItemId(i: number) {\n const id = this.getId();\n return `${id}-list-item-${i}`;\n }\n\n private getId() {\n return this.el.id != '' ? this.el.id : `admiralty-typeahead-${this.internalId}`;\n }\n\n render() {\n const id = this.getId();\n const inputId = `${id}-input`;\n const hintId = `${id}-assistive-hint`;\n const listId = `${id}-list`;\n\n return (\n <Host onFocusout={_ev => this.handleComponentFocusOut()}>\n <div class=\"visually-hidden\">\n <div class=\"results-status-a\" role=\"status\" aria-atomic=\"true\" aria-live=\"polite\">\n {!this.isSilenced && this.isAlternateStatusSection ? this.statusText : ''}\n </div>\n <div class=\"results-status-b\" role=\"status\" aria-atomic=\"true\" aria-live=\"polite\">\n {!this.isSilenced && !this.isAlternateStatusSection ? this.statusText : ''}\n </div>\n </div>\n <admiralty-input\n type=\"text\"\n ref={el => (this.inputControl = el)}\n id={inputId}\n label={this.label}\n hint={this.hint}\n placeholder={this.placeholder}\n class=\"filterTextInput\"\n onKeyUp={ev => this.handleKeyPressed(ev)}\n onKeyDown={ev => this.handleKeyDown(ev)}\n onFocusin={_ev => this.handleFocusIn()}\n onFocusout={_ev => this.handleFocusOut()}\n aria-expanded={this.isFocused && this.filterResult.length > 0}\n ></admiralty-input>\n\n <span id={hintId} class=\"visually-hidden\">\n When autocomplete results are available use up and down arrows to review and enter to select. Touch device users, explore by touch or with swipe gestures.\n </span>\n {this.filterResult.length > 0 ? (\n <div class=\"typeahead-list-container\" ref={el => (this.listContainer = el)}>\n <ul class=\"typeahead-list\" id={listId} role=\"listbox\">\n {this.filterResult.map((item, i) => (\n <li\n id={this.getListItemId(i)}\n onMouseDown={_ev => this.handleItemSelected(item)}\n onMouseOver={_ev => this.handleItemHovered(i)}\n aria-selected={i === this.selectedItemIndex}\n role=\"option\"\n tabindex=\"-1\"\n aria-posinset={i + 1}\n aria-setsize={this.filterResult.length}\n >\n {item}\n </li>\n ))}\n </ul>\n </div>\n ) : null}\n <slot></slot>\n </Host>\n );\n }\n}\n\nlet id = 0;\n"]}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { Host, h } from "@stencil/core";
|
|
2
|
-
export class AdmiraltyTypeAheadItem {
|
|
3
|
-
constructor() {
|
|
4
|
-
this.value = undefined;
|
|
5
|
-
}
|
|
6
|
-
render() {
|
|
7
|
-
return h(Host, { key: 'b6ccf51ad68ce75c2c5e9670d1d8bb407cdc2ca8', value: this.value });
|
|
8
|
-
}
|
|
9
|
-
static get is() { return "admiralty-type-ahead-item"; }
|
|
10
|
-
static get encapsulation() { return "scoped"; }
|
|
11
|
-
static get originalStyleUrls() {
|
|
12
|
-
return {
|
|
13
|
-
"$": ["type-ahead-item.scss"]
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
static get styleUrls() {
|
|
17
|
-
return {
|
|
18
|
-
"$": ["type-ahead-item.css"]
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
static get properties() {
|
|
22
|
-
return {
|
|
23
|
-
"value": {
|
|
24
|
-
"type": "string",
|
|
25
|
-
"mutable": false,
|
|
26
|
-
"complexType": {
|
|
27
|
-
"original": "string",
|
|
28
|
-
"resolved": "string",
|
|
29
|
-
"references": {}
|
|
30
|
-
},
|
|
31
|
-
"required": false,
|
|
32
|
-
"optional": false,
|
|
33
|
-
"docs": {
|
|
34
|
-
"tags": [],
|
|
35
|
-
"text": ""
|
|
36
|
-
},
|
|
37
|
-
"attribute": "value",
|
|
38
|
-
"reflect": false
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=type-ahead-item.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"type-ahead-item.js","sourceRoot":"","sources":["../../../src/components/type-ahead-item/type-ahead-item.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAOzD,MAAM,OAAO,sBAAsB;;;;IAGjC,MAAM;QACJ,OAAO,EAAC,IAAI,qDAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAS,CAAC;IAC1C,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'admiralty-type-ahead-item',\n styleUrl: 'type-ahead-item.scss',\n scoped: true,\n})\nexport class AdmiraltyTypeAheadItem {\n @Prop() value: string;\n\n render() {\n return <Host value={this.value}></Host>;\n }\n}\n"]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Components, JSX } from "../types/components";
|
|
2
|
-
|
|
3
|
-
interface AdmiraltyTypeAheadItem extends Components.AdmiraltyTypeAheadItem, HTMLElement {}
|
|
4
|
-
export const AdmiraltyTypeAheadItem: {
|
|
5
|
-
prototype: AdmiraltyTypeAheadItem;
|
|
6
|
-
new (): AdmiraltyTypeAheadItem;
|
|
7
|
-
};
|
|
8
|
-
/**
|
|
9
|
-
* Used to define this component and all nested components recursively.
|
|
10
|
-
*/
|
|
11
|
-
export const defineCustomElement: () => void;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { p as proxyCustomElement, H, h, d as Host } from './p-7dd465c9.js';
|
|
2
|
-
|
|
3
|
-
const typeAheadItemCss = ".sc-admiralty-type-ahead-item-h{display:block}";
|
|
4
|
-
const AdmiraltyTypeAheadItemStyle0 = typeAheadItemCss;
|
|
5
|
-
|
|
6
|
-
const AdmiraltyTypeAheadItem$1 = /*@__PURE__*/ proxyCustomElement(class AdmiraltyTypeAheadItem extends H {
|
|
7
|
-
constructor() {
|
|
8
|
-
super();
|
|
9
|
-
this.__registerHost();
|
|
10
|
-
this.value = undefined;
|
|
11
|
-
}
|
|
12
|
-
render() {
|
|
13
|
-
return h(Host, { key: 'b6ccf51ad68ce75c2c5e9670d1d8bb407cdc2ca8', value: this.value });
|
|
14
|
-
}
|
|
15
|
-
static get style() { return AdmiraltyTypeAheadItemStyle0; }
|
|
16
|
-
}, [2, "admiralty-type-ahead-item", {
|
|
17
|
-
"value": [1]
|
|
18
|
-
}]);
|
|
19
|
-
function defineCustomElement$1() {
|
|
20
|
-
if (typeof customElements === "undefined") {
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
const components = ["admiralty-type-ahead-item"];
|
|
24
|
-
components.forEach(tagName => { switch (tagName) {
|
|
25
|
-
case "admiralty-type-ahead-item":
|
|
26
|
-
if (!customElements.get(tagName)) {
|
|
27
|
-
customElements.define(tagName, AdmiraltyTypeAheadItem$1);
|
|
28
|
-
}
|
|
29
|
-
break;
|
|
30
|
-
} });
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const AdmiraltyTypeAheadItem = AdmiraltyTypeAheadItem$1;
|
|
34
|
-
const defineCustomElement = defineCustomElement$1;
|
|
35
|
-
|
|
36
|
-
export { AdmiraltyTypeAheadItem, defineCustomElement };
|
|
37
|
-
|
|
38
|
-
//# sourceMappingURL=admiralty-type-ahead-item.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"admiralty-type-ahead-item.js","mappings":";;AAAA,MAAM,gBAAgB,GAAG,gDAAgD,CAAC;AAC1E,qCAAe,gBAAgB;;MCMlBA,wBAAsB;;;;;;IAGjC,MAAM;QACJ,OAAO,EAAC,IAAI,qDAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAS,CAAC;KACzC;;;;;;;;;;;;;;;;;;;;;;;;","names":["AdmiraltyTypeAheadItem"],"sources":["src/components/type-ahead-item/type-ahead-item.scss?tag=admiralty-type-ahead-item&encapsulation=scoped","src/components/type-ahead-item/type-ahead-item.tsx"],"sourcesContent":[":host {\n display: block;\n}\n","import { Component, Host, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'admiralty-type-ahead-item',\n styleUrl: 'type-ahead-item.scss',\n scoped: true,\n})\nexport class AdmiraltyTypeAheadItem {\n @Prop() value: string;\n\n render() {\n return <Host value={this.value}></Host>;\n }\n}\n"],"version":3}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Components, JSX } from "../types/components";
|
|
2
|
-
|
|
3
|
-
interface AdmiraltyTypeAhead extends Components.AdmiraltyTypeAhead, HTMLElement {}
|
|
4
|
-
export const AdmiraltyTypeAhead: {
|
|
5
|
-
prototype: AdmiraltyTypeAhead;
|
|
6
|
-
new (): AdmiraltyTypeAhead;
|
|
7
|
-
};
|
|
8
|
-
/**
|
|
9
|
-
* Used to define this component and all nested components recursively.
|
|
10
|
-
*/
|
|
11
|
-
export const defineCustomElement: () => void;
|