mirror of
https://github.com/ankitects/anki.git
synced 2025-09-25 09:16:38 -04:00
Set disabled class on TagInput from WithAutocomplete
This commit is contained in:
parent
eb3bc08420
commit
7bdf9aaf00
5 changed files with 23 additions and 14 deletions
|
@ -16,7 +16,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div {id} class="dropdown-menu" aria-labelledby={labelledby}>
|
<div {id} class="dropdown-menu" aria-labelledby={labelledby}>
|
||||||
<div class={`dropdown-content ${className}`}>
|
<div class="dropdown-content {className}">
|
||||||
<slot />
|
<slot />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -22,9 +22,9 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
|
bind:this={buttonRef}
|
||||||
{id}
|
{id}
|
||||||
tabindex="-1"
|
tabindex="-1"
|
||||||
bind:this={buttonRef}
|
|
||||||
class="autocomplete-item btn {className}"
|
class="autocomplete-item btn {className}"
|
||||||
class:btn-day={!nightMode}
|
class:btn-day={!nightMode}
|
||||||
class:btn-night={nightMode}
|
class:btn-night={nightMode}
|
||||||
|
|
|
@ -452,16 +452,18 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
<div class="adjust-position">
|
<div class="adjust-position">
|
||||||
<WithAutocomplete
|
<WithAutocomplete
|
||||||
drop="up"
|
drop="up"
|
||||||
class="d-flex flex-column"
|
class="d-flex flex-column cap-items"
|
||||||
{suggestionsPromise}
|
{suggestionsPromise}
|
||||||
on:update={updateSuggestions}
|
on:update={updateSuggestions}
|
||||||
on:select={({ detail }) => onAutocomplete(detail.selected)}
|
on:select={({ detail }) => onAutocomplete(detail.selected)}
|
||||||
on:choose={({ detail }) => onAutocomplete(detail.chosen)}
|
on:choose={({ detail }) => onAutocomplete(detail.chosen)}
|
||||||
let:createAutocomplete
|
let:createAutocomplete
|
||||||
|
let:disabled
|
||||||
>
|
>
|
||||||
<TagInput
|
<TagInput
|
||||||
id={tag.id}
|
id={tag.id}
|
||||||
class="tag-input position-absolute top-0 start-0 ps-2 py-0"
|
class="tag-input position-absolute start-0 top-0 ps-2 py-0"
|
||||||
|
{disabled}
|
||||||
bind:name={activeName}
|
bind:name={activeName}
|
||||||
bind:input={activeInput}
|
bind:input={activeInput}
|
||||||
on:focus={() => {
|
on:focus={() => {
|
||||||
|
@ -529,8 +531,15 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.adjust-position :global(.tag-input) {
|
.adjust-position {
|
||||||
|
:global(.tag-input) {
|
||||||
/* recreates positioning of Tag component */
|
/* recreates positioning of Tag component */
|
||||||
border-left: 1px solid transparent;
|
border-left: 1px solid transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:global(.cap-items) {
|
||||||
|
max-height: 7rem;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -17,6 +17,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
|
|
||||||
export let name: string;
|
export let name: string;
|
||||||
export let input: HTMLInputElement;
|
export let input: HTMLInputElement;
|
||||||
|
export let disabled: boolean;
|
||||||
|
|
||||||
const dispatch = createEventDispatcher();
|
const dispatch = createEventDispatcher();
|
||||||
|
|
||||||
|
@ -231,6 +232,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
<input
|
<input
|
||||||
{id}
|
{id}
|
||||||
class={className}
|
class={className}
|
||||||
|
class:disabled
|
||||||
bind:this={input}
|
bind:this={input}
|
||||||
bind:value={name}
|
bind:value={name}
|
||||||
type="text"
|
type="text"
|
||||||
|
|
|
@ -14,21 +14,20 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
let className: string = "";
|
let className: string = "";
|
||||||
export { className as class };
|
export { className as class };
|
||||||
|
|
||||||
export let drop: "down" | "up" | "left" | "right" = "down";
|
export let drop: "down" | "up" = "down";
|
||||||
export let suggestionsPromise: Promise<string[]>;
|
export let suggestionsPromise: Promise<string[]>;
|
||||||
|
|
||||||
let target: HTMLElement;
|
let disabled = true;
|
||||||
let dropdown: Dropdown;
|
let dropdown: Dropdown;
|
||||||
|
|
||||||
let suggestionsItems: string[] = [];
|
let suggestionsItems: string[] = [];
|
||||||
$: suggestionsPromise.then((items) => {
|
$: suggestionsPromise.then((items) => {
|
||||||
if (items.length > 0) {
|
if (items.length > 0) {
|
||||||
// disabled class will tell Bootstrap not to show menu on clicking
|
disabled = false;
|
||||||
target.classList.remove("disabled");
|
|
||||||
dropdown.show();
|
dropdown.show();
|
||||||
} else {
|
} else {
|
||||||
dropdown.hide();
|
dropdown.hide();
|
||||||
target.classList.add("disabled");
|
disabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
suggestionsItems = items;
|
suggestionsItems = items;
|
||||||
|
@ -90,7 +89,6 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
(createDropdown: (element: HTMLElement) => Dropdown) =>
|
(createDropdown: (element: HTMLElement) => Dropdown) =>
|
||||||
(element: HTMLElement): any => {
|
(element: HTMLElement): any => {
|
||||||
dropdown = createDropdown(element);
|
dropdown = createDropdown(element);
|
||||||
target = element;
|
|
||||||
|
|
||||||
const api = {
|
const api = {
|
||||||
hide: dropdown.hide,
|
hide: dropdown.hide,
|
||||||
|
@ -131,7 +129,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<WithDropdown {drop} toggleOpen={false} let:createDropdown>
|
<WithDropdown {drop} toggleOpen={false} let:createDropdown>
|
||||||
<slot createAutocomplete={createAutocomplete(createDropdown)} />
|
<slot createAutocomplete={createAutocomplete(createDropdown)} {disabled} />
|
||||||
|
|
||||||
<DropdownMenu class={className}>
|
<DropdownMenu class={className}>
|
||||||
{#each suggestionsItems as suggestion, index}
|
{#each suggestionsItems as suggestion, index}
|
||||||
|
|
Loading…
Reference in a new issue