开发UI框架:【laylte】Svelte版LAYUI(表单 - 复选框)
【laylte/LayCheckbox.svelte】
<script>
//import { createEventDispatcher } from 'svelte';
//const dispatch = createEventDispatcher();
export let value='';
export let skin="normal";
export let options;
export let split=",";//分割字符串,通常是英文逗号
function load_value_obj(value)
{
let obj={};
let value_arr=[];
try{
value_arr=value.split(split);
}catch(e){
value_arr=[];
}
for(var i in value_arr)
{
obj[value_arr[i]]=1;
}
return obj;
}
$: value_obj=load_value_obj(value);
function get_value_str(value_obj)
{
let value_str_arr=[];
for(var i in value_obj)
{
if(value_obj[i]==1) value_str_arr.push(i);
}
return value_str_arr.join(split);
}
export let change=function(value,result){
console.log('change');
console.log(value,result);
};
//选中
function click_one(option)
{
if(option.disabled) return false;
let change_result;
if(value_obj[option.value]==1)
{
value_obj[option.value]=0;
change_result=false;
}else{
value_obj[option.value]=1;
change_result=true;
}
change(option.value,change_result);
value=get_value_str(value_obj);
console.log(value_obj);
}
</script>
<!-- svelte-ignore a11y-click-events-have-key-events -->
{#if skin=='normal'}
{#each options as option}
<div on:click={click_one(option)} class="layui-unselect layui-form-checkbox {value_obj[option.value]==1 ? 'layui-form-checked' : ''} {option.disabled==true ? 'layui-checkbox-disabled layui-disabled' : ''}"><span>{option.text}</span><i class="layui-icon layui-icon-ok"></i></div>
{/each}
{/if}
<!-- svelte-ignore a11y-click-events-have-key-events -->
{#if skin=='primary'}
{#each options as option}
<div lay-skin="primary" on:click={click_one(option)} class="layui-unselect layui-form-checkbox {value_obj[option.value]==1 ? 'layui-form-checked' : ''} {option.disabled==true ? 'layui-checkbox-disabled layui-disabled' : ''}"><span>{option.text}</span><i class="layui-icon layui-icon-ok"></i></div>
{/each}
{/if}
<style>
</style>【App.svelte】
<script>
import LayCheckbox from '../laylte/LayCheckbox.svelte';
//export let name;
let options1 = [
{ value: 1, text: '#0d0887' },
{ value: 2, text: '#6a00a8' , disabled:true },
{ value: 3, text: '#b12a90' },
{ value: 4, text: '#e16462' },
{ value: 5, text: '#fca636' }
];
function options1_change(value,result)
{
console.error('change1--xx',value,result);
}
let options1_value='1,3';
</script>
<svelte:head>
<title>layui - 表单 - 复选框</title>
</svelte:head>
<!-- svelte-ignore a11y-label-has-associated-control -->
<main>
<blockquote class="layui-elem-quote layui-text">
复选框
</blockquote>
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
<legend>复选框* 演示</legend>
</fieldset>
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">复选框1</label>
<div class="layui-input-block">
<LayCheckbox bind:value="{options1_value}" options={options1} change={options1_change} ></LayCheckbox>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">复选框2</label>
<div class="layui-input-block">
<LayCheckbox bind:value="{options1_value}" options={options1} change={options1_change} skin="primary"></LayCheckbox>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">选项框值</label>
<div class="layui-form-mid">{options1_value}</div>
</div>
</form>
</main>
<style>
</style>
也支持上disabled





