@vkontakte/vkui 4.22.0 → 4.22.1

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.
Files changed (53) hide show
  1. package/.cache/.eslintcache +1 -1
  2. package/.cache/.stylelintcache +1 -1
  3. package/.cache/.tsbuildinfo +14 -8
  4. package/.cache/ts/src/components/TabbarItem/TabbarItem.d.ts +3 -1
  5. package/dist/cjs/components/CardScroll/CardScroll.js +1 -1
  6. package/dist/cjs/components/CardScroll/CardScroll.js.map +1 -1
  7. package/dist/cjs/components/Cell/useDraggable.js +3 -1
  8. package/dist/cjs/components/Cell/useDraggable.js.map +1 -1
  9. package/dist/cjs/components/FocusTrap/FocusTrap.js +3 -5
  10. package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -1
  11. package/dist/cjs/components/Tabbar/Tabbar.js +3 -1
  12. package/dist/cjs/components/Tabbar/Tabbar.js.map +1 -1
  13. package/dist/cjs/components/TabbarItem/TabbarItem.d.ts +3 -1
  14. package/dist/cjs/components/TabbarItem/TabbarItem.js +29 -11
  15. package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
  16. package/dist/components/CardScroll/CardScroll.js +1 -1
  17. package/dist/components/CardScroll/CardScroll.js.map +1 -1
  18. package/dist/components/Cell/useDraggable.js +2 -1
  19. package/dist/components/Cell/useDraggable.js.map +1 -1
  20. package/dist/components/FocusTrap/FocusTrap.js +3 -5
  21. package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
  22. package/dist/components/Tabbar/Tabbar.js +3 -1
  23. package/dist/components/Tabbar/Tabbar.js.map +1 -1
  24. package/dist/components/TabbarItem/TabbarItem.d.ts +3 -1
  25. package/dist/components/TabbarItem/TabbarItem.js +26 -10
  26. package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
  27. package/dist/components.css +1 -1
  28. package/dist/components.css.map +1 -1
  29. package/dist/cssm/components/CardScroll/CardScroll.js +1 -1
  30. package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
  31. package/dist/cssm/components/Cell/useDraggable.js +2 -1
  32. package/dist/cssm/components/Cell/useDraggable.js.map +1 -1
  33. package/dist/cssm/components/FocusTrap/FocusTrap.js +3 -5
  34. package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
  35. package/dist/cssm/components/Tabbar/Tabbar.css +1 -1
  36. package/dist/cssm/components/Tabbar/Tabbar.js +3 -1
  37. package/dist/cssm/components/Tabbar/Tabbar.js.map +1 -1
  38. package/dist/cssm/components/TabbarItem/TabbarItem.css +1 -1
  39. package/dist/cssm/components/TabbarItem/TabbarItem.js +26 -10
  40. package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
  41. package/dist/cssm/styles/components.css +1 -1
  42. package/dist/vkui.css +1 -1
  43. package/dist/vkui.css.map +1 -1
  44. package/package.json +1 -1
  45. package/src/components/CardScroll/CardScroll.tsx +4 -1
  46. package/src/components/Cell/useDraggable.tsx +1 -1
  47. package/src/components/Epic/Readme.md +1 -0
  48. package/src/components/FocusTrap/FocusTrap.tsx +11 -8
  49. package/src/components/Tabbar/Tabbar.css +15 -4
  50. package/src/components/Tabbar/Tabbar.tsx +3 -1
  51. package/src/components/TabbarItem/Readme.md +72 -0
  52. package/src/components/TabbarItem/TabbarItem.css +65 -14
  53. package/src/components/TabbarItem/TabbarItem.tsx +46 -22
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Cell/useDraggable.tsx"],"names":["React","useDraggable","onDragFinish","useState","dragging","setDragging","rootElRef","useRef","undefined","siblings","setSiblings","dragStartIndex","setDragStartIndex","dragEndIndex","setDragEndIndex","dragShift","setDragShift","dragDirection","setDragDirection","onDragStart","rootEl","current","_siblings","Array","from","parentElement","childNodes","idx","indexOf","onDragMove","e","originalEvent","preventDefault","style","transform","shiftY","rootGesture","getBoundingClientRect","forEach","sibling","siblingIndex","siblingGesture","siblingHalfHeight","height","rootOverSibling","bottom","top","rootUnderSibling","onDragEnd","to","useDraggableProps"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { TouchEvent } from '../Touch/Touch';\nimport { CellProps } from './Cell';\n\nexport interface DraggableProps {\n onDragStart: () => void;\n onDragEnd: () => void;\n onDragMove: (e: TouchEvent) => void;\n}\n\ninterface UseDraggableProps extends DraggableProps {\n dragging: boolean;\n rootElRef: any;\n}\n\nexport const useDraggable = ({ onDragFinish }: Pick<CellProps, 'onDragFinish'>) => {\n const [dragging, setDragging] = React.useState<boolean>(false);\n const rootElRef = React.useRef(null);\n\n const [siblings, setSiblings] = React.useState<HTMLElement[]>(undefined);\n const [dragStartIndex, setDragStartIndex] = React.useState<number>(undefined);\n const [dragEndIndex, setDragEndIndex] = React.useState<number>(undefined);\n const [dragShift, setDragShift] = React.useState<number>(0);\n const [dragDirection, setDragDirection] = React.useState<'down' | 'up'>(undefined);\n\n const onDragStart = () => {\n const rootEl = rootElRef.current;\n\n setDragging(true);\n\n const _siblings: HTMLElement[] = Array.from(rootEl.parentElement.childNodes);\n const idx = _siblings.indexOf(rootEl);\n\n setDragStartIndex(idx);\n setDragEndIndex(idx);\n setSiblings(_siblings);\n setDragShift(0);\n };\n\n const onDragMove = (e: TouchEvent) => {\n e.originalEvent.preventDefault();\n\n const rootEl = rootElRef.current;\n\n rootEl.style.transform = `translateY(${e.shiftY}px)`;\n const rootGesture = rootEl.getBoundingClientRect();\n\n setDragDirection(dragShift - e.shiftY < 0 ? 'down' : 'up');\n setDragShift(e.shiftY);\n setDragEndIndex(dragStartIndex);\n\n siblings.forEach((sibling: HTMLElement, siblingIndex: number) => {\n const siblingGesture = sibling.getBoundingClientRect();\n const siblingHalfHeight = siblingGesture.height / 2;\n\n const rootOverSibling = rootGesture.bottom > siblingGesture.top + siblingHalfHeight;\n const rootUnderSibling = rootGesture.top < siblingGesture.bottom - siblingHalfHeight;\n\n if (dragStartIndex < siblingIndex) {\n if (rootOverSibling) {\n if (dragDirection === 'down') {\n sibling.style.transform = 'translateY(-100%)';\n }\n\n setDragEndIndex((dragEndIndex) => dragEndIndex + 1);\n }\n if (rootUnderSibling && dragDirection === 'up') {\n sibling.style.transform = 'translateY(0)';\n }\n } else if (dragStartIndex > siblingIndex) {\n if (rootUnderSibling) {\n if (dragDirection === 'up') {\n sibling.style.transform = 'translateY(100%)';\n }\n\n setDragEndIndex((dragEndIndex) => dragEndIndex - 1);\n }\n if (rootOverSibling && dragDirection === 'down') {\n sibling.style.transform = 'translateY(0)';\n }\n }\n });\n };\n\n const onDragEnd = () => {\n const [from, to] = [dragStartIndex, dragEndIndex];\n\n siblings.forEach((sibling: HTMLElement) => {\n sibling.style.transform = null;\n });\n\n setSiblings(undefined);\n setDragEndIndex(undefined);\n setDragStartIndex(undefined);\n setDragDirection(undefined);\n setDragShift(undefined);\n\n setDragging(false);\n\n onDragFinish && onDragFinish({ from, to });\n };\n\n const useDraggableProps: UseDraggableProps = {\n onDragStart,\n onDragMove,\n onDragEnd,\n dragging,\n rootElRef,\n };\n\n return useDraggableProps;\n};\n"],"file":"useDraggable.js"}
1
+ {"version":3,"sources":["../../../src/components/Cell/useDraggable.tsx"],"names":["React","useDraggable","onDragFinish","useState","dragging","setDragging","rootElRef","useRef","undefined","siblings","setSiblings","dragStartIndex","setDragStartIndex","dragEndIndex","setDragEndIndex","dragShift","setDragShift","dragDirection","setDragDirection","onDragStart","rootEl","current","_siblings","parentElement","childNodes","idx","indexOf","onDragMove","e","originalEvent","preventDefault","style","transform","shiftY","rootGesture","getBoundingClientRect","forEach","sibling","siblingIndex","siblingGesture","siblingHalfHeight","height","rootOverSibling","bottom","top","rootUnderSibling","onDragEnd","from","to","useDraggableProps"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { TouchEvent } from '../Touch/Touch';\nimport { CellProps } from './Cell';\n\nexport interface DraggableProps {\n onDragStart: () => void;\n onDragEnd: () => void;\n onDragMove: (e: TouchEvent) => void;\n}\n\ninterface UseDraggableProps extends DraggableProps {\n dragging: boolean;\n rootElRef: any;\n}\n\nexport const useDraggable = ({ onDragFinish }: Pick<CellProps, 'onDragFinish'>) => {\n const [dragging, setDragging] = React.useState<boolean>(false);\n const rootElRef = React.useRef(null);\n\n const [siblings, setSiblings] = React.useState<HTMLElement[]>(undefined);\n const [dragStartIndex, setDragStartIndex] = React.useState<number>(undefined);\n const [dragEndIndex, setDragEndIndex] = React.useState<number>(undefined);\n const [dragShift, setDragShift] = React.useState<number>(0);\n const [dragDirection, setDragDirection] = React.useState<'down' | 'up'>(undefined);\n\n const onDragStart = () => {\n const rootEl = rootElRef.current;\n\n setDragging(true);\n\n const _siblings: HTMLElement[] = [...rootEl.parentElement.childNodes];\n const idx = _siblings.indexOf(rootEl);\n\n setDragStartIndex(idx);\n setDragEndIndex(idx);\n setSiblings(_siblings);\n setDragShift(0);\n };\n\n const onDragMove = (e: TouchEvent) => {\n e.originalEvent.preventDefault();\n\n const rootEl = rootElRef.current;\n\n rootEl.style.transform = `translateY(${e.shiftY}px)`;\n const rootGesture = rootEl.getBoundingClientRect();\n\n setDragDirection(dragShift - e.shiftY < 0 ? 'down' : 'up');\n setDragShift(e.shiftY);\n setDragEndIndex(dragStartIndex);\n\n siblings.forEach((sibling: HTMLElement, siblingIndex: number) => {\n const siblingGesture = sibling.getBoundingClientRect();\n const siblingHalfHeight = siblingGesture.height / 2;\n\n const rootOverSibling = rootGesture.bottom > siblingGesture.top + siblingHalfHeight;\n const rootUnderSibling = rootGesture.top < siblingGesture.bottom - siblingHalfHeight;\n\n if (dragStartIndex < siblingIndex) {\n if (rootOverSibling) {\n if (dragDirection === 'down') {\n sibling.style.transform = 'translateY(-100%)';\n }\n\n setDragEndIndex((dragEndIndex) => dragEndIndex + 1);\n }\n if (rootUnderSibling && dragDirection === 'up') {\n sibling.style.transform = 'translateY(0)';\n }\n } else if (dragStartIndex > siblingIndex) {\n if (rootUnderSibling) {\n if (dragDirection === 'up') {\n sibling.style.transform = 'translateY(100%)';\n }\n\n setDragEndIndex((dragEndIndex) => dragEndIndex - 1);\n }\n if (rootOverSibling && dragDirection === 'down') {\n sibling.style.transform = 'translateY(0)';\n }\n }\n });\n };\n\n const onDragEnd = () => {\n const [from, to] = [dragStartIndex, dragEndIndex];\n\n siblings.forEach((sibling: HTMLElement) => {\n sibling.style.transform = null;\n });\n\n setSiblings(undefined);\n setDragEndIndex(undefined);\n setDragStartIndex(undefined);\n setDragDirection(undefined);\n setDragShift(undefined);\n\n setDragging(false);\n\n onDragFinish && onDragFinish({ from, to });\n };\n\n const useDraggableProps: UseDraggableProps = {\n onDragStart,\n onDragMove,\n onDragEnd,\n dragging,\n rootElRef,\n };\n\n return useDraggableProps;\n};\n"],"file":"useDraggable.js"}
@@ -60,15 +60,13 @@ export var FocusTrap = function FocusTrap(_ref) {
60
60
  }, []); // HANDLE FOCUSABLE NODES
61
61
 
62
62
  useIsomorphicLayoutEffect(function () {
63
- var _ref$current2;
64
-
65
63
  if (!ref.current) {
66
64
  return noop();
67
65
  }
68
66
 
69
- var nodes = []; // eslint-disable-next-line no-restricted-properties
70
-
71
- (_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.querySelectorAll(FOCUSABLE_ELEMENTS).forEach(function (focusableEl) {
67
+ var nodes = [];
68
+ Array.prototype.forEach.call( // eslint-disable-next-line no-restricted-properties
69
+ ref.current.querySelectorAll(FOCUSABLE_ELEMENTS), function (focusableEl) {
72
70
  var _window$getComputedSt = window.getComputedStyle(focusableEl),
73
71
  display = _window$getComputedSt.display,
74
72
  visibility = _window$getComputedSt.visibility;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/FocusTrap/FocusTrap.tsx"],"names":["React","useExternRef","useGlobalEventListener","useTimeout","FOCUSABLE_ELEMENTS_LIST","Keys","pressedKey","useDOM","useIsomorphicLayoutEffect","noop","AppRootContext","FOCUSABLE_ELEMENTS","join","FocusTrap","Component","onClose","restoreFocus","timeout","getRootRef","children","restProps","ref","document","window","activeElement","useState","focusableNodes","setFocusableNodes","restoreFocusTo","setRestoreFocusTo","useContext","keyboardInput","focusOnTrapMount","current","contains","length","focus","set","nodes","querySelectorAll","forEach","focusableEl","getComputedStyle","display","visibility","push","focusOnTrapUnmount","onDocumentKeydown","e","TAB","lastIdx","targetIdx","findIndex","node","target","shouldFocusFirstNode","shiftKey","preventDefault","ESCAPE","capture"],"mappings":";;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,YAAT;AACA,SAASC,sBAAT;AACA,SAASC,UAAT;AACA,SAASC,uBAAT,EAAkCC,IAAlC,EAAwCC,UAAxC;AACA,SAASC,MAAT;AACA,SAASC,yBAAT;AACA,SAASC,IAAT;AAEA,SAASC,cAAT;AAEA,IAAMC,kBAA0B,GAAGP,uBAAuB,CAACQ,IAAxB,EAAnC;AAQA,OAAO,IAAMC,SAAmC,GAAG,SAAtCA,SAAsC,OAQ7C;AAAA,4BAPJC,SAOI;AAAA,MAPJA,SAOI,+BAPQ,KAOR;AAAA,0BANJC,OAMI;AAAA,MANJA,OAMI,6BANMN,IAMN;AAAA,+BALJO,YAKI;AAAA,MALJA,YAKI,kCALW,IAKX;AAAA,0BAJJC,OAII;AAAA,MAJJA,OAII,6BAJM,CAIN;AAAA,MAHJC,UAGI,QAHJA,UAGI;AAAA,MAFJC,QAEI,QAFJA,QAEI;AAAA,MADDC,SACC;;AACJ,MAAMC,GAAG,GAAGpB,YAAY,CAAciB,UAAd,CAAxB;;AAEA,gBAA6BX,MAAM,EAAnC;AAAA,MAAQe,QAAR,WAAQA,QAAR;AAAA,MAAkBC,MAAlB,WAAkBA,MAAlB;;AACA,MAAMC,aAAa,GAAGF,QAAQ,CAACE,aAA/B;;AAEA,wBAA4CxB,KAAK,CAACyB,QAAN,CAA8B,IAA9B,CAA5C;AAAA;AAAA,MAAOC,cAAP;AAAA,MAAuBC,iBAAvB;;AACA,yBAA4C3B,KAAK,CAACyB,QAAN,CAA4B,IAA5B,CAA5C;AAAA;AAAA,MAAOG,cAAP;AAAA,MAAuBC,iBAAvB,uBAPI,CASJ;;;AAEA,0BAA0B7B,KAAK,CAAC8B,UAAN,CAAiBpB,cAAjB,CAA1B;AAAA,MAAQqB,aAAR,qBAAQA,aAAR;;AACA,MAAMC,gBAAgB,GAAG7B,UAAU,CAAC,YAAM;AAAA;;AACxC,QAAI4B,aAAa,IAAI,kBAACV,GAAG,CAACY,OAAL,yCAAC,aAAaC,QAAb,CAAsBV,aAAtB,CAAD,CAAjB,IAA0DE,cAA1D,aAA0DA,cAA1D,eAA0DA,cAAc,CAAES,MAA9E,EAAsF;AACpFT,MAAAA,cAAc,CAAC,CAAD,CAAd,CAAkBU,KAAlB;AACD;AACF,GAJkC,EAIhCnB,OAJgC,CAAnC;AAKAT,EAAAA,yBAAyB,CAAC,YAAM;AAC9BwB,IAAAA,gBAAgB,CAACK,GAAjB;AACD,GAFwB,EAEtB,EAFsB,CAAzB,CAjBI,CAqBJ;;AAEA7B,EAAAA,yBAAyB,CAAC,YAAM;AAAA;;AAC9B,QAAI,CAACa,GAAG,CAACY,OAAT,EAAkB;AAChB,aAAOxB,IAAI,EAAX;AACD;;AAED,QAAM6B,KAAoB,GAAG,EAA7B,CAL8B,CAM9B;;AACA,qBAAAjB,GAAG,CAACY,OAAJ,gEAAaM,gBAAb,CAA8B5B,kBAA9B,EAAkD6B,OAAlD,CAA0D,UAACC,WAAD,EAAiB;AACzE,kCAAgClB,MAAM,CAACmB,gBAAP,CAAwBD,WAAxB,CAAhC;AAAA,UAAQE,OAAR,yBAAQA,OAAR;AAAA,UAAiBC,UAAjB,yBAAiBA,UAAjB;;AAEA,UAAID,OAAO,KAAK,MAAZ,IAAsBC,UAAU,KAAK,QAAzC,EAAmD;AACjDN,QAAAA,KAAK,CAACO,IAAN,CAAWJ,WAAX;AACD;AACF,KAND;;AAQA,QAAIH,KAAJ,aAAIA,KAAJ,eAAIA,KAAK,CAAEH,MAAX,EAAmB;AACjBR,MAAAA,iBAAiB,CAACW,KAAD,CAAjB;AACD;;AAED,WAAO7B,IAAI,EAAX;AACD,GApBwB,EAoBtB,CAACU,QAAD,CApBsB,CAAzB,CAvBI,CA6CJ;;AAEA,MAAM2B,kBAAkB,GAAG3C,UAAU,CAAC,YAAM;AAC1C,QAAIyB,cAAJ,EAAoB;AAClBA,MAAAA,cAAc,CAACQ,KAAf;AACD;AACF,GAJoC,EAIlCnB,OAJkC,CAArC;AAKAT,EAAAA,yBAAyB,CAAC,YAAM;AAC9B,QAAIQ,YAAJ,EAAkB;AAChBa,MAAAA,iBAAiB,CAACL,aAAD,CAAjB;AAEA,aAAO,YAAM;AACXsB,QAAAA,kBAAkB,CAACT,GAAnB;AACD,OAFD;AAGD;;AAED,WAAO5B,IAAI,EAAX;AACD,GAVwB,EAUtB,CAACO,YAAD,CAVsB,CAAzB;;AAYA,MAAM+B,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,CAAD,EAAsB;AAC9C,QAAI1C,UAAU,CAAC0C,CAAD,CAAV,KAAkB3C,IAAI,CAAC4C,GAAvB,IAA8BvB,cAA9B,aAA8BA,cAA9B,eAA8BA,cAAc,CAAES,MAAlD,EAA0D;AACxD,UAAMe,OAAO,GAAGxB,cAAc,CAACS,MAAf,GAAwB,CAAxC;AACA,UAAMgB,SAAS,GAAGzB,cAAc,CAAC0B,SAAf,CAAyB,UAACC,IAAD;AAAA,eAAUA,IAAI,KAAKL,CAAC,CAACM,MAArB;AAAA,OAAzB,CAAlB;AAEA,UAAMC,oBAAoB,GAAGJ,SAAS,KAAK,CAAC,CAAf,IAAoBA,SAAS,KAAKD,OAAd,IAAyB,CAACF,CAAC,CAACQ,QAA7E;;AAEA,UAAID,oBAAoB,IAAIJ,SAAS,KAAK,CAAd,IAAmBH,CAAC,CAACQ,QAAjD,EAA2D;AACzDR,QAAAA,CAAC,CAACS,cAAF;AAEA,YAAMJ,IAAI,GAAG3B,cAAc,CAAC6B,oBAAoB,GAAG,CAAH,GAAOL,OAA5B,CAA3B;;AAEA,YAAIG,IAAI,KAAK7B,aAAb,EAA4B;AAC1B6B,UAAAA,IAAI,CAACjB,KAAL;AACD;;AAED,eAAO,KAAP;AACD;AACF;;AAED,QAAI9B,UAAU,CAAC0C,CAAD,CAAV,KAAkB3C,IAAI,CAACqD,MAA3B,EAAmC;AACjC3C,MAAAA,OAAO;AACR;;AAED,WAAO,IAAP;AACD,GAzBD;;AA0BAb,EAAAA,sBAAsB,CAACoB,QAAD,EAAW,SAAX,EAAsByB,iBAAtB,EAAyC;AAAEY,IAAAA,OAAO,EAAE;AAAX,GAAzC,CAAtB;AAEA,SACE,oBAAC,SAAD;AAAW,IAAA,GAAG,EAAEtC;AAAhB,KAAyBD,SAAzB,GACGD,QADH,CADF;AAKD,CAzGM","sourcesContent":["import * as React from 'react';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { FOCUSABLE_ELEMENTS_LIST, Keys, pressedKey } from '../../lib/accessibility';\nimport { useDOM } from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { noop } from '../../lib/utils';\nimport { HasComponent, HasRootRef } from '../../types';\nimport { AppRootContext } from '../AppRoot/AppRootContext';\n\nconst FOCUSABLE_ELEMENTS: string = FOCUSABLE_ELEMENTS_LIST.join();\n\nexport interface FocusTrapProps extends React.AllHTMLAttributes<HTMLElement>, HasRootRef<HTMLElement>, HasComponent {\n onClose?: (props?: any) => void;\n restoreFocus?: boolean;\n timeout?: number;\n}\n\nexport const FocusTrap: React.FC<FocusTrapProps> = ({\n Component = 'div',\n onClose = noop,\n restoreFocus = true,\n timeout = 0,\n getRootRef,\n children,\n ...restProps\n}) => {\n const ref = useExternRef<HTMLElement>(getRootRef);\n\n const { document, window } = useDOM();\n const activeElement = document.activeElement as HTMLElement;\n\n const [focusableNodes, setFocusableNodes] = React.useState<HTMLElement[]>(null);\n const [restoreFocusTo, setRestoreFocusTo] = React.useState<HTMLElement>(null);\n\n // HANDLE TRAP MOUNT\n\n const { keyboardInput } = React.useContext(AppRootContext);\n const focusOnTrapMount = useTimeout(() => {\n if (keyboardInput && !ref.current?.contains(activeElement) && focusableNodes?.length) {\n focusableNodes[0].focus();\n }\n }, timeout);\n useIsomorphicLayoutEffect(() => {\n focusOnTrapMount.set();\n }, []);\n\n // HANDLE FOCUSABLE NODES\n\n useIsomorphicLayoutEffect(() => {\n if (!ref.current) {\n return noop();\n }\n\n const nodes: HTMLElement[] = [];\n // eslint-disable-next-line no-restricted-properties\n ref.current?.querySelectorAll(FOCUSABLE_ELEMENTS).forEach((focusableEl) => {\n const { display, visibility } = window.getComputedStyle(focusableEl);\n\n if (display !== 'none' && visibility !== 'hidden') {\n nodes.push(focusableEl as HTMLElement);\n }\n });\n\n if (nodes?.length) {\n setFocusableNodes(nodes);\n }\n\n return noop();\n }, [children]);\n\n // HANDLE TRAP UNMOUNT\n\n const focusOnTrapUnmount = useTimeout(() => {\n if (restoreFocusTo) {\n restoreFocusTo.focus();\n }\n }, timeout);\n useIsomorphicLayoutEffect(() => {\n if (restoreFocus) {\n setRestoreFocusTo(activeElement);\n\n return () => {\n focusOnTrapUnmount.set();\n };\n }\n\n return noop();\n }, [restoreFocus]);\n\n const onDocumentKeydown = (e: KeyboardEvent) => {\n if (pressedKey(e) === Keys.TAB && focusableNodes?.length) {\n const lastIdx = focusableNodes.length - 1;\n const targetIdx = focusableNodes.findIndex((node) => node === e.target);\n\n const shouldFocusFirstNode = targetIdx === -1 || targetIdx === lastIdx && !e.shiftKey;\n\n if (shouldFocusFirstNode || targetIdx === 0 && e.shiftKey) {\n e.preventDefault();\n\n const node = focusableNodes[shouldFocusFirstNode ? 0 : lastIdx];\n\n if (node !== activeElement) {\n node.focus();\n }\n\n return false;\n }\n }\n\n if (pressedKey(e) === Keys.ESCAPE) {\n onClose();\n }\n\n return true;\n };\n useGlobalEventListener(document, 'keydown', onDocumentKeydown, { capture: true });\n\n return (\n <Component ref={ref} {...restProps}>\n {children}\n </Component>\n );\n};\n"],"file":"FocusTrap.js"}
1
+ {"version":3,"sources":["../../../src/components/FocusTrap/FocusTrap.tsx"],"names":["React","useExternRef","useGlobalEventListener","useTimeout","FOCUSABLE_ELEMENTS_LIST","Keys","pressedKey","useDOM","useIsomorphicLayoutEffect","noop","AppRootContext","FOCUSABLE_ELEMENTS","join","FocusTrap","Component","onClose","restoreFocus","timeout","getRootRef","children","restProps","ref","document","window","activeElement","useState","focusableNodes","setFocusableNodes","restoreFocusTo","setRestoreFocusTo","useContext","keyboardInput","focusOnTrapMount","current","contains","length","focus","set","nodes","Array","prototype","forEach","call","querySelectorAll","focusableEl","getComputedStyle","display","visibility","push","focusOnTrapUnmount","onDocumentKeydown","e","TAB","lastIdx","targetIdx","findIndex","node","target","shouldFocusFirstNode","shiftKey","preventDefault","ESCAPE","capture"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { FOCUSABLE_ELEMENTS_LIST, Keys, pressedKey } from '../../lib/accessibility';\nimport { useDOM } from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { noop } from '../../lib/utils';\nimport { HasComponent, HasRootRef } from '../../types';\nimport { AppRootContext } from '../AppRoot/AppRootContext';\n\nconst FOCUSABLE_ELEMENTS: string = FOCUSABLE_ELEMENTS_LIST.join();\n\nexport interface FocusTrapProps extends React.AllHTMLAttributes<HTMLElement>, HasRootRef<HTMLElement>, HasComponent {\n onClose?: (props?: any) => void;\n restoreFocus?: boolean;\n timeout?: number;\n}\n\nexport const FocusTrap: React.FC<FocusTrapProps> = ({\n Component = 'div',\n onClose = noop,\n restoreFocus = true,\n timeout = 0,\n getRootRef,\n children,\n ...restProps\n}) => {\n const ref = useExternRef<HTMLElement>(getRootRef);\n\n const { document, window } = useDOM();\n const activeElement = document.activeElement as HTMLElement;\n\n const [focusableNodes, setFocusableNodes] = React.useState<HTMLElement[]>(null);\n const [restoreFocusTo, setRestoreFocusTo] = React.useState<HTMLElement>(null);\n\n // HANDLE TRAP MOUNT\n\n const { keyboardInput } = React.useContext(AppRootContext);\n const focusOnTrapMount = useTimeout(() => {\n if (keyboardInput && !ref.current?.contains(activeElement) && focusableNodes?.length) {\n focusableNodes[0].focus();\n }\n }, timeout);\n useIsomorphicLayoutEffect(() => {\n focusOnTrapMount.set();\n }, []);\n\n // HANDLE FOCUSABLE NODES\n\n useIsomorphicLayoutEffect(() => {\n if (!ref.current) {\n return noop();\n }\n\n const nodes: HTMLElement[] = [];\n Array.prototype.forEach.call(\n // eslint-disable-next-line no-restricted-properties\n ref.current.querySelectorAll(FOCUSABLE_ELEMENTS),\n (focusableEl: Element) => {\n const { display, visibility } = window.getComputedStyle(focusableEl);\n\n if (display !== 'none' && visibility !== 'hidden') {\n nodes.push(focusableEl as HTMLElement);\n }\n },\n );\n\n if (nodes?.length) {\n setFocusableNodes(nodes);\n }\n\n return noop();\n }, [children]);\n\n // HANDLE TRAP UNMOUNT\n\n const focusOnTrapUnmount = useTimeout(() => {\n if (restoreFocusTo) {\n restoreFocusTo.focus();\n }\n }, timeout);\n useIsomorphicLayoutEffect(() => {\n if (restoreFocus) {\n setRestoreFocusTo(activeElement);\n\n return () => {\n focusOnTrapUnmount.set();\n };\n }\n\n return noop();\n }, [restoreFocus]);\n\n const onDocumentKeydown = (e: KeyboardEvent) => {\n if (pressedKey(e) === Keys.TAB && focusableNodes?.length) {\n const lastIdx = focusableNodes.length - 1;\n const targetIdx = focusableNodes.findIndex((node) => node === e.target);\n\n const shouldFocusFirstNode = targetIdx === -1 || targetIdx === lastIdx && !e.shiftKey;\n\n if (shouldFocusFirstNode || targetIdx === 0 && e.shiftKey) {\n e.preventDefault();\n\n const node = focusableNodes[shouldFocusFirstNode ? 0 : lastIdx];\n\n if (node !== activeElement) {\n node.focus();\n }\n\n return false;\n }\n }\n\n if (pressedKey(e) === Keys.ESCAPE) {\n onClose();\n }\n\n return true;\n };\n useGlobalEventListener(document, 'keydown', onDocumentKeydown, { capture: true });\n\n return (\n <Component ref={ref} {...restProps}>\n {children}\n </Component>\n );\n};\n"],"file":"FocusTrap.js"}
@@ -30,7 +30,9 @@ var Tabbar = function Tabbar(props) {
30
30
  vkuiClass: classNames(getClassName('Tabbar', platform), "Tabbar--l-".concat(getItemsLayout()), {
31
31
  'Tabbar--shadow': shadow
32
32
  })
33
- }, restProps), children);
33
+ }, restProps), createScopedElement("div", {
34
+ vkuiClass: "Tabbar__in"
35
+ }, children));
34
36
  };
35
37
 
36
38
  Tabbar.defaultProps = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Tabbar/Tabbar.tsx"],"names":["React","getClassName","classNames","usePlatform","Tabbar","props","children","shadow","itemsLayout","restProps","platform","getItemsLayout","Children","count","defaultProps"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,YAAT;AACA,SAASC,UAAT;AACA,SAASC,WAAT;;AAWA,IAAMC,MAA4C,GAAG,SAA/CA,MAA+C,CAACC,KAAD,EAAwB;AAC3E,MAAQC,QAAR,GAAwDD,KAAxD,CAAQC,QAAR;AAAA,MAAkBC,MAAlB,GAAwDF,KAAxD,CAAkBE,MAAlB;AAAA,MAA0BC,WAA1B,GAAwDH,KAAxD,CAA0BG,WAA1B;AAAA,MAA0CC,SAA1C,4BAAwDJ,KAAxD;;AACA,MAAMK,QAAQ,GAAGP,WAAW,EAA5B;;AAEA,MAAMQ,cAAc,GAAG,SAAjBA,cAAiB,GAAM;AAC3B,YAAQH,WAAR;AACE,WAAK,YAAL;AACA,WAAK,UAAL;AACE,eAAOA,WAAP;;AACF;AACE,eAAOR,KAAK,CAACY,QAAN,CAAeC,KAAf,CAAqBP,QAArB,IAAiC,CAAjC,GAAqC,UAArC,GAAkD,YAAzD;AALJ;AAOD,GARD;;AAUA,SACE;AACE,IAAA,SAAS,EAAEJ,UAAU,CAACD,YAAY,CAAC,QAAD,EAAWS,QAAX,CAAb,sBAAgDC,cAAc,EAA9D,GAAoE;AACvF,wBAAkBJ;AADqE,KAApE;AADvB,KAIME,SAJN,GAMGH,QANH,CADF;AAUD,CAxBD;;AA0BAF,MAAM,CAACU,YAAP,GAAsB;AACpBP,EAAAA,MAAM,EAAE;AADY,CAAtB;AAIA,eAAeH,MAAf","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { classNames } from '../../lib/classNames';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport './Tabbar.css';\n\nexport interface TabbarProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Флаг для показа/скрытия верхней тени (Android) или границы (iOS)\n */\n shadow?: boolean;\n itemsLayout?: 'vertical' | 'horizontal' | 'auto';\n}\n\nconst Tabbar: React.FunctionComponent<TabbarProps> = (props: TabbarProps) => {\n const { children, shadow, itemsLayout, ...restProps } = props;\n const platform = usePlatform();\n\n const getItemsLayout = () => {\n switch (itemsLayout) {\n case 'horizontal':\n case 'vertical':\n return itemsLayout;\n default:\n return React.Children.count(children) > 2 ? 'vertical' : 'horizontal';\n }\n };\n\n return (\n <div\n vkuiClass={classNames(getClassName('Tabbar', platform), `Tabbar--l-${getItemsLayout()}`, {\n 'Tabbar--shadow': shadow,\n })}\n {...restProps}\n >\n {children}\n </div>\n );\n};\n\nTabbar.defaultProps = {\n shadow: true,\n};\n\nexport default Tabbar;\n"],"file":"Tabbar.js"}
1
+ {"version":3,"sources":["../../../src/components/Tabbar/Tabbar.tsx"],"names":["React","getClassName","classNames","usePlatform","Tabbar","props","children","shadow","itemsLayout","restProps","platform","getItemsLayout","Children","count","defaultProps"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,YAAT;AACA,SAASC,UAAT;AACA,SAASC,WAAT;;AAWA,IAAMC,MAA4C,GAAG,SAA/CA,MAA+C,CAACC,KAAD,EAAwB;AAC3E,MAAQC,QAAR,GAAwDD,KAAxD,CAAQC,QAAR;AAAA,MAAkBC,MAAlB,GAAwDF,KAAxD,CAAkBE,MAAlB;AAAA,MAA0BC,WAA1B,GAAwDH,KAAxD,CAA0BG,WAA1B;AAAA,MAA0CC,SAA1C,4BAAwDJ,KAAxD;;AACA,MAAMK,QAAQ,GAAGP,WAAW,EAA5B;;AAEA,MAAMQ,cAAc,GAAG,SAAjBA,cAAiB,GAAM;AAC3B,YAAQH,WAAR;AACE,WAAK,YAAL;AACA,WAAK,UAAL;AACE,eAAOA,WAAP;;AACF;AACE,eAAOR,KAAK,CAACY,QAAN,CAAeC,KAAf,CAAqBP,QAArB,IAAiC,CAAjC,GAAqC,UAArC,GAAkD,YAAzD;AALJ;AAOD,GARD;;AAUA,SACE;AACE,IAAA,SAAS,EAAEJ,UAAU,CAACD,YAAY,CAAC,QAAD,EAAWS,QAAX,CAAb,sBAAgDC,cAAc,EAA9D,GAAoE;AACvF,wBAAkBJ;AADqE,KAApE;AADvB,KAIME,SAJN,GAME;AAAK,IAAA,SAAS,EAAC;AAAf,KACGH,QADH,CANF,CADF;AAYD,CA1BD;;AA4BAF,MAAM,CAACU,YAAP,GAAsB;AACpBP,EAAAA,MAAM,EAAE;AADY,CAAtB;AAIA,eAAeH,MAAf","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { classNames } from '../../lib/classNames';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport './Tabbar.css';\n\nexport interface TabbarProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Флаг для показа/скрытия верхней тени (Android) или границы (iOS)\n */\n shadow?: boolean;\n itemsLayout?: 'vertical' | 'horizontal' | 'auto';\n}\n\nconst Tabbar: React.FunctionComponent<TabbarProps> = (props: TabbarProps) => {\n const { children, shadow, itemsLayout, ...restProps } = props;\n const platform = usePlatform();\n\n const getItemsLayout = () => {\n switch (itemsLayout) {\n case 'horizontal':\n case 'vertical':\n return itemsLayout;\n default:\n return React.Children.count(children) > 2 ? 'vertical' : 'horizontal';\n }\n };\n\n return (\n <div\n vkuiClass={classNames(getClassName('Tabbar', platform), `Tabbar--l-${getItemsLayout()}`, {\n 'Tabbar--shadow': shadow,\n })}\n {...restProps}\n >\n <div vkuiClass=\"Tabbar__in\">\n {children}\n </div>\n </div>\n );\n};\n\nTabbar.defaultProps = {\n shadow: true,\n};\n\nexport default Tabbar;\n"],"file":"Tabbar.js"}
@@ -1,6 +1,8 @@
1
1
  import * as React from 'react';
2
+ import { HasComponent, HasRootRef } from '../../types';
2
3
  import './TabbarItem.css';
3
- export interface TabbarItemProps extends React.HTMLAttributes<HTMLElement>, React.AnchorHTMLAttributes<HTMLElement> {
4
+ export interface TabbarItemProps extends Omit<React.AllHTMLAttributes<HTMLElement>, 'label'>, // TODO убрать Omit после удаления свойства label
5
+ HasRootRef<HTMLElement>, HasComponent {
4
6
  selected?: boolean;
5
7
  /**
6
8
  * Тест рядом с иконкой
@@ -1,28 +1,44 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["children", "selected", "label", "indicator", "text"];
3
+ var _excluded = ["children", "selected", "label", "indicator", "text", "href", "Component", "disabled"];
4
4
  import { createScopedElement } from "../../lib/jsxRuntime";
5
5
  import { getClassName } from "../../helpers/getClassName";
6
6
  import Counter from "../Counter/Counter";
7
7
  import { classNames } from "../../lib/classNames";
8
8
  import { usePlatform } from "../../hooks/usePlatform";
9
9
  import { hasReactNode } from "../../lib/utils";
10
+ import Tappable from "../Tappable/Tappable";
11
+ import { Platform } from "../../lib/platform";
10
12
 
11
- var TabbarItem = function TabbarItem(props) {
12
- var children = props.children,
13
- selected = props.selected,
14
- label = props.label,
15
- indicator = props.indicator,
16
- text = props.text,
17
- restProps = _objectWithoutProperties(props, _excluded);
13
+ var TabbarItem = function TabbarItem(_ref) {
14
+ var children = _ref.children,
15
+ selected = _ref.selected,
16
+ label = _ref.label,
17
+ indicator = _ref.indicator,
18
+ text = _ref.text,
19
+ href = _ref.href,
20
+ _ref$Component = _ref.Component,
21
+ Component = _ref$Component === void 0 ? href ? 'a' : 'button' : _ref$Component,
22
+ disabled = _ref.disabled,
23
+ restProps = _objectWithoutProperties(_ref, _excluded);
24
+
25
+ var platform = usePlatform(); // @ts-ignore ругается на то, что у AllHTMLAttributes type это строка, а button не любую строку считает валидным значением
18
26
 
19
- var platform = usePlatform();
20
- var Component = restProps.href ? 'a' : 'div';
21
27
  return createScopedElement(Component, _extends({}, restProps, {
28
+ disabled: disabled,
29
+ href: href,
22
30
  vkuiClass: classNames(getClassName('TabbarItem', platform), {
23
31
  'TabbarItem--selected': selected,
24
32
  'TabbarItem--text': !!text
25
33
  })
34
+ }), createScopedElement(Tappable, {
35
+ role: "presentation",
36
+ Component: "div",
37
+ disabled: disabled,
38
+ activeMode: platform === Platform.IOS ? 'TabbarItem__tappable--active' : 'background',
39
+ activeEffectDelay: platform === Platform.IOS ? 0 : 300,
40
+ hasHover: false,
41
+ vkuiClass: "TabbarItem__tappable"
26
42
  }), createScopedElement("div", {
27
43
  vkuiClass: "TabbarItem__in"
28
44
  }, createScopedElement("div", {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/TabbarItem/TabbarItem.tsx"],"names":["getClassName","Counter","classNames","usePlatform","hasReactNode","TabbarItem","props","children","selected","label","indicator","text","restProps","platform","Component","href"],"mappings":";;;;AACA,SAASA,YAAT;AACA,OAAOC,OAAP;AACA,SAASC,UAAT;AACA,SAASC,WAAT;AACA,SAASC,YAAT;;AAmBA,IAAMC,UAAoD,GAAG,SAAvDA,UAAuD,CAACC,KAAD,EAA4B;AACvF,MAAQC,QAAR,GAAqED,KAArE,CAAQC,QAAR;AAAA,MAAkBC,QAAlB,GAAqEF,KAArE,CAAkBE,QAAlB;AAAA,MAA4BC,KAA5B,GAAqEH,KAArE,CAA4BG,KAA5B;AAAA,MAAmCC,SAAnC,GAAqEJ,KAArE,CAAmCI,SAAnC;AAAA,MAA8CC,IAA9C,GAAqEL,KAArE,CAA8CK,IAA9C;AAAA,MAAuDC,SAAvD,4BAAqEN,KAArE;;AACA,MAAMO,QAAQ,GAAGV,WAAW,EAA5B;AACA,MAAMW,SAA4B,GAAGF,SAAS,CAACG,IAAV,GAAiB,GAAjB,GAAuB,KAA5D;AAEA,SACE,oBAAC,SAAD,eACMH,SADN;AAEE,IAAA,SAAS,EAAEV,UAAU,CAACF,YAAY,CAAC,YAAD,EAAea,QAAf,CAAb,EAAuC;AAC1D,8BAAwBL,QADkC;AAE1D,0BAAoB,CAAC,CAACG;AAFoC,KAAvC;AAFvB,MAOE;AAAK,IAAA,SAAS,EAAC;AAAf,KACE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGJ,QADH,EAEE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGH,YAAY,CAACM,SAAD,CAAZ,IAA2BA,SAD9B,EAEG,CAACA,SAAD,IAAcD,KAAd,IAAuB,oBAAC,OAAD;AAAS,IAAA,IAAI,EAAC,GAAd;AAAkB,IAAA,IAAI,EAAC;AAAvB,KAAoCA,KAApC,CAF1B,CAFF,CADF,EAQGE,IAAI,IAAI;AAAK,IAAA,SAAS,EAAC;AAAf,KAAmCA,IAAnC,CARX,CAPF,CADF;AAoBD,CAzBD;;AA2BA,eAAeN,UAAf","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport Counter from '../Counter/Counter';\nimport { classNames } from '../../lib/classNames';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { hasReactNode } from '../../lib/utils';\nimport './TabbarItem.css';\n\nexport interface TabbarItemProps extends React.HTMLAttributes<HTMLElement>, React.AnchorHTMLAttributes<HTMLElement> {\n selected?: boolean;\n /**\n * Тест рядом с иконкой\n */\n text?: React.ReactNode;\n /**\n * Индикатор над иконкой. Принимает `<Badge mode=\"prominent\" />` или `<Counter size=\"s\" mode=\"prominent\" />`\n */\n indicator?: React.ReactNode;\n /**\n * @deprecated будет удалено в 5.0.0. Используйте `indicator`\n */\n label?: React.ReactNode;\n}\n\nconst TabbarItem: React.FunctionComponent<TabbarItemProps> = (props: TabbarItemProps) => {\n const { children, selected, label, indicator, text, ...restProps } = props;\n const platform = usePlatform();\n const Component: React.ElementType = restProps.href ? 'a' : 'div';\n\n return (\n <Component\n {...restProps}\n vkuiClass={classNames(getClassName('TabbarItem', platform), {\n 'TabbarItem--selected': selected,\n 'TabbarItem--text': !!text,\n })}\n >\n <div vkuiClass=\"TabbarItem__in\">\n <div vkuiClass=\"TabbarItem__icon\">\n {children}\n <div vkuiClass=\"TabbarItem__label\">\n {hasReactNode(indicator) && indicator}\n {!indicator && label && <Counter size=\"s\" mode=\"prominent\">{label}</Counter>}\n </div>\n </div>\n {text && <div vkuiClass=\"TabbarItem__text\">{text}</div>}\n </div>\n </Component>\n );\n};\n\nexport default TabbarItem;\n"],"file":"TabbarItem.js"}
1
+ {"version":3,"sources":["../../../src/components/TabbarItem/TabbarItem.tsx"],"names":["getClassName","Counter","classNames","usePlatform","hasReactNode","Tappable","Platform","TabbarItem","children","selected","label","indicator","text","href","Component","disabled","restProps","platform","IOS"],"mappings":";;;;AACA,SAASA,YAAT;AACA,OAAOC,OAAP;AACA,SAASC,UAAT;AACA,SAASC,WAAT;AACA,SAASC,YAAT;AACA,OAAOC,QAAP;AACA,SAASC,QAAT;;AAuBA,IAAMC,UAAoD,GAAG,SAAvDA,UAAuD,OAUtC;AAAA,MATrBC,QASqB,QATrBA,QASqB;AAAA,MARrBC,QAQqB,QARrBA,QAQqB;AAAA,MAPrBC,KAOqB,QAPrBA,KAOqB;AAAA,MANrBC,SAMqB,QANrBA,SAMqB;AAAA,MALrBC,IAKqB,QALrBA,IAKqB;AAAA,MAJrBC,IAIqB,QAJrBA,IAIqB;AAAA,4BAHrBC,SAGqB;AAAA,MAHrBA,SAGqB,+BAHTD,IAAI,GAAG,GAAH,GAAS,QAGJ;AAAA,MAFrBE,QAEqB,QAFrBA,QAEqB;AAAA,MADlBC,SACkB;;AACrB,MAAMC,QAAQ,GAAGd,WAAW,EAA5B,CADqB,CAGrB;;AACA,SAAQ,oBAAC,SAAD,eACFa,SADE;AAEN,IAAA,QAAQ,EAAED,QAFJ;AAGN,IAAA,IAAI,EAAEF,IAHA;AAIN,IAAA,SAAS,EAAEX,UAAU,CAACF,YAAY,CAAC,YAAD,EAAeiB,QAAf,CAAb,EAAuC;AAC1D,8BAAwBR,QADkC;AAE1D,0BAAoB,CAAC,CAACG;AAFoC,KAAvC;AAJf,MASN,oBAAC,QAAD;AACE,IAAA,IAAI,EAAC,cADP;AAEE,IAAA,SAAS,EAAC,KAFZ;AAGE,IAAA,QAAQ,EAAEG,QAHZ;AAIE,IAAA,UAAU,EAAEE,QAAQ,KAAKX,QAAQ,CAACY,GAAtB,GAA4B,8BAA5B,GAA6D,YAJ3E;AAKE,IAAA,iBAAiB,EAAED,QAAQ,KAAKX,QAAQ,CAACY,GAAtB,GAA4B,CAA5B,GAAgC,GALrD;AAME,IAAA,QAAQ,EAAE,KANZ;AAOE,IAAA,SAAS,EAAC;AAPZ,IATM,EAkBN;AAAK,IAAA,SAAS,EAAC;AAAf,KACE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGV,QADH,EAEE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGJ,YAAY,CAACO,SAAD,CAAZ,IAA2BA,SAD9B,EAEG,CAACA,SAAD,IAAcD,KAAd,IAAuB,oBAAC,OAAD;AAAS,IAAA,IAAI,EAAC,GAAd;AAAkB,IAAA,IAAI,EAAC;AAAvB,KAAoCA,KAApC,CAF1B,CAFF,CADF,EAQGE,IAAI,IAAI;AAAK,IAAA,SAAS,EAAC;AAAf,KAAmCA,IAAnC,CARX,CAlBM,CAAR;AA6BD,CA3CD;;AA6CA,eAAeL,UAAf","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport Counter from '../Counter/Counter';\nimport { classNames } from '../../lib/classNames';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { hasReactNode } from '../../lib/utils';\nimport Tappable from '../Tappable/Tappable';\nimport { Platform } from '../../lib/platform';\nimport { HasComponent, HasRootRef } from '../../types';\nimport './TabbarItem.css';\n\nexport interface TabbarItemProps extends\n Omit<React.AllHTMLAttributes<HTMLElement>, 'label'>, // TODO убрать Omit после удаления свойства label\n HasRootRef<HTMLElement>,\n HasComponent {\n selected?: boolean;\n /**\n * Тест рядом с иконкой\n */\n text?: React.ReactNode;\n /**\n * Индикатор над иконкой. Принимает `<Badge mode=\"prominent\" />` или `<Counter size=\"s\" mode=\"prominent\" />`\n */\n indicator?: React.ReactNode;\n /**\n * @deprecated будет удалено в 5.0.0. Используйте `indicator`\n */\n label?: React.ReactNode;\n}\n\nconst TabbarItem: React.FunctionComponent<TabbarItemProps> = ({\n children,\n selected,\n label,\n indicator,\n text,\n href,\n Component = href ? 'a' : 'button',\n disabled,\n ...restProps\n}: TabbarItemProps) => {\n const platform = usePlatform();\n\n // @ts-ignore ругается на то, что у AllHTMLAttributes type это строка, а button не любую строку считает валидным значением\n return (<Component\n {...restProps}\n disabled={disabled}\n href={href}\n vkuiClass={classNames(getClassName('TabbarItem', platform), {\n 'TabbarItem--selected': selected,\n 'TabbarItem--text': !!text,\n })}\n >\n <Tappable\n role=\"presentation\"\n Component=\"div\"\n disabled={disabled}\n activeMode={platform === Platform.IOS ? 'TabbarItem__tappable--active' : 'background'}\n activeEffectDelay={platform === Platform.IOS ? 0 : 300}\n hasHover={false}\n vkuiClass=\"TabbarItem__tappable\"\n />\n <div vkuiClass=\"TabbarItem__in\">\n <div vkuiClass=\"TabbarItem__icon\">\n {children}\n <div vkuiClass=\"TabbarItem__label\">\n {hasReactNode(indicator) && indicator}\n {!indicator && label && <Counter size=\"s\" mode=\"prominent\">{label}</Counter>}\n </div>\n </div>\n {text && <div vkuiClass=\"TabbarItem__text\">{text}</div>}\n </div>\n </Component>);\n};\n\nexport default TabbarItem;\n"],"file":"TabbarItem.js"}