开发UI框架:【laylte】Svelte版LAYUI(表单 - 复选框)

野生程序猿-杂烧3年前随意分享1869

【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>

image.png

也支持上disabled

标签: Sveltelayui

相关文章

开发UI框架:Svelte版LAYUI(栅格系统与后台布局)

开发UI框架:Svelte版LAYUI(栅格系统与后台布局)

跟着layui官方的思路来,先是框架的css部分,这部分基本照搬过来。先前已经研究过了直接可以加载layui.csspublic/index.html<!DOCTYPE html>...

开发UI框架:【laylte】Svelte版LAYUI(表单 - 单选框)

开发UI框架:【laylte】Svelte版LAYUI(表单 - 单选框)

【laylte/LayRadio.svelte】<script>     //import { createEventDisp...

开发UI框架:【laylte】Svelte版LAYUI(缓一下,继续钻研一下填填坑)

开发UI框架:【laylte】Svelte版LAYUI(缓一下,继续钻研一下填填坑)

接下来准备做全局的方法了,象弹窗,还是希望尽量做到一句话调用。layui的弹窗组件里有一个tips功能,把我难住了。感觉这个jquery比较容易实现。有这样一个场景,滚动的页面里如果有tips功能,需...

开发UI框架:【laylte】Svelte版LAYUI(表单 - 开关)

开发UI框架:【laylte】Svelte版LAYUI(表单 - 开关)

【laylte/LaySwitch.svelte】<script>     //import { createEventDis...

开发UI框架:Svelte版LAYUI(准备工作)

开发UI框架:Svelte版LAYUI(准备工作)

最近开始接触Svelte,感觉发现了一个新大陆。同时考虑到国内Svelte用得非常少,这么好的框架没什么人用,主要就是因为没有ui框架,于是决定借用别人的轮子造一个。这里选择了layui,比较经典的一...

开发UI框架:Svelte版LAYUI(表单 - css部分)

开发UI框架:Svelte版LAYUI(表单 - css部分)

App.svelte<script>     //export let name; </script> <...