@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
2 lines (1 loc) • 5.71 kB
JavaScript
(function(f,d){typeof exports=="object"&&typeof module<"u"?d(exports,require("vue"),require("lodash-es"),require("../common/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","vue","lodash-es","../common/index.umd.js"],d):(f=typeof globalThis<"u"?globalThis:f||self,d(f["radio-button"]={},f.Vue,f.LodashES,f.common))})(this,function(f,d,j,V){"use strict";const N={},R={};function C(e){const{properties:t,title:l,ignore:r}=e,o=r&&Array.isArray(r),a=Object.keys(t).reduce((c,p)=>((!o||!r.find(b=>b===p))&&(c[p]=t[p].type==="object"&&t[p].properties?C(t[p]):j.cloneDeep(t[p].default)),c),{});if(l&&(!o||!r.find(c=>c==="id"))){const c=l.toLowerCase().replace(/-/g,"_");a.id=`${c}_${Math.random().toString().slice(2,6)}`}return a}function T(e,t){const l=C(t);return Object.keys(l).reduce((r,o)=>(Object.prototype.hasOwnProperty.call(e,o)&&(r[o]&&j.isPlainObject(r[o])&&j.isPlainObject(e[o]||!e[o])?Object.assign(r[o],e[o]||{}):r[o]=e[o]),r),l),l}function $(e,t){return Object.keys(e).filter(r=>e[r]!=null).reduce((r,o)=>{if(t.has(o)){const a=t.get(o);if(typeof a=="string")r[a]=e[o];else{const c=a(o,e[o],e);Object.assign(r,c)}}else r[o]=e[o];return r},{})}function P(e,t,l=new Map){const r=T(e,t);return $(r,l)}function M(e={}){function t(n,i,s,u){if(typeof s=="number")return u[n].length===s;if(typeof s=="object"){const g=Object.keys(s)[0],m=s[g];if(g==="not")return Number(u[n].length)!==Number(m);if(g==="moreThan")return Number(u[n].length)>=Number(m);if(g==="lessThan")return Number(u[n].length)<=Number(m)}return!1}function l(n,i,s,u){return u[n]&&u[n].propertyValue&&String(u[n].propertyValue.value)===String(s)}const r=new Map([["length",t],["getProperty",l]]);Object.keys(e).reduce((n,i)=>(n.set(i,e[i]),n),r);function o(n,i){const s=n;return typeof i=="number"?[{target:s,operator:"length",param:null,value:Number(i)}]:typeof i=="boolean"?[{target:s,operator:"getProperty",param:n,value:!!i}]:typeof i=="object"?Object.keys(i).map(u=>{if(u==="length")return{target:s,operator:"length",param:null,value:i[u]};const g=u,m=i[u];return{target:s,operator:"getProperty",param:g,value:m}}):[]}function a(n){return Object.keys(n).reduce((s,u)=>{const g=o(u,n[u]);return s.push(...g),s},[])}function c(n,i){if(r.has(n.operator)){const s=r.get(n.operator);return s&&s(n.target,n.param,n.value,i)||!1}return!1}function p(n,i){return a(n).reduce((g,m)=>g&&c(m,i),!0)}function b(n,i){const s=Object.keys(n),u=s.includes("allOf"),g=s.includes("anyOf"),m=u||g,x=(m?n[m?u?"allOf":"anyOf":"allOf"]:[n]).map(I=>p(I,i));return u?!x.includes(!1):x.includes(!0)}return{parseValueSchema:b}}const w={},B={};M();function E(e,t,l=new Map,r=(c,p,b,n)=>p,o={},a=c=>c){return N[t.title]=t,R[t.title]=r,w[t.title]=o,B[t.title]=a,(c={},p=!0)=>{if(!p)return $(c,l);const b=P(c,t,l),n=Object.keys(e).reduce((i,s)=>(i[s]=e[s].default,i),{});return Object.assign(n,b)}}function D(e,t){return{customClass:t.class,customStyle:t.style}}const q=new Map([["appearance",D]]);function F(e,t,l){return t}const A={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/radio-button.schema.json",title:"radio-button",description:"A Farris Component",type:"object",properties:{id:{description:"The unique identifier for radio-button",type:"string"},type:{description:"The type string of radio-button",type:"string",default:"radio-button"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},binding:{description:"",type:"object",default:{}},disable:{type:"string",default:!1},editable:{description:"",type:"boolean",default:!0},placeholder:{description:"",type:"string",default:""},readonly:{description:"",type:"boolean",default:!1},require:{description:"",type:"boolean",default:!1},tabindex:{description:"",type:"number",default:-1},visible:{description:"",type:"boolean",default:!0}},required:["id","type"]},k={title:"radio-button",description:"A Farris Component",type:"object",categories:{basic:{description:"Basic Infomation",title:"基本信息",properties:{id:{description:"组件标识",title:"标识",type:"string",readonly:!0},type:{description:"组件类型",title:"控件类型",type:"select",editor:{type:"waiting for modification",enum:[]}}}}}},h={enumData:{type:Array,default:[{text:"1",active:!0}]},suffixValue:{type:String,default:""},onSelectedValueChanged:{type:Function,default:()=>{}}},O=E(h,A,q,F,k),y=d.defineComponent({name:"FRadioButton",props:h,emits:["selectedValueChanged"],setup(e,t){const l=d.ref(e.enumData);function r(a,c){if(a.currentTarget.classList.value="btn btn-secondary active",a.currentTarget.tagName.toLowerCase()==="label"){const{currentTarget:p}=a,b=p.parentElement;Array.from(b.querySelectorAll("label")).filter(i=>i!==p).forEach(i=>i.classList.remove("active"))}t.emit("selectedValueChanged",c)}function o(a){return`${a.text}${e.suffixValue}`}return d.watch(()=>e.enumData,(a,c)=>{a!==c&&(l.value=e.enumData)}),()=>d.createVNode("div",{class:"f-radio-button"},[d.createVNode("div",{class:["farris-input-wrap"]},[l.value.map((a,c)=>d.createVNode(d.Fragment,null,[d.createVNode("label",{class:a.active?"btn btn-secondary active":"btn btn-secondary",onClick:p=>r(p,a)},[d.createVNode("span",{class:"f-radio-button-text"},[o(a)])])]))])])}}),L=d.defineComponent({name:"FRadioButtonDesign",props:h,emits:[""],setup(e,t){return()=>d.createVNode(d.Fragment,null,null)}});y.register=(e,t,l,r)=>{e["radio-button"]=y,t["radio-button"]=O},y.registerDesigner=(e,t,l)=>{e["radio-button"]=L,t["radio-button"]=O};const v=V.withInstall(y);f.RadioButton=y,f.default=v,f.propsResolver=O,f.radioButtonProps=h,Object.defineProperties(f,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});