-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.svelte
84 lines (66 loc) · 1.87 KB
/
main.svelte
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<script>
export let OLSKResultsListItems;
export let OLSKResultsListItemSelected;
export let OLSKResultsDispatchArrow;
export let OLSKResultsDispatchClick;
export let OLSKResultsEnableLooping = false;
export let OLSKResultsIgnoreKeyboard = false;
import OLSKResultsLogic from './ui-logic.js';
const mod = {
// INTERFACE
InterfaceWindowDidKeydown(event) {
if (OLSKResultsIgnoreKeyboard) {
return;
}
if (!OLSKResultsListItems.length) {
return;
}
const handlerFunctions = {
ArrowUp () {
(function() {
if (!OLSKResultsEnableLooping && OLSKResultsListItems[0] === OLSKResultsListItemSelected) {
return;
}
mod.ControlArrowIncrement(-1);
})();
return event.preventDefault();
},
ArrowDown () {
(function() {
if (!OLSKResultsEnableLooping && (OLSKResultsListItems.slice(-1).pop() === OLSKResultsListItemSelected)) {
return;
}
mod.ControlArrowIncrement(1);
})();
return event.preventDefault();
},
};
handlerFunctions[event.code] && handlerFunctions[event.code]();
},
// CONTROL
ControlArrowIncrement (inputData) {
OLSKResultsDispatchArrow(OLSKResultsListItems[OLSKResultsLogic.OLSKResultsConstrainIndex(OLSKResultsListItems, OLSKResultsListItems.indexOf(OLSKResultsListItemSelected) + inputData)]);
},
};
</script>
<svelte:window on:keydown={ mod.InterfaceWindowDidKeydown } />
<div class="OLSKResults">
{#if OLSKResultsListItems.length}
<div class="OLSKResultsList">
{#each OLSKResultsListItems as e}
<div class="OLSKResultsListItem" class:OLSKResultsListItemSelected={ e === OLSKResultsListItemSelected } on:click={ () => OLSKResultsDispatchClick(e) }>
<slot OLSKResultsListItem={ e }></slot>
</div>
{/each}
</div>
{:else}
<div class="OLSKResultsEmpty">
<slot name="OLSKResultsEmpty"></slot>
</div>
{/if}
</div>
<style>
.OLSKResultsListItem {
cursor: pointer;
}
</style>