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