react-toggled
Version:
Component to build simple, flexible, and accessible toggle components.
3 lines (2 loc) • 3.26 kB
JavaScript
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("preact")):"function"==typeof define&&define.amd?define(["preact"],e):t.ReactToggled=e(t.preact)}(this,function(t){"use strict";var e=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},n=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])}return t},o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e},r=function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(){for(var t=arguments.length,n=Array(t),o=0;o<t;o++)n[o]=arguments[o];return e.forEach(function(t){return t&&t.apply(void 0,n)})}},i=function(){},s=function(t){function s(){var g,p;e(this,s);for(var l=arguments.length,a=Array(l),f=0;f<l;f++)a[f]=arguments[f];return g=p=o(this,t.call.apply(t,[this].concat(a))),p.state={on:p.getOn({on:p.props.defaultOn})},p.getTogglerProps=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return n({"aria-expanded":Boolean(p.getOn()),tabIndex:0},t,{onClick:r(t.onClick,p.toggle)})},p.toggleKeys=["Enter"," "],p.getInputTogglerProps=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return p.getTogglerProps(n({},t,{onKeyUp:r(t.onKeyUp,function(t){"Enter"===t.key&&p.toggle()})}))},p.getElementTogglerProps=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return p.getTogglerProps(n({},t,{onKeyUp:r(t.onKeyUp,function(t){p.toggleKeys.indexOf(t.key)>-1&&p.toggle()})}))},p.setOnState=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:!p.getOn(),e=p.getOn()===t?i:function(){p.props.onToggle(t,p.getTogglerStateAndHelpers())};p.setState({on:t},e)},p.setOn=p.setOnState.bind(p,!0),p.setOff=p.setOnState.bind(p,!1),p.toggle=p.setOnState.bind(p,void 0),o(p,g)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(s,t),s.prototype.getOn=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.props;return this.isOnControlled()?e.on:t.on},s.prototype.isOnControlled=function(){return void 0!==this.props.on},s.prototype.getTogglerStateAndHelpers=function(){return{on:this.getOn(),getTogglerProps:this.getTogglerProps,getInputTogglerProps:this.getInputTogglerProps,getElementTogglerProps:this.getElementTogglerProps,setOn:this.setOn,setOff:this.setOff,toggle:this.toggle}},s.prototype.componentWillReceiveProps=function(t){var e=t.on;e!==this.props.on&&e!==this.state.on&&this.setOnState(e)},s.prototype.render=function(){var t;return(t=this.props.children,Array.isArray(t)?t[0]:t)(this.getTogglerStateAndHelpers())},s}(t.Component);return s.defaultProps={defaultOn:!1,onToggle:i},s});
//# sourceMappingURL=react-toggled.umd.min.js.map