Support for disabling list items

This commit is contained in:
Conor_Mack 2020-02-24 11:46:38 +00:00
parent 9c90a5f087
commit e2038eb028
3 changed files with 31 additions and 25 deletions

View File

@ -32,19 +32,21 @@
}) })
function handleSelectedItem(item) { function handleSelectedItem(item) {
if (singleSelection || inputElement === "radiobutton") { if (!item.disabled) {
items.forEach(i => { if (singleSelection || inputElement === "radiobutton") {
if (i.selected) i.selected = false items.forEach(i => {
}) if (i.selected) i.selected = false
} })
}
let idx = items.indexOf(item) let idx = items.indexOf(item)
if (!!item.selected) { if (!!item.selected) {
items[idx].selected = !item.selected items[idx].selected = !item.selected
} else { } else {
items[idx].selected = true items[idx].selected = true
}
onSelect(items.filter(item => item.selected))
} }
onSelect(items.filter(item => item.selected))
} }
$: useDoubleLine = $: useDoubleLine =

View File

@ -1,27 +1,30 @@
<script> <script>
import { setContext } from "svelte"; import { setContext } from "svelte"
import { Radiobutton } from "../Radiobutton"; import { Radiobutton } from "../Radiobutton"
import { Checkbox } from "../Checkbox"; import { Checkbox } from "../Checkbox"
import ClassBuilder from "../ClassBuilder.js"; import ClassBuilder from "../ClassBuilder.js"
const cb = new ClassBuilder("list-item"); const cb = new ClassBuilder("list-item")
export let onClick = item => {}; export let onClick = item => {}
export let item = null; export let item = null
export let useDoubleLine = false; export let useDoubleLine = false
export let inputElement = null; //radiobutton or checkbox export let inputElement = null //radiobutton or checkbox
$: if (!!inputElement) { $: if (!!inputElement) {
setContext("BBMD:input:context", "list-item"); setContext("BBMD:input:context", "list-item")
} }
$: modifiers = { selected: !inputElement ? item.selected : null }; $: modifiers = {
$: props = { modifiers }; selected: !inputElement ? item.selected : null,
$: listItemClass = cb.build({ props }); disabled: item.disabled,
}
$: props = { modifiers }
$: listItemClass = cb.build({ props })
$: useSecondaryText = $: useSecondaryText =
typeof item.text === "object" && "secondary" in item.text; typeof item.text === "object" && "secondary" in item.text
</script> </script>
<li <li

View File

@ -129,6 +129,7 @@ export const props = {
{ {
text: { primary: "Pastie", secondary: "Bap with Mayo" }, text: { primary: "Pastie", secondary: "Bap with Mayo" },
value: 1, value: 1,
disabled: true,
}, },
{ text: { primary: "Fish", secondary: "Salmon or Cod" }, value: 2 }, { text: { primary: "Fish", secondary: "Salmon or Cod" }, value: 2 },
], ],