@styleless-ui/react
Version:
Completely unstyled, headless and accessible React UI components.
1 lines • 3.67 kB
JavaScript
;var __assign=this&&this.__assign||function(){return __assign=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},__assign.apply(this,arguments)},__createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&__createBinding(t,e,r);return __setModuleDefault(t,e),t},__rest=this&&this.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});var jsx_runtime_1=require("react/jsx-runtime"),React=__importStar(require("react")),internals_1=require("../internals"),Portal_1=__importDefault(require("../Portal")),utils_1=require("../utils"),context_1=__importDefault(require("./context")),slots_1=require("./slots"),SnackbarBase=function(e,t){var r=e.open,n=e.duration,o=e.style,i=e.onEscapeKeyUp,u=e.onDurationEnd,s=e.id,a=e.focusAfterClosed,l=e.role,c=e.keepMounted,_=void 0!==c&&c,f=e.children,d=e.className,p=__rest(e,["open","duration","style","onEscapeKeyUp","onDurationEnd","id","focusAfterClosed","role","keepMounted","children","className"]),y=(0,utils_1.useIsMounted)(),m=(0,utils_1.useDeterministicId)(s,"styleless-ui__snackbar"),b=React.useRef(NaN),v=React.useRef(null),h=(0,utils_1.usePreviousValue)(r);React.useEffect((function(){var e,t;r||"boolean"!=typeof h||r===h||("string"==typeof a?null===(e=document.querySelector(a))||void 0===e||e.focus():"object"==typeof a?null===(t=a.current)||void 0===t||t.focus():v.current?v.current.focus():document.body.focus())}),[r,h]),React.useEffect((function(){return function(){return window.clearTimeout(b.current)}}),[]),(0,utils_1.useOnChange)(r,(function(e){y()&&(v.current=document.activeElement,e&&n&&u?b.current=window.setTimeout(u,n):window.clearTimeout(b.current))}));var g="function"==typeof d?d({openState:r}):d;"undefined"!=typeof document&&(0,utils_1.useEventListener)({target:document,eventType:"keyup",handler:function(e){e.key===internals_1.SystemKeys.ESCAPE&&(null==i||i(e))}},r&&null!=i);var j=React.useMemo((function(){return{role:l,open:r}}),[l,r]);return _||!_&&r?(0,jsx_runtime_1.jsx)(Portal_1.default,{children:(0,jsx_runtime_1.jsx)("div",__assign({"data-slot":"Portal:Root",role:"presentation",tabIndex:-1,"aria-hidden":!r,style:{position:"absolute",top:0,left:0,right:0}},{children:(0,jsx_runtime_1.jsx)("div",__assign({},p,{style:__assign(__assign({},null!=o?o:{}),{position:"fixed"}),id:m,ref:t,className:g,"data-slot":slots_1.Root,"data-open":r?"":void 0},{children:(0,jsx_runtime_1.jsx)(context_1.default.Provider,__assign({value:j},{children:f}))}))}))}):null},Snackbar=(0,utils_1.componentWithForwardedRef)(SnackbarBase);exports.default=Snackbar;