@ebay/ui-core-react
Version:
Skin components build off React
2 lines (1 loc) • 1.96 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _=require("../tslib.es6-C4EgNkz1.js"),o=require("react"),N=require("classnames"),a=require("../combobox-Ck8qituJ.js"),R=require("../utils-C9NL3q0j.js"),T=require("../chip-CIFQ2NnF.js");require("../hooks-uidlIIid.js");require("../array.polyfill.flat-5BAolFdk.js");require("../dropdown-B6wMNyjP.js");const B=i=>{var{className:h,fluid:x,error:y,disabled:c,selected:r,defaultSelected:u,a11yDeleteButtonText:f="Remove",onChange:n,children:C}=i,E=_.__rest(i,["className","fluid","error","disabled","selected","defaultSelected","a11yDeleteButtonText","onChange","children"]);const S=R.filterByType(C,a.EbayComboboxOption),[g,b]=o.useState(u||[]),s=r||g,[v,d]=o.useState(""),p=o.useRef(null),m=(e,t)=>{const l=[...s,t];b(l),n?.(e,{selected:[...l]}),d("")},w=(e,t)=>{const l=s.filter((I,D)=>D!==t);b(l),n?.(e,{selected:[...l]})},O=e=>{if(e.key==="Enter"){const t=e.target.value;e.preventDefault(),t&&!s.includes(t)&&m(e,t)}},q=(e,t)=>{d(t.currentInputValue)};if(r&&u)throw new Error('EbayChipsCombobox: You cannot use "selected" and "defaultSelected" at the same time.');if(r&&!n)throw new Error('EbayChipsCombobox: You must provide an "onChange" prop when using the "selected" prop.');return o.createElement("span",{ref:p,className:N(h,"chips-combobox",{"chips-combobox--fluid":x,"chips-combobox--error":y}),"aria-disabled":c?"true":void 0},s.length?o.createElement("ul",{className:"chips-combobox__items"},s.map((e,t)=>o.createElement("li",{key:t},o.createElement(T.EbayChip,{a11yDeleteButtonText:`${f} ${e}`,onDelete:l=>w(l,t),disabled:c},e)))):null,o.createElement(a.EbayCombobox,Object.assign({},E,{className:"chips-combobox__combobox",disabled:c,dropdownRef:p,value:v,autocomplete:"list",onSelect:(e,t)=>m(e,t.selectedOption.text),onInputChange:q,onKeyDown:O}),S.filter(e=>!s.includes(e.props.text))))};exports.EbayComboboxOption=a.EbayComboboxOption;exports.EbayChipsCombobox=B;