UNPKG

carbon-react

Version:

A library of reusable React components for easily building user interfaces.

2 lines (1 loc) 2.69 kB
import{jsx as e,jsxs as t}from"react/jsx-runtime";import r,{useContext as n,useRef as o,useCallback as i}from"react";import{CSSTransition as s}from"react-transition-group";import{StyledPicklistItem as l,StyledButton as c,StyledLockIcon as p}from"./picklist-item.style.js";import a from"../__internal__/duelling-picklist.context.js";import u from"../../../__internal__/utils/helpers/events/events.js";function m(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}const f=r.forwardRef(((r,f)=>{var{children:d,type:y,onChange:b,item:O,locked:g,tooltipMessage:j="This item is locked and can not be moved",index:v,listIndex:k,groupIndex:x,isLastGroup:h,isLastItem:P}=r,w=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(r,["children","type","onChange","item","locked","tooltipMessage","index","listIndex","groupIndex","isLastGroup","isLastItem"]);const{setElementToFocus:I}=n(a),_=o(null),S=i((()=>P?{itemIndex:h?0:0===x&&0!==v?1:x,list:h?0===k?1:0:k,group:void 0}:{itemIndex:v,list:k,group:x}),[x,v,h,P,k]),D=i((()=>{const{itemIndex:e,list:t,group:r}=S();I(e,t,r)}),[S,I]),E=i((()=>{b(O),D()}),[b,O,D]),L=i((e=>{(u.isEnterKey(e)||u.isSpaceKey(e))&&(e.preventDefault(),b(O),D())}),[b,O,D]);return e(s,(T=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){m(e,t,r[t])}))}return e}({timeout:{appear:500,enter:300,exit:0},classNames:"picklist-item"},w,"add"===y?{enter:!1}:{}),C=null!=(C={nodeRef:_,children:t(l,{onKeyDown:L,"data-element":"picklist-item",locked:g,ref:_,children:[d,!g&&e(c,{"data-role":"picklist-item-button",buttonType:"primary",destructive:"remove"===y,iconType:y,onClick:E,ref:f}),g&&e(p,{type:"locked",tooltipMessage:j})]})})?C:{},Object.getOwnPropertyDescriptors?Object.defineProperties(T,Object.getOwnPropertyDescriptors(C)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t}(Object(C)).forEach((function(e){Object.defineProperty(T,e,Object.getOwnPropertyDescriptor(C,e))})),T));var T,C}));f.displayName="PicklistItem";export{f as PicklistItem,f as default};