Skip to content

Commit f016e22

Browse files
committed
Added .is-fullwidth css and inputAttributes property
1 parent f9d8ada commit f016e22

File tree

2 files changed

+36
-18
lines changed

2 files changed

+36
-18
lines changed

public/default.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,7 @@ ul {
3737
.column.is-one-third {
3838
width: 33%;
3939
}
40+
41+
.is-fullwidth {
42+
width: 100%;
43+
}

src/SimpleAutocomplete.svelte

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<script>
22
import { flip } from "svelte/animate"
33
import { fade } from "svelte/transition"
4-
import {afterUpdate} from 'svelte'
4+
import { afterUpdate } from "svelte"
55
66
// the list of items the user can select from
77
export let items = []
@@ -51,7 +51,7 @@
5151
}
5252
5353
export const clearSelection = () => {
54-
text = ''
54+
text = ""
5555
selectedItem = multiple ? [] : undefined
5656
items = []
5757
listItems = []
@@ -170,6 +170,10 @@
170170
export let html5autocomplete = undefined
171171
// enable the html5 autocompletion value
172172
export let autocompleteOffValue = "off"
173+
174+
// allow custom input attributes
175+
export let inputAttributes = { autocomplete: "new-password" }
176+
173177
// make the input readonly
174178
export let readonly = undefined
175179
// apply a className to the dropdown div
@@ -220,12 +224,12 @@
220224
// other state
221225
let inputDelayTimeout
222226
223-
let setPositionOnNextUpdate = false;
227+
let setPositionOnNextUpdate = false
224228
225229
// --- Lifecycle events ---
226230
227231
afterUpdate(() => {
228-
if(setPositionOnNextUpdate) {
232+
if (setPositionOnNextUpdate) {
229233
setScrollAwareListPosition()
230234
}
231235
setPositionOnNextUpdate = false
@@ -243,7 +247,7 @@
243247
result = theFunction(argument)
244248
} catch (error) {
245249
console.warn(
246-
"Error executing Autocomplete function on value: " + argument + " function: " + theFunction
250+
"Error executing Autocomplete function on value: " + argument + " function: " + theFunction,
247251
)
248252
}
249253
return result
@@ -508,7 +512,7 @@
508512
return numberOfMatches(obj2, searchWords) - numberOfMatches(obj1, searchWords)
509513
}
510514
511-
function processListItems(textFiltered="") {
515+
function processListItems(textFiltered = "") {
512516
// cleans, filters, orders, and highlights the list items
513517
prepareListItems()
514518
@@ -520,23 +524,23 @@
520524
if (localFiltering) {
521525
if (itemFilterFunction) {
522526
tempfilteredListItems = listItems.filter((item) =>
523-
itemFilterFunction(item.item, searchWords)
527+
itemFilterFunction(item.item, searchWords),
524528
)
525529
} else {
526530
tempfilteredListItems = listItems.filter((item) =>
527-
defaultItemFilterFunction(item, searchWords)
531+
defaultItemFilterFunction(item, searchWords),
528532
)
529533
}
530534
531535
if (localSorting) {
532536
if (itemSortFunction) {
533537
tempfilteredListItems = tempfilteredListItems.sort((item1, item2) =>
534-
itemSortFunction(item1.item, item2.item, searchWords)
538+
itemSortFunction(item1.item, item2.item, searchWords),
535539
)
536540
} else {
537541
if (sortByMatchedKeywords) {
538542
tempfilteredListItems = tempfilteredListItems.sort((item1, item2) =>
539-
defaultItemSortFunction(item1, item2, searchWords)
543+
defaultItemSortFunction(item1, item2, searchWords),
540544
)
541545
}
542546
}
@@ -712,7 +716,7 @@
712716
} else {
713717
if (debug) {
714718
console.warn(
715-
"Could not scroll selected item into view, scrollIntoViewIfNeeded not supported"
719+
"Could not scroll selected item into view, scrollIntoViewIfNeeded not supported",
716720
)
717721
}
718722
}
@@ -1122,6 +1126,7 @@
11221126
}
11231127
}
11241128
</script>
1129+
11251130
<div
11261131
class="{className ? className : ''} autocomplete select is-fullwidth {uniqueId}"
11271132
class:hide-arrow={hideArrow || !items.length}
@@ -1161,7 +1166,9 @@
11611166
<span
11621167
class="tag is-delete"
11631168
on:click|preventDefault={unselectItem(tagItem)}
1164-
on:keypress|preventDefault={(e) => {e.key == "Enter" && unselectItem(tagItem)}}
1169+
on:keypress|preventDefault={(e) => {
1170+
e.key == "Enter" && unselectItem(tagItem)
1171+
}}
11651172
/>
11661173
</div>
11671174
</slot>
@@ -1192,14 +1199,17 @@
11921199
on:keypress={onKeyPress}
11931200
on:dragover={(event) => dragover(event, selectedItem.length - 1)}
11941201
on:drop={(event) => drop(event, selectedItem.length - 1)}
1202+
{inputAttributes}
11951203
{...$$restProps}
11961204
/>
11971205
{#if clearable}
11981206
<span
11991207
on:click={clear}
1200-
on:keypress={(e) => {e.key == "Enter" && clear()}}
1201-
class="autocomplete-clear-button"
1202-
>{@html clearText}</span>
1208+
on:keypress={(e) => {
1209+
e.key == "Enter" && clear()
1210+
}}
1211+
class="autocomplete-clear-button">{@html clearText}</span
1212+
>
12031213
{/if}
12041214
</div>
12051215
<div
@@ -1217,7 +1227,9 @@
12171227
class:selected={i === highlightIndex}
12181228
class:confirmed={isConfirmed(listItem.item)}
12191229
on:click={() => onListItemClick(listItem)}
1220-
on:keypress={(e) => {e.key == "Enter" && onListItemClick(listItem)}}
1230+
on:keypress={(e) => {
1231+
e.key == "Enter" && onListItemClick(listItem)
1232+
}}
12211233
on:pointerenter={() => {
12221234
highlightIndex = i
12231235
}}
@@ -1255,7 +1267,9 @@
12551267
<div
12561268
class="autocomplete-list-item-create"
12571269
on:click={selectItem}
1258-
on:keypress={(e) => {e.key == "Enter" && selectItem()}}
1270+
on:keypress={(e) => {
1271+
e.key == "Enter" && selectItem()
1272+
}}
12591273
>
12601274
<slot name="create" {createText}>{createText}</slot>
12611275
</div>
@@ -1267,7 +1281,7 @@
12671281
</div>
12681282
</div>
12691283

1270-
<svelte:window on:click={onDocumentClick} on:scroll={() => setPositionOnNextUpdate = true} />
1284+
<svelte:window on:click={onDocumentClick} on:scroll={() => (setPositionOnNextUpdate = true)} />
12711285

12721286
<style>
12731287
.autocomplete {

0 commit comments

Comments
 (0)