@purpurds/autocomplete 8.5.2 → 8.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/LICENSE.txt CHANGED
@@ -1,19 +1,19 @@
1
1
  Name: @purpurds/icon
2
- Version: 8.5.1
2
+ Version: 8.6.0
3
3
  License: AGPL-3.0-only
4
4
  Private: false
5
5
 
6
6
  ---
7
7
 
8
8
  Name: @purpurds/listbox
9
- Version: 8.5.1
9
+ Version: 8.6.0
10
10
  License: AGPL-3.0-only
11
11
  Private: false
12
12
 
13
13
  ---
14
14
 
15
15
  Name: @purpurds/text-field
16
- Version: 8.5.1
16
+ Version: 8.6.0
17
17
  License: AGPL-3.0-only
18
18
  Private: false
19
19
 
@@ -54,5 +54,5 @@
54
54
  Copyright (c) 2018 Jed Watson.
55
55
  Licensed under the MIT License (MIT), see
56
56
  http://jedwatson.github.io/classnames
57
- */var Kr;function Bn(){return Kr||(Kr=1,(function(e){(function(){var i={}.hasOwnProperty;function n(){for(var r="",t=0;t<arguments.length;t++){var u=arguments[t];u&&(r=a(r,o.call(this,u)))}return r}function o(r){if(typeof r=="string"||typeof r=="number")return this&&this[r]||r;if(typeof r!="object")return"";if(Array.isArray(r))return n.apply(this,r);if(r.toString!==Object.prototype.toString&&!r.toString.toString().includes("[native code]"))return r.toString();var t="";for(var u in r)i.call(r,u)&&r[u]&&(t=a(t,this&&this[u]||u));return t}function a(r,t){return t?r?r+" "+t:r+t:r}e.exports?(n.default=n,e.exports=n):window.classNames=n})()})(ur)),ur.exports}var En=Bn();const Tn=Ln(En),In={"purpur-autocomplete":"_purpur-autocomplete_1u8x6_1","purpur-autocomplete__listbox":"_purpur-autocomplete__listbox_1u8x6_4","purpur-autocomplete__chevron-button":"_purpur-autocomplete__chevron-button_1u8x6_9","purpur-autocomplete__chevron-icon":"_purpur-autocomplete__chevron-icon_1u8x6_15","purpur-autocomplete__chevron-icon--up":"_purpur-autocomplete__chevron-icon--up_1u8x6_19"},zn=e=>v.useRef(e),Dn=(e,i)=>{const n=v.useCallback(o=>{e&&!e.contains(o.target)&&i()},[i,e]);v.useEffect(()=>(document.addEventListener("mousedown",n),()=>{document.removeEventListener("mousedown",n)}),[n])},le=({combobox:e,comboboxButtonAriaLabel:i,highlightFirstOption:n,defaultInputValue:o,inputValue:a,filterOption:r,id:t,listboxLabel:u,listboxMaxHeight:m,onInputBlur:_,onInputChange:x,onInputFocus:b,onInputKeyDown:N,onInputMouseDown:A,openOnFocus:f,noOptionsText:j,onSelect:S,options:O,selectedOption:l,["data-testid"]:y})=>{const[R,L]=v.useState(((typeof a=="string"?a:o)||(l==null?void 0:l.label))??""),I=typeof a=="string"?a:R,[d,k]=v.useState(n?O[0]:void 0),z=v.useRef(null),U=zn(null),B=v.useRef(null),D=v.useRef({}),[w,or]=v.useState(!1);function J(s){return y?`${y}-${s}`:void 0}const V=()=>{or(!1),k(void 0)};Dn(U.current,V);const Z=({eventType:s})=>{or(!0),l&&requestAnimationFrame(()=>{k({...l,isSetByClickEvent:s==="CLICK"}),X(D.current[l.id])})},de=s=>{if(r)return O.filter($=>r(s,$));if(!s)return O;const c=s.toUpperCase().split(" ")||[];return O.filter($=>c.every(C=>($.value||$.label).toUpperCase().includes(C)))},sr=s=>l&&(l==null?void 0:l.label)===s?O:de(s),q=sr(I),Q=s=>{x==null||x(s),L(s)},X=s=>{var c;if(s){const $=s.getBoundingClientRect(),C=((c=B.current)==null?void 0:c.getBoundingClientRect())||{top:0,bottom:0};($.top<C.top||$.bottom>C.bottom)&&s.scrollIntoView({block:"nearest"})}},pr=s=>{var c;s&&((c=z.current)==null||c.focus(),Q(s.label),S==null||S(s)),V()},_e=s=>{const c=n&&!d?0:q.findIndex(C=>C&&(d==null?void 0:d.id)===C.id),$=q.length;return s==="ArrowDown"?q[(c??-1)+1]||q[0]:q[(c??$)-1]||q[$-1]},E=w&&(!!q.length||!!j),fe=s=>{!E&&Z({eventType:"KEYBOARD"});const c=_e(s);k(c),c&&X(D.current[c.id])},ve=s=>{switch(N==null||N(s),s.key){case"ArrowUp":case"ArrowDown":s.preventDefault(),fe(s.key);break;case"Enter":{const c=d||(n?O[0]:void 0);E&&pr(c),!E&&Z({eventType:"KEYBOARD"});break}case"Escape":case"Tab":V();break}},me=s=>{const c=sr(s.target.value);Q(s.target.value),k(void 0),!E&&Z({eventType:"KEYBOARD"}),n&&c[0]&&X(D.current[c[0].id])},ge=s=>{A==null||A(s),E?V():Z({eventType:"CLICK"})},he=s=>{var c;b==null||b(s),!w&&f&&Z({eventType:"KEYBOARD"}),(c=z.current)==null||c.select()},xe=s=>{_==null||_(s),setTimeout(()=>{var c,$;!((c=z.current)!=null&&c.contains(document.activeElement))&&!(($=B.current)!=null&&$.contains(document.activeElement))&&(V(),e&&Q(l?l.label:""))})},be={maxHeight:typeof m=="number"?`${m}px`:m},lr={"aria-label":u,"aria-expanded":E,"data-testid":J("listbox"),id:`${t}-listbox`,ref:B,onMouseLeave:()=>k(void 0),style:m?be:void 0},cr=s=>`${t}-listbox-item-${s.id}`,ye=(s,c)=>{const $=()=>s.id!==(d==null?void 0:d.id)&&k({...s,isSetByClickEvent:!0}),C=(s.id===(d==null?void 0:d.id)||!!n&&!d&&c===0)&&!(d!=null&&d.isSetByClickEvent);return{"data-testid":J(`listbox-item-${s.id}`),id:cr(s),key:s.id,onMouseMove:$,onMouseUp:()=>pr(s),ref:rr=>{rr&&(D.current[s.id]=rr)},tabIndex:-1,selected:s.id===(l==null?void 0:l.id),disabled:s.disabled,highlighted:C,hovered:s.id===(d==null?void 0:d.id)&&!!(d!=null&&d.isSetByClickEvent)}},we={"aria-activedescendant":d?cr(d):void 0,"aria-autocomplete":"list","aria-controls":lr.id,"data-testid":J("input"),autoComplete:"off",id:`${t}-input`,onChange:me,onMouseDown:ge,onFocus:he,onKeyDown:ve,onBlur:xe,ref:z,role:"combobox",value:I};return{id:t,inputProps:we,internalRef:U,optionsToShow:q,showListbox:E,noOptionsText:j,combobox:e,comboboxButtonAriaLabel:i,getListBoxItemProps:ye,listboxProps:lr}},Y=Tn.bind(In),G="purpur-autocomplete",Vn=({className:e,renderInput:i,renderOption:n,...o},a)=>{const{id:r,inputProps:t,internalRef:u,optionsToShow:m,showListbox:_,noOptionsText:x,combobox:b,comboboxButtonAriaLabel:N,getListBoxItemProps:A,listboxProps:f}=le(o),j=(l,y)=>{const{key:R,...L}=A(l,y);return p.jsx(K.Item,{...L,children:n?n==null?void 0:n(l):l.label},R)},S=l=>{u.current=l,typeof a=="function"?a(l):a&&(a.current=l)},O=()=>{const l=i(t);if(b&&N&&x&&l&&Mn(l)){const R=p.jsxs(p.Fragment,{children:[l.props.endAdornment,p.jsx("button",{"data-testid":"chevron button",type:"button",className:Y(`${G}__chevron-button`),onClick:()=>{t.onFocus(void 0),t.onMouseDown(void 0)},"aria-label":N,"aria-expanded":_,"aria-controls":f.id,children:p.jsx(Yr,{size:"sm",className:Y(`${G}__chevron-icon`,{[`${G}__chevron-icon--up`]:_})})})]});return v.cloneElement(l,{endAdornment:R})}return l};return p.jsxs("div",{id:r,ref:S,className:Y([e,G]),children:[O(),_&&p.jsx(K,{...f,className:Y(`${G}__listbox`),children:m.length?m.filter(l=>!!l).map(j):p.jsx(K.Item,{noninteractive:!0,children:x})})]})},ce=v.forwardRef(Vn);ce.displayName="Autocomplete";exports.Autocomplete=ce;exports.useAutocomplete=le;
57
+ */var Kr;function Bn(){return Kr||(Kr=1,(function(e){(function(){var i={}.hasOwnProperty;function n(){for(var r="",t=0;t<arguments.length;t++){var u=arguments[t];u&&(r=a(r,o.call(this,u)))}return r}function o(r){if(typeof r=="string"||typeof r=="number")return this&&this[r]||r;if(typeof r!="object")return"";if(Array.isArray(r))return n.apply(this,r);if(r.toString!==Object.prototype.toString&&!r.toString.toString().includes("[native code]"))return r.toString();var t="";for(var u in r)i.call(r,u)&&r[u]&&(t=a(t,this&&this[u]||u));return t}function a(r,t){return t?r?r+" "+t:r+t:r}e.exports?(n.default=n,e.exports=n):window.classNames=n})()})(ur)),ur.exports}var En=Bn();const Tn=Ln(En),In={"purpur-autocomplete":"_purpur-autocomplete_1u8x6_1","purpur-autocomplete__listbox":"_purpur-autocomplete__listbox_1u8x6_4","purpur-autocomplete__chevron-button":"_purpur-autocomplete__chevron-button_1u8x6_9","purpur-autocomplete__chevron-icon":"_purpur-autocomplete__chevron-icon_1u8x6_15","purpur-autocomplete__chevron-icon--up":"_purpur-autocomplete__chevron-icon--up_1u8x6_19"},zn=e=>v.useRef(e),Dn=(e,i)=>{const n=v.useCallback(o=>{e&&!e.contains(o.target)&&i()},[i,e]);v.useEffect(()=>(document.addEventListener("mousedown",n),()=>{document.removeEventListener("mousedown",n)}),[n])},le=({combobox:e,comboboxButtonAriaLabel:i,highlightFirstOption:n,defaultInputValue:o,inputValue:a,filterOption:r,id:t,listboxLabel:u,listboxMaxHeight:m,onInputBlur:_,onInputChange:x,onInputFocus:b,onInputKeyDown:N,onInputMouseDown:A,openOnFocus:f,noOptionsText:j,onSelect:S,options:O,selectedOption:l,["data-testid"]:y})=>{const[R,L]=v.useState(((typeof a=="string"?a:o)||(l==null?void 0:l.label))??""),I=typeof a=="string"?a:R,[d,k]=v.useState(n?O[0]:void 0),z=v.useRef(null),U=zn(null),B=v.useRef(null),D=v.useRef({}),[w,or]=v.useState(!1);function J(s){return y?`${y}-${s}`:void 0}const V=()=>{or(!1),k(void 0)};Dn(U.current,V);const Z=({eventType:s})=>{or(!0),l&&requestAnimationFrame(()=>{k({...l,isSetByClickEvent:s==="CLICK"}),X(D.current[l.id])})},de=s=>{if(r)return O.filter($=>r(s,$));if(!s)return O;const c=s.toUpperCase().split(" ")||[];return O.filter($=>c.every(C=>($.value||$.label).toUpperCase().includes(C)))},sr=s=>l&&(l==null?void 0:l.label)===s?O:de(s),q=sr(I),Q=s=>{x==null||x(s),L(s)},X=s=>{var c;if(s){const $=s.getBoundingClientRect(),C=((c=B.current)==null?void 0:c.getBoundingClientRect())||{top:0,bottom:0};($.top<C.top||$.bottom>C.bottom)&&s.scrollIntoView({block:"nearest"})}},pr=s=>{var c;s&&((c=z.current)==null||c.focus(),Q(s.label),S==null||S(s)),V()},_e=s=>{const c=n&&!d?0:q.findIndex(C=>C&&(d==null?void 0:d.id)===C.id),$=q.length;return s==="ArrowDown"?q[(c??-1)+1]||q[0]:q[(c??$)-1]||q[$-1]},E=w&&(!!q.length||!!j),fe=s=>{!E&&Z({eventType:"KEYBOARD"});const c=_e(s);k(c),c&&X(D.current[c.id])},ve=s=>{switch(N==null||N(s),s.key){case"ArrowUp":case"ArrowDown":s.preventDefault(),fe(s.key);break;case"Enter":{const c=d||(n?O[0]:void 0);E&&pr(c),!E&&Z({eventType:"KEYBOARD"});break}case"Escape":case"Tab":V();break}},me=s=>{const c=sr(s.target.value);Q(s.target.value),k(void 0),!E&&Z({eventType:"KEYBOARD"}),n&&c[0]&&X(D.current[c[0].id])},ge=s=>{A==null||A(s),E?V():Z({eventType:"CLICK"})},he=s=>{var c;b==null||b(s),!w&&f&&Z({eventType:"KEYBOARD"}),(c=z.current)==null||c.select()},xe=s=>{_==null||_(s),setTimeout(()=>{var c,$;!((c=z.current)!=null&&c.contains(document.activeElement))&&!(($=B.current)!=null&&$.contains(document.activeElement))&&(V(),e&&Q(l?l.label:""))})},be={maxHeight:typeof m=="number"?`${m}px`:m},lr={"aria-label":u,"aria-expanded":E,"data-testid":J("listbox"),id:`${t}-listbox`,ref:B,onMouseLeave:()=>k(void 0),style:m?be:void 0},cr=s=>`${t}-listbox-item-${s.id}`,ye=(s,c)=>{const $=()=>s.id!==(d==null?void 0:d.id)&&k({...s,isSetByClickEvent:!0}),C=(s.id===(d==null?void 0:d.id)||!!n&&!d&&c===0)&&!(d!=null&&d.isSetByClickEvent);return{"data-testid":J(`listbox-item-${s.id}`),id:cr(s),key:s.id,onMouseMove:$,onMouseUp:()=>pr(s),ref:rr=>{rr&&(D.current[s.id]=rr)},tabIndex:-1,selected:s.id===(l==null?void 0:l.id),disabled:s.disabled,highlighted:C,hovered:s.id===(d==null?void 0:d.id)&&!!(d!=null&&d.isSetByClickEvent)}},we={"aria-activedescendant":d?cr(d):void 0,"aria-autocomplete":"list","aria-controls":lr.id,"data-testid":J("input"),autoComplete:"off",id:`${t}-input`,onChange:me,onMouseDown:ge,onFocus:he,onKeyDown:ve,onBlur:xe,ref:z,role:"combobox",value:I};return{id:t,inputProps:we,internalRef:U,optionsToShow:q,showListbox:E,noOptionsText:j,combobox:e,comboboxButtonAriaLabel:i,getListBoxItemProps:ye,listboxProps:lr}},Y=Tn.bind(In),G="purpur-autocomplete",Vn=({className:e,renderInput:i,renderOption:n,...o},a)=>{const{id:r,inputProps:t,internalRef:u,optionsToShow:m,showListbox:_,noOptionsText:x,combobox:b,comboboxButtonAriaLabel:N,getListBoxItemProps:A,listboxProps:f}=le(o),j=(l,y)=>{const{key:R,...L}=A(l,y);return p.jsx(K.Item,{...L,children:n?n==null?void 0:n(l):l.label},R)},S=l=>{u.current=l,typeof a=="function"?a(l):a&&(a.current=l)},O=()=>{const l=i(t);if(b&&N&&x&&l&&Mn(l)){const R=p.jsxs(p.Fragment,{children:[l.props.endAdornment,p.jsx("button",{"data-testid":"chevron button",type:"button",className:Y(`${G}__chevron-button`),onClick:()=>{t.onFocus(void 0),t.onMouseDown(void 0)},"aria-label":N,"aria-expanded":_,"aria-controls":f.id,children:p.jsx(Yr,{size:"sm",className:Y(`${G}__chevron-icon`,{[`${G}__chevron-icon--up`]:_})})})]});return v.cloneElement(l,{endAdornment:R})}return l};return p.jsxs("div",{id:r,ref:S,className:Y([G,e]),children:[O(),_&&p.jsx(K,{...f,className:Y(`${G}__listbox`),children:m.length?m.filter(l=>!!l).map(j):p.jsx(K.Item,{noninteractive:!0,children:x})})]})},ce=v.forwardRef(Vn);ce.displayName="Autocomplete";exports.Autocomplete=ce;exports.useAutocomplete=le;
58
58
  //# sourceMappingURL=autocomplete.cjs.js.map