UNPKG

@chief-editor/ui

Version:

UI Component for chief editor

1 lines 2.28 kB
var __assign=this&&this.__assign||function(){return(__assign=Object.assign||function(e){for(var t,a=1,s=arguments.length;a<s;a++)for(var l in t=arguments[a])Object.prototype.hasOwnProperty.call(t,l)&&(e[l]=t[l]);return e}).apply(this,arguments)},__rest=this&&this.__rest||function(e,t){var a={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.indexOf(s)<0&&(a[s]=e[s]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var l=0;for(s=Object.getOwnPropertySymbols(e);l<s.length;l++)t.indexOf(s[l])<0&&Object.prototype.propertyIsEnumerable.call(e,s[l])&&(a[s[l]]=e[s[l]])}return a};import{OptionState,useOption,useSelect}from"@rc-hooks/select";import{CheckSmall}from"@byte-design/icons";import{classnames,getUniqueKey}from"@co-hooks/util";import React,{useCallback,useState}from"react";import{usePrefixCls}from"../../hooks";import{ListItem}from"../util/ListItem";export function Option(e){var t=e.value,a=e.label,s=e.readonly,l=e.disabled,n=e.children,o=e.className,i=e.style,r=__rest(e,["value","label","readonly","disabled","children","className","style"]),c=useSelect(),p=useState(!0),u=p[0],d=p[1],m=useState(!1),f=m[0],y=m[1],b=getUniqueKey(t),h=useCallback((function(e){d(!!e[b])}),[]),O=useCallback((function(e){y((function(t){return e===b&&!t||(e===b||!t)&&t}))}),[]),g=useOption({value:t,label:a,disabled:l,readonly:s},b,h,O),S=g.getData(),k=c.getExtraProps()||{},E=classnames(usePrefixCls("select-option",{selected:S.selected,"fill-back":f}),o),_=useCallback((function(e){g.setOptionState(e?OptionState.SELECTED:OptionState.UNSELECTED)}),[]),C=useCallback((function(){var e=g.getData(),t=e.disabled,a=e.readonly,s=e.selected;t||a||g.setOptionState(s?OptionState.UNSELECTED:OptionState.SELECTED)}),[]);return React.createElement("div",{"data-type":"select-option","data-option-id":b,className:E},React.createElement(ListItem,__assign({},r,{key:b,prefixCls:"select-option",checkable:c.multiple&&"checkbox"===k.checkType,disabled:S.disabled,readonly:S.readonly,state:g.getOptionState(),onCheckboxChange:_,onClick:C,style:__assign(__assign({},i),{display:u?void 0:"none"}),level:g.getOptionIdPath().length}),React.createElement("span",{className:"item-text"},"function"==typeof n?n(S):n||a),React.createElement(CheckSmall,{className:"option-check-icon"})))}