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

野生程序猿-杂烧3年前案例分享1675

【laylte/LaySwitch.svelte】

<script>
    //import { createEventDispatcher } from 'svelte';

    //const dispatch = createEventDispatcher();
    export let value='false';//兼容 字符串/布尔  0/1  true/false  存数据库可以存0/1 也可以存字符串 true/false
    export let skin='normal';
    export let text=[];
    

    export let disabled='false';//兼容 字符串/布尔


    function load_text_arr(text)
    {
        let text_arr=['',''];
        if(text.length==2)
        {
            text_arr=[text[0],text[1]];
        }
        return text_arr;
    }
    let text_arr=load_text_arr(text);


    export let change=function(result){
         console.log('change');
         console.log(result);
    };



    //选中
    function click_one()
    {
        if(disabled=='true' || disabled==true) return false;
        let result=true;
        //适配value
        if(value==='true')
        {
            result='false';
        }else if(value==='false'){
            result='true';
        }else if(value===true){
            result=false;
        }else if(value===false){
            result=true;
        }else if(value===1){
            result=0;
        }else if(value===0){
            result=1;
        }else if(value==='1'){
            result='0';
        }else if(value==='0'){
            result='1';
        }
        value = result;
        change(value);
        
    }



    
</script>
<!-- svelte-ignore a11y-click-events-have-key-events -->

{#if skin=='normal'}
    {#if value===1 || value==='1' || value===true || value==='true'}
        <div on:click={click_one} class="layui-unselect layui-form-switch layui-form-onswitch { (disabled==true || disabled=='true') ? 'layui-disabled' : ''}" lay-skin="_switch"><em>{text_arr[0]}</em><i></i></div>
    {:else}
        <div on:click={click_one} class="layui-unselect layui-form-switch {  (disabled==true || disabled=='true') ? 'layui-disabled' : ''}" lay-skin="_switch"><em>{text_arr[1]}</em><i></i></div>
    {/if}
{/if}

<style>

</style>


【App.svelte】

<script>
    import LaySwitch from '../laylte/LaySwitch.svelte';
    //export let name;



    function switch_change(value)
    {
        console.error('change1--xx',value);
    }

    let switch_value=1;

    let switch2_value=false;


</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">
        
        <LaySwitch  bind:value="{switch_value}" text={['true','false']}  change={switch_change} ></LaySwitch>
      </div>
    </div>
    <div class="layui-form-item">
      

        <label class="layui-form-label">开关2</label>
        <div class="layui-input-block">
          
            <LaySwitch  bind:value="{switch_value}"  text={['开','关']} change={switch_change} ></LaySwitch>
        </div>
      </div>
      <div class="layui-form-item">
      

        <label class="layui-form-label">开关3</label>
        <div class="layui-input-block">
          
            <LaySwitch  bind:value="{switch_value}"  text={['','']} change={switch_change} ></LaySwitch>
        </div>
      </div>
      <div class="layui-form-item">
      

        <label class="layui-form-label">开关4</label>
        <div class="layui-input-block">
          
            <LaySwitch  bind:value="{switch_value}"  text={[]} change={switch_change} ></LaySwitch>
        </div>
      </div>
      <div class="layui-form-item">
      

        <label class="layui-form-label">开关5</label>
        <div class="layui-input-block">
          
            <LaySwitch  bind:value="{switch_value}"  change={switch_change} ></LaySwitch>
        </div>
      </div>
      <div class="layui-form-item">
      

        <label class="layui-form-label">开关6</label>
        <div class="layui-input-block">
          
            <LaySwitch  bind:value="{switch_value}" disabled="true"  change={switch_change} ></LaySwitch>
        </div>
      </div>

      <div class="layui-form-item">
      

        <label class="layui-form-label">开关7</label>
        <div class="layui-input-block">
          
            <LaySwitch  bind:value="{switch_value}"  text={['开启','关闭']} change={switch_change} ></LaySwitch>
        </div>
      </div>

    <div class="layui-form-item">
        <label class="layui-form-label">开关值</label>
        <div class="layui-form-mid">{switch_value}</div>
    </div>  


    <div class="layui-form-item">
      

        <label class="layui-form-label">开关8</label>
        <div class="layui-input-block">
          
            <LaySwitch  bind:value="{switch2_value}"  text={['好','不好']} change={switch_change} ></LaySwitch>
        </div>
      </div>

    <div class="layui-form-item">
        <label class="layui-form-label">开关值</label>
        <div class="layui-form-mid">{switch2_value}</div>
    </div>  

  </form>
</main> 
<style>

</style>

image.png

image.png

相关文章

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

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

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

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

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

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