primereact
Version:
PrimeReact is an open source UI library for React featuring a rich set of 90+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with Prime
2 lines (1 loc) • 4.79 kB
JavaScript
import*as e from"react";import{PrimeReactContext as t,ariaLabel as n}from"primereact/api";import{ComponentBase as r,useHandleStyle as o}from"primereact/componentbase";import{useMergeProps as l,useMountEffect as a}from"primereact/hooks";import{CheckIcon as c}from"primereact/icons/check";import{TimesIcon as i}from"primereact/icons/times";import{Tooltip as u}from"primereact/tooltip";import{classNames as p,DomHandler as s,ObjectUtils as m,IconUtils as f}from"primereact/utils";function d(){return d=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},d.apply(this,arguments)}function b(e){return b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},b(e)}function v(e,t){if("object"!==b(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==b(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function y(e){var t=v(e,"string");return"symbol"===b(t)?t:String(t)}var h=r.extend({defaultProps:{__TYPE:"TriStateCheckbox",autoFocus:!1,checkIcon:null,className:null,disabled:!1,id:null,invalid:!1,variant:null,onChange:null,readOnly:!1,style:null,tabIndex:"0",tooltip:null,tooltipOptions:null,uncheckIcon:null,value:null,children:void 0},css:{classes:{root:function(e){var t=e.props,n=e.context;return p("p-tristatecheckbox p-checkbox p-component",{"p-highlight":null!==t.value,"p-disabled":t.disabled,"p-invalid":t.invalid,"p-variant-filled":t.variant?"filled"===t.variant:n&&"filled"===n.inputStyle})},checkIcon:"p-checkbox-icon p-c",box:"p-checkbox-box",input:"p-checkbox-input"}}});function g(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function O(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?g(Object(n),!0).forEach((function(t){var r,o,l;r=e,l=n[t],(o=y(o=t))in r?Object.defineProperty(r,o,{value:l,enumerable:!0,configurable:!0,writable:!0}):r[o]=l})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):g(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var k=e.memo(e.forwardRef((function(r,b){var v=l(),y=e.useContext(t),g=h.getProps(r,y),k=e.useRef(null),x=h.setMetaData({props:g}),P=x.ptm,E=x.cx;o(h.css.styles,x.isUnstyled,{name:"tristatecheckbox"});var j=function(e){var t;g.disabled||g.readOnly||(null==g.value?t=!0:!0===g.value?t=!1:!1===g.value&&(t=null),g.onChange&&g.onChange({originalEvent:e,value:t,stopPropagation:function(){null==e||e.stopPropagation()},preventDefault:function(){null==e||e.preventDefault()},target:{name:g.name,id:g.id,value:t}}))};e.useImperativeHandle(b,(function(){return{props:g,focus:function(){return s.focusFirstElement(k.current)},getElement:function(){return k.current}}})),a((function(){g.autoFocus&&s.focusFirstElement(k.current)}));var I,S=m.isNotEmpty(g.tooltip),w=h.getOtherProps(g),N=m.reduceKeys(w,s.ARIA_PROPS),D=v({className:E("checkIcon")},P("checkIcon")),C=v({className:E("checkIcon")},P("uncheckIcon"));!1===g.value?I=g.uncheckIcon||e.createElement(i,C):!0===g.value&&(I=g.checkIcon||e.createElement(c,D));var F=f.getJSXIcon(I,O({},D),{props:g}),R=n(g.value?"trueLabel":!1===g.value?"falseLabel":"nullLabel"),T=g.value?"true":"false",A=v(O({className:E("box"),tabIndex:g.disabled?"-1":g.tabIndex,onFocus:function(e){var t;null==g||null===(t=g.onFocus)||void 0===t||t.call(g,e)},onBlur:function(e){var t;null==g||null===(t=g.onBlur)||void 0===t||t.call(g,e)},onKeyDown:function(e){"Enter"!==e.code&&"NumpadEnter"!==e.code&&"Space"!==e.code||(j(e),e.preventDefault())},role:"checkbox","aria-checked":T},N),P("box")),L=v({className:"p-sr-only p-hidden-accessible","aria-live":"polite"},P("srOnlyAria")),_=v({className:p(g.className,E("root",{context:y})),style:g.style,"data-p-disabled":g.disabled},h.getOtherProps(g),P("root")),B=v({id:g.inputId,className:E("input"),type:"checkbox","aria-invalid":g.invalid,disabled:g.disabled,readOnly:g.readOnly,value:g.value,checked:g.value,onChange:j},P("input"));return e.createElement(e.Fragment,null,e.createElement("div",d({id:g.id,ref:k},_),e.createElement("input",B),e.createElement("span",L,R),e.createElement("div",A,F)),S&&e.createElement(u,d({target:k,content:g.tooltip,pt:P("tooltip")},g.tooltipOptions)))})));k.displayName="TriStateCheckbox";export{k as TriStateCheckbox};