@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) • 3.94 kB
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("react/jsx-runtime"),m=require("react"),i=require("semantic-ui-react"),I="multi-select",h="single-select",V=w=>{const{allLabel:R,noneLabel:_,placeholder:L,options:l,current:v,onChange:s,useSingleColumn:b,enableTextSearch:p,filterType:o,allNoneSameBehaviour:P,hiddenFilters:g,value:a,closeOnSelect:x=!0}=w,d=o===I,c=Array.isArray(a)?a:v||[],[u,A]=m.useState(""),T=(e,t)=>{if(o===I){let r=Array.isArray(c)?[...c]:[];return r.indexOf(t)>-1?r=r.filter(j=>j!==t):r=[...r,t],s&&s(e,r)}if(o===h)return s&&s(e,t);x&&f.current&&f.current.close()},D=()=>{const e=(l||[]).filter(t=>{var r;return p&&u&&u.trim().length>0&&t.text?(r=t.text)==null?void 0:r.toString().toLowerCase().includes(u.toLowerCase()):!0}).map(t=>t.value);d&&s&&s({},e),!d&&x&&f.current&&f.current.close()},F=()=>{let e=[];P&&(e=(l||[]).filter(t=>{var r;return p&&u&&u.trim().length>0&&t.text?(r=t.text)==null?void 0:r.toString().toLowerCase().includes(u.toLowerCase()):!0}).map(t=>t.value)),d&&s&&s({},e),!d&&x&&f.current&&f.current.close()},y=e=>{A(e)},E=m.useRef(!1);m.useEffect(()=>{if(!(!d||E.current)&&l&&l.length>0)if(!(Array.isArray(c)?c.length>0:!!c)&&s){E.current=!0;const t=l.map(r=>r.value);s({},t)}else E.current=!0},[d,l]),m.useEffect(()=>{if(d&&l&&l.length>0&&s){const e=l.map(t=>t.value);s({},e)}},[]);const k=()=>{if(o==h){const e=a?l==null?void 0:l.filter(t=>t.value==a)[0]:null;return e?e.text:""}else{const e=c?c.filter(r=>r==Number.MIN_SAFE_INTEGER?!1:g&&g.length>0?g.indexOf(r)==-1:!0).length:0,t=(l==null?void 0:l.filter(r=>g&&g.length>0?g.indexOf(r.id)==-1:!0).length)||0;return`${L} (${e}/${t})`}},f=m.useRef(null),N=k(),C=typeof N=="string"?N:"",M=C&&C.length>0?C:L||"",S=m.useRef(void 0);m.useEffect(()=>{o===h&&S.current===void 0&&a!==void 0&&(S.current=a)},[o,a]);const O=o===h?a!=null&&a!==S.current:v&&v.length>0;return n.jsx(i.Dropdown,{...w,ref:f,fluid:!0,text:M,scrolling:!1,button:!0,icon:"angle down",multiple:d,search:!0,floating:!1,value:a,closeOnChange:x,...d?{renderLabel:()=>null}:{},className:`multiple ${O?"applied ":""}`,children:n.jsxs(i.Dropdown.Menu,{children:[o!=h&&n.jsxs(n.Fragment,{children:[n.jsx(i.Segment,{children:n.jsxs(i.Dropdown.Item,{children:[n.jsx(i.Label,{basic:!0,onClick:D,children:R})," ","|"," ",n.jsx(i.Label,{basic:!0,onClick:F,children:_})]})}),p&&n.jsxs(n.Fragment,{children:[n.jsx(i.Container,{children:n.jsx(i.Dropdown.Item,{children:n.jsx("div",{className:"ui action input",children:n.jsxs("div",{className:"ui input",children:[n.jsx("input",{className:"filter-search",value:u,placeholder:"Search...",onChange:e=>{e&&e.nativeEvent&&e.nativeEvent.stopImmediatePropagation&&e.nativeEvent.stopImmediatePropagation(),y(e.target.value)},onKeyDown:e=>{e&&e.nativeEvent&&e.nativeEvent.stopImmediatePropagation&&e.nativeEvent.stopImmediatePropagation()},onKeyUp:e=>{e&&e.nativeEvent&&e.nativeEvent.stopImmediatePropagation&&e.nativeEvent.stopImmediatePropagation()},onKeyPress:e=>{e&&e.nativeEvent&&e.nativeEvent.stopImmediatePropagation&&e.nativeEvent.stopImmediatePropagation()},onMouseDown:e=>{e.stopPropagation()},onClick:e=>{e.stopPropagation()},onFocus:e=>{e.stopPropagation()},type:"text",autoComplete:"off"}),n.jsx(i.Icon,{name:"remove",link:!0,className:"clear-icon ignore",onClick:e=>{y("")}})]})})})}),n.jsx(i.Divider,{})]})]}),n.jsx("br",{}),n.jsx(i.Container,{className:b?"dropdown-single-column":"",children:l==null?void 0:l.filter(e=>{var t;return p&&u&&u.trim().length>0&&e.text?(t=e.text)==null?void 0:t.toString().toLowerCase().includes(u.toLowerCase()):!0}).map(({value:e,text:t},r)=>n.jsxs(i.Dropdown.Item,{className:b?"dropdown-item-single-column":"",children:[o===h&&n.jsx(i.Radio,{checked:a===e,onChange:j=>{T(j,e)},label:t}),o===I&&n.jsx(i.Checkbox,{checked:!!(c&&c.indexOf(e)>-1&&!(l.length==c.length&&P)),onChange:()=>T(null,e),label:t})]},r))})]})})};exports.default=V;