@consta/uikit 5.12.0 → 5.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/FieldComponents/index.d.ts +1 -0
- package/FieldComponents/index.js +1 -0
- package/__internal__/src/components/Badge/Badge.css +1 -1
- package/__internal__/src/components/Badge/Badge.d.ts +2 -31
- package/__internal__/src/components/Badge/Badge.js +1 -1
- package/__internal__/src/components/Badge/Badge.js.map +1 -1
- package/__internal__/src/components/Badge/cn.d.ts +1 -0
- package/__internal__/src/components/Badge/cn.js +2 -0
- package/__internal__/src/components/Badge/cn.js.map +1 -0
- package/__internal__/src/components/Badge/guardStatus.d.ts +2 -0
- package/__internal__/src/components/Badge/guardStatus.js +2 -0
- package/__internal__/src/components/Badge/guardStatus.js.map +1 -0
- package/__internal__/src/components/Badge/index.d.ts +2 -0
- package/__internal__/src/components/Badge/index.js +1 -1
- package/__internal__/src/components/Badge/index.js.map +1 -1
- package/__internal__/src/components/Badge/maps.d.ts +9 -0
- package/__internal__/src/components/Badge/maps.js +2 -0
- package/__internal__/src/components/Badge/maps.js.map +1 -0
- package/__internal__/src/components/Badge/types.d.ts +31 -0
- package/__internal__/src/components/Badge/types.js +2 -0
- package/__internal__/src/components/Badge/types.js.map +1 -0
- package/__internal__/src/components/BadgeGroup/BadgeGroup.js +1 -1
- package/__internal__/src/components/BadgeGroup/BadgeGroup.js.map +1 -1
- package/__internal__/src/components/BadgeGroup/types.d.ts +4 -1
- package/__internal__/src/components/BadgeGroup/types.js.map +1 -1
- package/__internal__/src/components/Chips/types.d.ts +8 -2
- package/__internal__/src/components/Chips/types.js.map +1 -1
- package/__internal__/src/components/FieldComponents/FieldComponents.d.ts +15 -0
- package/__internal__/src/components/FieldComponents/FieldComponents.js +2 -0
- package/__internal__/src/components/FieldComponents/FieldComponents.js.map +1 -0
- package/__internal__/src/components/FieldComponents/index.d.ts +1 -15
- package/__internal__/src/components/FieldComponents/index.js +1 -1
- package/__internal__/src/components/FieldComponents/index.js.map +1 -1
- package/__internal__/src/components/Informer/Informer.css +1 -1
- package/__internal__/src/components/Informer/Informer.d.ts +2 -2
- package/__internal__/src/components/Informer/Informer.js +1 -1
- package/__internal__/src/components/Informer/Informer.js.map +1 -1
- package/__internal__/src/components/Popover/Popover.d.ts +2 -1
- package/__internal__/src/components/Popover/Popover.js +1 -1
- package/__internal__/src/components/Popover/Popover.js.map +1 -1
- package/__internal__/src/components/ProgressStepBar/helpers.d.ts +1 -1
- package/__internal__/src/components/SnackBar/SnackBar.js +1 -1
- package/__internal__/src/components/SnackBar/SnackBar.js.map +1 -1
- package/__internal__/src/components/SnackBar/SnackBarActionButton/SnackBarActionButton.js +1 -1
- package/__internal__/src/components/SnackBar/SnackBarActionButton/SnackBarActionButton.js.map +1 -1
- package/__internal__/src/components/SnackBar/SnackBarActionButton/index.d.ts +1 -0
- package/__internal__/src/components/SnackBar/SnackBarActionButton/index.js +2 -0
- package/__internal__/src/components/SnackBar/SnackBarActionButton/index.js.map +1 -0
- package/__internal__/src/components/SnackBar/SnackBarItem/SnackBarItem.css +1 -1
- package/__internal__/src/components/SnackBar/SnackBarItem/SnackBarItem.d.ts +0 -1
- package/__internal__/src/components/SnackBar/SnackBarItem/SnackBarItem.js +1 -1
- package/__internal__/src/components/SnackBar/SnackBarItem/SnackBarItem.js.map +1 -1
- package/__internal__/src/components/SnackBar/SnackBarItem/index.d.ts +1 -0
- package/__internal__/src/components/SnackBar/SnackBarItem/index.js +2 -0
- package/__internal__/src/components/SnackBar/SnackBarItem/index.js.map +1 -0
- package/__internal__/src/components/SnackBar/SnackBarLine/index.d.ts +1 -0
- package/__internal__/src/components/SnackBar/SnackBarLine/index.js +2 -0
- package/__internal__/src/components/SnackBar/SnackBarLine/index.js.map +1 -0
- package/__internal__/src/components/SnackBar/SnackBarProgress/SnackBarProgress.css +1 -0
- package/__internal__/src/components/SnackBar/SnackBarProgress/SnackBarProgress.d.ts +4 -0
- package/__internal__/src/components/SnackBar/SnackBarProgress/SnackBarProgress.js +2 -0
- package/__internal__/src/components/SnackBar/SnackBarProgress/SnackBarProgress.js.map +1 -0
- package/__internal__/src/components/SnackBar/SnackBarProgress/index.d.ts +1 -0
- package/__internal__/src/components/SnackBar/SnackBarProgress/index.js +2 -0
- package/__internal__/src/components/SnackBar/SnackBarProgress/index.js.map +1 -0
- package/__internal__/src/components/SnackBar/SnackBarTimer/SnackBarTimer.js +1 -1
- package/__internal__/src/components/SnackBar/SnackBarTimer/SnackBarTimer.js.map +1 -1
- package/__internal__/src/components/SnackBar/SnackBarTimer/index.d.ts +1 -0
- package/__internal__/src/components/SnackBar/SnackBarTimer/index.js +2 -0
- package/__internal__/src/components/SnackBar/SnackBarTimer/index.js.map +1 -0
- package/__internal__/src/components/SnackBar/helper.d.ts +4 -1
- package/__internal__/src/components/SnackBar/helper.js +1 -1
- package/__internal__/src/components/SnackBar/helper.js.map +1 -1
- package/__internal__/src/components/SnackBar/types.d.ts +15 -0
- package/__internal__/src/components/SnackBar/types.js +1 -1
- package/__internal__/src/components/SnackBar/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";var _excluded=["children","direction","offset","arrowOffset","possibleDirections","isInteractive","onClickOutside","spareDirection","style","className","position","anchorRef","equalAnchorWidth","onSetDirection","viewportRef"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import"./Popover.css";import React,{forwardRef,useEffect,useLayoutEffect,useMemo}from"react";import{PortalWithTheme,usePortalContext}from"../PortalWithTheme";import{useTheme}from"../Theme/Theme";import{useClickOutside}from"../../hooks/useClickOutside";import{useComponentSize}from"../../hooks/useComponentSize";import{useForkRef}from"../../hooks/useForkRef";import{cn}from"../../utils/bem";import{isRenderProp}from"../../utils/isRenderProp";import{isNumber,isString}from"../../utils/type-guards";import{getComputedPositionAndDirection,getPointPossition,getRenderPosition}from"./helpers";import{usePopoverReposition}from"./usePopoverReposition";export var directionsStartCenter=["downCenter","upCenter","downRight","downLeft","upRight","upLeft","leftUp","leftCenter","leftDown","rightUp","rightCenter","rightDown"];export var directionsStartEdge=["downStartLeft","upStartLeft","downStartRight","upStartRight","leftStartUp","leftStartDown","rightStartUp","rightStartDown"];export var popoverPropOffset=["3xs","2xs","xs","s","m","l","xl","2xl","3xl","4xl","5xl","6xl"];export var directions=[].concat(directionsStartCenter,directionsStartEdge);var getOffset=function(a,b){if(isNumber(b))return b;if(isString(b)&&a.current){var g=getComputedStyle(a.current).getPropertyValue("--space-".concat(b));if(g&&/px$/.test(g))return+g.slice(0,g.length-2);if(g&&/rem$/.test(g)){var c=parseFloat(getComputedStyle(document.documentElement).fontSize),d=+g.slice(0,g.length-3);return c*d}if(g&&/em$/.test(g)){var e=parseFloat(getComputedStyle(a.current).fontSize),f=+g.slice(0,g.length-2);return e*f}return 0}return 0},ContextConsumer=function(a){var b=a.onClickOutside,c=a.children,d=a.ignoreClicksInsideRefs,e=usePortalContext(),f=e.refs;return useClickOutside({isActive:!!b,ignoreClicksInsideRefs:[].concat(_toConsumableArray(d||[]),_toConsumableArray(f||[])),handler:b}),c},cnPopover=cn("Popover");export var Popover=forwardRef(function(a,b){var c,d=a.children,e=a.direction,f=void 0===e?"upCenter":e,g=a.offset,h=void 0===g?0:g,i=a.arrowOffset,j=a.possibleDirections,k=void 0===j?directions:j,l=a.isInteractive,m=a.onClickOutside,n=a.spareDirection,o=void 0===n?"downStartLeft":n,p=a.style,q=a.className,r=a.position,s=a.anchorRef,t=a.equalAnchorWidth,u=a.onSetDirection,v=a.viewportRef,w=_objectWithoutProperties(a,_excluded),
|
|
1
|
+
import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";var _excluded=["children","direction","offset","arrowOffset","possibleDirections","isInteractive","onClickOutside","spareDirection","style","className","position","anchorRef","equalAnchorWidth","onSetDirection","viewportRef","container"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import"./Popover.css";import React,{forwardRef,useEffect,useLayoutEffect,useMemo}from"react";import{PortalWithTheme,usePortalContext}from"../PortalWithTheme";import{useTheme}from"../Theme/Theme";import{useClickOutside}from"../../hooks/useClickOutside";import{useComponentSize}from"../../hooks/useComponentSize";import{useForkRef}from"../../hooks/useForkRef";import{cn}from"../../utils/bem";import{isRenderProp}from"../../utils/isRenderProp";import{isNumber,isString}from"../../utils/type-guards";import{getComputedPositionAndDirection,getPointPossition,getRenderPosition}from"./helpers";import{usePopoverReposition}from"./usePopoverReposition";export var directionsStartCenter=["downCenter","upCenter","downRight","downLeft","upRight","upLeft","leftUp","leftCenter","leftDown","rightUp","rightCenter","rightDown"];export var directionsStartEdge=["downStartLeft","upStartLeft","downStartRight","upStartRight","leftStartUp","leftStartDown","rightStartUp","rightStartDown"];export var popoverPropOffset=["3xs","2xs","xs","s","m","l","xl","2xl","3xl","4xl","5xl","6xl"];export var directions=[].concat(directionsStartCenter,directionsStartEdge);var getOffset=function(a,b){if(isNumber(b))return b;if(isString(b)&&a.current){var g=getComputedStyle(a.current).getPropertyValue("--space-".concat(b));if(g&&/px$/.test(g))return+g.slice(0,g.length-2);if(g&&/rem$/.test(g)){var c=parseFloat(getComputedStyle(document.documentElement).fontSize),d=+g.slice(0,g.length-3);return c*d}if(g&&/em$/.test(g)){var e=parseFloat(getComputedStyle(a.current).fontSize),f=+g.slice(0,g.length-2);return e*f}return 0}return 0},ContextConsumer=function(a){var b=a.onClickOutside,c=a.children,d=a.ignoreClicksInsideRefs,e=usePortalContext(),f=e.refs;return useClickOutside({isActive:!!b,ignoreClicksInsideRefs:[].concat(_toConsumableArray(d||[]),_toConsumableArray(f||[])),handler:b}),c},cnPopover=cn("Popover");export var Popover=forwardRef(function(a,b){var c,d=a.children,e=a.direction,f=void 0===e?"upCenter":e,g=a.offset,h=void 0===g?0:g,i=a.arrowOffset,j=a.possibleDirections,k=void 0===j?directions:j,l=a.isInteractive,m=a.onClickOutside,n=a.spareDirection,o=void 0===n?"downStartLeft":n,p=a.style,q=a.className,r=a.position,s=a.anchorRef,t=a.equalAnchorWidth,u=a.onSetDirection,v=a.viewportRef,w=a.container,x=void 0===w?window.document.body:w,y=_objectWithoutProperties(a,_excluded),z=(null===v||void 0===v?void 0:v.current)||document.documentElement,A=React.useRef(null),B=useTheme(),C=B.theme,D=React.useState(),E=_slicedToArray(D,2),F=E[0],G=E[1],H=useComponentSize(A),I=H.width,J=H.height,K=useComponentSize(s||{current:null}),L=React.useRef(null),M=React.useState([]),N=_slicedToArray(M,2),O=N[0],P=N[1],Q=function(){P(function(a){return a.length?[]:a}),L.current=null},R=function(){var a;return G(null===s||void 0===s||null===(a=s.current)||void 0===a?void 0:a.getBoundingClientRect())},S=useMemo(function(){return getOffset(A,h)},[h,!!A.current]),T=getComputedPositionAndDirection({contentSize:{width:I,height:J},viewportSize:{width:z.clientWidth,height:z.clientHeight},arrowOffset:i,offset:S,direction:f,possibleDirections:k,bannedDirections:O,position:getPointPossition(z,F?{x:F.left,y:F.top}:r,!!(null!==v&&void 0!==v&&v.current)),anchorSize:K,spareDirection:o}),U=T.position,V=T.direction;useEffect(function(){return null===u||void 0===u?void 0:u(V)},[V]),useEffect(R,[K]),usePopoverReposition({isActive:!0,scrollAnchorRef:s||{current:null},onRequestReposition:function onRequestReposition(){Q(),R()}}),useLayoutEffect(function(){L.current!==V&&(L.current&&!O.includes(L.current)&&!O.includes(V)&&V!==o&&P(function(a){return L.current?[].concat(_toConsumableArray(a),[L.current]):a}),L.current=V)},[V]),useLayoutEffect(Q,[a]);var W=getRenderPosition(z,U,!!(null!==v&&void 0!==v&&v.current),I,J),X=!W||!J||!I;return React.createElement(PortalWithTheme,Object.assign({},y,{preset:C,className:cnPopover({direction:V,notVisible:X},[q]),container:x,ref:useForkRef([A,b]),style:_objectSpread(_objectSpread({},p),X?{}:(c={},_defineProperty(c,"--popover-left","".concat(W.x,"px")),_defineProperty(c,"--popover-top","".concat(W.y,"px")),_defineProperty(c,"--popover-width",t?"".concat(K.width,"px"):void 0),_defineProperty(c,"--popover-pointer-events",!(void 0!==l)||l?void 0:"none"),_defineProperty(c,"--popover-visibility",U?void 0:"hidden"),c))}),React.createElement(ContextConsumer,{onClickOutside:m,ignoreClicksInsideRefs:[A,s||{current:null}]},isRenderProp(d)?d(V):d))});
|
|
2
2
|
//# sourceMappingURL=Popover.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Popover.js","names":["React","forwardRef","useEffect","useLayoutEffect","useMemo","PortalWithTheme","usePortalContext","useTheme","useClickOutside","useComponentSize","useForkRef","cn","isRenderProp","isNumber","isString","getComputedPositionAndDirection","getPointPossition","getRenderPosition","usePopoverReposition","directionsStartCenter","directionsStartEdge","popoverPropOffset","directions","getOffset","ref","propOffset","current","cssVar","getComputedStyle","getPropertyValue","test","slice","length","fontSize","parseFloat","document","documentElement","rem","em","ContextConsumer","onClickOutside","children","ignoreClicksInsideRefs","refs","isActive","handler","cnPopover","Popover","props","componentRef","direction","passedDirection","offset","arrowOffset","possibleDirections","isInteractive","spareDirection","style","className","passedPosition","position","anchorRef","equalAnchorWidth","onSetDirection","viewportRef","otherProps","viewportElement","useRef","theme","useState","anchorClientRect","setAnchorClientRect","width","height","anchorSize","previousDirectionRef","bannedDirections","setBannedDirections","resetBannedDirections","state","updateAnchorClientRect","getBoundingClientRect","contentSize","viewportSize","clientWidth","clientHeight","x","left","y","top","scrollAnchorRef","onRequestReposition","includes","renderPosition","notVisible","window","body"],"sources":["../../../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import './Popover.css';\n\nimport React, { forwardRef, useEffect, useLayoutEffect, useMemo } from 'react';\n\nimport {\n PortalWithTheme,\n usePortalContext,\n} from '##/components/PortalWithTheme';\nimport { useTheme } from '##/components/Theme/Theme';\nimport { ClickOutsideHandler, useClickOutside } from '##/hooks/useClickOutside';\nimport { useComponentSize } from '##/hooks/useComponentSize';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { cn } from '##/utils/bem';\nimport { isRenderProp } from '##/utils/isRenderProp';\nimport { isNumber, isString } from '##/utils/type-guards';\nimport { PropsWithJsxAttributes } from '##/utils/types/PropsWithJsxAttributes';\n\nimport {\n getComputedPositionAndDirection,\n getPointPossition,\n getRenderPosition,\n} from './helpers';\nimport { usePopoverReposition } from './usePopoverReposition';\n\n/**\n * Стороны упорядочены по приоритету:\n * Используется первая сторона, в которую смог вписаться поповер.\n */\nexport const directionsStartCenter = [\n 'downCenter',\n 'upCenter',\n\n 'downRight',\n 'downLeft',\n 'upRight',\n 'upLeft',\n\n 'leftUp',\n 'leftCenter',\n 'leftDown',\n\n 'rightUp',\n 'rightCenter',\n 'rightDown',\n] as const;\n\nexport const directionsStartEdge = [\n 'downStartLeft',\n 'upStartLeft',\n\n 'downStartRight',\n 'upStartRight',\n\n 'leftStartUp',\n 'leftStartDown',\n\n 'rightStartUp',\n 'rightStartDown',\n] as const;\n\nexport const popoverPropOffset = [\n '3xs',\n '2xs',\n 'xs',\n 's',\n 'm',\n 'l',\n 'xl',\n '2xl',\n '3xl',\n '4xl',\n '5xl',\n '6xl',\n] as const;\nexport type PopoverPropOffset = typeof popoverPropOffset[number] | number;\n\nexport const directions = [...directionsStartCenter, ...directionsStartEdge];\n\nexport type Direction = typeof directions[number];\n\nexport type Position = { x: number; y: number } | undefined;\n\nexport type PositioningProps =\n | {\n anchorRef: React.RefObject<HTMLElement>;\n equalAnchorWidth?: boolean;\n position?: never;\n }\n | {\n anchorRef?: never;\n equalAnchorWidth?: never;\n position: Position;\n };\n\ntype ChildrenRenderProp = (direction: Direction) => React.ReactNode;\n\nexport type PopoverProps = PropsWithJsxAttributes<\n {\n direction?: Direction;\n spareDirection?: Direction;\n offset?: PopoverPropOffset;\n arrowOffset?: number;\n possibleDirections?: readonly Direction[];\n isInteractive?: boolean;\n children: React.ReactNode | ChildrenRenderProp;\n onClickOutside?: ClickOutsideHandler;\n onSetDirection?: (direction: Direction) => void;\n viewportRef?: React.RefObject<HTMLElement>;\n } & PositioningProps\n>;\n\nexport type Props = PopoverProps; // удалить при мажере\n\nconst getOffset = (\n ref: React.RefObject<HTMLDivElement>,\n propOffset: PopoverPropOffset,\n) => {\n if (isNumber(propOffset)) {\n return propOffset;\n }\n\n if (isString(propOffset) && ref.current) {\n const cssVar = getComputedStyle(ref.current).getPropertyValue(\n `--space-${propOffset}`,\n );\n\n if (cssVar && /px$/.test(cssVar)) {\n return Number(cssVar.slice(0, cssVar.length - 2));\n }\n\n if (cssVar && /rem$/.test(cssVar)) {\n const fontSize = parseFloat(\n getComputedStyle(document.documentElement).fontSize,\n );\n const rem = Number(cssVar.slice(0, cssVar.length - 3));\n\n return fontSize * rem;\n }\n\n if (cssVar && /em$/.test(cssVar)) {\n const fontSize = parseFloat(getComputedStyle(ref.current).fontSize);\n const em = Number(cssVar.slice(0, cssVar.length - 2));\n\n return fontSize * em;\n }\n\n return 0;\n }\n\n return 0;\n};\n\n/**\n * Подписчик на PortalWithThemeProvider\n * получает рефы всех вложенных порталов в модалку\n * для дальнейшего исключения их из useClickOutside\n */\nconst ContextConsumer: React.FC<{\n onClickOutside?: (event: MouseEvent) => void;\n ignoreClicksInsideRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;\n children: React.ReactNode;\n}> = ({ onClickOutside, children, ignoreClicksInsideRefs }) => {\n const { refs } = usePortalContext();\n\n useClickOutside({\n isActive: !!onClickOutside,\n ignoreClicksInsideRefs: [\n ...(ignoreClicksInsideRefs || []),\n ...(refs || []),\n ],\n handler: onClickOutside,\n });\n\n return children as React.ReactElement;\n};\n\nconst cnPopover = cn('Popover');\n\nexport const Popover = forwardRef<HTMLDivElement, PopoverProps>(\n (props, componentRef) => {\n const {\n children,\n direction: passedDirection = 'upCenter',\n offset: propOffset = 0,\n arrowOffset,\n possibleDirections = directions,\n isInteractive = true,\n onClickOutside,\n spareDirection = 'downStartLeft',\n style,\n className,\n position: passedPosition,\n anchorRef,\n equalAnchorWidth,\n onSetDirection,\n viewportRef,\n ...otherProps\n } = props;\n\n // console.log(viewportRef);\n\n const viewportElement = viewportRef?.current || document.documentElement;\n\n const ref = React.useRef<HTMLDivElement>(null);\n const { theme } = useTheme();\n\n const [anchorClientRect, setAnchorClientRect] = React.useState<\n DOMRect | undefined\n >();\n const { width, height } = useComponentSize(ref);\n const anchorSize = useComponentSize(anchorRef || { current: null });\n const previousDirectionRef = React.useRef<Direction | null>(null);\n const [bannedDirections, setBannedDirections] = React.useState<\n readonly Direction[]\n >([]);\n\n const resetBannedDirections = () => {\n setBannedDirections((state) => (state.length ? [] : state));\n previousDirectionRef.current = null;\n };\n\n const updateAnchorClientRect = () =>\n setAnchorClientRect(anchorRef?.current?.getBoundingClientRect());\n\n const offset = useMemo(\n () => getOffset(ref, propOffset),\n [propOffset, Boolean(ref.current)],\n );\n\n const { position, direction } = getComputedPositionAndDirection({\n contentSize: { width, height },\n viewportSize: {\n // Размер вьюпорта без скроллбаров\n width: viewportElement.clientWidth,\n height: viewportElement.clientHeight,\n },\n arrowOffset,\n offset,\n direction: passedDirection,\n possibleDirections,\n bannedDirections,\n position: getPointPossition(\n viewportElement,\n anchorClientRect\n ? { x: anchorClientRect.left, y: anchorClientRect.top }\n : passedPosition,\n !!viewportRef?.current,\n ),\n anchorSize,\n spareDirection,\n });\n\n useEffect(() => onSetDirection?.(direction), [direction]);\n\n useEffect(updateAnchorClientRect, [anchorSize]);\n\n usePopoverReposition({\n isActive: true,\n scrollAnchorRef: anchorRef || { current: null },\n onRequestReposition: () => {\n resetBannedDirections();\n updateAnchorClientRect();\n },\n });\n\n /**\n * Может возникнуть ситуация, когда перерасчет поповера всегда будет выдавать 2 направления\n * и бесконечно зацикливать себя. Для избежания таких кейсов мы запоминаем стороны,\n * которые не подошли, чтобы не возвращаться к ним и предотвратить бесконечный ререндер.\n * См. PopoverBannedPositionsStory\n */\n\n useLayoutEffect(() => {\n if (previousDirectionRef.current !== direction) {\n if (\n previousDirectionRef.current &&\n !bannedDirections.includes(previousDirectionRef.current) &&\n !bannedDirections.includes(direction) &&\n direction !== spareDirection\n ) {\n setBannedDirections((state) =>\n previousDirectionRef.current\n ? [...state, previousDirectionRef.current]\n : state,\n );\n }\n previousDirectionRef.current = direction;\n }\n }, [direction]);\n\n // Сбрасываем при любом изменении пропсов, чтобы заново начать перебор направлений\n // Главное не сбрасывать при изменении размеров поповера, т.к. именно оно может вызвать бесконечный перебор\n\n useLayoutEffect(resetBannedDirections, [props]);\n\n const renderPosition = getRenderPosition(\n viewportElement,\n position,\n !!viewportRef?.current,\n width,\n height,\n );\n\n const notVisible = !renderPosition || !height || !width;\n\n return (\n <PortalWithTheme\n {...otherProps}\n preset={theme}\n className={cnPopover({ direction, notVisible }, [className])}\n container={window.document.body}\n ref={useForkRef([ref, componentRef])}\n style={{\n ...style,\n ...(notVisible\n ? {}\n : {\n ['--popover-left' as string]: `${renderPosition.x}px`,\n ['--popover-top' as string]: `${renderPosition.y}px`,\n [`--popover-width` as string]: equalAnchorWidth\n ? `${anchorSize.width}px`\n : undefined,\n [`--popover-pointer-events` as string]: isInteractive\n ? undefined\n : 'none',\n [`--popover-visibility` as string]: position\n ? undefined\n : 'hidden',\n }),\n }}\n >\n <ContextConsumer\n onClickOutside={onClickOutside}\n ignoreClicksInsideRefs={[ref, anchorRef || { current: null }]}\n >\n {isRenderProp(children) ? children(direction) : children}\n </ContextConsumer>\n </PortalWithTheme>\n );\n },\n);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Popover.js","names":["React","forwardRef","useEffect","useLayoutEffect","useMemo","PortalWithTheme","usePortalContext","useTheme","useClickOutside","useComponentSize","useForkRef","cn","isRenderProp","isNumber","isString","getComputedPositionAndDirection","getPointPossition","getRenderPosition","usePopoverReposition","directionsStartCenter","directionsStartEdge","popoverPropOffset","directions","getOffset","ref","propOffset","current","cssVar","getComputedStyle","getPropertyValue","test","slice","length","fontSize","parseFloat","document","documentElement","rem","em","ContextConsumer","onClickOutside","children","ignoreClicksInsideRefs","refs","isActive","handler","cnPopover","Popover","props","componentRef","direction","passedDirection","offset","arrowOffset","possibleDirections","isInteractive","spareDirection","style","className","passedPosition","position","anchorRef","equalAnchorWidth","onSetDirection","viewportRef","container","window","body","otherProps","viewportElement","useRef","theme","useState","anchorClientRect","setAnchorClientRect","width","height","anchorSize","previousDirectionRef","bannedDirections","setBannedDirections","resetBannedDirections","state","updateAnchorClientRect","getBoundingClientRect","contentSize","viewportSize","clientWidth","clientHeight","x","left","y","top","scrollAnchorRef","onRequestReposition","includes","renderPosition","notVisible"],"sources":["../../../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import './Popover.css';\n\nimport React, { forwardRef, useEffect, useLayoutEffect, useMemo } from 'react';\n\nimport {\n PortalWithTheme,\n usePortalContext,\n} from '##/components/PortalWithTheme';\nimport { useTheme } from '##/components/Theme/Theme';\nimport { ClickOutsideHandler, useClickOutside } from '##/hooks/useClickOutside';\nimport { useComponentSize } from '##/hooks/useComponentSize';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { cn } from '##/utils/bem';\nimport { isRenderProp } from '##/utils/isRenderProp';\nimport { isNumber, isString } from '##/utils/type-guards';\nimport { PropsWithJsxAttributes } from '##/utils/types/PropsWithJsxAttributes';\n\nimport {\n getComputedPositionAndDirection,\n getPointPossition,\n getRenderPosition,\n} from './helpers';\nimport { usePopoverReposition } from './usePopoverReposition';\n\n/**\n * Стороны упорядочены по приоритету:\n * Используется первая сторона, в которую смог вписаться поповер.\n */\nexport const directionsStartCenter = [\n 'downCenter',\n 'upCenter',\n\n 'downRight',\n 'downLeft',\n 'upRight',\n 'upLeft',\n\n 'leftUp',\n 'leftCenter',\n 'leftDown',\n\n 'rightUp',\n 'rightCenter',\n 'rightDown',\n] as const;\n\nexport const directionsStartEdge = [\n 'downStartLeft',\n 'upStartLeft',\n\n 'downStartRight',\n 'upStartRight',\n\n 'leftStartUp',\n 'leftStartDown',\n\n 'rightStartUp',\n 'rightStartDown',\n] as const;\n\nexport const popoverPropOffset = [\n '3xs',\n '2xs',\n 'xs',\n 's',\n 'm',\n 'l',\n 'xl',\n '2xl',\n '3xl',\n '4xl',\n '5xl',\n '6xl',\n] as const;\nexport type PopoverPropOffset = typeof popoverPropOffset[number] | number;\n\nexport const directions = [...directionsStartCenter, ...directionsStartEdge];\n\nexport type Direction = typeof directions[number];\n\nexport type Position = { x: number; y: number } | undefined;\n\nexport type PositioningProps =\n | {\n anchorRef: React.RefObject<HTMLElement>;\n equalAnchorWidth?: boolean;\n position?: never;\n }\n | {\n anchorRef?: never;\n equalAnchorWidth?: never;\n position: Position;\n };\n\ntype ChildrenRenderProp = (direction: Direction) => React.ReactNode;\n\nexport type PopoverProps = PropsWithJsxAttributes<\n {\n direction?: Direction;\n spareDirection?: Direction;\n offset?: PopoverPropOffset;\n arrowOffset?: number;\n possibleDirections?: readonly Direction[];\n isInteractive?: boolean;\n children: React.ReactNode | ChildrenRenderProp;\n onClickOutside?: ClickOutsideHandler;\n onSetDirection?: (direction: Direction) => void;\n viewportRef?: React.RefObject<HTMLElement>;\n container?: Element;\n } & PositioningProps\n>;\n\nexport type Props = PopoverProps; // удалить при мажере\n\nconst getOffset = (\n ref: React.RefObject<HTMLDivElement>,\n propOffset: PopoverPropOffset,\n) => {\n if (isNumber(propOffset)) {\n return propOffset;\n }\n\n if (isString(propOffset) && ref.current) {\n const cssVar = getComputedStyle(ref.current).getPropertyValue(\n `--space-${propOffset}`,\n );\n\n if (cssVar && /px$/.test(cssVar)) {\n return Number(cssVar.slice(0, cssVar.length - 2));\n }\n\n if (cssVar && /rem$/.test(cssVar)) {\n const fontSize = parseFloat(\n getComputedStyle(document.documentElement).fontSize,\n );\n const rem = Number(cssVar.slice(0, cssVar.length - 3));\n\n return fontSize * rem;\n }\n\n if (cssVar && /em$/.test(cssVar)) {\n const fontSize = parseFloat(getComputedStyle(ref.current).fontSize);\n const em = Number(cssVar.slice(0, cssVar.length - 2));\n\n return fontSize * em;\n }\n\n return 0;\n }\n\n return 0;\n};\n\n/**\n * Подписчик на PortalWithThemeProvider\n * получает рефы всех вложенных порталов в модалку\n * для дальнейшего исключения их из useClickOutside\n */\nconst ContextConsumer: React.FC<{\n onClickOutside?: (event: MouseEvent) => void;\n ignoreClicksInsideRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;\n children: React.ReactNode;\n}> = ({ onClickOutside, children, ignoreClicksInsideRefs }) => {\n const { refs } = usePortalContext();\n\n useClickOutside({\n isActive: !!onClickOutside,\n ignoreClicksInsideRefs: [\n ...(ignoreClicksInsideRefs || []),\n ...(refs || []),\n ],\n handler: onClickOutside,\n });\n\n return children as React.ReactElement;\n};\n\nconst cnPopover = cn('Popover');\n\nexport const Popover = forwardRef<HTMLDivElement, PopoverProps>(\n (props, componentRef) => {\n const {\n children,\n direction: passedDirection = 'upCenter',\n offset: propOffset = 0,\n arrowOffset,\n possibleDirections = directions,\n isInteractive = true,\n onClickOutside,\n spareDirection = 'downStartLeft',\n style,\n className,\n position: passedPosition,\n anchorRef,\n equalAnchorWidth,\n onSetDirection,\n viewportRef,\n container = window.document.body,\n ...otherProps\n } = props;\n\n // console.log(viewportRef);\n\n const viewportElement = viewportRef?.current || document.documentElement;\n\n const ref = React.useRef<HTMLDivElement>(null);\n const { theme } = useTheme();\n\n const [anchorClientRect, setAnchorClientRect] = React.useState<\n DOMRect | undefined\n >();\n const { width, height } = useComponentSize(ref);\n const anchorSize = useComponentSize(anchorRef || { current: null });\n const previousDirectionRef = React.useRef<Direction | null>(null);\n const [bannedDirections, setBannedDirections] = React.useState<\n readonly Direction[]\n >([]);\n\n const resetBannedDirections = () => {\n setBannedDirections((state) => (state.length ? [] : state));\n previousDirectionRef.current = null;\n };\n\n const updateAnchorClientRect = () =>\n setAnchorClientRect(anchorRef?.current?.getBoundingClientRect());\n\n const offset = useMemo(\n () => getOffset(ref, propOffset),\n [propOffset, Boolean(ref.current)],\n );\n\n const { position, direction } = getComputedPositionAndDirection({\n contentSize: { width, height },\n viewportSize: {\n // Размер вьюпорта без скроллбаров\n width: viewportElement.clientWidth,\n height: viewportElement.clientHeight,\n },\n arrowOffset,\n offset,\n direction: passedDirection,\n possibleDirections,\n bannedDirections,\n position: getPointPossition(\n viewportElement,\n anchorClientRect\n ? { x: anchorClientRect.left, y: anchorClientRect.top }\n : passedPosition,\n !!viewportRef?.current,\n ),\n anchorSize,\n spareDirection,\n });\n\n useEffect(() => onSetDirection?.(direction), [direction]);\n\n useEffect(updateAnchorClientRect, [anchorSize]);\n\n usePopoverReposition({\n isActive: true,\n scrollAnchorRef: anchorRef || { current: null },\n onRequestReposition: () => {\n resetBannedDirections();\n updateAnchorClientRect();\n },\n });\n\n /**\n * Может возникнуть ситуация, когда перерасчет поповера всегда будет выдавать 2 направления\n * и бесконечно зацикливать себя. Для избежания таких кейсов мы запоминаем стороны,\n * которые не подошли, чтобы не возвращаться к ним и предотвратить бесконечный ререндер.\n * См. PopoverBannedPositionsStory\n */\n\n useLayoutEffect(() => {\n if (previousDirectionRef.current !== direction) {\n if (\n previousDirectionRef.current &&\n !bannedDirections.includes(previousDirectionRef.current) &&\n !bannedDirections.includes(direction) &&\n direction !== spareDirection\n ) {\n setBannedDirections((state) =>\n previousDirectionRef.current\n ? [...state, previousDirectionRef.current]\n : state,\n );\n }\n previousDirectionRef.current = direction;\n }\n }, [direction]);\n\n // Сбрасываем при любом изменении пропсов, чтобы заново начать перебор направлений\n // Главное не сбрасывать при изменении размеров поповера, т.к. именно оно может вызвать бесконечный перебор\n\n useLayoutEffect(resetBannedDirections, [props]);\n\n const renderPosition = getRenderPosition(\n viewportElement,\n position,\n !!viewportRef?.current,\n width,\n height,\n );\n\n const notVisible = !renderPosition || !height || !width;\n\n return (\n <PortalWithTheme\n {...otherProps}\n preset={theme}\n className={cnPopover({ direction, notVisible }, [className])}\n container={container}\n ref={useForkRef([ref, componentRef])}\n style={{\n ...style,\n ...(notVisible\n ? {}\n : {\n ['--popover-left' as string]: `${renderPosition.x}px`,\n ['--popover-top' as string]: `${renderPosition.y}px`,\n [`--popover-width` as string]: equalAnchorWidth\n ? `${anchorSize.width}px`\n : undefined,\n [`--popover-pointer-events` as string]: isInteractive\n ? undefined\n : 'none',\n [`--popover-visibility` as string]: position\n ? undefined\n : 'hidden',\n }),\n }}\n >\n <ContextConsumer\n onClickOutside={onClickOutside}\n ignoreClicksInsideRefs={[ref, anchorRef || { current: null }]}\n >\n {isRenderProp(children) ? children(direction) : children}\n </ContextConsumer>\n </PortalWithTheme>\n );\n },\n);\n"],"mappings":"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"}
|
|
@@ -101,7 +101,7 @@ export declare function withDefaultGetters<ITEM>(props: ProgressStepBarProps<ITE
|
|
|
101
101
|
getItemContent?: ProgressStepBarPropGetItemContent<ITEM> | undefined;
|
|
102
102
|
getItemStatus?: ProgressStepBarPropGetItemStatus<ITEM> | undefined;
|
|
103
103
|
getItemOnClick?: ProgressStepBarPropGetItemOnClick<ITEM> | undefined;
|
|
104
|
-
} & Omit<React.HTMLAttributes<HTMLDivElement>, "size" | "css" | "getItemLabel" | "getItemStatus" | "onItemClick" | "getItemOnClick" | "direction" | "getItemContent" | "steps" | "activeStepIndex" | "getItemLineStatus" | "getItemTooltipContent" | "getItemPoint"
|
|
104
|
+
} & Omit<React.HTMLAttributes<HTMLDivElement>, "size" | "css" | "getItemLabel" | "getItemStatus" | "getItemProgress" | "onItemClick" | "getItemOnClick" | "direction" | "getItemContent" | "steps" | "activeStepIndex" | "getItemLineStatus" | "getItemTooltipContent" | "getItemPoint"> & React.RefAttributes<HTMLDivElement> & (ITEM extends {
|
|
105
105
|
label: string | undefined;
|
|
106
106
|
} ? {} : {
|
|
107
107
|
getItemLabel: ProgressStepBarPropGetItemLabel<ITEM>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["items","className","form","getItemKey","getItemActions","getItemAutoClose","getItemIcon","getItemMessage","getItemOnAutoClose","getItemOnClose","getItemShowProgress","getItemStatus","onItemClose","onItemAutoClose"];import"./SnackBar.css";import React,{forwardRef}from"react";import{Transition,TransitionGroup}from"react-transition-group";import{useRefs}from"../../hooks/useRefs
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["items","className","form","progressView","getItemKey","getItemActions","getItemAutoClose","getItemIcon","getItemMessage","getItemOnAutoClose","getItemOnClose","getItemShowProgress","getItemStatus","onItemClose","onItemAutoClose","getItemProgress"];import"./SnackBar.css";import React,{forwardRef}from"react";import{Transition,TransitionGroup}from"react-transition-group";import{useRefs}from"../../hooks/useRefs";import{cn}from"../../utils/bem";import{usePropsHandler}from"../EventInterceptor/usePropsHandler";import{getItem,withDefaultGetters}from"./helper";import{SnackBarItem}from"./SnackBarItem";import{snackBarPropFormDefault,snackBarPropProgressViewDefault}from"./types";export var cnSnackBar=cn("SnackBar");var SnackBarRender=function(a,b){var c=usePropsHandler("SnackBar",withDefaultGetters(a)),d=c.items,e=c.className,f=c.form,g=void 0===f?snackBarPropFormDefault:f,h=c.progressView,i=void 0===h?snackBarPropProgressViewDefault:h,j=c.getItemKey,k=c.getItemActions,l=c.getItemAutoClose,m=c.getItemIcon,n=c.getItemMessage,o=c.getItemOnAutoClose,p=c.getItemOnClose,q=c.getItemShowProgress,r=c.getItemStatus,s=c.onItemClose,t=c.onItemAutoClose,u=c.getItemProgress,v=_objectWithoutProperties(c,_excluded),w=useRefs(d.length);return React.createElement("div",Object.assign({className:cnSnackBar(null,[e]),ref:b},v),React.createElement(TransitionGroup,{component:null,appear:!0,enter:!0,exit:!0},d.map(function(a,b){return React.createElement(Transition,{key:cnSnackBar("Item",{key:j(a)}),unmountOnExit:!0,timeout:200,nodeRef:w[b]},function(d){return React.createElement(SnackBarItem,Object.assign({ref:w[b],form:g,progressView:i,className:cnSnackBar("Item",{animate:d})},getItem(a,c)))})})))};export var SnackBar=forwardRef(SnackBarRender);export*from"./types";
|
|
2
2
|
//# sourceMappingURL=SnackBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SnackBar.js","names":["React","forwardRef","Transition","TransitionGroup","useRefs","cn","usePropsHandler","getItem","withDefaultGetters","SnackBarItem","snackBarPropFormDefault","cnSnackBar","SnackBarRender","propsComponent","ref","props","items","className","form","getItemKey","getItemActions","getItemAutoClose","getItemIcon","getItemMessage","getItemOnAutoClose","getItemOnClose","getItemShowProgress","getItemStatus","onItemClose","onItemAutoClose","otherProps","refs","length","map","item","index","key","animate","SnackBar"],"sources":["../../../../../src/components/SnackBar/SnackBar.tsx"],"sourcesContent":["import './SnackBar.css';\n\nimport React, { forwardRef } from 'react';\nimport { Transition, TransitionGroup } from 'react-transition-group';\n\nimport { useRefs } from '
|
|
1
|
+
{"version":3,"file":"SnackBar.js","names":["React","forwardRef","Transition","TransitionGroup","useRefs","cn","usePropsHandler","getItem","withDefaultGetters","SnackBarItem","snackBarPropFormDefault","snackBarPropProgressViewDefault","cnSnackBar","SnackBarRender","propsComponent","ref","props","items","className","form","progressView","getItemKey","getItemActions","getItemAutoClose","getItemIcon","getItemMessage","getItemOnAutoClose","getItemOnClose","getItemShowProgress","getItemStatus","onItemClose","onItemAutoClose","getItemProgress","otherProps","refs","length","map","item","index","key","animate","SnackBar"],"sources":["../../../../../src/components/SnackBar/SnackBar.tsx"],"sourcesContent":["import './SnackBar.css';\n\nimport React, { forwardRef } from 'react';\nimport { Transition, TransitionGroup } from 'react-transition-group';\n\nimport { useRefs } from '##/hooks/useRefs';\nimport { cn } from '##/utils/bem';\n\nimport { usePropsHandler } from '../EventInterceptor/usePropsHandler';\nimport { getItem, withDefaultGetters } from './helper';\nimport { SnackBarItem } from './SnackBarItem';\nimport {\n SnackBarComponent,\n snackBarPropFormDefault,\n snackBarPropProgressViewDefault,\n SnackBarProps,\n} from './types';\n\nexport const cnSnackBar = cn('SnackBar');\n\nconst SnackBarRender = (\n propsComponent: SnackBarProps,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const props = usePropsHandler('SnackBar', withDefaultGetters(propsComponent));\n const {\n items,\n className,\n form = snackBarPropFormDefault,\n progressView = snackBarPropProgressViewDefault,\n getItemKey,\n getItemActions,\n getItemAutoClose,\n getItemIcon,\n getItemMessage,\n getItemOnAutoClose,\n getItemOnClose,\n getItemShowProgress,\n getItemStatus,\n onItemClose,\n onItemAutoClose,\n getItemProgress,\n ...otherProps\n } = props;\n\n const refs = useRefs<HTMLDivElement>(items.length);\n\n return (\n <div className={cnSnackBar(null, [className])} ref={ref} {...otherProps}>\n <TransitionGroup component={null} appear enter exit>\n {items.map((item, index) => (\n <Transition\n key={cnSnackBar('Item', { key: getItemKey(item) })}\n unmountOnExit\n timeout={200}\n nodeRef={refs[index]}\n >\n {(animate) => (\n <SnackBarItem\n ref={refs[index]}\n form={form}\n progressView={progressView}\n className={cnSnackBar('Item', { animate })}\n {...getItem(item, props)}\n />\n )}\n </Transition>\n ))}\n </TransitionGroup>\n </div>\n );\n};\n\nexport const SnackBar = forwardRef(SnackBarRender) as SnackBarComponent;\n\nexport * from './types';\n"],"mappings":"6VAAA,uBAEA,MAAOA,MAAP,EAAgBC,UAAhB,KAAkC,OAAlC,CACA,OAASC,UAAT,CAAqBC,eAArB,KAA4C,wBAA5C,CAEA,OAASC,OAAT,2BACA,OAASC,EAAT,uBAEA,OAASC,eAAT,2CACA,OAASC,OAAT,CAAkBC,kBAAlB,gBACA,OAASC,YAAT,sBACA,OAEEC,uBAFF,CAGEC,+BAHF,eAOA,MAAO,IAAMC,WAAU,CAAGP,EAAE,CAAC,UAAD,CAArB,CAEP,GAAMQ,eAAc,CAAG,SACrBC,CADqB,CAErBC,CAFqB,CAGlB,IACGC,EAAK,CAAGV,eAAe,CAAC,UAAD,CAAaE,kBAAkB,CAACM,CAAD,CAA/B,CAD1B,CAGDG,CAHC,CAoBCD,CApBD,CAGDC,KAHC,CAIDC,CAJC,CAoBCF,CApBD,CAIDE,SAJC,GAoBCF,CApBD,CAKDG,IALC,CAKDA,CALC,YAKMT,uBALN,KAoBCM,CApBD,CAMDI,YANC,CAMDA,CANC,YAMcT,+BANd,GAODU,CAPC,CAoBCL,CApBD,CAODK,UAPC,CAQDC,CARC,CAoBCN,CApBD,CAQDM,cARC,CASDC,CATC,CAoBCP,CApBD,CASDO,gBATC,CAUDC,CAVC,CAoBCR,CApBD,CAUDQ,WAVC,CAWDC,CAXC,CAoBCT,CApBD,CAWDS,cAXC,CAYDC,CAZC,CAoBCV,CApBD,CAYDU,kBAZC,CAaDC,CAbC,CAoBCX,CApBD,CAaDW,cAbC,CAcDC,CAdC,CAoBCZ,CApBD,CAcDY,mBAdC,CAeDC,CAfC,CAoBCb,CApBD,CAeDa,aAfC,CAgBDC,CAhBC,CAoBCd,CApBD,CAgBDc,WAhBC,CAiBDC,CAjBC,CAoBCf,CApBD,CAiBDe,eAjBC,CAkBDC,CAlBC,CAoBChB,CApBD,CAkBDgB,eAlBC,CAmBEC,CAnBF,0BAoBCjB,CApBD,YAsBGkB,CAAI,CAAG9B,OAAO,CAAiBa,CAAK,CAACkB,MAAvB,CAtBjB,CAwBH,MACE,0CAAK,SAAS,CAAEvB,UAAU,CAAC,IAAD,CAAO,CAACM,CAAD,CAAP,CAA1B,CAA+C,GAAG,CAAEH,CAApD,EAA6DkB,CAA7D,EACE,oBAAC,eAAD,EAAiB,SAAS,CAAE,IAA5B,CAAkC,MAAM,GAAxC,CAAyC,KAAK,GAA9C,CAA+C,IAAI,GAAnD,EACGhB,CAAK,CAACmB,GAAN,CAAU,SAACC,CAAD,CAAOC,CAAP,QACT,qBAAC,UAAD,EACE,GAAG,CAAE1B,UAAU,CAAC,MAAD,CAAS,CAAE2B,GAAG,CAAElB,CAAU,CAACgB,CAAD,CAAjB,CAAT,CADjB,CAEE,aAAa,GAFf,CAGE,OAAO,CAAE,GAHX,CAIE,OAAO,CAAEH,CAAI,CAACI,CAAD,CAJf,EAMG,SAACE,CAAD,QACC,qBAAC,YAAD,gBACE,GAAG,CAAEN,CAAI,CAACI,CAAD,CADX,CAEE,IAAI,CAAEnB,CAFR,CAGE,YAAY,CAAEC,CAHhB,CAIE,SAAS,CAAER,UAAU,CAAC,MAAD,CAAS,CAAE4B,OAAO,CAAPA,CAAF,CAAT,CAJvB,EAKMjC,OAAO,CAAC8B,CAAD,CAAOrB,CAAP,CALb,EADD,CANH,CADS,CAAV,CADH,CADF,CAuBH,CAnDD,CAqDA,MAAO,IAAMyB,SAAQ,CAAGxC,UAAU,CAACY,cAAD,CAA3B,CAEP"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"./SnackBarActionButton.css";import React from"react";import{
|
|
1
|
+
import"./SnackBarActionButton.css";import React from"react";import{Button}from"../../Button";import{cn}from"../../../utils/bem";var cnSnackBarActionButton=cn("SnackBarActionButton");export var SnackBarActionButton=function(a){var b=a.actions,c=a.className,d=a.form;return 1>b.length?null:React.createElement("div",{className:cnSnackBarActionButton("ActionButtonsWrapper",[c])},b.map(function(a,b){return React.createElement(Button,{className:cnSnackBarActionButton(),key:"".concat(cnSnackBarActionButton(),"-").concat(b),size:"s",type:"button",view:"ghost",label:a.label,onClick:a.onClick,form:d})}))};
|
|
2
2
|
//# sourceMappingURL=SnackBarActionButton.js.map
|
package/__internal__/src/components/SnackBar/SnackBarActionButton/SnackBarActionButton.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SnackBarActionButton.js","names":["React","
|
|
1
|
+
{"version":3,"file":"SnackBarActionButton.js","names":["React","Button","cn","cnSnackBarActionButton","SnackBarActionButton","props","actions","className","form","length","map","item","index","label","onClick"],"sources":["../../../../../../src/components/SnackBar/SnackBarActionButton/SnackBarActionButton.tsx"],"sourcesContent":["import './SnackBarActionButton.css';\n\nimport React from 'react';\n\nimport { Button } from '##/components/Button';\nimport { cn } from '##/utils/bem';\n\nimport { SnackBarActionButtonProps } from '../types';\n\nconst cnSnackBarActionButton = cn('SnackBarActionButton');\n\nexport const SnackBarActionButton: React.FC<SnackBarActionButtonProps> = (\n props,\n) => {\n const { actions, className, form } = props;\n\n if (actions.length < 1) {\n return null;\n }\n\n return (\n <div\n className={cnSnackBarActionButton('ActionButtonsWrapper', [className])}\n >\n {actions.map((item, index) => (\n <Button\n className={cnSnackBarActionButton()}\n key={`${cnSnackBarActionButton()}-${index}`}\n size=\"s\"\n type=\"button\"\n view=\"ghost\"\n label={item.label}\n onClick={item.onClick}\n form={form}\n />\n ))}\n </div>\n );\n};\n"],"mappings":"AAAA,mCAEA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,MAAT,oBACA,OAASC,EAAT,0BAIA,GAAMC,uBAAsB,CAAGD,EAAE,CAAC,sBAAD,CAAjC,CAEA,MAAO,IAAME,qBAAyD,CAAG,SACvEC,CADuE,CAEpE,CACH,GAAQC,EAAR,CAAqCD,CAArC,CAAQC,OAAR,CAAiBC,CAAjB,CAAqCF,CAArC,CAAiBE,SAAjB,CAA4BC,CAA5B,CAAqCH,CAArC,CAA4BG,IAA5B,CADG,MAGkB,EAAjB,CAAAF,CAAO,CAACG,MAHT,CAIM,IAJN,CAQD,2BACE,SAAS,CAAEN,sBAAsB,CAAC,sBAAD,CAAyB,CAACI,CAAD,CAAzB,CADnC,EAGGD,CAAO,CAACI,GAAR,CAAY,SAACC,CAAD,CAAOC,CAAP,QACX,qBAAC,MAAD,EACE,SAAS,CAAET,sBAAsB,EADnC,CAEE,GAAG,WAAKA,sBAAsB,EAA3B,aAAiCS,CAAjC,CAFL,CAGE,IAAI,CAAC,GAHP,CAIE,IAAI,CAAC,QAJP,CAKE,IAAI,CAAC,OALP,CAME,KAAK,CAAED,CAAI,CAACE,KANd,CAOE,OAAO,CAAEF,CAAI,CAACG,OAPhB,CAQE,IAAI,CAAEN,CARR,EADW,CAAZ,CAHH,CAiBH,CA3BM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './SnackBarActionButton';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../../src/components/SnackBar/SnackBarActionButton/index.ts"],"sourcesContent":["export * from './SnackBarActionButton';\n"],"mappings":"AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.SnackBarItem{--snack-bar-item-
|
|
1
|
+
.SnackBarItem{background-color:var(--snack-bar-item-bg);border-radius:var(--snack-bar-item-radius);box-shadow:var(--shadow-group);color:var(--color-typo-primary);position:relative}.SnackBarItem_showProgress_line{padding-bottom:calc(var(--space-m) + var(--space-2xs))}.SnackBarItem_form_default{--snack-bar-item-radius:var(--space-xs)}.SnackBarItem_form_round{--snack-bar-item-radius:var(--space-m)}.SnackBarItem_form_brick{--snack-bar-item-radius:0}.SnackBarItem-ActionButtons,.SnackBarItem-Actions,.SnackBarItem-Content{width:100%}.SnackBarItem-Line{bottom:0;left:0;position:absolute}.SnackBarItem-Icon{flex:none}.SnackBarItem-CloseButton.Button{position:absolute;right:var(--space-2xs);top:var(--space-2xs)}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["onClose","autoClose","showProgress","icon","form","message","actions","status","onAutoClose","className"];
|
|
1
|
+
import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["onClose","autoClose","showProgress","icon","form","message","actions","status","onAutoClose","className","progressView","progress","style"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import"./SnackBarItem.css";import{IconClose}from"@consta/icons/IconClose";import React,{useEffect,useState}from"react";import{Button}from"../../Button";import{Text}from"../../Text";import{useTheme}from"../../Theme";import{useFlag}from"../../../hooks/useFlag";import{cnMixFlex}from"../../../mixs/MixFlex";import{cnMixSpace}from"../../../mixs/MixSpace";import{cn}from"../../../utils/bem";import{isNumber,isString}from"../../../utils/type-guards";import{SnackBarActionButton}from"../SnackBarActionButton";import{SnackBarLine}from"../SnackBarLine/SnackBarLine";import{SnackBarProgress}from"../SnackBarProgress";import{SnackBarTimer}from"../SnackBarTimer/SnackBarTimer";import{snackBarItemStatusDefault,snackBarPropFormDefault,snackBarPropProgressViewDefault}from"../types";var defaultInitialTimerTime=3;export var cnSnackBarItem=cn("SnackBarItem");var getAutoCloseTime=function(a){return!!a&&("number"==typeof a?a:defaultInitialTimerTime)};export var SnackBarItemRender=function(a,b){var c=a.onClose,d=a.autoClose,e=a.showProgress,f=a.icon,g=a.form,h=void 0===g?snackBarPropFormDefault:g,i=a.message,j=a.actions,k=a.status,l=void 0===k?snackBarItemStatusDefault:k,m=a.onAutoClose,n=a.className,o=a.progressView,p=void 0===o?snackBarPropProgressViewDefault:o,q=a.progress,r=a.style,s=_objectWithoutProperties(a,_excluded),t=useTheme(),u=t.themeClassNames,v=useState(null),w=_slicedToArray(v,2),x=w[0],y=w[1],z=useFlag(!1),A=_slicedToArray(z,2),B=A[0],C=A[1],D=C.on,E=C.off,F=useFlag(!1),G=_slicedToArray(F,2),H=G[0],I=G[1].on,J=function(a){return y(a)},K=getAutoCloseTime(d),L=e===void 0||!(isNumber(K)&&0<K),M=function(){m?m():null===c||void 0===c?void 0:c()};useEffect(function(){H||(B?x&&x.pause():x&&x.start())},[B,H,x]);var N=function(){I(),M()},O=c?function(){return c()}:void 0,P=isNumber(q)||!0===q;return React.createElement("div",Object.assign({ref:b,className:cnSnackBarItem({showProgress:e,form:h},[cnMixFlex({flex:"flex",gap:"m"}),cnMixSpace({p:"m"}),u.color.accent,n]),onMouseEnter:K?function handleMouseEnter(){return D()}:void 0,onMouseLeave:K?function handleMouseLeave(){return E()}:void 0,style:_objectSpread(_objectSpread({},r),{},_defineProperty({},"--snack-bar-item-bg","var(--color-bg-".concat(l,")")))},s),K&&"line"!==e&&React.createElement(SnackBarTimer,{className:cnSnackBarItem("Timer"),onMount:J,onTimeIsOver:N,startTime:K,hidden:L}),f&&(L&&"timer"===e||"timer"!==e)&&React.createElement(f,{className:cnSnackBarItem("Icon"),size:"m"}),React.createElement("div",{className:cnSnackBarItem("Content",cnMixFlex({flex:"flex",gap:"s",direction:"column"}))},React.createElement("div",{className:c?cnMixSpace({pR:"m"}):void 0},isString(i)||isNumber(i)?React.createElement(Text,{view:"primary",size:"m",className:cnSnackBarItem("Message"),lineHeight:"s"},i):i),(P||j)&&React.createElement("div",{className:cnSnackBarItem("Actions",[cnMixFlex({flex:"flex",align:"flex-end",gap:"s",justify:"flex-end"})])},j&&React.createElement(SnackBarActionButton,{className:cnSnackBarItem("ActionButtons"),actions:j,form:h}),P&&React.createElement(SnackBarProgress,{progress:q,view:p}))),c&&React.createElement(Button,{className:cnSnackBarItem("CloseButton"),view:"clear",iconLeft:IconClose,form:"round",type:"button",size:"xs",onClick:O}),K&&"line"===e&&React.createElement(SnackBarLine,{className:cnSnackBarItem("Line"),onMount:J,onTimeIsOver:N,startTime:K}))};export var SnackBarItem=React.forwardRef(SnackBarItemRender);
|
|
2
2
|
//# sourceMappingURL=SnackBarItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SnackBarItem.js","names":["IconClose","React","useEffect","useState","useFlag","cn","isNumber","isString","Button","Text","cnTheme","SnackBarActionButton","SnackBarLine","SnackBarTimer","snackBarItemStatusDefault","snackBarPropFormDefault","defaultInitialTimerTime","cnSnackBarItem","getAutoCloseTime","autoClose","SnackBarItemRender","props","ref","onClose","showProgress","Icon","icon","form","message","actions","status","onAutoCloseProp","onAutoClose","className","otherProps","timerFunctions","setTimerFunctions","hover","onHover","on","offHover","off","timeIsOver","onTimeIsOver","handleMountTimer","autoCloseTime","hideAutoCloseTimer","pause","start","handleTimeIsOver","handleClose","color","handleMouseEnter","handleMouseLeave","SnackBarItem","forwardRef"],"sources":["../../../../../../src/components/SnackBar/SnackBarItem/SnackBarItem.tsx"],"sourcesContent":["import '../../Theme/_color/Theme_color_gpnDark.css';\nimport './SnackBarItem.css';\n\nimport { IconClose } from '@consta/icons/IconClose';\nimport React, { useEffect, useState } from 'react';\n\nimport { useFlag } from '../../../hooks/useFlag/useFlag';\nimport { cn } from '../../../utils/bem';\nimport { isNumber, isString } from '../../../utils/type-guards';\nimport { Button } from '../../Button/Button';\nimport { Text } from '../../Text/Text';\nimport { cnTheme } from '../../Theme/Theme';\nimport { SnackBarActionButton } from '../SnackBarActionButton/SnackBarActionButton';\nimport { SnackBarLine } from '../SnackBarLine/SnackBarLine';\nimport { SnackBarTimer } from '../SnackBarTimer/SnackBarTimer';\nimport {\n SnackBarItemComponent,\n SnackBarItemProps,\n snackBarItemStatusDefault,\n snackBarPropFormDefault,\n SnackBarTimerPropOnMount,\n} from '../types';\n\nconst defaultInitialTimerTime = 3;\n\nexport const cnSnackBarItem = cn('SnackBarItem');\n\nconst getAutoCloseTime = (\n autoClose: boolean | number | undefined,\n): number | false => {\n if (autoClose) {\n if (typeof autoClose === 'number') {\n return autoClose;\n }\n return defaultInitialTimerTime;\n }\n return false;\n};\n\nexport const SnackBarItemRender = (\n props: SnackBarItemProps,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const {\n onClose,\n autoClose,\n showProgress,\n icon: Icon,\n form = snackBarPropFormDefault,\n message,\n actions,\n status = snackBarItemStatusDefault,\n onAutoClose: onAutoCloseProp,\n className,\n ...otherProps\n } = props;\n\n const [timerFunctions, setTimerFunctions] = useState<{\n start: () => void;\n pause: () => void;\n } | null>(null);\n const [hover, { on: onHover, off: offHover }] = useFlag(false);\n const [timeIsOver, { on: onTimeIsOver }] = useFlag(false);\n const handleMountTimer: SnackBarTimerPropOnMount = (timerFunctions) =>\n setTimerFunctions(timerFunctions);\n const handleMouseEnter = () => onHover();\n const handleMouseLeave = () => offHover();\n const autoCloseTime = getAutoCloseTime(autoClose);\n const hideAutoCloseTimer =\n showProgress === undefined ||\n !(isNumber(autoCloseTime) && autoCloseTime > 0);\n const onAutoClose = () => {\n if (onAutoCloseProp) {\n onAutoCloseProp();\n } else {\n onClose?.();\n }\n };\n\n useEffect(() => {\n if (!timeIsOver) {\n if (hover) {\n timerFunctions && timerFunctions.pause();\n } else {\n timerFunctions && timerFunctions.start();\n }\n }\n }, [hover, timeIsOver, timerFunctions]);\n\n const handleTimeIsOver = () => {\n onTimeIsOver();\n onAutoClose();\n };\n\n const handleClose = onClose ? () => onClose() : undefined;\n\n return (\n <div\n ref={ref}\n className={cnSnackBarItem({ status, showProgress, form }, [\n cnTheme({ color: 'gpnDark' }),\n className,\n ])}\n onMouseEnter={autoCloseTime ? handleMouseEnter : undefined}\n onMouseLeave={autoCloseTime ? handleMouseLeave : undefined}\n {...otherProps}\n >\n {autoCloseTime && showProgress !== 'line' && (\n <SnackBarTimer\n className={cnSnackBarItem('Timer')}\n onMount={handleMountTimer}\n onTimeIsOver={handleTimeIsOver}\n startTime={autoCloseTime}\n hidden={hideAutoCloseTimer}\n />\n )}\n {Icon &&\n ((hideAutoCloseTimer && showProgress === 'timer') ||\n showProgress !== 'timer') && (\n <Icon className={cnSnackBarItem('Icon')} size=\"m\" />\n )}\n <div className={cnSnackBarItem('Content')}>\n {isString(message) || isNumber(message) ? (\n <Text\n view=\"primary\"\n size=\"m\"\n className={cnSnackBarItem('Message')}\n lineHeight=\"s\"\n >\n {message}\n </Text>\n ) : (\n message\n )}\n {actions && (\n <SnackBarActionButton\n actions={actions}\n className={cnSnackBarItem('ActionButton')}\n />\n )}\n </div>\n {onClose && (\n <Button\n className={cnSnackBarItem('CloseButton')}\n view=\"clear\"\n iconLeft={IconClose}\n form=\"round\"\n type=\"button\"\n size=\"xs\"\n onClick={handleClose}\n />\n )}\n {autoCloseTime && showProgress === 'line' && (\n <SnackBarLine\n className={cnSnackBarItem('Line')}\n onMount={handleMountTimer}\n onTimeIsOver={handleTimeIsOver}\n startTime={autoCloseTime}\n />\n )}\n </div>\n );\n};\n\nexport const SnackBarItem = React.forwardRef(\n SnackBarItemRender,\n) as SnackBarItemComponent;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SnackBarItem.js","names":["IconClose","React","useEffect","useState","Button","Text","useTheme","useFlag","cnMixFlex","cnMixSpace","cn","isNumber","isString","SnackBarActionButton","SnackBarLine","SnackBarProgress","SnackBarTimer","snackBarItemStatusDefault","snackBarPropFormDefault","snackBarPropProgressViewDefault","defaultInitialTimerTime","cnSnackBarItem","getAutoCloseTime","autoClose","SnackBarItemRender","props","ref","onClose","showProgress","Icon","icon","form","message","actions","status","onAutoCloseProp","onAutoClose","className","progressView","progress","style","otherProps","themeClassNames","timerFunctions","setTimerFunctions","hover","onHover","on","offHover","off","timeIsOver","onTimeIsOver","handleMountTimer","autoCloseTime","hideAutoCloseTimer","pause","start","handleTimeIsOver","handleClose","vsibleProgress","flex","gap","p","color","accent","handleMouseEnter","handleMouseLeave","direction","pR","align","justify","SnackBarItem","forwardRef"],"sources":["../../../../../../src/components/SnackBar/SnackBarItem/SnackBarItem.tsx"],"sourcesContent":["import './SnackBarItem.css';\n\nimport { IconClose } from '@consta/icons/IconClose';\nimport React, { useEffect, useState } from 'react';\n\nimport { Button } from '##/components/Button';\nimport { Text } from '##/components/Text';\nimport { useTheme } from '##/components/Theme';\nimport { useFlag } from '##/hooks/useFlag';\nimport { cnMixFlex } from '##/mixs/MixFlex';\nimport { cnMixSpace } from '##/mixs/MixSpace';\nimport { cn } from '##/utils/bem';\nimport { isNumber, isString } from '##/utils/type-guards';\n\nimport { SnackBarActionButton } from '../SnackBarActionButton';\nimport { SnackBarLine } from '../SnackBarLine/SnackBarLine';\nimport { SnackBarProgress } from '../SnackBarProgress';\nimport { SnackBarTimer } from '../SnackBarTimer/SnackBarTimer';\nimport {\n SnackBarItemComponent,\n SnackBarItemProps,\n snackBarItemStatusDefault,\n snackBarPropFormDefault,\n snackBarPropProgressViewDefault,\n SnackBarTimerPropOnMount,\n} from '../types';\n\nconst defaultInitialTimerTime = 3;\n\nexport const cnSnackBarItem = cn('SnackBarItem');\n\nconst getAutoCloseTime = (\n autoClose: boolean | number | undefined,\n): number | false => {\n if (autoClose) {\n if (typeof autoClose === 'number') {\n return autoClose;\n }\n return defaultInitialTimerTime;\n }\n return false;\n};\n\nexport const SnackBarItemRender = (\n props: SnackBarItemProps,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const {\n onClose,\n autoClose,\n showProgress,\n icon: Icon,\n form = snackBarPropFormDefault,\n message,\n actions,\n status = snackBarItemStatusDefault,\n onAutoClose: onAutoCloseProp,\n className,\n progressView = snackBarPropProgressViewDefault,\n progress,\n style,\n ...otherProps\n } = props;\n\n const { themeClassNames } = useTheme();\n\n const [timerFunctions, setTimerFunctions] = useState<{\n start: () => void;\n pause: () => void;\n } | null>(null);\n const [hover, { on: onHover, off: offHover }] = useFlag(false);\n const [timeIsOver, { on: onTimeIsOver }] = useFlag(false);\n const handleMountTimer: SnackBarTimerPropOnMount = (timerFunctions) =>\n setTimerFunctions(timerFunctions);\n const handleMouseEnter = () => onHover();\n const handleMouseLeave = () => offHover();\n const autoCloseTime = getAutoCloseTime(autoClose);\n const hideAutoCloseTimer =\n showProgress === undefined ||\n !(isNumber(autoCloseTime) && autoCloseTime > 0);\n const onAutoClose = () => {\n if (onAutoCloseProp) {\n onAutoCloseProp();\n } else {\n onClose?.();\n }\n };\n\n useEffect(() => {\n if (!timeIsOver) {\n if (hover) {\n timerFunctions && timerFunctions.pause();\n } else {\n timerFunctions && timerFunctions.start();\n }\n }\n }, [hover, timeIsOver, timerFunctions]);\n\n const handleTimeIsOver = () => {\n onTimeIsOver();\n onAutoClose();\n };\n\n const handleClose = onClose ? () => onClose() : undefined;\n const vsibleProgress = isNumber(progress) || progress === true;\n\n return (\n <div\n ref={ref}\n className={cnSnackBarItem({ showProgress, form }, [\n cnMixFlex({ flex: 'flex', gap: 'm' }),\n cnMixSpace({ p: 'm' }),\n themeClassNames.color.accent,\n className,\n ])}\n onMouseEnter={autoCloseTime ? handleMouseEnter : undefined}\n onMouseLeave={autoCloseTime ? handleMouseLeave : undefined}\n style={{\n ...style,\n ['--snack-bar-item-bg' as string]: `var(--color-bg-${status})`,\n }}\n {...otherProps}\n >\n {autoCloseTime && showProgress !== 'line' && (\n <SnackBarTimer\n className={cnSnackBarItem('Timer')}\n onMount={handleMountTimer}\n onTimeIsOver={handleTimeIsOver}\n startTime={autoCloseTime}\n hidden={hideAutoCloseTimer}\n />\n )}\n {Icon &&\n ((hideAutoCloseTimer && showProgress === 'timer') ||\n showProgress !== 'timer') && (\n <Icon className={cnSnackBarItem('Icon')} size=\"m\" />\n )}\n <div\n className={cnSnackBarItem(\n 'Content',\n cnMixFlex({ flex: 'flex', gap: 's', direction: 'column' }),\n )}\n >\n <div className={onClose ? cnMixSpace({ pR: 'm' }) : undefined}>\n {isString(message) || isNumber(message) ? (\n <Text\n view=\"primary\"\n size=\"m\"\n className={cnSnackBarItem('Message')}\n lineHeight=\"s\"\n >\n {message}\n </Text>\n ) : (\n message\n )}\n </div>\n {(vsibleProgress || actions) && (\n <div\n className={cnSnackBarItem('Actions', [\n cnMixFlex({\n flex: 'flex',\n align: 'flex-end',\n gap: 's',\n justify: 'flex-end',\n }),\n ])}\n >\n {actions && (\n <SnackBarActionButton\n className={cnSnackBarItem('ActionButtons')}\n actions={actions}\n form={form}\n />\n )}\n {vsibleProgress && (\n <SnackBarProgress progress={progress} view={progressView} />\n )}\n </div>\n )}\n </div>\n\n {onClose && (\n <Button\n className={cnSnackBarItem('CloseButton')}\n view=\"clear\"\n iconLeft={IconClose}\n form=\"round\"\n type=\"button\"\n size=\"xs\"\n onClick={handleClose}\n />\n )}\n {autoCloseTime && showProgress === 'line' && (\n <SnackBarLine\n className={cnSnackBarItem('Line')}\n onMount={handleMountTimer}\n onTimeIsOver={handleTimeIsOver}\n startTime={autoCloseTime}\n />\n )}\n </div>\n );\n};\n\nexport const SnackBarItem = React.forwardRef(\n SnackBarItemRender,\n) as SnackBarItemComponent;\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './SnackBarItem';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../../src/components/SnackBar/SnackBarItem/index.ts"],"sourcesContent":["export * from './SnackBarItem';\n"],"mappings":"AAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './SnackBarLine';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../../src/components/SnackBar/SnackBarLine/index.ts"],"sourcesContent":["export * from './SnackBarLine';\n"],"mappings":"AAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.SnackBarProgress-Spiner.ProgressSpin{color:var(--color-typo-ghost)}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import"./SnackBarProgress.css";import React from"react";import{ProgressSpin}from"../../ProgressSpin";import{Text}from"../../Text";import{cnMixFlex}from"../../../mixs/MixFlex";import{cn}from"../../../utils/bem";import{isNumber}from"../../../utils/type-guards";var cnSnackBarProgress=cn("SnackBarProgress");export var SnackBarProgress=function(a){var b=a.view,c=void 0===b?"spinText":b,d=a.progress,e=a.className,f=isNumber(d);return React.createElement("div",{className:cnSnackBarProgress(null,[cnMixFlex({flex:"flex",gap:"xs"}),e])},"text"!==c&&(f||!0===d)&&React.createElement(ProgressSpin,{className:cnSnackBarProgress("Spiner"),progress:f?d:void 0,size:"m",animation:!0}),"spin"!==c&&f&&React.createElement(Text,{size:"xs",lineHeight:"l",view:"secondary"},d,"%"))};
|
|
2
|
+
//# sourceMappingURL=SnackBarProgress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SnackBarProgress.js","names":["React","ProgressSpin","Text","cnMixFlex","cn","isNumber","cnSnackBarProgress","SnackBarProgress","props","view","progress","className","progressIsNumber","flex","gap"],"sources":["../../../../../../src/components/SnackBar/SnackBarProgress/SnackBarProgress.tsx"],"sourcesContent":["import './SnackBarProgress.css';\n\nimport React from 'react';\n\nimport { ProgressSpin } from '##/components/ProgressSpin';\nimport { Text } from '##/components/Text';\nimport { cnMixFlex } from '##/mixs/MixFlex';\nimport { cn } from '##/utils/bem';\nimport { isNumber } from '##/utils/type-guards';\n\nimport { SnackBarProgressProps } from '../types';\n\nconst cnSnackBarProgress = cn('SnackBarProgress');\n\nexport const SnackBarProgress: React.FC<SnackBarProgressProps> = (props) => {\n const { view = 'spinText', progress, className } = props;\n const progressIsNumber = isNumber(progress);\n\n return (\n <div\n className={cnSnackBarProgress(null, [\n cnMixFlex({\n flex: 'flex',\n gap: 'xs',\n }),\n className,\n ])}\n >\n {view !== 'text' && (progressIsNumber || progress === true) && (\n <ProgressSpin\n className={cnSnackBarProgress('Spiner')}\n progress={progressIsNumber ? progress : undefined}\n size=\"m\"\n animation\n />\n )}\n {view !== 'spin' && progressIsNumber && (\n <Text size=\"xs\" lineHeight=\"l\" view=\"secondary\">\n {progress}%\n </Text>\n )}\n </div>\n );\n};\n"],"mappings":"AAAA,+BAEA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,YAAT,0BACA,OAASC,IAAT,kBACA,OAASC,SAAT,6BACA,OAASC,EAAT,0BACA,OAASC,QAAT,kCAIA,GAAMC,mBAAkB,CAAGF,EAAE,CAAC,kBAAD,CAA7B,CAEA,MAAO,IAAMG,iBAAiD,CAAG,SAACC,CAAD,CAAW,OACvBA,CADuB,CAClEC,IADkE,CAClEA,CADkE,YAC3D,UAD2D,GAC/CC,CAD+C,CACvBF,CADuB,CAC/CE,QAD+C,CACrCC,CADqC,CACvBH,CADuB,CACrCG,SADqC,CAEpEC,CAAgB,CAAGP,QAAQ,CAACK,CAAD,CAFyC,CAI1E,MACE,4BACE,SAAS,CAAEJ,kBAAkB,CAAC,IAAD,CAAO,CAClCH,SAAS,CAAC,CACRU,IAAI,CAAE,MADE,CAERC,GAAG,CAAE,IAFG,CAAD,CADyB,CAKlCH,CALkC,CAAP,CAD/B,EASY,MAAT,GAAAF,CAAI,GAAgBG,CAAgB,EAAI,KAAAF,CAApC,CAAJ,EACC,oBAAC,YAAD,EACE,SAAS,CAAEJ,kBAAkB,CAAC,QAAD,CAD/B,CAEE,QAAQ,CAAEM,CAAgB,CAAGF,CAAH,OAF5B,CAGE,IAAI,CAAC,GAHP,CAIE,SAAS,GAJX,EAVJ,CAiBY,MAAT,GAAAD,CAAI,EAAeG,CAAnB,EACC,oBAAC,IAAD,EAAM,IAAI,CAAC,IAAX,CAAgB,UAAU,CAAC,GAA3B,CAA+B,IAAI,CAAC,WAApC,EACGF,CADH,KAlBJ,CAwBH,CA7BM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './SnackBarProgress';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../../src/components/SnackBar/SnackBarProgress/index.ts"],"sourcesContent":["export * from './SnackBarProgress';\n"],"mappings":"AAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import"./SnackBarTimer.css";import React,{useEffect,useState}from"react";import{useTimer}from"../../../hooks/useTimer
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import"./SnackBarTimer.css";import React,{useEffect,useState}from"react";import{Timer}from"../../Timer";import{useTimer}from"../../../hooks/useTimer";import{cn}from"../../../utils/bem";var interval=1e3,cnSnackBarTimer=cn("SnackBarTimer");export var SnackBarTimer=function(a){var b=useState(!1),c=_slicedToArray(b,2),d=c[0],e=c[1],f=a.onMount,g=a.onTimeIsOver,h=a.startTime,i=a.hidden,j=a.className,k=h*interval,l=useTimer({endTime:0,startTime:k,timerType:"DECREMENTAL",onTimeOver:g}),m=l.time,n=l.start,o=l.pause,p=l.isRunning;useEffect(function(){f({start:n,pause:o}),n()},[]),useEffect(function(){e(p)},[p]);var q=d?100*((m-interval)/k):100*(m/k),r=m?m/interval:0;return i?null:React.createElement(Timer,{className:cnSnackBarTimer(null,[j]),seconds:r,progress:q,size:"m",animation:!0})};
|
|
2
2
|
//# sourceMappingURL=SnackBarTimer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SnackBarTimer.js","names":["React","useEffect","useState","
|
|
1
|
+
{"version":3,"file":"SnackBarTimer.js","names":["React","useEffect","useState","Timer","useTimer","cn","interval","cnSnackBarTimer","SnackBarTimer","props","running","setRunning","onMount","onTimeIsOver","startTimeprop","startTime","hidden","className","endTime","timerType","onTimeOver","time","start","pause","isRunning","progress","seconds"],"sources":["../../../../../../src/components/SnackBar/SnackBarTimer/SnackBarTimer.tsx"],"sourcesContent":["import './SnackBarTimer.css';\n\nimport React, { useEffect, useState } from 'react';\n\nimport { Timer } from '##/components/Timer';\nimport { useTimer } from '##/hooks/useTimer';\nimport { cn } from '##/utils/bem';\n\nimport { SnackBarTimerProps } from '../types';\n\nconst interval = 1000;\n\nconst cnSnackBarTimer = cn('SnackBarTimer');\n\nexport const SnackBarTimer: React.FC<SnackBarTimerProps> = (props) => {\n const [running, setRunning] = useState<boolean>(false);\n const {\n onMount,\n onTimeIsOver,\n startTime: startTimeprop,\n hidden,\n className,\n } = props;\n const startTime = startTimeprop * interval;\n const { time, start, pause, isRunning } = useTimer({\n endTime: 0,\n startTime,\n timerType: 'DECREMENTAL',\n onTimeOver: onTimeIsOver,\n });\n\n useEffect(() => {\n onMount({ start, pause });\n start();\n }, []);\n\n useEffect(() => {\n setRunning(isRunning);\n }, [isRunning]);\n\n const progress = running\n ? ((time - interval) / startTime) * 100\n : (time / startTime) * 100;\n const seconds = time ? time / interval : 0;\n\n if (hidden) {\n return null;\n }\n\n return (\n <Timer\n className={cnSnackBarTimer(null, [className])}\n seconds={seconds}\n progress={progress}\n size=\"m\"\n animation\n />\n );\n};\n"],"mappings":"iEAAA,4BAEA,MAAOA,MAAP,EAAgBC,SAAhB,CAA2BC,QAA3B,KAA2C,OAA3C,CAEA,OAASC,KAAT,mBACA,OAASC,QAAT,+BACA,OAASC,EAAT,0B,GAIMC,SAAQ,CAAG,G,CAEXC,eAAe,CAAGF,EAAE,CAAC,eAAD,C,CAE1B,MAAO,IAAMG,cAA2C,CAAG,SAACC,CAAD,CAAW,OACtCP,QAAQ,IAD8B,uBAC7DQ,CAD6D,MACpDC,CADoD,MAGlEC,CAHkE,CAQhEH,CARgE,CAGlEG,OAHkE,CAIlEC,CAJkE,CAQhEJ,CARgE,CAIlEI,YAJkE,CAKvDC,CALuD,CAQhEL,CARgE,CAKlEM,SALkE,CAMlEC,CANkE,CAQhEP,CARgE,CAMlEO,MANkE,CAOlEC,CAPkE,CAQhER,CARgE,CAOlEQ,SAPkE,CAS9DF,CAAS,CAAGD,CAAa,CAAGR,QATkC,GAU1BF,QAAQ,CAAC,CACjDc,OAAO,CAAE,CADwC,CAEjDH,SAAS,CAATA,CAFiD,CAGjDI,SAAS,CAAE,aAHsC,CAIjDC,UAAU,CAAEP,CAJqC,CAAD,CAVkB,CAU5DQ,CAV4D,GAU5DA,IAV4D,CAUtDC,CAVsD,GAUtDA,KAVsD,CAU/CC,CAV+C,GAU/CA,KAV+C,CAUxCC,CAVwC,GAUxCA,SAVwC,CAiBpEvB,SAAS,CAAC,UAAM,CACdW,CAAO,CAAC,CAAEU,KAAK,CAALA,CAAF,CAASC,KAAK,CAALA,CAAT,CAAD,CADO,CAEdD,CAAK,EACN,CAHQ,CAGN,EAHM,CAjB2D,CAsBpErB,SAAS,CAAC,UAAM,CACdU,CAAU,CAACa,CAAD,CACX,CAFQ,CAEN,CAACA,CAAD,CAFM,CAtB2D,IA0B9DC,EAAQ,CAAGf,CAAO,CACc,GAAlC,EAAC,CAACW,CAAI,CAAGf,QAAR,EAAoBS,CAArB,CADoB,CAEC,GAArB,EAACM,CAAI,CAAGN,CAAR,CA5BgE,CA6B9DW,CAAO,CAAGL,CAAI,CAAGA,CAAI,CAAGf,QAAV,CAAqB,CA7B2B,OA+BhEU,EA/BgE,CAgC3D,IAhC2D,CAoClE,oBAAC,KAAD,EACE,SAAS,CAAET,eAAe,CAAC,IAAD,CAAO,CAACU,CAAD,CAAP,CAD5B,CAEE,OAAO,CAAES,CAFX,CAGE,QAAQ,CAAED,CAHZ,CAIE,IAAI,CAAC,GAJP,CAKE,SAAS,GALX,EAQH,CA5CM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './SnackBarTimer';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../../src/components/SnackBar/SnackBarTimer/index.ts"],"sourcesContent":["export * from './SnackBarTimer';\n"],"mappings":"AAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { Mappers, SnackBarItemDefault, SnackBarPropGetItemActions, SnackBarPropGetItemAutoClose, SnackBarPropGetItemIcon, SnackBarPropGetItemKey, SnackBarPropGetItemMessage, SnackBarPropGetItemOnAutoClose, SnackBarPropGetItemOnClose, SnackBarPropGetItemShowProgress, SnackBarPropGetItemStatus, SnackBarProps } from './types';
|
|
2
|
+
import { Mappers, SnackBarItemDefault, SnackBarPropGetItemActions, SnackBarPropGetItemAutoClose, SnackBarPropGetItemIcon, SnackBarPropGetItemKey, SnackBarPropGetItemMessage, SnackBarPropGetItemOnAutoClose, SnackBarPropGetItemOnClose, SnackBarPropGetItemProgress, SnackBarPropGetItemShowProgress, SnackBarPropGetItemStatus, SnackBarProps } from './types';
|
|
3
3
|
export declare const withDefaultGetters: (props: SnackBarProps) => {
|
|
4
4
|
getItemKey: SnackBarPropGetItemKey<SnackBarItemDefault>;
|
|
5
5
|
getItemMessage: SnackBarPropGetItemMessage<SnackBarItemDefault>;
|
|
@@ -10,9 +10,11 @@ export declare const withDefaultGetters: (props: SnackBarProps) => {
|
|
|
10
10
|
getItemActions: SnackBarPropGetItemActions<SnackBarItemDefault>;
|
|
11
11
|
getItemOnClose: SnackBarPropGetItemOnClose<SnackBarItemDefault>;
|
|
12
12
|
getItemOnAutoClose: SnackBarPropGetItemOnAutoClose<SnackBarItemDefault>;
|
|
13
|
+
getItemProgress: SnackBarPropGetItemProgress<SnackBarItemDefault>;
|
|
13
14
|
items: SnackBarItemDefault[];
|
|
14
15
|
children?: undefined;
|
|
15
16
|
form?: "default" | "brick" | "round" | undefined;
|
|
17
|
+
progressView?: "text" | "spinText" | "spin" | undefined;
|
|
16
18
|
onItemClose?: ((item: SnackBarItemDefault) => void) | undefined;
|
|
17
19
|
onItemAutoClose?: ((item: SnackBarItemDefault) => void) | undefined;
|
|
18
20
|
slot?: string | undefined;
|
|
@@ -284,6 +286,7 @@ export declare const getItem: <ITEM>(item: ITEM, props: Required<Mappers<ITEM>>
|
|
|
284
286
|
showProgress: "line" | "timer" | undefined;
|
|
285
287
|
icon: import("@consta/icons/Icon").IconComponent<"span"> | undefined;
|
|
286
288
|
actions: import("./types").SnackBarPropItemAction[] | undefined;
|
|
289
|
+
progress: number | boolean | undefined;
|
|
287
290
|
onClose: (() => void) | undefined;
|
|
288
291
|
onAutoClose: (() => void) | undefined;
|
|
289
292
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _defineProperty from"@babel/runtime/helpers/defineProperty";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}var defaultGetItemKey=function(a){return a.key},defaultGetItemMessage=function(a){return a.message},defaultGetItemStatus=function(a){return a.status},defaultGetItemAutoClose=function(a){return a.autoClose},defaultGetItemShowProgress=function(a){return a.showProgress},defaultGetItemIcon=function(a){return a.icon},defaultGetItemActions=function(a){return a.actions},defaultGetItemOnClose=function(a){return a.onClose},defaultGetItemOnAutoClose=function(a){return a.onAutoClose};export var withDefaultGetters=function(a){return _objectSpread(_objectSpread({},a),{},{getItemKey:a.getItemKey||defaultGetItemKey,getItemMessage:a.getItemMessage||defaultGetItemMessage,getItemStatus:a.getItemStatus||defaultGetItemStatus,getItemAutoClose:a.getItemAutoClose||defaultGetItemAutoClose,getItemShowProgress:a.getItemShowProgress||defaultGetItemShowProgress,getItemIcon:a.getItemIcon||defaultGetItemIcon,getItemActions:a.getItemActions||defaultGetItemActions,getItemOnClose:a.getItemOnClose||defaultGetItemOnClose,getItemOnAutoClose:a.getItemOnAutoClose||defaultGetItemOnAutoClose})};export var getItem=function(a,b){var c=b.getItemKey,d=b.getItemActions,e=b.getItemAutoClose,f=b.getItemIcon,g=b.getItemMessage,h=b.getItemOnAutoClose,i=b.getItemOnClose,j=b.getItemShowProgress,k=b.getItemStatus,l=b.onItemClose,m=b.onItemAutoClose;return{key:c(a),message:g(a),status:k(a),autoClose:e(a),showProgress:j(a),icon:f(a),actions:d(a),onClose:"function"==typeof i(a)||"function"==typeof l?function(){var b;null===(b=i(a))||void 0===b?void 0:b(a),null===l||void 0===l?void 0:l(a)}:void 0,onAutoClose:"function"==typeof h(a)||"function"==typeof m?function(){var b;null===(b=h(a))||void 0===b?void 0:b(a),null===m||void 0===m?void 0:m(a)}:void 0}};
|
|
1
|
+
import _defineProperty from"@babel/runtime/helpers/defineProperty";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}var defaultGetItemKey=function(a){return a.key},defaultGetItemMessage=function(a){return a.message},defaultGetItemStatus=function(a){return a.status},defaultGetItemAutoClose=function(a){return a.autoClose},defaultGetItemShowProgress=function(a){return a.showProgress},defaultGetItemIcon=function(a){return a.icon},defaultGetItemActions=function(a){return a.actions},defaultGetItemOnClose=function(a){return a.onClose},defaultGetItemOnAutoClose=function(a){return a.onAutoClose},defaultGetItemProgress=function(a){return a.progress};export var withDefaultGetters=function(a){return _objectSpread(_objectSpread({},a),{},{getItemKey:a.getItemKey||defaultGetItemKey,getItemMessage:a.getItemMessage||defaultGetItemMessage,getItemStatus:a.getItemStatus||defaultGetItemStatus,getItemAutoClose:a.getItemAutoClose||defaultGetItemAutoClose,getItemShowProgress:a.getItemShowProgress||defaultGetItemShowProgress,getItemIcon:a.getItemIcon||defaultGetItemIcon,getItemActions:a.getItemActions||defaultGetItemActions,getItemOnClose:a.getItemOnClose||defaultGetItemOnClose,getItemOnAutoClose:a.getItemOnAutoClose||defaultGetItemOnAutoClose,getItemProgress:a.getItemProgress||defaultGetItemProgress})};export var getItem=function(a,b){var c=b.getItemKey,d=b.getItemActions,e=b.getItemAutoClose,f=b.getItemIcon,g=b.getItemMessage,h=b.getItemOnAutoClose,i=b.getItemOnClose,j=b.getItemShowProgress,k=b.getItemStatus,l=b.onItemClose,m=b.onItemAutoClose,n=b.getItemProgress;return{key:c(a),message:g(a),status:k(a),autoClose:e(a),showProgress:j(a),icon:f(a),actions:d(a),progress:n(a),onClose:"function"==typeof i(a)||"function"==typeof l?function(){var b;null===(b=i(a))||void 0===b?void 0:b(a),null===l||void 0===l?void 0:l(a)}:void 0,onAutoClose:"function"==typeof h(a)||"function"==typeof m?function(){var b;null===(b=h(a))||void 0===b?void 0:b(a),null===m||void 0===m?void 0:m(a)}:void 0}};
|
|
2
2
|
//# sourceMappingURL=helper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.js","names":["defaultGetItemKey","item","key","defaultGetItemMessage","message","defaultGetItemStatus","status","defaultGetItemAutoClose","autoClose","defaultGetItemShowProgress","showProgress","defaultGetItemIcon","icon","defaultGetItemActions","actions","defaultGetItemOnClose","onClose","defaultGetItemOnAutoClose","onAutoClose","withDefaultGetters","props","getItemKey","getItemMessage","getItemStatus","getItemAutoClose","getItemShowProgress","getItemIcon","getItemActions","getItemOnClose","getItemOnAutoClose","getItem","onItemClose","onItemAutoClose"],"sources":["../../../../../src/components/SnackBar/helper.ts"],"sourcesContent":["import {\n Mappers,\n SnackBarItemDefault,\n SnackBarPropGetItemActions,\n SnackBarPropGetItemAutoClose,\n SnackBarPropGetItemIcon,\n SnackBarPropGetItemKey,\n SnackBarPropGetItemMessage,\n SnackBarPropGetItemOnAutoClose,\n SnackBarPropGetItemOnClose,\n SnackBarPropGetItemShowProgress,\n SnackBarPropGetItemStatus,\n SnackBarProps,\n} from './types';\n\nconst defaultGetItemKey: SnackBarPropGetItemKey<SnackBarItemDefault> = (item) =>\n item.key;\nconst defaultGetItemMessage: SnackBarPropGetItemMessage<SnackBarItemDefault> = (\n item,\n) => item.message;\nconst defaultGetItemStatus: SnackBarPropGetItemStatus<SnackBarItemDefault> = (\n item,\n) => item.status;\nconst defaultGetItemAutoClose: SnackBarPropGetItemAutoClose<\n SnackBarItemDefault\n> = (item) => item.autoClose;\nconst defaultGetItemShowProgress: SnackBarPropGetItemShowProgress<\n SnackBarItemDefault\n> = (item) => item.showProgress;\nconst defaultGetItemIcon: SnackBarPropGetItemIcon<SnackBarItemDefault> = (\n item,\n) => item.icon;\nconst defaultGetItemActions: SnackBarPropGetItemActions<SnackBarItemDefault> = (\n item,\n) => item.actions;\nconst defaultGetItemOnClose: SnackBarPropGetItemOnClose<SnackBarItemDefault> = (\n item,\n) => item.onClose;\nconst defaultGetItemOnAutoClose: SnackBarPropGetItemOnAutoClose<\n SnackBarItemDefault\n> = (item) => item.onAutoClose;\n\nexport const withDefaultGetters = (props: SnackBarProps) => {\n return {\n ...props,\n getItemKey: props.getItemKey || defaultGetItemKey,\n getItemMessage: props.getItemMessage || defaultGetItemMessage,\n getItemStatus: props.getItemStatus || defaultGetItemStatus,\n getItemAutoClose: props.getItemAutoClose || defaultGetItemAutoClose,\n getItemShowProgress:\n props.getItemShowProgress || defaultGetItemShowProgress,\n getItemIcon: props.getItemIcon || defaultGetItemIcon,\n getItemActions: props.getItemActions || defaultGetItemActions,\n getItemOnClose: props.getItemOnClose || defaultGetItemOnClose,\n getItemOnAutoClose: props.getItemOnAutoClose || defaultGetItemOnAutoClose,\n };\n};\n\nexport const getItem = <ITEM>(\n item: ITEM,\n props: Required<Mappers<ITEM>> & {\n onItemClose?: (item: ITEM) => void;\n onItemAutoClose?: (item: ITEM) => void;\n },\n) => {\n const {\n getItemKey,\n getItemActions,\n getItemAutoClose,\n getItemIcon,\n getItemMessage,\n getItemOnAutoClose,\n getItemOnClose,\n getItemShowProgress,\n getItemStatus,\n onItemClose,\n onItemAutoClose,\n } = props;\n return {\n key: getItemKey(item),\n message: getItemMessage(item),\n status: getItemStatus(item),\n autoClose: getItemAutoClose(item),\n showProgress: getItemShowProgress(item),\n icon: getItemIcon(item),\n actions: getItemActions(item),\n onClose:\n typeof getItemOnClose(item) === 'function' ||\n typeof onItemClose === 'function'\n ? () => {\n getItemOnClose(item)?.(item);\n onItemClose?.(item);\n }\n : undefined,\n onAutoClose:\n typeof getItemOnAutoClose(item) === 'function' ||\n typeof onItemAutoClose === 'function'\n ? () => {\n getItemOnAutoClose(item)?.(item);\n onItemAutoClose?.(item);\n }\n : undefined,\n };\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"helper.js","names":["defaultGetItemKey","item","key","defaultGetItemMessage","message","defaultGetItemStatus","status","defaultGetItemAutoClose","autoClose","defaultGetItemShowProgress","showProgress","defaultGetItemIcon","icon","defaultGetItemActions","actions","defaultGetItemOnClose","onClose","defaultGetItemOnAutoClose","onAutoClose","defaultGetItemProgress","progress","withDefaultGetters","props","getItemKey","getItemMessage","getItemStatus","getItemAutoClose","getItemShowProgress","getItemIcon","getItemActions","getItemOnClose","getItemOnAutoClose","getItemProgress","getItem","onItemClose","onItemAutoClose"],"sources":["../../../../../src/components/SnackBar/helper.ts"],"sourcesContent":["import {\n Mappers,\n SnackBarItemDefault,\n SnackBarPropGetItemActions,\n SnackBarPropGetItemAutoClose,\n SnackBarPropGetItemIcon,\n SnackBarPropGetItemKey,\n SnackBarPropGetItemMessage,\n SnackBarPropGetItemOnAutoClose,\n SnackBarPropGetItemOnClose,\n SnackBarPropGetItemProgress,\n SnackBarPropGetItemShowProgress,\n SnackBarPropGetItemStatus,\n SnackBarProps,\n} from './types';\n\nconst defaultGetItemKey: SnackBarPropGetItemKey<SnackBarItemDefault> = (item) =>\n item.key;\nconst defaultGetItemMessage: SnackBarPropGetItemMessage<SnackBarItemDefault> = (\n item,\n) => item.message;\nconst defaultGetItemStatus: SnackBarPropGetItemStatus<SnackBarItemDefault> = (\n item,\n) => item.status;\nconst defaultGetItemAutoClose: SnackBarPropGetItemAutoClose<\n SnackBarItemDefault\n> = (item) => item.autoClose;\nconst defaultGetItemShowProgress: SnackBarPropGetItemShowProgress<\n SnackBarItemDefault\n> = (item) => item.showProgress;\nconst defaultGetItemIcon: SnackBarPropGetItemIcon<SnackBarItemDefault> = (\n item,\n) => item.icon;\nconst defaultGetItemActions: SnackBarPropGetItemActions<SnackBarItemDefault> = (\n item,\n) => item.actions;\nconst defaultGetItemOnClose: SnackBarPropGetItemOnClose<SnackBarItemDefault> = (\n item,\n) => item.onClose;\nconst defaultGetItemOnAutoClose: SnackBarPropGetItemOnAutoClose<\n SnackBarItemDefault\n> = (item) => item.onAutoClose;\n\nconst defaultGetItemProgress: SnackBarPropGetItemProgress<\n SnackBarItemDefault\n> = (item) => item.progress;\n\nexport const withDefaultGetters = (props: SnackBarProps) => {\n return {\n ...props,\n getItemKey: props.getItemKey || defaultGetItemKey,\n getItemMessage: props.getItemMessage || defaultGetItemMessage,\n getItemStatus: props.getItemStatus || defaultGetItemStatus,\n getItemAutoClose: props.getItemAutoClose || defaultGetItemAutoClose,\n getItemShowProgress:\n props.getItemShowProgress || defaultGetItemShowProgress,\n getItemIcon: props.getItemIcon || defaultGetItemIcon,\n getItemActions: props.getItemActions || defaultGetItemActions,\n getItemOnClose: props.getItemOnClose || defaultGetItemOnClose,\n getItemOnAutoClose: props.getItemOnAutoClose || defaultGetItemOnAutoClose,\n getItemProgress: props.getItemProgress || defaultGetItemProgress,\n };\n};\n\nexport const getItem = <ITEM>(\n item: ITEM,\n props: Required<Mappers<ITEM>> & {\n onItemClose?: (item: ITEM) => void;\n onItemAutoClose?: (item: ITEM) => void;\n },\n) => {\n const {\n getItemKey,\n getItemActions,\n getItemAutoClose,\n getItemIcon,\n getItemMessage,\n getItemOnAutoClose,\n getItemOnClose,\n getItemShowProgress,\n getItemStatus,\n onItemClose,\n onItemAutoClose,\n getItemProgress,\n } = props;\n return {\n key: getItemKey(item),\n message: getItemMessage(item),\n status: getItemStatus(item),\n autoClose: getItemAutoClose(item),\n showProgress: getItemShowProgress(item),\n icon: getItemIcon(item),\n actions: getItemActions(item),\n progress: getItemProgress(item),\n onClose:\n typeof getItemOnClose(item) === 'function' ||\n typeof onItemClose === 'function'\n ? () => {\n getItemOnClose(item)?.(item);\n onItemClose?.(item);\n }\n : undefined,\n onAutoClose:\n typeof getItemOnAutoClose(item) === 'function' ||\n typeof onItemAutoClose === 'function'\n ? () => {\n getItemOnAutoClose(item)?.(item);\n onItemAutoClose?.(item);\n }\n : undefined,\n };\n};\n"],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ export declare type SnackBarItemDefault = {
|
|
|
11
11
|
actions?: SnackBarPropItemAction[];
|
|
12
12
|
onClose?: (item: SnackBarItemDefault) => void;
|
|
13
13
|
onAutoClose?: (item: SnackBarItemDefault) => void;
|
|
14
|
+
progress?: boolean | number;
|
|
14
15
|
};
|
|
15
16
|
/**
|
|
16
17
|
* @deprecated since version 3.16.0 use SnackBarItemDefault
|
|
@@ -23,11 +24,14 @@ export declare type SnackBarPropItemAction = {
|
|
|
23
24
|
export declare type SnackBarActionButtonProps = {
|
|
24
25
|
actions: SnackBarPropItemAction[];
|
|
25
26
|
className?: string;
|
|
27
|
+
form?: SnackBarPropForm;
|
|
26
28
|
};
|
|
27
29
|
export declare type SnackBarItemProps = PropsWithHTMLAttributesAndRef<Omit<SnackBarItemDefault, 'onClose' | 'onAutoClose'> & {
|
|
28
30
|
onClose?: () => void;
|
|
29
31
|
form?: SnackBarPropForm;
|
|
30
32
|
onAutoClose?: () => void;
|
|
33
|
+
progressView?: SnackBarPropProgressView;
|
|
34
|
+
progress?: number | boolean;
|
|
31
35
|
}, HTMLDivElement>;
|
|
32
36
|
export declare const snackBarItemStatus: readonly ["normal", "system", "success", "warning", "alert"];
|
|
33
37
|
export declare type SnackBarItemStatus = typeof snackBarItemStatus[number];
|
|
@@ -43,6 +47,7 @@ export declare type SnackBarPropGetItemIcon<ITEM> = (item: ITEM) => IconComponen
|
|
|
43
47
|
export declare type SnackBarPropGetItemActions<ITEM> = (item: ITEM) => SnackBarPropItemAction[] | undefined;
|
|
44
48
|
export declare type SnackBarPropGetItemOnClose<ITEM> = (item: ITEM) => ((item: ITEM) => void) | undefined;
|
|
45
49
|
export declare type SnackBarPropGetItemOnAutoClose<ITEM> = (item: ITEM) => ((item: ITEM) => void) | undefined;
|
|
50
|
+
export declare type SnackBarPropGetItemProgress<ITEM> = (item: ITEM) => number | boolean | undefined;
|
|
46
51
|
export declare type Mappers<ITEM> = {
|
|
47
52
|
getItemKey?: SnackBarPropGetItemKey<ITEM>;
|
|
48
53
|
getItemMessage?: SnackBarPropGetItemMessage<ITEM>;
|
|
@@ -53,14 +58,19 @@ export declare type Mappers<ITEM> = {
|
|
|
53
58
|
getItemActions?: SnackBarPropGetItemActions<ITEM>;
|
|
54
59
|
getItemOnClose?: SnackBarPropGetItemOnClose<ITEM>;
|
|
55
60
|
getItemOnAutoClose?: SnackBarPropGetItemOnAutoClose<ITEM>;
|
|
61
|
+
getItemProgress?: SnackBarPropGetItemProgress<ITEM>;
|
|
56
62
|
};
|
|
57
63
|
export declare const snackBarPropForm: readonly ["default", "round", "brick"];
|
|
58
64
|
export declare type SnackBarPropForm = typeof snackBarPropForm[number];
|
|
59
65
|
export declare const snackBarPropFormDefault: "default";
|
|
66
|
+
export declare const snackBarPropProgressView: readonly ["spinText", "spin", "text"];
|
|
67
|
+
export declare type SnackBarPropProgressView = typeof snackBarPropProgressView[number];
|
|
68
|
+
export declare const snackBarPropProgressViewDefault: "spinText";
|
|
60
69
|
export declare type SnackBarProps<ITEM = SnackBarItemDefault> = PropsWithHTMLAttributesAndRef<{
|
|
61
70
|
items: ITEM[];
|
|
62
71
|
children?: never;
|
|
63
72
|
form?: SnackBarPropForm;
|
|
73
|
+
progressView?: SnackBarPropProgressView;
|
|
64
74
|
onItemClose?: (item: ITEM) => void;
|
|
65
75
|
onItemAutoClose?: (item: ITEM) => void;
|
|
66
76
|
} & Mappers<ITEM>, HTMLDivElement> & (ITEM extends {
|
|
@@ -80,4 +90,9 @@ export declare type SnackBarTimerProps = {
|
|
|
80
90
|
hidden?: boolean;
|
|
81
91
|
className?: string;
|
|
82
92
|
};
|
|
93
|
+
export declare type SnackBarProgressProps = {
|
|
94
|
+
view: SnackBarPropProgressView;
|
|
95
|
+
progress?: number | boolean;
|
|
96
|
+
className?: string;
|
|
97
|
+
};
|
|
83
98
|
export declare type SnackBarItemComponent = (props: SnackBarItemProps) => React.ReactElement | null;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export var snackBarItemStatus=["normal","system","success","warning","alert"];export var snackBarItemStatusDefault=snackBarItemStatus[0];export var snackBarItemShowProgressProp=["timer","line"];export var snackBarPropForm=["default","round","brick"];export var snackBarPropFormDefault=snackBarPropForm[0];
|
|
1
|
+
export var snackBarItemStatus=["normal","system","success","warning","alert"];export var snackBarItemStatusDefault=snackBarItemStatus[0];export var snackBarItemShowProgressProp=["timer","line"];export var snackBarPropForm=["default","round","brick"];export var snackBarPropFormDefault=snackBarPropForm[0];export var snackBarPropProgressView=["spinText","spin","text"];export var snackBarPropProgressViewDefault=snackBarPropProgressView[0];
|
|
2
2
|
//# sourceMappingURL=types.js.map
|