UNPKG

@devgateway/dvz-ui-react

Version:

A modular, embeddable React component library for data visualization and UI, built with TypeScript. Provides reusable components for charts, maps, dashboards, and more, with built-in support for internationalization and Redux integration.

2 lines (1 loc) 8.55 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),N=require("react"),s=require("semantic-ui-react"),G=require("../data/CategoriesConsumer.js"),J=require("../data/CategoriesProvider.js"),$=require("react-redux"),H=require("../reducers/data.js"),z=require("react-intl"),Y="multi-select",A="single-select",K="NO_DATA",Q="DEFAULT_VALUE_INPUT",X="LOWEST_VALUE",Z="HIGHEST_VALUE",T=t=>t instanceof Boolean?t:t=="true",ee=(t,u)=>t?t.sort((l,i)=>l.position-i.position).map(l=>{const i=u&&l.labels&&l.labels[u.toUpperCase()]?l.labels[u.toUpperCase()]:l.value;return{key:l.id,value:l.id,text:i,icon:l.value.toLocaleLowerCase(),position:l.position?l.position:l.value}}):[],te=t=>decodeURIComponent(t),W=t=>{if(!t||t=="")return null;try{return JSON.parse(te(t))}catch(u){throw new Error("error parsing value:"+u)}},q=(t,u)=>{const{app:l,group:i,param:c}=u;return{current:t.getIn(["data","filters",l,i,c])}},P={onInit:H.setInitialFilters,onChange:H.setFilter},M=t=>{const{isRange:u,options:l,alphabeticalSort:i,ascOrder:c}=t;let f=[];T(i)?f=l.sort(function(d,r){const p=d.text?d.text.toLowerCase():"",o=r.text?r.text.toLowerCase():"";return T(c)?p<o?-1:p>o?1:0:p<o?1:p>o?-1:0}):f=l.sort(function(d,r){return T(c)?d.position-r.position:r.position-d.position});const h={...t,options:f};return u?e.jsx(re,{...h}):e.jsx(ne,{...h})},ne=$.connect(q,P)(t=>{const{allLabel:u,noneLabel:l,placeholder:i,options:c,app:f,group:h,param:d,current:r,onChange:p,onInit:o,useSingleColumn:v,enableTextSearch:m,filterType:S,defaultValues:b,showNoDataOption:I,defaultValueCriteria:x,allNoneSameBehaviour:g,closeOnSelect:w,hiddenFilters:F,autoApply:L}=t,[y,R]=N.useState(""),_=n=>{let a=[];S!=A&&!w&&r&&r.indexOf(n)>-1?a=r.filter(C=>C!==n):S!=A&&r&&!w?a=[...r,n]:a=[n],p({app:f,group:h,param:d,value:a,autoApply:L}),w&&E.current&&E.current.close()},k=n=>{const a=c.filter(C=>m&&j&&j.trim().length>0&&C.text?C.text.toLowerCase().includes(j.toLowerCase()):!0);p({app:f,group:h,param:d,value:a.map(C=>C.value),autoApply:L}),w&&E.current&&E.current.close()},V=()=>{const n=c.filter(a=>m&&j&&j.trim().length>0&&a.text?a.text.toLowerCase().includes(j.toLowerCase()):!0);p({app:f,group:h,param:d,value:g?n.map(a=>a.value):[],autoApply:L}),w&&E.current&&E.current.close()},O=n=>{D(n)};N.useEffect(()=>{if(!r){const n=c.map(a=>a.value);if(S==Y||S=="")o({app:f,group:h,param:d,value:n});else if(f=="csv"){let a=[];x===Q?a=b?b.split(","):[]:x==X?a=n.length>0?[n[0]]:[]:x==Z&&(a=n.length>0?[n[n.length-1]]:[]),o({app:f,group:h,param:d,value:a})}else o({app:f,group:h,param:d,value:[n[0]]})}},[]);const B=()=>{if(S==A){const n=r&&r[0]?c.filter(a=>a.value==r[0])[0]:null;return`${i} ${n?n.text:""}`}else return`${i} (${r?r.filter(n=>n==Number.MIN_SAFE_INTEGER?!1:F&&F.length>0?F.indexOf(n)==-1:!0).length:0}/${c.filter(n=>F&&F.length>0?F.indexOf(n.id)==-1:!0).length}) `},E=N.useRef(null),[j,D]=N.useState("");return e.jsx(s.Dropdown,{ref:E,fluid:!0,text:B(),scrolling:!1,button:!0,icon:"angle down",multiple:!0,search:!0,floating:!1,className:`${r&&r.length>0?"applied ":""}`,children:e.jsxs(s.Dropdown.Menu,{children:[S!=A&&e.jsxs(e.Fragment,{children:[e.jsx(s.Segment,{children:e.jsxs(s.Dropdown.Item,{children:[e.jsx(s.Label,{basic:!0,onClick:k,children:u})," ","|"," ",e.jsx(s.Label,{basic:!0,onClick:V,children:l})]})}),m&&e.jsxs(e.Fragment,{children:[e.jsx(s.Container,{children:e.jsx(s.Dropdown.Item,{children:e.jsx("div",{className:"ui action input",children:e.jsxs(s.Input,{placeholder:"Search...",children:[e.jsx("input",{className:"filter-search",value:j,onChange:n=>{O(n.target.value)}}),e.jsx(s.Icon,{name:"remove",link:!0,className:"clear-icon ignore",onClick:n=>{O("")}})]})})})}),e.jsx(s.Divider,{})]})]}),e.jsx("br",{}),e.jsx(s.Container,{className:v?"dropdown-single-column":"",children:c.filter(n=>m&&j&&j.trim().length>0&&n.text?n.text.toLowerCase().includes(j.toLowerCase()):!0).map(({value:n,text:a},C)=>e.jsxs(s.Dropdown.Item,{className:v?"dropdown-item-single-column":"",children:[S==A&&e.jsx(s.Radio,{checked:!!(r&&r.indexOf(n)>-1),onChange:U=>_(n),label:a}),S==Y&&e.jsx(s.Checkbox,{checked:!!(r&&r.indexOf(n)>-1&&!(c.length==r.length&&g)),onChange:U=>_(n),label:a})]},C))})]})})}),re=$.connect(q,P)(({placeholder:t,startLabel:u,endLabel:l,options:i,onChange:c,app:f,group:h,param:d,current:r,autoApply:p})=>{const[o,v]=N.useState(i[0].position),[m,S]=N.useState(i[i.length-1].position);N.useEffect(()=>{const I=i.filter(x=>(x.position>o||x.position===o)&&(x.position<m||x.position===m)).map(x=>x.value);c({app:f,group:h,param:d,value:I,autoApply:p})},[o,m]);const b=N.useRef(null);return e.jsx(s.Dropdown,{ref:b,fluid:!0,text:`${t} (${r?r.filter(I=>I!=Number.MIN_SAFE_INTEGER).length:0}/${i.length})`,scrolling:!1,button:!0,multiple:!0,search:!0,floating:!1,icon:"angle down",className:`${r&&r.length>0?"applied ":""} range`,children:e.jsxs(s.Dropdown.Menu,{children:[e.jsx(s.Segment,{children:e.jsxs(s.Dropdown.Item,{children:[" ",e.jsx(s.Label,{basic:!0,children:u})]})}),e.jsx(s.Container,{children:i.map(({value:I,text:x,position:g})=>e.jsx(s.Dropdown.Item,{children:e.jsx(s.Radio,{disabled:g>m,checked:o===g,onChange:w=>v(g),label:x})}))}),e.jsx(s.Segment,{children:e.jsxs(s.Dropdown.Item,{children:[" ",e.jsx(s.Label,{basic:!0,children:l})]})}),e.jsx(s.Container,{children:i.map(({value:I,text:x,position:g})=>e.jsx(s.Dropdown.Item,{children:e.jsx(s.Radio,{disabled:g<o,checked:m===g,onChange:w=>S(g),label:x})}))})]})})}),le=t=>{const{data:u,type:l,showNoDataOption:i}=t,c=u.filter(o=>o.type===l)[0],f=c?c.items.filter(o=>!i&&o.code==K?!1:t.hiddenFilters&&t.hiddenFilters.length>0?t.hiddenFilters.indexOf(o.id)==-1:!0):[],h=f?ee(f,t.locale):[],d=u.find(o=>o.type="FilterDefinition"),r=d?d.items.find(o=>o.fieldType==l):null,p=r?r.value:"Filter";return e.jsx(s.Container,{fluid:!0,className:"filter",children:e.jsx(M,{...t,options:h,placeholder:t.placeholder?t.placeholder:p})})},se=$.connect(q,P)(t=>{let u=0;const l=[{key:"Yes",value:!0,text:"Yes",position:u++},{key:"No",value:!1,text:"No",position:u++}];return e.jsx(s.Container,{fluid:!0,className:"filter",children:e.jsx(M,{options:l,...t})})}),ae=t=>{const{csvValue:u}=t;let l=0;const i=u.split(",").map(c=>({key:c,value:c,text:c,icon:c.toLocaleLowerCase(),position:l++}));return e.jsx(s.Container,{fluid:!0,className:"filter",children:e.jsx(M,{options:i,...t,children:" "})})},oe=t=>e.jsx(ie,{...t}),ie=({unique:t,"data-group":u,"data-app":l,"data-dvz-proxy-dataset-id":i,"data-param":c,"data-icon":f,"data-type":h,"data-place-holder":d,"data-is-range":r="false","data-all-label":p,"data-none-label":o,"data-start-label":v,"data-end-label":m,"data-csv-value":S,"data-filters":b="[]","data-use-single-column":I="false","data-enable-text-search":x="false","data-filter-type":g,"data-default-values":w,"data-show-no-data-option":F="true","data-default-value-criteria":L="DEFAULT_VALUE_INPUT","data-hidden-filters":y="[]","data-all-none-same-behaviour":R="false","data-close-on-select":_="false","data-alphabetical-sort":k="true","data-asc-order":V="true","data-auto-apply":O="true",settings:B,intl:E})=>{const j={},D=b?W(b):{};D&&D.forEach&&D.forEach(C=>{C.value!=null&&C.value.filter(U=>U!=null&&U.toString().trim()!="").length>0&&(j[C.param]=C.value)}),i&&(j.dvzProxyDatasetId=i);const n=y?W(y):[];let a;return g==null||g==""?a=r==="true"?"range":"multi-select":a=g,l==="csv"?e.jsx(ae,{allLabel:p,noneLabel:o,isRange:r==="true",csvValue:S,app:l,group:u,icon:f,placeholder:d,startLabel:v,endLabel:m,param:c,useSingleColumn:I==="true",enableTextSearch:x==="true",filterType:a,defaultValues:w,defaultValueCriteria:L,allNoneSameBehaviour:R==="true",closeOnSelect:_==="true",locale:E.locale}):l?e.jsx(J.default,{dvzProxyDatasetId:i,params:j,app:l,uniqueStorage:D.length>0?t:null,hiddenFilters:n||[],children:e.jsx(G.default,{children:e.jsxs(s.Container,{fluid:!0,children:[h==="Boolean"&&e.jsx(se,{startLabel:v,endLabel:m,allLabel:p,noneLabel:o,isRange:T(r),app:l,group:u,icon:f,placeholder:d,param:c,filterType:a,defaultValues:w,locale:E.locale}),h!=="Boolean"&&e.jsx(G.default,{type:h,children:e.jsx(le,{startLabel:v,endLabel:m,allLabel:p,noneLabel:o,isRange:T(r),app:l,group:u,icon:f,placeholder:d,param:c,alphabeticalSort:k,ascOrder:V,useSingleColumn:T(I),enableTextSearch:T(x),showNoDataOption:T(F),filterType:a,defaultValues:w,defaultValueCriteria:L,hiddenFilters:n||[],allNoneSameBehaviour:R=="true",autoApply:T(O),closeOnSelect:T(_),locale:E.locale})})]})})}):null},ce=z.injectIntl(oe);exports.default=ce;