nv-data-selection
Version:
nv-data-selection ============ - nv-data-selection ,nest selection - multi, radio,value,validator - notifier callback
110 lines (84 loc) • 3.87 kB
JavaScript
const _V = (validate=(r)=>true,slcted=true,dflt)=>{
if(validate(dflt)) {
return({type:"Setter",validate,slcted,dflt})
} else {
return({type:"Setter",validate,slcted})
}
}
const _m = (as='dict',slcted=true)=>({type:'Multi',as,slcted});
const _r = (slcted=true)=>({type:"Radio",slcted});
const _v = (val,slcted=true) => ({type:'Value',val,slcted});
const value = (name,val,slcted=true) => [name,_v(val,slcted) ];
const vali = (name,validate=(r)=>true,slcted=true,dflt) => [name,_V(validate,slcted,dflt) ];
const radio = (name,opts=[], slcted=true) => [name,_r(slcted), opts];
const multi = (name,opts=[], as='dict',slcted=true) => [name,_m(as,slcted), opts];
const multi_as_dict = (name,opts=[],slcted=true) => [name,_m('dict',slcted), opts];
const multi_as_ary = (name,opts=[],slcted=true) => [name,_m('ary',slcted), opts];
const slcted_value = (name,val)=>value(name,val,true);
const unslcted_value = (name,val)=>value(name,val,false);
const slcted_vali = (name,validate=(r)=>true,dflt) => vali(name,validate,true,dflt);
const unslcted_vali = (name,validate=(r)=>true,dflt) => vali(name,validate,false,dflt);
const slcted_radio = (name,opts=[]) => radio(name,opts,true);
const unslcted_radio = (name,opts=[]) => radio(name,opts,false);
const slcted_multi_as_dict = (name,opts=[]) => multi_as_dict(name,opts,true);
const slcted_multi_as_ary = (name,opts=[]) => multi_as_ary(name,opts,true);
const unslcted_multi_as_dict = (name,opts=[]) => multi_as_dict(name,opts,false);
const unslcted_multi_as_ary = (name,opts=[]) => multi_as_ary(name,opts,false);
const tru = (slcted) => value('true',true,slcted);
const fls = (slcted) => value('false',false,slcted);
const slcted_tru = ()=>tru(true);
const unslcted_tru = ()=>tru(false);
const slcted_fls = ()=>fls(true);
const unslcted_fls = ()=>fls(false);
const $tru = ()=>true;
const $fls = ()=>false;
const slcted_radio_bool = (name,dflt=true) =>slcted_radio(name,dflt?[...slcted_tru(),...unslcted_fls()]:[...unslcted_tru(),...slcted_fls()]);
const unslcted_radio_bool = (name,dflt=true) =>unslcted_radio(name,dflt?[...slcted_tru(),...unslcted_fls()]:[...unslcted_tru(),...slcted_fls()]);
const slcted_radio_bool_dflt_tru = (name) => slcted_radio_bool(name,true);
const slcted_radio_bool_dflt_fls = (name) => slcted_radio_bool(name,false);
const unslcted_radio_bool_dflt_tru = (name) => unslcted_radio_bool(name,true);
const unslcted_radio_bool_dflt_fls = (name) => unslcted_radio_bool(name,false);
const slcted_vali_any = (name,dflt) =>slcted_vali(name,$tru,dflt);
const unslcted_vali_any = (name,dflt) =>unslcted_vali(name,$tru,dflt);
const slcted_vali_none = (name,dflt) =>slcted_vali(name,$fls,dflt);
const unslcted_vali_none = (name,dflt) =>unslcted_vali(name,$fls,dflt);
module.exports = {
_V,
_m,
_r,
_v,
value,
vali,
radio,
multi,
multi_as_dict,
multi_as_ary,
slcted_value,
unslcted_value,
slcted_vali,
unslcted_vali,
slcted_radio,
unslcted_radio,
slcted_multi_as_dict,
slcted_multi_as_ary,
unslcted_multi_as_dict,
unslcted_multi_as_ary,
tru,
fls,
slcted_tru,
unslcted_tru,
slcted_fls,
unslcted_fls,
$tru,
$fls,
slcted_radio_bool,
unslcted_radio_bool,
slcted_radio_bool_dflt_tru,
slcted_radio_bool_dflt_fls,
unslcted_radio_bool_dflt_tru,
unslcted_radio_bool_dflt_fls,
slcted_vali_any,
unslcted_vali_any,
slcted_vali_none,
unslcted_vali_none
}