npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

touch-select

v5.2.2

Published

滚动触摸选择插件全环境通用ng react vue 原生js ie8以上兼容

Downloads

33

Readme

touch-select

通用 react vue 原生JavaScript html

  
		<div>
		  <button id="select_touch_start1">时间选择</button>
		  <button id="select_touch_start2">城市选择</button>
		</div>

js

    import touch_select from 'touch-select';
	  import city_data from 'touch-select/data.js'; //这是插件内置的省市区数据 data.js 修改 或者自行调用接口获取
	  import "touch-select/touch-css.css";

          /**
           *@生成选择时间
           *@param {string}时间戳字符串
           *@return JSON
           *@author 应进兵
           */
          function get_show_time(server_time){
              var time_data={
                  mo_day_m:[],
                  time:[]
              };
              var temp=server_time ? new Date(server_time) : new Date();

              var temp2=new Date(temp.getFullYear()+'/'+parseFloat(temp.getMonth()+1)+'/'+parseFloat(temp.getDate())+' '+temp.getHours()+':00:00');
              var temp_hour=parseFloat(Date.parse(temp2)+(3600*(temp.getMinutes()>30 ? 1 : 0.5)*1000));

              var now_hour=new Date(temp_hour);

              time_data.now_hour=now_hour.getHours();
              time_data.now_min=now_hour.getMinutes();
              for(var hours=0;hours<48;hours++){
                  time_data.now_min+=30;
                  if(time_data.now_min===60){
                      if(time_data.now_hour<23){
                          time_data.now_hour+=1;
                      }else {
                          time_data.now_hour=0
                      }
                      time_data.now_min=0
                  }
                  time_data.time.push({hour:(time_data.now_hour<10 ? '0'+time_data.now_hour : time_data.now_hour),min:(time_data.now_min < 10 ? '0'+time_data.now_min : time_data.now_min)});
              }

              var shijian=Date.parse(temp2);
              for(var time_day=0;time_day<99;time_day++){
                  var temp3=new Date(shijian);
                  time_data.mo_day_m.push({year:temp3.getFullYear(),month:(parseFloat(temp3.getMonth()+1)< 10 ? '0'+parseFloat(temp3.getMonth()+1) : parseFloat(temp3.getMonth()+1) ),day:(temp3.getDate() < 10 ? '0'+temp3.getDate() : temp3.getDate()),date:temp3.getDay()});
                  shijian+=(3600*24*1000)
              }

              return  time_data
          };
          //返回中文星期几
          function get_date(val){
              switch (val)
              {
                  case 0:
                      return '星期日';

                  case 1:
                      return '星期一';

                  case 2:
                      return '星期二';

                  case 3:
                      return '星期三';

                  case 4:
                      return '星期四';

                  case 5:
                      return '星期五';

                  case 6:
                      return '星期六';

                  default :
                      return '星期一'
              }
          };
          function times(){
                  var touchSelect_ob={
                      time1:null,
                  };
                  function touch_select_dom(xx){
                      return document.querySelectorAll(xx)
                  }

                  //获取时间对象
                  var time_data=this.get_show_time(new Date());

                  //拼接年月日html
                  var dat={
                      time:'',
                      day:''
                  };
                  for(var wws=0;wws<time_data.mo_day_m.length;wws++){
                      var conts_time=wws===0 ? '今天' :(time_data.mo_day_m[wws].month) +'月'+(time_data.mo_day_m[wws].day)+' '+ this.get_date(time_data.mo_day_m[wws].date);
                      dat.day+='<li data-name="day" data-auto="data-自定义参数" data-value='+time_data.mo_day_m[wws].year+'/'+time_data.mo_day_m[wws].month+'/'+time_data.mo_day_m[wws].day+'>'+conts_time+'</li>'
                  }
                  for(var wwss=0;wwss<time_data.time.length ;wwss++){
                      dat.time+='<li data-name="time" data-auto="data-自定义参数" data-value='+time_data.time[wwss].hour+':'+time_data.time[wwss].min+'>'+(time_data.time[wwss].hour)+':'+(time_data.time[wwss].min)+'</li>'
                  }
                  /**
                   * 调用时间选择插件
                   * param {
                   * click_id:'string' 触发id
                   * render:function(){}  添加节点函数
                   * touch_end_fn:function(){} 触摸结束钩子
                   * select_val:function(){} 确认按钮点击事件
                   * }
                   * touchSelect_ob.time1.get_all_value() //获取所选值
                   * @author 应进兵
                   * */
                  //新建实例
                  touchSelect_ob.time1 = new touch_select();
                  //设置默认选中项
                  touchSelect_ob.time1.select_arr=[0,1];
                  //初始化实例
                  touchSelect_ob.time1.set_init({
                      title:'时间选择',
                      click_id:'select_touch_start1',
                      render:function (){
                          var tha=this;
                          touch_select_dom('#ul_out'+tha.click_id)[0].innerHTML='<div><ul class="touch-select-ul">'+dat.day+'</ul></div><div><ul class="touch-select-ul">'+dat.time+'</ul></div>';
                      },
                      touch_end_fn:function () {
                          //触摸结束事件
                      },
                      select_val:function(){
                          //点击确认获得选定值
                          var times=touchSelect_ob.time1.get_all_value();
                          touchSelect_ob.time1.close();
                          console.log(times)
                      },
                      created:function () {
                          //创建完毕执行
                      },
                      opened:function(next){
                          //设置选择器打开条件 如果定义了opened函数 必须执行next才会打开选择器
                          if(true){
                              next()
                          }
                      }
                  })


          };

          function citys(){
              var touchSelect_ob={};
              var ct=city_data.data;
              function touch_select_dom(xx){
                  return document.querySelectorAll(xx)
              }

              //新建实例
              touchSelect_ob.time2 = new touch_select();
              //设置默认位置
              touchSelect_ob.time2.select_arr=[0,0,0];
              //初始化
              touchSelect_ob.time2.set_init({
                  title:'城市选择',
                  click_id:'select_touch_start2',
                  render:function (){
                      var tha=this;
                      //content节点
                      var dat={
                          privce:'',
                          city:'',
                          arr:''
                      };
                      //请根据 默认位置 渲染城市 否则将出现 初始化省市区不一致问题
                      for(var uy in ct.province){
                          dat.privce+='<li  data-name='+ct.province[uy]+' data-auto="data-自定义参数" data-value='+uy+'>'+ct.province[uy]+'</li>';
                      }
                      for(var uyx in ct.city[1]){
                          dat.city+='<li  data-name='+ct.city[1][uyx].area_name+' data-value='+ct.city[1][uyx].area_id+'>'+ct.city[1][uyx].area_name+'</li>';
                      }
                      for(var uyxx in ct.city[35]){
                          dat.arr+='<li  data-name='+ct.city[35][uyxx].area_name+' data-value='+ct.city[35][uyxx].area_id+' >'+ct.city[35][uyxx].area_name+'</li>';
                      }

                      touch_select_dom('#ul_out'+tha.click_id)[0].innerHTML='<div><ul id="province_t" class="touch-select-ul">'+dat.privce+'</ul></div><div><ul id="city_t" class="touch-select-ul">'+dat.city+'</ul></div><div><ul id="area_t" class="touch-select-ul">'+dat.arr+'</ul></div>';

                  },
                  select_val:function(){
                      //点击确认获得选定值
                      var times=touchSelect_ob.time2.get_all_value();
                      touchSelect_ob.time2.close();
                      console.log(times)
                  },
                  touch_end_fn:function (data) {
                      //设置联动渲染节点
                      var dat={
                          city:'',
                          arr:''
                      };
                      var value=this.getAttribute('data-value');
                      if(this.id=='province_t'){
                          for(var ts in ct.city[value]){
                              dat.city+='<li  data-name='+ct.city[value][ts].area_name+' data-value='+ct.city[value][ts].area_id+' >'+ct.city[value][ts].area_name+'</li>';
                          }
                          touchSelect_ob.time2.set_city(dat.city);
                          //渲染区
                          if(ct.city[value] && ct.city[value][0]){
                              setcitys(ct.city[value][0].area_id);
                          }

                      }
                      function setcitys(value){
                          if(!value){return}
                          for(var ts in ct.city[value]){
                              dat.arr+='<li  data-name='+ct.city[value][ts].area_name+' data-value='+ct.city[value][ts].area_id+' >'+ct.city[value][ts].area_name+'</li>';
                          }
                          touchSelect_ob.time2.set_arr(dat.arr);
                      }
                      if(this.id=='city_t'){
                          setcitys(value)
                      }
                  }
              });
          };
          times()
          citys()