@skbkontur/react-ui 4.15.1 → 4.16.0-next.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 (65) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/cjs/components/Calendar/DayCellView.js +1 -1
  3. package/cjs/components/Calendar/DayCellView.js.map +1 -1
  4. package/cjs/components/Calendar/DayCellView.styles.d.ts +1 -1
  5. package/cjs/components/Calendar/DayCellView.styles.js +4 -4
  6. package/cjs/components/Calendar/DayCellView.styles.js.map +1 -1
  7. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +1 -1
  8. package/cjs/components/DropdownMenu/DropdownMenu.js +4 -1
  9. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  10. package/cjs/components/DropdownMenu/DropdownMenu.md +28 -0
  11. package/cjs/components/Kebab/Kebab.d.ts +1 -1
  12. package/cjs/components/Kebab/Kebab.js +4 -1
  13. package/cjs/components/Kebab/Kebab.js.map +1 -1
  14. package/cjs/components/Kebab/Kebab.md +28 -0
  15. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +1 -1
  16. package/cjs/components/TooltipMenu/TooltipMenu.js +6 -1
  17. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  18. package/cjs/components/TooltipMenu/TooltipMenu.md +28 -0
  19. package/cjs/internal/InternalMenu/InternalMenu.d.ts +9 -4
  20. package/cjs/internal/InternalMenu/InternalMenu.js +8 -4
  21. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  22. package/cjs/internal/InternalMenu/isIconPaddingEnabled.d.ts +2 -0
  23. package/cjs/internal/InternalMenu/isIconPaddingEnabled.js +9 -0
  24. package/cjs/internal/InternalMenu/isIconPaddingEnabled.js.map +1 -0
  25. package/cjs/internal/Menu/Menu.d.ts +2 -1
  26. package/cjs/internal/Menu/Menu.js +3 -3
  27. package/cjs/internal/Menu/Menu.js.map +1 -1
  28. package/cjs/internal/PopupMenu/PopupMenu.d.ts +2 -1
  29. package/cjs/internal/PopupMenu/PopupMenu.js +2 -1
  30. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  31. package/cjs/internal/themes/Theme2022.js +1 -1
  32. package/cjs/internal/themes/Theme2022.js.map +1 -1
  33. package/components/Calendar/DayCellView/DayCellView.js +1 -1
  34. package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
  35. package/components/Calendar/DayCellView.styles/DayCellView.styles.js +2 -2
  36. package/components/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
  37. package/components/Calendar/DayCellView.styles.d.ts +1 -1
  38. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +1 -0
  39. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  40. package/components/DropdownMenu/DropdownMenu.d.ts +1 -1
  41. package/components/DropdownMenu/DropdownMenu.md +28 -0
  42. package/components/Kebab/Kebab/Kebab.js +1 -0
  43. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  44. package/components/Kebab/Kebab.d.ts +1 -1
  45. package/components/Kebab/Kebab.md +28 -0
  46. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +5 -1
  47. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  48. package/components/TooltipMenu/TooltipMenu.d.ts +1 -1
  49. package/components/TooltipMenu/TooltipMenu.md +28 -0
  50. package/internal/InternalMenu/InternalMenu/InternalMenu.js +2 -3
  51. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  52. package/internal/InternalMenu/InternalMenu.d.ts +9 -4
  53. package/internal/InternalMenu/isIconPaddingEnabled/isIconPaddingEnabled.js +6 -0
  54. package/internal/InternalMenu/isIconPaddingEnabled/isIconPaddingEnabled.js.map +1 -0
  55. package/internal/InternalMenu/isIconPaddingEnabled/package.json +6 -0
  56. package/internal/InternalMenu/isIconPaddingEnabled.d.ts +2 -0
  57. package/internal/Menu/Menu/Menu.js +2 -3
  58. package/internal/Menu/Menu/Menu.js.map +1 -1
  59. package/internal/Menu/Menu.d.ts +2 -1
  60. package/internal/PopupMenu/PopupMenu/PopupMenu.js +1 -0
  61. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  62. package/internal/PopupMenu/PopupMenu.d.ts +2 -1
  63. package/internal/themes/Theme2022/Theme2022.js +1 -1
  64. package/internal/themes/Theme2022/Theme2022.js.map +1 -1
  65. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["InternalMenu.tsx"],"names":["InternalMenuDataTids","root","InternalMenu","rootNode","getProps","defaultProps","state","highlightedIndex","maxHeight","scrollState","renderHeader","styles","wrapper","headerWrapper","el","header","contentWrapper","props","menuSeparatorWrapper","theme","renderMenuSeparatorWithNoMargin","renderFooter","footerWrapper","footer","ThemeFactory","create","menuSeparatorMarginY","focusOnRootElement","focus","shouldRecalculateMaxHeight","prevProps","children","prevMaxHeight","prevHeader","prevFooter","prevChildrenCount","React","Children","count","calculateMaxHeight","parsedMaxHeight","window","rootElementMaxHeight","getComputedStyle","parseFloat","calculatedMaxHeight","height","setState","setInitialSelection","i","initialSelectedItemIndex","moveDown","refScrollContainer","scrollContainer","scrollToSelected","highlighted","HTMLElement","scrollTo","highlightItem","index","unhighlight","moveUp","move","handleKeyDown","e","onKeyDown","defaultPrevented","preventDefault","onClick","handleScrollStateChange","componentDidMount","componentDidUpdate","render","renderMain","enableIconPadding","toArray","some","x","isValidElement","icon","isEmpty","hasShadow","width","preventWindowScroll","shadow","setRootNode","map","child","type","modifiedChild","highlight","ref","originalRef","menuItem","refHighlighted","cloneElement","select","bind","onMouseEnter","event","onMouseLeave","current","shouldHandleHref","item","childrenToArray","href","target","open","location","onItemClick","step","isActiveElement","cyclicSelection","length","filter","isNonNullable","PureComponent","__KONTUR_REACT_UI__","ret","forEach","push"],"mappings":"qYAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BO,IAAMA,oBAAoB,GAAG;AAClCC,EAAAA,IAAI,EAAE,oBAD4B,EAA7B,C;;;;;;;;;;;AAYMC,Y,OADZC,mB;;;;;;;;;;;;AAaSC,IAAAA,Q,GAAW,0CAAkBF,YAAY,CAACG,YAA/B,C;;AAEZC,IAAAA,K,GAAmB;AACxBC,MAAAA,gBAAgB,EAAE,CAAC,CADK;AAExBC,MAAAA,SAAS,EAAE,MAAKJ,QAAL,GAAgBI,SAAhB,IAA6B,MAFhB;AAGxBC,MAAAA,WAAW,EAAE,KAHW,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2HlBC,IAAAA,Y,GAAe,YAAM;AAC3B;AACE;AACE,UAAA,SAAS,EAAE;AACRC,+BAAOC,OAAP,EADQ,IACW,IADX;AAERD,+BAAOE,aAAP,EAFQ,IAEiB,IAFjB,OADb;;AAKE,UAAA,GAAG,EAAE,aAACC,EAAD,UAAS,MAAKC,MAAL,GAAcD,EAAvB,EALP;;AAOE,8CAAK,SAAS,EAAEH,qBAAOK,cAAP,EAAhB,IAA0C,MAAKC,KAAL,CAAWF,MAArD,CAPF;AAQE,8CAAK,SAAS,EAAEJ,qBAAOO,oBAAP,CAA4B,MAAKC,KAAjC,CAAhB;AACG,cAAKb,KAAL,CAAWG,WAAX,KAA2B,KAA3B,IAAoC,MAAKW,+BAAL,EADvC,CARF,CADF;;;;AAcD,K;;AAEOC,IAAAA,Y,GAAe,YAAM;AAC3B;AACE;AACE,UAAA,SAAS,EAAE;AACRV,+BAAOC,OAAP,EADQ,IACW,IADX;AAERD,+BAAOW,aAAP,EAFQ,IAEiB,IAFjB,QADb;;AAKE,UAAA,GAAG,EAAE,aAACR,EAAD,UAAS,MAAKS,MAAL,GAAcT,EAAvB,EALP;;AAOE,8CAAK,SAAS,EAAEH,qBAAOO,oBAAP,CAA4B,MAAKC,KAAjC,CAAhB;AACG,cAAKb,KAAL,CAAWG,WAAX,KAA2B,QAA3B,IAAuC,MAAKW,+BAAL,EAD1C,CAPF;;AAUE,8CAAK,SAAS,EAAET,qBAAOK,cAAP,EAAhB,IAA0C,MAAKC,KAAL,CAAWM,MAArD,CAVF,CADF;;;AAcD,K;;AAEOH,IAAAA,+B,GAAkC,YAAM;AAC9C;AACE,qCAAC,0BAAD,CAAc,QAAd,IAAuB,KAAK,EAAEI,2BAAaC,MAAb,CAAoB,EAAEC,oBAAoB,EAAE,GAAxB,EAApB,EAAmD,MAAKP,KAAxD,CAA9B;AACE,qCAAC,4BAAD,OADF,CADF;;;AAKD,K;;AAEOQ,IAAAA,kB,GAAqB,YAAY;AACvC,UAAMxB,QAAQ,GAAG,wEAAjB;AACA,UAAI,4BAAcA,QAAd,CAAJ,EAA6B;AAC3BA,QAAAA,QAAQ,QAAR,YAAAA,QAAQ,CAAEyB,KAAV;AACD;AACF,K;;AAEOC,IAAAA,0B,GAA6B,UAACC,SAAD,EAAmC;AACtE,wBAAqC,MAAKb,KAA1C,CAAQF,MAAR,eAAQA,MAAR,CAAgBQ,MAAhB,eAAgBA,MAAhB,CAAwBQ,QAAxB,eAAwBA,QAAxB;AACA,UAAMvB,SAAS,GAAG,MAAKJ,QAAL,GAAgBI,SAAlC;AACA,UAAMwB,aAAa,GAAGF,SAAS,CAACtB,SAAhC;AACA,UAAMyB,UAAU,GAAGH,SAAS,CAACf,MAA7B;AACA,UAAMmB,UAAU,GAAGJ,SAAS,CAACP,MAA7B;AACA,UAAMY,iBAAiB,GAAGC,eAAMC,QAAN,CAAeC,KAAf,CAAqBR,SAAS,CAACC,QAA/B,CAA1B;;AAEA;AACEvB,QAAAA,SAAS,KAAKwB,aAAd;AACAT,QAAAA,MAAM,KAAKW,UADX;AAEAnB,QAAAA,MAAM,KAAKkB,UAFX;AAGAG,uBAAMC,QAAN,CAAeC,KAAf,CAAqBP,QAArB,MAAmCI,iBAJrC;;AAMD,K;;AAEOI,IAAAA,kB,GAAqB,YAAM;AACjC,UAAM/B,SAAS,GAAG,MAAKJ,QAAL,GAAgBI,SAAlC;AACA,UAAIgC,eAAe,GAAGhC,SAAtB;AACA,UAAML,QAAQ,GAAG,wEAAjB;;AAEA,UAAI,OAAOK,SAAP,KAAqB,QAArB,IAAiC,OAAOiC,MAAP,KAAkB,WAAnD,IAAkEtC,QAAtE,EAAgF;AAC9E,YAAMuC,oBAAoB,GAAGD,MAAM,CAACE,gBAAP,CAAwBxC,QAAxB,EAAkCK,SAA/D;;AAEA,YAAIkC,oBAAJ,EAA0B;AACxBF,UAAAA,eAAe,GAAGI,UAAU,CAACF,oBAAD,CAA5B;AACD;AACF;;AAED,UAAMG,mBAAmB;AACvB,aAAOL,eAAP,KAA2B,QAA3B;AACIA,MAAAA,eAAe;AACb,YAAKzB,MAAL,IAAe,4BAAW,MAAKA,MAAhB,EAAwB+B,MAAxC,IAAmD,CADrC,CAAf;AAEE,YAAKvB,MAAL,IAAe,4BAAW,MAAKA,MAAhB,EAAwBuB,MAAxC,IAAmD,CAFpD,CADJ;AAIItC,MAAAA,SALN;;AAOA,YAAKuC,QAAL,CAAc;AACZvC,QAAAA,SAAS,EAAEqC,mBAAmB,IAAI,MADtB,EAAd;;AAGD,K;;AAEOG,IAAAA,mB,GAAsB,YAAM;AAClC,WAAK,IAAIC,CAAC,GAAG,MAAK7C,QAAL,GAAgB8C,wBAA7B,EAAuDD,CAAC,GAAG,CAAC,CAA5D,EAA+DA,CAAC,EAAhE,EAAoE;AAClE,cAAKE,QAAL;AACD;AACF,K;;AAEOC,IAAAA,kB,GAAqB,UAACC,eAAD,EAAgD;AAC3E,YAAKA,eAAL,GAAuBA,eAAvB;AACD,K;;;;;;;;;;;;;;;;;;;;AAoBOC,IAAAA,gB,GAAmB,YAAM;AAC/B,UAAI,MAAKD,eAAL,IAAwB,MAAKE,WAAjC,EAA8C;AAC5C,YAAMpD,SAAQ,GAAG,4BAAY,MAAKoD,WAAjB,CAAjB;AACA;AACA,YAAIpD,SAAQ,YAAYqD,WAAxB,EAAqC;AACnC,gBAAKH,eAAL,CAAqBI,QAArB,CAA8BtD,SAA9B;AACD;AACF;AACF,K;;;;;;;;;;;;;;;;;;;;;;;;AAwBOuD,IAAAA,a,GAAgB,UAACC,KAAD,EAAyB;AAC/C,YAAKZ,QAAL,CAAc,EAAExC,gBAAgB,EAAEoD,KAApB,EAAd;;AAEA,UAAMxD,QAAQ,GAAG,wEAAjB;AACA,UAAI,4BAAcA,QAAd,CAAJ,EAA6B;AAC3BA,QAAAA,QAAQ,QAAR,YAAAA,QAAQ,CAAEyB,KAAV;AACD;AACF,K;;AAEOgC,IAAAA,W,GAAc,YAAM;AAC1B,YAAKb,QAAL,CAAc,EAAExC,gBAAgB,EAAE,CAAC,CAArB,EAAd;AACD,K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BOsD,IAAAA,M,GAAS,YAAM;AACrB,YAAKC,IAAL,CAAU,CAAC,CAAX;AACD,K;;AAEOX,IAAAA,Q,GAAW,YAAM;AACvB,YAAKW,IAAL,CAAU,CAAV;AACD,K;;;;;;;AAOOC,IAAAA,a,GAAgB,UAACC,CAAD,EAAkD;AACxE,UAAI,OAAO,MAAK/C,KAAL,CAAWgD,SAAlB,KAAgC,UAApC,EAAgD;AAC9C,cAAKhD,KAAL,CAAWgD,SAAX,CAAqBD,CAArB;AACD;;AAED,UAAIA,CAAC,CAACE,gBAAN,EAAwB;AACtB;AACD;;AAED,UAAI,+BAAaF,CAAb,CAAJ,EAAqB;AACnBA,QAAAA,CAAC,CAACG,cAAF;AACA,cAAKN,MAAL;AACD,OAHD,MAGO,IAAI,iCAAeG,CAAf,CAAJ,EAAuB;AAC5BA,QAAAA,CAAC,CAACG,cAAF;AACA,cAAKhB,QAAL;AACD,OAHM,MAGA,IAAI,6BAAWa,CAAX,CAAJ,EAAmB;AACxB,YAAI,MAAKT,WAAL,IAAoB,MAAKA,WAAL,CAAiBtC,KAAjB,CAAuBmD,OAA/C,EAAwD;AACtD,gBAAKb,WAAL,CAAiBtC,KAAjB,CAAuBmD,OAAvB,CAA+BJ,CAA/B;AACD;AACF;AACF,K;;AAEOK,IAAAA,uB,GAA0B,UAAC5D,WAAD,EAA6C;AAC7E,UAAI,MAAKH,KAAL,CAAWG,WAAX,KAA2BA,WAA/B,EAA4C;AAC1C,cAAKsC,QAAL,CAAc,EAAEtC,WAAW,EAAXA,WAAF,EAAd;AACD;AACF,K,0DApVM6D,iB,GAAP,6BAA2B,CACzB,KAAKtB,mBAAL,GACA,KAAKT,kBAAL,GACD,C,QAEMgC,kB,GAAP,4BAA0BzC,SAA1B,EAAgD,CAC9C,IAAI,KAAKD,0BAAL,CAAgCC,SAAhC,CAAJ,EAAgD,CAC9C,KAAKS,kBAAL,GACD,CAED,IAAIT,SAAS,CAACtB,SAAV,KAAwB,KAAKJ,QAAL,GAAgBI,SAA5C,EAAuD,CACrD,KAAKuC,QAAL,CAAc,EACZvC,SAAS,EAAE,KAAKS,KAAL,CAAWT,SAAX,IAAwB,MADvB,EAAd,EAGD,CACF,C,QAEMoB,K,GAAP,iBAAe,CACb,KAAKD,kBAAL,GACD,C,QAEM6C,M,GAAP,kBAAgB,mBACd,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAACrD,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,OAAO,MAAI,CAACsD,UAAL,EAAP,CACD,CAJH,CADF,CAQD,C,QAEOA,U,GAAR,sBAAqB,wBACnB,IAAMC,iBAAiB,GAAGtC,eAAMC,QAAN,CAAesC,OAAf,CAAuB,KAAK1D,KAAL,CAAWc,QAAlC,EAA4C6C,IAA5C,CACxB,UAACC,CAAD,UAAO,4BAAMC,cAAN,CAAqBD,CAArB,KAA2BA,CAAC,CAAC5D,KAAF,CAAQ8D,IAA1C,EADwB,CAA1B,CAIA,IAAI,KAAKC,OAAL,EAAJ,EAAoB,CAClB,OAAO,IAAP,CACD,CACD,qBAA6D,KAAK5E,QAAL,EAA7D,CAAQ6E,SAAR,kBAAQA,SAAR,CAAmBC,KAAnB,kBAAmBA,KAAnB,CAA0B1E,SAA1B,kBAA0BA,SAA1B,CAAqC2E,mBAArC,kBAAqCA,mBAArC,CAEA,oBACE,sCACE,YAAUnF,oBAAoB,CAACC,IADjC,EAEE,SAAS,EAAE,kCACRU,qBAAOV,IAAP,CAAY,KAAKkB,KAAjB,CADQ,IACkB,IADlB,OAERR,qBAAOyE,MAAP,CAAc,KAAKjE,KAAnB,CAFQ,IAEoB8D,SAFpB,QAFb,EAME,KAAK,EAAE,EACLC,KAAK,EAALA,KADK,EAEL1E,SAAS,EAAE,KAAKF,KAAL,CAAWE,SAFjB,EANT,EAUE,SAAS,EAAE,KAAKuD,aAVlB,EAWE,GAAG,EAAE,KAAKsB,WAXZ,EAYE,QAAQ,EAAE,CAZZ,IAcG,KAAKpE,KAAL,CAAWF,MAAX,GAAoB,KAAKL,YAAL,EAApB,GAA0C,IAd7C,eAeE,6BAAC,gCAAD,IACE,GAAG,EAAE,KAAK0C,kBADZ,EAEE,SAAS,EAAE5C,SAFb,EAGE,mBAAmB,EAAE2E,mBAHvB,EAIE,mBAAmB,EAAE,KAAKd,uBAJ5B,IAMGjC,eAAMC,QAAN,CAAeiD,GAAf,CAAmB,KAAKrE,KAAL,CAAWc,QAA9B,EAAwC,UAACwD,KAAD,EAAQ5B,KAAR,EAAkB,CACzD,IAAI,OAAO4B,KAAP,KAAiB,QAAjB,IAA6B,OAAOA,KAAP,KAAiB,QAA9C,IAA0D,uBAAWA,KAAX,CAA9D,EAAiF,CAC/E,OAAOA,KAAP,CACD,CACD,IAAI,6BAAMT,cAAN,CAAqBS,KAArB,KAA+B,OAAOA,KAAK,CAACC,IAAb,KAAsB,QAAzD,EAAmE,CACjE,OAAOD,KAAP,CACD,CAED,IAAME,aAAa,GAAG,4DAA2BF,KAA3B,EAAkCb,iBAAlC,CAAtB,CAEA,IAAI,sCAAgBe,aAAhB,CAAJ,EAAoC,CAClC,IAAMC,SAAS,GAAG,MAAI,CAACpF,KAAL,CAAWC,gBAAX,KAAgCoD,KAAlD,CAEA,IAAIgC,GAAG,GAAGF,aAAa,CAACE,GAAxB,CACA,IAAMC,WAAW,GAAGD,GAApB,CACA,IAAID,SAAJ,EAAe,CACbC,GAAG,GAAG,aAACE,QAAD,UAAc,MAAI,CAACC,cAAL,CAAoBF,WAApB,EAAiCC,QAAjC,CAAd,EAAN,CACD,CAED,oBAAOzD,eAAM2D,YAAN,CAA4CN,aAA5C,EAA2D,EAChEE,GAAG,EAAHA,GADgE,EAEhErF,KAAK,EAAEoF,SAAS,GAAG,OAAH,GAAaD,aAAa,CAACxE,KAAd,CAAoBX,KAFe,EAGhE8D,OAAO,EAAE,MAAI,CAAC4B,MAAL,CAAYC,IAAZ,CAAiB,MAAjB,EAAuBtC,KAAvB,EAA8B,KAA9B,CAHuD,EAIhEuC,YAAY,EAAE,sBAACC,KAAD,EAAW,CACvB,MAAI,CAACzC,aAAL,CAAmBC,KAAnB,EACA,IAAI,0BAAW8B,aAAX,KAA6BA,aAAa,CAACxE,KAAd,CAAoBiF,YAArD,EAAmE,CACjET,aAAa,CAACxE,KAAd,CAAoBiF,YAApB,CAAiCC,KAAjC,EACD,CACF,CAT+D,EAUhEC,YAAY,EAAE,sBAACD,KAAD,EAAW,CACvB,MAAI,CAACvC,WAAL,GACA,IAAI,0BAAW6B,aAAX,KAA6BA,aAAa,CAACxE,KAAd,CAAoBmF,YAArD,EAAmE,CACjEX,aAAa,CAACxE,KAAd,CAAoBmF,YAApB,CAAiCD,KAAjC,EACD,CACF,CAf+D,EAA3D,CAAP,CAiBD,CAED,OAAOV,aAAP,CACD,CAvCA,CANH,CAfF,EA8DG,KAAKxE,KAAL,CAAWM,MAAX,GAAoB,KAAKF,YAAL,EAApB,GAA0C,IA9D7C,CADF,CAkED,C,QAsGOyE,c,GAAR,wBACEF,WADF,EAEEC,QAFF,EAGE,CACA,KAAKtC,WAAL,GAAmBsC,QAAnB,CAEA,IAAI,CAACD,WAAD,IAAgB,OAAOA,WAAP,KAAuB,QAA3C,EAAqD,CACnD,OACD,CAED,IAAI,OAAOA,WAAP,KAAuB,UAA3B,EAAuC,CACrCA,WAAW,CAACC,QAAD,CAAX,CACD,CAFD,MAEO,IAAI,OAAOD,WAAP,KAAuB,QAA3B,EAAqC,CAC1C;AACAA,MAAAA,WAAW,CAACS,OAAZ,GAAsBR,QAAtB,CACD,CACF,C,QAYOG,M,GAAR,gBAAerC,KAAf,EAA8B2C,gBAA9B,EAAyDH,KAAzD,EAA4G,CAC1G,IAAMI,IAAI,GAAGC,eAAe,CAAC,KAAKvF,KAAL,CAAWc,QAAZ,CAAf,CAAqC4B,KAArC,CAAb,CAEA,IAAI,sCAAgB4C,IAAhB,CAAJ,EAA2B,CACzB,IAAID,gBAAgB,IAAIC,IAAI,CAACtF,KAAL,CAAWwF,IAAnC,EAAyC,CACvC,IAAIF,IAAI,CAACtF,KAAL,CAAWyF,MAAf,EAAuB,CACrBjE,MAAM,CAACkE,IAAP,CAAYJ,IAAI,CAACtF,KAAL,CAAWwF,IAAvB,EAA6BF,IAAI,CAACtF,KAAL,CAAWyF,MAAxC,EACD,CAFD,MAEO,CACLE,QAAQ,CAACH,IAAT,GAAgBF,IAAI,CAACtF,KAAL,CAAWwF,IAA3B,CACD,CACF,CACD,IAAIF,IAAI,CAACtF,KAAL,CAAWmD,OAAf,EAAwB,CACtBmC,IAAI,CAACtF,KAAL,CAAWmD,OAAX,CAAmB+B,KAAnB,EACD,CACD,IAAI,KAAKlF,KAAL,CAAW4F,WAAf,EAA4B,CAC1B,KAAK5F,KAAL,CAAW4F,WAAX,CAAuBV,KAAvB,EACD,CACD,OAAO,IAAP,CACD,CACD,OAAO,KAAP,CACD,C,QAeOrC,I,GAAR,cAAagD,IAAb,EAA2B,mBACzB,KAAK/D,QAAL,CAAc,UAACzC,KAAD,EAAQW,KAAR,EAAkB,CAC9B,IAAMc,QAAQ,GAAGyE,eAAe,CAACvF,KAAK,CAACc,QAAP,CAAhC,CACA,IAAI,CAACA,QAAQ,CAAC6C,IAAT,CAAcmC,gCAAd,CAAL,EAAqC,CACnC,OAAO,IAAP,CACD,CACD,IAAIpD,KAAK,GAAGrD,KAAK,CAACC,gBAAlB,CACA,GAAG,CACDoD,KAAK,IAAImD,IAAT,CACA,IAAI,CAAC,MAAI,CAAC1G,QAAL,GAAgB4G,eAAjB,KAAqCrD,KAAK,GAAG,CAAR,IAAaA,KAAK,GAAG5B,QAAQ,CAACkF,MAAnE,CAAJ,EAAgF,CAC9E,OAAO,IAAP,CACD,CAED,IAAItD,KAAK,GAAG,CAAZ,EAAe,CACbA,KAAK,GAAG5B,QAAQ,CAACkF,MAAT,GAAkB,CAA1B,CACD,CAFD,MAEO,IAAItD,KAAK,GAAG5B,QAAQ,CAACkF,MAArB,EAA6B,CAClCtD,KAAK,GAAG,CAAR,CACD,CAED,IAAM4B,KAAK,GAAGxD,QAAQ,CAAC4B,KAAD,CAAtB,CACA,IAAI,sCAAgB4B,KAAhB,CAAJ,EAA4B,CAC1B,OAAO,EAAEhF,gBAAgB,EAAEoD,KAApB,EAAP,CACD,CACF,CAhBD,QAgBSA,KAAK,KAAKrD,KAAK,CAACC,gBAhBzB,EAiBA,OAAO,IAAP,CACD,CAxBD,EAwBG,KAAK+C,gBAxBR,EAyBD,C,QAUO0B,O,GAAR,mBAAkB,CAChB,IAAQjD,QAAR,GAAqB,KAAKd,KAA1B,CAAQc,QAAR,CACA,OAAO,CAACA,QAAD,IAAa,CAACyE,eAAe,CAACzE,QAAD,CAAf,CAA0BmF,MAA1B,CAAiCC,oBAAjC,EAAgDF,MAArE,CACD,C,uBAnV+B7E,eAAMgF,a,WACxBC,mB,GAAsB,c,UAEtBhH,Y,GAA6B,EACzC6E,KAAK,EAAE,MADkC,EAEzC1E,SAAS,EAAE,GAF8B,EAGzCyE,SAAS,EAAE,IAH8B,EAIzCE,mBAAmB,EAAE,IAJoB,EAKzC6B,eAAe,EAAE,IALwB,EAMzC9D,wBAAwB,EAAE,CAAC,CANc,E;;AA+W7C,SAASsD,eAAT,CAAyBzE,QAAzB,EAAuE;AACrE,MAAMuF,GAAsB,GAAG,EAA/B;AACA;AACAlF,iBAAMC,QAAN,CAAekF,OAAf,CAAuBxF,QAAvB,EAAiC,UAACwD,KAAD,EAAW;AAC1C+B,IAAAA,GAAG,CAACE,IAAJ,CAASjC,KAAT;AACD,GAFD;AAGA,SAAO+B,GAAP;AACD","sourcesContent":["import React from 'react';\n\nimport { isHTMLElement } from '../../lib/SSRSafe';\nimport { isNonNullable, isNullable } from '../../lib/utils';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { ScrollContainer, ScrollContainerScrollState } from '../../components/ScrollContainer';\nimport { isMenuItem, MenuItem, MenuItemProps } from '../../components/MenuItem';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { MenuSeparator } from '../../components/MenuSeparator';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\n\nimport { styles } from './InternalMenu.styles';\nimport { isActiveElement } from './isActiveElement';\nimport { addIconPaddingIfPartOfMenu } from './addIconPaddingIfPartOfMenu';\n\ninterface MenuProps {\n children?: React.ReactNode;\n hasShadow?: boolean;\n /**\n * Максимальная высота применяется только для скролл контейнера\n *\n * Высота `header` и `footer` в нее не включены\n */\n maxHeight?: number | string;\n onItemClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n // Циклический перебор айтемов меню (по-дефолтну включен)\n cyclicSelection?: boolean;\n initialSelectedItemIndex?: number;\n}\n\ninterface MenuState {\n highlightedIndex: number;\n maxHeight: number | string;\n scrollState: ScrollContainerScrollState;\n}\n\nexport const InternalMenuDataTids = {\n root: 'InternalMenu__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n MenuProps,\n 'width' | 'maxHeight' | 'hasShadow' | 'preventWindowScroll' | 'cyclicSelection' | 'initialSelectedItemIndex'\n >\n>;\n\n@rootNode\nexport class InternalMenu extends React.PureComponent<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'InternalMenu';\n\n public static defaultProps: DefaultProps = {\n width: 'auto',\n maxHeight: 300,\n hasShadow: true,\n preventWindowScroll: true,\n cyclicSelection: true,\n initialSelectedItemIndex: -1,\n };\n\n private getProps = createPropsGetter(InternalMenu.defaultProps);\n\n public state: MenuState = {\n highlightedIndex: -1,\n maxHeight: this.getProps().maxHeight || 'none',\n scrollState: 'top',\n };\n\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private highlighted: Nullable<MenuItem>;\n private setRootNode!: TSetRootNode;\n private header: Nullable<HTMLDivElement>;\n private footer: Nullable<HTMLDivElement>;\n\n public componentDidMount() {\n this.setInitialSelection();\n this.calculateMaxHeight();\n }\n\n public componentDidUpdate(prevProps: MenuProps) {\n if (this.shouldRecalculateMaxHeight(prevProps)) {\n this.calculateMaxHeight();\n }\n\n if (prevProps.maxHeight !== this.getProps().maxHeight) {\n this.setState({\n maxHeight: this.props.maxHeight || 'none',\n });\n }\n }\n\n public focus() {\n this.focusOnRootElement();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const enableIconPadding = React.Children.toArray(this.props.children).some(\n (x) => React.isValidElement(x) && x.props.icon,\n );\n\n if (this.isEmpty()) {\n return null;\n }\n const { hasShadow, width, maxHeight, preventWindowScroll } = this.getProps();\n\n return (\n <div\n data-tid={InternalMenuDataTids.root}\n className={cx({\n [styles.root(this.theme)]: true,\n [styles.shadow(this.theme)]: hasShadow,\n })}\n style={{\n width,\n maxHeight: this.state.maxHeight,\n }}\n onKeyDown={this.handleKeyDown}\n ref={this.setRootNode}\n tabIndex={0}\n >\n {this.props.header ? this.renderHeader() : null}\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={maxHeight}\n preventWindowScroll={preventWindowScroll}\n onScrollStateChange={this.handleScrollStateChange}\n >\n {React.Children.map(this.props.children, (child, index) => {\n if (typeof child === 'string' || typeof child === 'number' || isNullable(child)) {\n return child;\n }\n if (React.isValidElement(child) && typeof child.type === 'string') {\n return child;\n }\n\n const modifiedChild = addIconPaddingIfPartOfMenu(child, enableIconPadding);\n\n if (isActiveElement(modifiedChild)) {\n const highlight = this.state.highlightedIndex === index;\n\n let ref = modifiedChild.ref;\n const originalRef = ref;\n if (highlight) {\n ref = (menuItem) => this.refHighlighted(originalRef, menuItem);\n }\n\n return React.cloneElement<MenuItemProps, MenuItem>(modifiedChild, {\n ref,\n state: highlight ? 'hover' : modifiedChild.props.state,\n onClick: this.select.bind(this, index, false),\n onMouseEnter: (event) => {\n this.highlightItem(index);\n if (isMenuItem(modifiedChild) && modifiedChild.props.onMouseEnter) {\n modifiedChild.props.onMouseEnter(event);\n }\n },\n onMouseLeave: (event) => {\n this.unhighlight();\n if (isMenuItem(modifiedChild) && modifiedChild.props.onMouseLeave) {\n modifiedChild.props.onMouseLeave(event);\n }\n },\n });\n }\n\n return modifiedChild;\n })}\n </ScrollContainer>\n {this.props.footer ? this.renderFooter() : null}\n </div>\n );\n }\n\n private renderHeader = () => {\n return (\n <div\n className={cx({\n [styles.wrapper()]: true,\n [styles.headerWrapper()]: true,\n })}\n ref={(el) => (this.header = el)}\n >\n <div className={styles.contentWrapper()}>{this.props.header}</div>\n <div className={styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'top' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n </div>\n );\n };\n\n private renderFooter = () => {\n return (\n <div\n className={cx({\n [styles.wrapper()]: true,\n [styles.footerWrapper()]: true,\n })}\n ref={(el) => (this.footer = el)}\n >\n <div className={styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'bottom' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n <div className={styles.contentWrapper()}>{this.props.footer}</div>\n </div>\n );\n };\n\n private renderMenuSeparatorWithNoMargin = () => {\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ menuSeparatorMarginY: '0' }, this.theme)}>\n <MenuSeparator />\n </ThemeContext.Provider>\n );\n };\n\n private focusOnRootElement = (): void => {\n const rootNode = getRootNode(this);\n if (isHTMLElement(rootNode)) {\n rootNode?.focus();\n }\n };\n\n private shouldRecalculateMaxHeight = (prevProps: MenuProps): boolean => {\n const { header, footer, children } = this.props;\n const maxHeight = this.getProps().maxHeight;\n const prevMaxHeight = prevProps.maxHeight;\n const prevHeader = prevProps.header;\n const prevFooter = prevProps.footer;\n const prevChildrenCount = React.Children.count(prevProps.children);\n\n return (\n maxHeight !== prevMaxHeight ||\n footer !== prevFooter ||\n header !== prevHeader ||\n React.Children.count(children) !== prevChildrenCount\n );\n };\n\n private calculateMaxHeight = () => {\n const maxHeight = this.getProps().maxHeight;\n let parsedMaxHeight = maxHeight;\n const rootNode = getRootNode(this);\n\n if (typeof maxHeight === 'string' && typeof window !== 'undefined' && rootNode) {\n const rootElementMaxHeight = window.getComputedStyle(rootNode).maxHeight;\n\n if (rootElementMaxHeight) {\n parsedMaxHeight = parseFloat(rootElementMaxHeight);\n }\n }\n\n const calculatedMaxHeight =\n typeof parsedMaxHeight === 'number'\n ? parsedMaxHeight +\n ((this.header && getDOMRect(this.header).height) || 0) +\n ((this.footer && getDOMRect(this.footer).height) || 0)\n : maxHeight;\n\n this.setState({\n maxHeight: calculatedMaxHeight || 'none',\n });\n };\n\n private setInitialSelection = () => {\n for (let i = this.getProps().initialSelectedItemIndex; i > -1; i--) {\n this.moveDown();\n }\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private refHighlighted(\n originalRef: string | ((instance: MenuItem | null) => void) | React.RefObject<MenuItem> | null | undefined,\n menuItem: MenuItem | null,\n ) {\n this.highlighted = menuItem;\n\n if (!originalRef || typeof originalRef === 'string') {\n return;\n }\n\n if (typeof originalRef === 'function') {\n originalRef(menuItem);\n } else if (typeof originalRef === 'object') {\n // @ts-expect-error: See: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065.\n originalRef.current = menuItem;\n }\n }\n\n private scrollToSelected = () => {\n if (this.scrollContainer && this.highlighted) {\n const rootNode = getRootNode(this.highlighted);\n // TODO: Remove this check once IF-647 is resolved\n if (rootNode instanceof HTMLElement) {\n this.scrollContainer.scrollTo(rootNode);\n }\n }\n };\n\n private select(index: number, shouldHandleHref: boolean, event: React.SyntheticEvent<HTMLElement>): boolean {\n const item = childrenToArray(this.props.children)[index];\n\n if (isActiveElement(item)) {\n if (shouldHandleHref && item.props.href) {\n if (item.props.target) {\n window.open(item.props.href, item.props.target);\n } else {\n location.href = item.props.href;\n }\n }\n if (item.props.onClick) {\n item.props.onClick(event as React.MouseEvent<HTMLElement>);\n }\n if (this.props.onItemClick) {\n this.props.onItemClick(event);\n }\n return true;\n }\n return false;\n }\n\n private highlightItem = (index: number): void => {\n this.setState({ highlightedIndex: index });\n\n const rootNode = getRootNode(this);\n if (isHTMLElement(rootNode)) {\n rootNode?.focus();\n }\n };\n\n private unhighlight = () => {\n this.setState({ highlightedIndex: -1 });\n };\n\n private move(step: number) {\n this.setState((state, props) => {\n const children = childrenToArray(props.children);\n if (!children.some(isActiveElement)) {\n return null;\n }\n let index = state.highlightedIndex;\n do {\n index += step;\n if (!this.getProps().cyclicSelection && (index < 0 || index > children.length)) {\n return null;\n }\n\n if (index < 0) {\n index = children.length - 1;\n } else if (index > children.length) {\n index = 0;\n }\n\n const child = children[index];\n if (isActiveElement(child)) {\n return { highlightedIndex: index };\n }\n } while (index !== state.highlightedIndex);\n return null;\n }, this.scrollToSelected);\n }\n\n private moveUp = () => {\n this.move(-1);\n };\n\n private moveDown = () => {\n this.move(1);\n };\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>): void => {\n if (typeof this.props.onKeyDown === 'function') {\n this.props.onKeyDown(e);\n }\n\n if (e.defaultPrevented) {\n return;\n }\n\n if (isKeyArrowUp(e)) {\n e.preventDefault();\n this.moveUp();\n } else if (isKeyArrowDown(e)) {\n e.preventDefault();\n this.moveDown();\n } else if (isKeyEnter(e)) {\n if (this.highlighted && this.highlighted.props.onClick) {\n this.highlighted.props.onClick(e);\n }\n }\n };\n\n private handleScrollStateChange = (scrollState: ScrollContainerScrollState) => {\n if (this.state.scrollState !== scrollState) {\n this.setState({ scrollState });\n }\n };\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n"]}
1
+ {"version":3,"sources":["InternalMenu.tsx"],"names":["InternalMenuDataTids","root","InternalMenu","rootNode","getProps","defaultProps","state","highlightedIndex","maxHeight","scrollState","renderHeader","styles","wrapper","headerWrapper","el","header","contentWrapper","props","menuSeparatorWrapper","theme","renderMenuSeparatorWithNoMargin","renderFooter","footerWrapper","footer","ThemeFactory","create","menuSeparatorMarginY","focusOnRootElement","focus","shouldRecalculateMaxHeight","prevProps","children","prevMaxHeight","prevHeader","prevFooter","prevChildrenCount","React","Children","count","calculateMaxHeight","parsedMaxHeight","window","rootElementMaxHeight","getComputedStyle","parseFloat","calculatedMaxHeight","height","setState","setInitialSelection","i","initialSelectedItemIndex","moveDown","refScrollContainer","scrollContainer","scrollToSelected","highlighted","HTMLElement","scrollTo","highlightItem","index","unhighlight","moveUp","move","handleKeyDown","e","onKeyDown","defaultPrevented","preventDefault","onClick","handleScrollStateChange","componentDidMount","componentDidUpdate","render","renderMain","enableIconPadding","preventIconsOffset","isEmpty","hasShadow","width","preventWindowScroll","shadow","setRootNode","map","child","isValidElement","type","modifiedChild","highlight","ref","originalRef","menuItem","refHighlighted","cloneElement","select","bind","onMouseEnter","event","onMouseLeave","current","shouldHandleHref","item","childrenToArray","href","target","open","location","onItemClick","step","some","isActiveElement","cyclicSelection","length","filter","isNonNullable","PureComponent","__KONTUR_REACT_UI__","ret","forEach","push"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isHTMLElement } from '../../lib/SSRSafe';\nimport { isNonNullable, isNullable } from '../../lib/utils';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { ScrollContainer, ScrollContainerScrollState } from '../../components/ScrollContainer';\nimport { isMenuItem, MenuItem, MenuItemProps } from '../../components/MenuItem';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { MenuSeparator } from '../../components/MenuSeparator';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\n\nimport { styles } from './InternalMenu.styles';\nimport { isActiveElement } from './isActiveElement';\nimport { addIconPaddingIfPartOfMenu } from './addIconPaddingIfPartOfMenu';\nimport { isIconPaddingEnabled } from './isIconPaddingEnabled';\n\nexport interface InternalMenuProps {\n children?: React.ReactNode;\n hasShadow?: boolean;\n /**\n * Максимальная высота применяется только для скролл контейнера\n *\n * Высота `header` и `footer` в нее не включены\n */\n maxHeight?: number | string;\n onItemClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n /**\n * Предотвращает выравнивание текста всех пунктов меню относительно друг друга.\n * Так, если хотя бы у одного пункта меню есть иконка, текст в остальных пунктах меню будет выровнен относительно пункта меню с иконкой\n */\n preventIconsOffset?: boolean;\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n // Циклический перебор айтемов меню (по-дефолтну включен)\n cyclicSelection?: boolean;\n initialSelectedItemIndex?: number;\n}\n\ninterface MenuState {\n highlightedIndex: number;\n maxHeight: number | string;\n scrollState: ScrollContainerScrollState;\n}\n\nexport const InternalMenuDataTids = {\n root: 'InternalMenu__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n InternalMenuProps,\n 'width' | 'maxHeight' | 'hasShadow' | 'preventWindowScroll' | 'cyclicSelection' | 'initialSelectedItemIndex'\n >\n>;\n\n@rootNode\nexport class InternalMenu extends React.PureComponent<InternalMenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'InternalMenu';\n\n public static defaultProps: DefaultProps = {\n width: 'auto',\n maxHeight: 300,\n hasShadow: true,\n preventWindowScroll: true,\n cyclicSelection: true,\n initialSelectedItemIndex: -1,\n };\n\n private getProps = createPropsGetter(InternalMenu.defaultProps);\n\n public state: MenuState = {\n highlightedIndex: -1,\n maxHeight: this.getProps().maxHeight || 'none',\n scrollState: 'top',\n };\n\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private highlighted: Nullable<MenuItem>;\n private setRootNode!: TSetRootNode;\n private header: Nullable<HTMLDivElement>;\n private footer: Nullable<HTMLDivElement>;\n\n public componentDidMount() {\n this.setInitialSelection();\n this.calculateMaxHeight();\n }\n\n public componentDidUpdate(prevProps: InternalMenuProps) {\n if (this.shouldRecalculateMaxHeight(prevProps)) {\n this.calculateMaxHeight();\n }\n\n if (prevProps.maxHeight !== this.getProps().maxHeight) {\n this.setState({\n maxHeight: this.props.maxHeight || 'none',\n });\n }\n }\n\n public focus() {\n this.focusOnRootElement();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const enableIconPadding = isIconPaddingEnabled(this.props.children, this.props.preventIconsOffset);\n\n if (this.isEmpty()) {\n return null;\n }\n const { hasShadow, width, maxHeight, preventWindowScroll } = this.getProps();\n\n return (\n <div\n data-tid={InternalMenuDataTids.root}\n className={cx({\n [styles.root(this.theme)]: true,\n [styles.shadow(this.theme)]: hasShadow,\n })}\n style={{\n width,\n maxHeight: this.state.maxHeight,\n }}\n onKeyDown={this.handleKeyDown}\n ref={this.setRootNode}\n tabIndex={0}\n >\n {this.props.header ? this.renderHeader() : null}\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={maxHeight}\n preventWindowScroll={preventWindowScroll}\n onScrollStateChange={this.handleScrollStateChange}\n >\n {React.Children.map(this.props.children, (child, index) => {\n if (typeof child === 'string' || typeof child === 'number' || isNullable(child)) {\n return child;\n }\n if (React.isValidElement(child) && typeof child.type === 'string') {\n return child;\n }\n\n const modifiedChild = addIconPaddingIfPartOfMenu(child, enableIconPadding);\n\n if (isActiveElement(modifiedChild)) {\n const highlight = this.state.highlightedIndex === index;\n\n let ref = modifiedChild.ref;\n const originalRef = ref;\n if (highlight) {\n ref = (menuItem) => this.refHighlighted(originalRef, menuItem);\n }\n\n return React.cloneElement<MenuItemProps, MenuItem>(modifiedChild, {\n ref,\n state: highlight ? 'hover' : modifiedChild.props.state,\n onClick: this.select.bind(this, index, false),\n onMouseEnter: (event) => {\n this.highlightItem(index);\n if (isMenuItem(modifiedChild) && modifiedChild.props.onMouseEnter) {\n modifiedChild.props.onMouseEnter(event);\n }\n },\n onMouseLeave: (event) => {\n this.unhighlight();\n if (isMenuItem(modifiedChild) && modifiedChild.props.onMouseLeave) {\n modifiedChild.props.onMouseLeave(event);\n }\n },\n });\n }\n\n return modifiedChild;\n })}\n </ScrollContainer>\n {this.props.footer ? this.renderFooter() : null}\n </div>\n );\n }\n\n private renderHeader = () => {\n return (\n <div\n className={cx({\n [styles.wrapper()]: true,\n [styles.headerWrapper()]: true,\n })}\n ref={(el) => (this.header = el)}\n >\n <div className={styles.contentWrapper()}>{this.props.header}</div>\n <div className={styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'top' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n </div>\n );\n };\n\n private renderFooter = () => {\n return (\n <div\n className={cx({\n [styles.wrapper()]: true,\n [styles.footerWrapper()]: true,\n })}\n ref={(el) => (this.footer = el)}\n >\n <div className={styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'bottom' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n <div className={styles.contentWrapper()}>{this.props.footer}</div>\n </div>\n );\n };\n\n private renderMenuSeparatorWithNoMargin = () => {\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ menuSeparatorMarginY: '0' }, this.theme)}>\n <MenuSeparator />\n </ThemeContext.Provider>\n );\n };\n\n private focusOnRootElement = (): void => {\n const rootNode = getRootNode(this);\n if (isHTMLElement(rootNode)) {\n rootNode?.focus();\n }\n };\n\n private shouldRecalculateMaxHeight = (prevProps: InternalMenuProps): boolean => {\n const { header, footer, children } = this.props;\n const maxHeight = this.getProps().maxHeight;\n const prevMaxHeight = prevProps.maxHeight;\n const prevHeader = prevProps.header;\n const prevFooter = prevProps.footer;\n const prevChildrenCount = React.Children.count(prevProps.children);\n\n return (\n maxHeight !== prevMaxHeight ||\n footer !== prevFooter ||\n header !== prevHeader ||\n React.Children.count(children) !== prevChildrenCount\n );\n };\n\n private calculateMaxHeight = () => {\n const maxHeight = this.getProps().maxHeight;\n let parsedMaxHeight = maxHeight;\n const rootNode = getRootNode(this);\n\n if (typeof maxHeight === 'string' && typeof window !== 'undefined' && rootNode) {\n const rootElementMaxHeight = window.getComputedStyle(rootNode).maxHeight;\n\n if (rootElementMaxHeight) {\n parsedMaxHeight = parseFloat(rootElementMaxHeight);\n }\n }\n\n const calculatedMaxHeight =\n typeof parsedMaxHeight === 'number'\n ? parsedMaxHeight +\n ((this.header && getDOMRect(this.header).height) || 0) +\n ((this.footer && getDOMRect(this.footer).height) || 0)\n : maxHeight;\n\n this.setState({\n maxHeight: calculatedMaxHeight || 'none',\n });\n };\n\n private setInitialSelection = () => {\n for (let i = this.getProps().initialSelectedItemIndex; i > -1; i--) {\n this.moveDown();\n }\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private refHighlighted(\n originalRef: string | ((instance: MenuItem | null) => void) | React.RefObject<MenuItem> | null | undefined,\n menuItem: MenuItem | null,\n ) {\n this.highlighted = menuItem;\n\n if (!originalRef || typeof originalRef === 'string') {\n return;\n }\n\n if (typeof originalRef === 'function') {\n originalRef(menuItem);\n } else if (typeof originalRef === 'object') {\n // @ts-expect-error: See: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065.\n originalRef.current = menuItem;\n }\n }\n\n private scrollToSelected = () => {\n if (this.scrollContainer && this.highlighted) {\n const rootNode = getRootNode(this.highlighted);\n // TODO: Remove this check once IF-647 is resolved\n if (rootNode instanceof HTMLElement) {\n this.scrollContainer.scrollTo(rootNode);\n }\n }\n };\n\n private select(index: number, shouldHandleHref: boolean, event: React.SyntheticEvent<HTMLElement>): boolean {\n const item = childrenToArray(this.props.children)[index];\n\n if (isActiveElement(item)) {\n if (shouldHandleHref && item.props.href) {\n if (item.props.target) {\n window.open(item.props.href, item.props.target);\n } else {\n location.href = item.props.href;\n }\n }\n if (item.props.onClick) {\n item.props.onClick(event as React.MouseEvent<HTMLElement>);\n }\n if (this.props.onItemClick) {\n this.props.onItemClick(event);\n }\n return true;\n }\n return false;\n }\n\n private highlightItem = (index: number): void => {\n this.setState({ highlightedIndex: index });\n\n const rootNode = getRootNode(this);\n if (isHTMLElement(rootNode)) {\n rootNode?.focus();\n }\n };\n\n private unhighlight = () => {\n this.setState({ highlightedIndex: -1 });\n };\n\n private move(step: number) {\n this.setState((state, props) => {\n const children = childrenToArray(props.children);\n if (!children.some(isActiveElement)) {\n return null;\n }\n let index = state.highlightedIndex;\n do {\n index += step;\n if (!this.getProps().cyclicSelection && (index < 0 || index > children.length)) {\n return null;\n }\n\n if (index < 0) {\n index = children.length - 1;\n } else if (index > children.length) {\n index = 0;\n }\n\n const child = children[index];\n if (isActiveElement(child)) {\n return { highlightedIndex: index };\n }\n } while (index !== state.highlightedIndex);\n return null;\n }, this.scrollToSelected);\n }\n\n private moveUp = () => {\n this.move(-1);\n };\n\n private moveDown = () => {\n this.move(1);\n };\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>): void => {\n if (typeof this.props.onKeyDown === 'function') {\n this.props.onKeyDown(e);\n }\n\n if (e.defaultPrevented) {\n return;\n }\n\n if (isKeyArrowUp(e)) {\n e.preventDefault();\n this.moveUp();\n } else if (isKeyArrowDown(e)) {\n e.preventDefault();\n this.moveDown();\n } else if (isKeyEnter(e)) {\n if (this.highlighted && this.highlighted.props.onClick) {\n this.highlighted.props.onClick(e);\n }\n }\n };\n\n private handleScrollStateChange = (scrollState: ScrollContainerScrollState) => {\n if (this.state.scrollState !== scrollState) {\n this.setState({ scrollState });\n }\n };\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import { InternalMenuProps } from './InternalMenu';
2
+ export declare const isIconPaddingEnabled: (children: InternalMenuProps['children'], preventIconsOffset: InternalMenuProps['preventIconsOffset']) => boolean;
@@ -0,0 +1,9 @@
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.isIconPaddingEnabled = void 0;var _react = _interopRequireDefault(require("react"));
2
+
3
+
4
+
5
+ var isIconPaddingEnabled = function isIconPaddingEnabled(
6
+ children,
7
+ preventIconsOffset) {return (
8
+
9
+ Boolean(!preventIconsOffset && _react.default.Children.toArray(children).some(function (x) {return /*#__PURE__*/_react.default.isValidElement(x) && x.props.icon;})));};exports.isIconPaddingEnabled = isIconPaddingEnabled;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["isIconPaddingEnabled.ts"],"names":["isIconPaddingEnabled","children","preventIconsOffset","Boolean","React","Children","toArray","some","x","isValidElement","props","icon"],"mappings":"kKAAA;;;;AAIO,IAAMA,oBAAoB,GAAG,SAAvBA,oBAAuB;AAClCC,QADkC;AAElCC,kBAFkC;;AAIlCC,IAAAA,OAAO,CAAC,CAACD,kBAAD,IAAuBE,eAAMC,QAAN,CAAeC,OAAf,CAAuBL,QAAvB,EAAiCM,IAAjC,CAAsC,UAACC,CAAD,UAAO,4BAAMC,cAAN,CAAqBD,CAArB,KAA2BA,CAAC,CAACE,KAAF,CAAQC,IAA1C,EAAtC,CAAxB,CAJ2B,GAA7B,C","sourcesContent":["import React from 'react';\n\nimport { InternalMenuProps } from './InternalMenu';\n\nexport const isIconPaddingEnabled = (\n children: InternalMenuProps['children'],\n preventIconsOffset: InternalMenuProps['preventIconsOffset'],\n) =>\n Boolean(!preventIconsOffset && React.Children.toArray(children).some((x) => React.isValidElement(x) && x.props.icon));\n"]}
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
- export interface MenuProps {
2
+ import { InternalMenuProps } from '../InternalMenu';
3
+ export interface MenuProps extends Pick<InternalMenuProps, 'preventIconsOffset'> {
3
4
  children: React.ReactNode;
4
5
  hasShadow?: boolean;
5
6
  maxHeight?: number | string;
@@ -14,6 +14,8 @@ var _client = require("../../lib/client");
14
14
  var _createPropsGetter = require("../../lib/createPropsGetter");
15
15
  var _ThemeHelpers = require("../../lib/theming/ThemeHelpers");
16
16
 
17
+ var _isIconPaddingEnabled = require("../InternalMenu/isIconPaddingEnabled");
18
+
17
19
  var _Menu = require("./Menu.styles");
18
20
  var _isActiveElement = require("./isActiveElement");var _class, _class2, _temp;
19
21
 
@@ -168,9 +170,7 @@ Menu = (0, _decorator.responsiveLayout)(_class = (0, _rootNode2.rootNode)(_class
168
170
 
169
171
 
170
172
  getChildList = function () {
171
- var enableIconPadding = _react.default.Children.toArray(_this.props.children).some(
172
- function (x) {return /*#__PURE__*/_react.default.isValidElement(x) && x.props.icon;});
173
-
173
+ var enableIconPadding = (0, _isIconPaddingEnabled.isIconPaddingEnabled)(_this.props.children, _this.props.preventIconsOffset);
174
174
 
175
175
  return _react.default.Children.map(_this.props.children, function (child, index) {
176
176
  if (!child) {
@@ -1 +1 @@
1
- {"version":3,"sources":["Menu.tsx"],"names":["MenuDataTids","root","Menu","responsiveLayout","rootNode","getProps","defaultProps","state","highlightedIndex","unmounted","getChildList","enableIconPadding","React","Children","toArray","props","children","some","x","isValidElement","icon","map","child","index","modifiedChild","highlight","ref","refHighlighted","bind","cloneElement","onClick","select","onMouseEnter","onMouseLeave","unhighlight","refScrollContainer","scrollContainer","scrollToSelected","highlighted","HTMLElement","scrollTo","scrollToTop","scrollToBottom","setState","componentWillUnmount","render","theme","renderMain","up","move","down","enter","event","reset","hasHighlightedItem","highlightItem","isEmpty","hasShadow","maxHeight","preventWindowScroll","offsetY","top","right","bottom","isMobile","isMobileLayout","getAlignRightClass","styles","rootMobile","shadow","getStyle","setRootNode","disableScrollContainer","scrollContainerMobile","originalRef","menuItem","shouldHandleHref","item","childrenToArray","href","target","window","open","location","onItemClick","step","activeElements","filter","isActiveElement","length","indexOf","isNonNullable","Component","__KONTUR_REACT_UI__","align","width","ret","forEach","push","maxWidth","minWidth","alignRight","isIE11","alignRightIE11","alignRightIE11FixAutoWidth"],"mappings":"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","sourcesContent":["import React, { CSSProperties } from 'react';\n\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { isNonNullable } from '../../lib/utils';\nimport { ScrollContainer } from '../../components/ScrollContainer';\nimport { MenuItem, MenuItemProps } from '../../components/MenuItem';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { addIconPaddingIfPartOfMenu } from '../InternalMenu/addIconPaddingIfPartOfMenu';\nimport { isIE11 } from '../../lib/client';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\n\nimport { styles } from './Menu.styles';\nimport { isActiveElement } from './isActiveElement';\n\nexport interface MenuProps {\n children: React.ReactNode;\n hasShadow?: boolean;\n maxHeight?: number | string;\n onItemClick?: () => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n /**\n * Отключение кастомного скролла контейнера\n */\n disableScrollContainer?: boolean;\n align?: 'left' | 'right';\n}\n\nexport interface MenuState {\n highlightedIndex: number;\n}\n\nexport const MenuDataTids = {\n root: 'Menu__root',\n} as const;\n\ntype DefaultProps = Required<Pick<MenuProps, 'align' | 'width' | 'maxHeight' | 'hasShadow' | 'preventWindowScroll'>>;\n\n@responsiveLayout\n@rootNode\nexport class Menu extends React.Component<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'Menu';\n\n public static defaultProps: DefaultProps = {\n align: 'left',\n width: 'auto',\n maxHeight: 300,\n hasShadow: true,\n preventWindowScroll: true,\n };\n\n private getProps = createPropsGetter(Menu.defaultProps);\n\n public state = {\n highlightedIndex: -1,\n };\n\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private isMobileLayout!: boolean;\n private highlighted: Nullable<MenuItem>;\n private unmounted = false;\n private setRootNode!: TSetRootNode;\n\n public componentWillUnmount() {\n this.unmounted = true;\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public up() {\n this.move(-1);\n }\n\n /**\n * @public\n */\n public down() {\n this.move(1);\n }\n\n /**\n * @public\n */\n public enter(event: React.SyntheticEvent<HTMLElement>) {\n return this.select(this.state.highlightedIndex, true, event);\n }\n\n /**\n * @public\n */\n public reset() {\n this.setState({ highlightedIndex: -1 });\n }\n\n /**\n * @public\n */\n public hasHighlightedItem() {\n return this.state.highlightedIndex !== -1;\n }\n\n public highlightItem(index: number) {\n this.highlight(index);\n }\n\n private renderMain() {\n if (this.isEmpty()) {\n return null;\n }\n const { hasShadow, maxHeight, preventWindowScroll } = this.getProps();\n\n const offsetY = isTheme2022(this.theme)\n ? {\n top: 4,\n right: 0,\n bottom: 4,\n }\n : {};\n\n const isMobile = this.isMobileLayout;\n return (\n <div\n data-tid={MenuDataTids.root}\n className={cx(getAlignRightClass(this.props), {\n [styles.root(this.theme)]: true,\n [styles.rootMobile(this.theme)]: isMobile,\n [styles.shadow(this.theme)]: hasShadow && !isMobile,\n })}\n style={getStyle(this.props)}\n ref={this.setRootNode}\n >\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={maxHeight}\n preventWindowScroll={preventWindowScroll}\n disabled={this.props.disableScrollContainer}\n offsetY={offsetY}\n >\n <div\n className={cx({\n [styles.scrollContainer(this.theme)]: true,\n [styles.scrollContainerMobile(this.theme)]: isMobile,\n })}\n >\n {this.getChildList()}\n </div>\n </ScrollContainer>\n </div>\n );\n }\n\n private getChildList = () => {\n const enableIconPadding = React.Children.toArray(this.props.children).some(\n (x) => React.isValidElement(x) && x.props.icon,\n );\n\n return React.Children.map(this.props.children, (child, index) => {\n if (!child) {\n return child;\n }\n\n if (typeof child === 'string' || typeof child === 'number') {\n return child;\n }\n\n const modifiedChild = addIconPaddingIfPartOfMenu(child, enableIconPadding);\n\n if (isActiveElement(modifiedChild)) {\n const highlight = this.state.highlightedIndex === index;\n\n let ref = modifiedChild.ref;\n if (highlight && typeof modifiedChild.ref !== 'string') {\n ref = this.refHighlighted.bind(this, modifiedChild.ref);\n }\n\n return React.cloneElement<MenuItemProps, MenuItem>(modifiedChild, {\n ref,\n state: highlight ? 'hover' : modifiedChild.props.state,\n onClick: this.select.bind(this, index, false),\n onMouseEnter: this.highlight.bind(this, index),\n onMouseLeave: this.unhighlight,\n });\n }\n\n return modifiedChild;\n });\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private refHighlighted(\n originalRef: ((menuItem: MenuItem | null) => any) | React.RefObject<MenuItem> | null | undefined,\n menuItem: MenuItem | null,\n ) {\n this.highlighted = menuItem;\n\n if (typeof originalRef === 'function') {\n originalRef(menuItem);\n }\n }\n\n private scrollToSelected = () => {\n if (this.scrollContainer && this.highlighted) {\n const rootNode = getRootNode(this.highlighted);\n // TODO: Remove this check once IF-647 is resolved\n if (rootNode instanceof HTMLElement) {\n this.scrollContainer.scrollTo(rootNode);\n }\n }\n };\n\n private scrollToTop = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToTop();\n }\n };\n\n private scrollToBottom = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToBottom();\n }\n };\n\n private select(index: number, shouldHandleHref: boolean, event: React.SyntheticEvent<HTMLElement>): boolean {\n const item = childrenToArray(this.props.children)[index];\n if (isActiveElement(item)) {\n if (shouldHandleHref && item.props.href) {\n if (item.props.target) {\n window.open(item.props.href, item.props.target);\n } else {\n location.href = item.props.href;\n }\n }\n if (item.props.onClick) {\n item.props.onClick(event);\n }\n if (this.props.onItemClick) {\n this.props.onItemClick();\n }\n return true;\n }\n return false;\n }\n\n private highlight = (index: number) => {\n this.setState({ highlightedIndex: index });\n };\n\n private unhighlight = () => {\n this.setState({ highlightedIndex: -1 });\n };\n\n private move(step: number) {\n if (this.unmounted) {\n // NOTE workaround, because `ComboBox` call `process.nextTick` in reducer\n return;\n }\n\n const children = childrenToArray(this.props.children);\n const activeElements = children.filter(isActiveElement);\n if (!activeElements.length) {\n return;\n }\n let index = this.state.highlightedIndex;\n do {\n index += step;\n if (index < 0) {\n index = children.length - 1;\n } else if (index > children.length) {\n index = 0;\n }\n\n const child = children[index];\n if (isActiveElement(child)) {\n this.setState({ highlightedIndex: index }, () => {\n switch (activeElements.indexOf(child)) {\n case 0:\n this.scrollToTop();\n break;\n case activeElements.length - 1:\n this.scrollToBottom();\n break;\n default:\n this.scrollToSelected();\n }\n });\n return;\n }\n } while (index !== this.state.highlightedIndex);\n }\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n\nconst getStyle = (props: MenuProps): CSSProperties => {\n if (props.align === 'right') {\n return {\n maxWidth: props.width,\n minWidth: props.width,\n maxHeight: props.maxHeight,\n };\n }\n\n return {\n width: props.width,\n maxHeight: props.maxHeight,\n };\n};\n\nconst getAlignRightClass = (props: MenuProps) => {\n if (props.align === 'right') {\n return cx({\n [styles.alignRight()]: !isIE11,\n [styles.alignRightIE11()]: isIE11,\n [styles.alignRightIE11FixAutoWidth()]: isIE11 && props.width === 'auto',\n });\n }\n\n return null;\n};\n"]}
1
+ {"version":3,"sources":["Menu.tsx"],"names":["MenuDataTids","root","Menu","responsiveLayout","rootNode","getProps","defaultProps","state","highlightedIndex","unmounted","getChildList","enableIconPadding","props","children","preventIconsOffset","React","Children","map","child","index","modifiedChild","highlight","ref","refHighlighted","bind","cloneElement","onClick","select","onMouseEnter","onMouseLeave","unhighlight","refScrollContainer","scrollContainer","scrollToSelected","highlighted","HTMLElement","scrollTo","scrollToTop","scrollToBottom","setState","componentWillUnmount","render","theme","renderMain","up","move","down","enter","event","reset","hasHighlightedItem","highlightItem","isEmpty","hasShadow","maxHeight","preventWindowScroll","offsetY","top","right","bottom","isMobile","isMobileLayout","getAlignRightClass","styles","rootMobile","shadow","getStyle","setRootNode","disableScrollContainer","scrollContainerMobile","originalRef","menuItem","shouldHandleHref","item","childrenToArray","href","target","window","open","location","onItemClick","step","activeElements","filter","isActiveElement","length","indexOf","isNonNullable","Component","__KONTUR_REACT_UI__","align","width","ret","forEach","push","maxWidth","minWidth","alignRight","isIE11","alignRightIE11","alignRightIE11FixAutoWidth"],"mappings":"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","sourcesContent":["import React, { CSSProperties } from 'react';\n\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { isNonNullable } from '../../lib/utils';\nimport { ScrollContainer } from '../../components/ScrollContainer';\nimport { MenuItem, MenuItemProps } from '../../components/MenuItem';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { addIconPaddingIfPartOfMenu } from '../InternalMenu/addIconPaddingIfPartOfMenu';\nimport { isIE11 } from '../../lib/client';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { InternalMenuProps } from '../InternalMenu';\nimport { isIconPaddingEnabled } from '../InternalMenu/isIconPaddingEnabled';\n\nimport { styles } from './Menu.styles';\nimport { isActiveElement } from './isActiveElement';\n\nexport interface MenuProps extends Pick<InternalMenuProps, 'preventIconsOffset'> {\n children: React.ReactNode;\n hasShadow?: boolean;\n maxHeight?: number | string;\n onItemClick?: () => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n /**\n * Отключение кастомного скролла контейнера\n */\n disableScrollContainer?: boolean;\n align?: 'left' | 'right';\n}\n\nexport interface MenuState {\n highlightedIndex: number;\n}\n\nexport const MenuDataTids = {\n root: 'Menu__root',\n} as const;\n\ntype DefaultProps = Required<Pick<MenuProps, 'align' | 'width' | 'maxHeight' | 'hasShadow' | 'preventWindowScroll'>>;\n\n@responsiveLayout\n@rootNode\nexport class Menu extends React.Component<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'Menu';\n\n public static defaultProps: DefaultProps = {\n align: 'left',\n width: 'auto',\n maxHeight: 300,\n hasShadow: true,\n preventWindowScroll: true,\n };\n\n private getProps = createPropsGetter(Menu.defaultProps);\n\n public state = {\n highlightedIndex: -1,\n };\n\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private isMobileLayout!: boolean;\n private highlighted: Nullable<MenuItem>;\n private unmounted = false;\n private setRootNode!: TSetRootNode;\n\n public componentWillUnmount() {\n this.unmounted = true;\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public up() {\n this.move(-1);\n }\n\n /**\n * @public\n */\n public down() {\n this.move(1);\n }\n\n /**\n * @public\n */\n public enter(event: React.SyntheticEvent<HTMLElement>) {\n return this.select(this.state.highlightedIndex, true, event);\n }\n\n /**\n * @public\n */\n public reset() {\n this.setState({ highlightedIndex: -1 });\n }\n\n /**\n * @public\n */\n public hasHighlightedItem() {\n return this.state.highlightedIndex !== -1;\n }\n\n public highlightItem(index: number) {\n this.highlight(index);\n }\n\n private renderMain() {\n if (this.isEmpty()) {\n return null;\n }\n const { hasShadow, maxHeight, preventWindowScroll } = this.getProps();\n\n const offsetY = isTheme2022(this.theme)\n ? {\n top: 4,\n right: 0,\n bottom: 4,\n }\n : {};\n\n const isMobile = this.isMobileLayout;\n return (\n <div\n data-tid={MenuDataTids.root}\n className={cx(getAlignRightClass(this.props), {\n [styles.root(this.theme)]: true,\n [styles.rootMobile(this.theme)]: isMobile,\n [styles.shadow(this.theme)]: hasShadow && !isMobile,\n })}\n style={getStyle(this.props)}\n ref={this.setRootNode}\n >\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={maxHeight}\n preventWindowScroll={preventWindowScroll}\n disabled={this.props.disableScrollContainer}\n offsetY={offsetY}\n >\n <div\n className={cx({\n [styles.scrollContainer(this.theme)]: true,\n [styles.scrollContainerMobile(this.theme)]: isMobile,\n })}\n >\n {this.getChildList()}\n </div>\n </ScrollContainer>\n </div>\n );\n }\n\n private getChildList = () => {\n const enableIconPadding = isIconPaddingEnabled(this.props.children, this.props.preventIconsOffset);\n\n return React.Children.map(this.props.children, (child, index) => {\n if (!child) {\n return child;\n }\n\n if (typeof child === 'string' || typeof child === 'number') {\n return child;\n }\n\n const modifiedChild = addIconPaddingIfPartOfMenu(child, enableIconPadding);\n\n if (isActiveElement(modifiedChild)) {\n const highlight = this.state.highlightedIndex === index;\n\n let ref = modifiedChild.ref;\n if (highlight && typeof modifiedChild.ref !== 'string') {\n ref = this.refHighlighted.bind(this, modifiedChild.ref);\n }\n\n return React.cloneElement<MenuItemProps, MenuItem>(modifiedChild, {\n ref,\n state: highlight ? 'hover' : modifiedChild.props.state,\n onClick: this.select.bind(this, index, false),\n onMouseEnter: this.highlight.bind(this, index),\n onMouseLeave: this.unhighlight,\n });\n }\n\n return modifiedChild;\n });\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private refHighlighted(\n originalRef: ((menuItem: MenuItem | null) => any) | React.RefObject<MenuItem> | null | undefined,\n menuItem: MenuItem | null,\n ) {\n this.highlighted = menuItem;\n\n if (typeof originalRef === 'function') {\n originalRef(menuItem);\n }\n }\n\n private scrollToSelected = () => {\n if (this.scrollContainer && this.highlighted) {\n const rootNode = getRootNode(this.highlighted);\n // TODO: Remove this check once IF-647 is resolved\n if (rootNode instanceof HTMLElement) {\n this.scrollContainer.scrollTo(rootNode);\n }\n }\n };\n\n private scrollToTop = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToTop();\n }\n };\n\n private scrollToBottom = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToBottom();\n }\n };\n\n private select(index: number, shouldHandleHref: boolean, event: React.SyntheticEvent<HTMLElement>): boolean {\n const item = childrenToArray(this.props.children)[index];\n if (isActiveElement(item)) {\n if (shouldHandleHref && item.props.href) {\n if (item.props.target) {\n window.open(item.props.href, item.props.target);\n } else {\n location.href = item.props.href;\n }\n }\n if (item.props.onClick) {\n item.props.onClick(event);\n }\n if (this.props.onItemClick) {\n this.props.onItemClick();\n }\n return true;\n }\n return false;\n }\n\n private highlight = (index: number) => {\n this.setState({ highlightedIndex: index });\n };\n\n private unhighlight = () => {\n this.setState({ highlightedIndex: -1 });\n };\n\n private move(step: number) {\n if (this.unmounted) {\n // NOTE workaround, because `ComboBox` call `process.nextTick` in reducer\n return;\n }\n\n const children = childrenToArray(this.props.children);\n const activeElements = children.filter(isActiveElement);\n if (!activeElements.length) {\n return;\n }\n let index = this.state.highlightedIndex;\n do {\n index += step;\n if (index < 0) {\n index = children.length - 1;\n } else if (index > children.length) {\n index = 0;\n }\n\n const child = children[index];\n if (isActiveElement(child)) {\n this.setState({ highlightedIndex: index }, () => {\n switch (activeElements.indexOf(child)) {\n case 0:\n this.scrollToTop();\n break;\n case activeElements.length - 1:\n this.scrollToBottom();\n break;\n default:\n this.scrollToSelected();\n }\n });\n return;\n }\n } while (index !== this.state.highlightedIndex);\n }\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n\nconst getStyle = (props: MenuProps): CSSProperties => {\n if (props.align === 'right') {\n return {\n maxWidth: props.width,\n minWidth: props.width,\n maxHeight: props.maxHeight,\n };\n }\n\n return {\n width: props.width,\n maxHeight: props.maxHeight,\n };\n};\n\nconst getAlignRightClass = (props: MenuProps) => {\n if (props.align === 'right') {\n return cx({\n [styles.alignRight()]: !isIE11,\n [styles.alignRightIE11()]: isIE11,\n [styles.alignRightIE11FixAutoWidth()]: isIE11 && props.width === 'auto',\n });\n }\n\n return null;\n};\n"]}
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import { HTMLProps } from '../../typings/html';
3
+ import { InternalMenuProps } from '../InternalMenu';
3
4
  import { PopupPositionsType } from '../Popup';
4
5
  import { CommonProps } from '../../internal/CommonWrapper';
5
6
  export interface PopupMenuCaptionProps {
@@ -8,7 +9,7 @@ export interface PopupMenuCaptionProps {
8
9
  closeMenu: (restoreFocus?: boolean) => void;
9
10
  toggleMenu: () => void;
10
11
  }
11
- export interface PopupMenuProps extends CommonProps {
12
+ export interface PopupMenuProps extends CommonProps, Pick<InternalMenuProps, 'preventIconsOffset'> {
12
13
  children?: React.ReactNode;
13
14
  /** Максимальная высота меню */
14
15
  menuMaxHeight?: number | string;
@@ -178,6 +178,7 @@ PopupMenu = (0, _rootNode.rootNode)(_class = (0, _decorator.responsiveLayout)(_c
178
178
 
179
179
 
180
180
 
181
+
181
182
 
182
183
 
183
184
  open = function () {return _this.showMenu();};_this.
@@ -332,4 +333,4 @@ PopupMenu = (0, _rootNode.rootNode)(_class = (0, _decorator.responsiveLayout)(_c
332
333
 
333
334
  var restoreFocus = event.type === 'keydown';
334
335
  _this.hideMenu(restoreFocus);
335
- };return _this;}var _proto = PopupMenu.prototype;_proto.render = function render() {var _this$getProps = this.getProps(),popupHasPin = _this$getProps.popupHasPin,disableAnimations = _this$getProps.disableAnimations;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement(_RenderLayer.RenderLayer, { onClickOutside: this.hideMenuWithoutFocusing, onFocusOutside: this.hideMenuWithoutFocusing, active: this.state.menuVisible }, /*#__PURE__*/_react.default.createElement("div", { id: this.props.popupMenuId, "data-tid": PopupMenuDataTids.root, className: _PopupMenu.styles.container(), style: { width: this.props.width } }, this.renderCaption(), this.captionWrapper && this.props.children && /*#__PURE__*/_react.default.createElement(_Popup.Popup, { anchorElement: this.captionWrapper, opened: this.state.menuVisible, hasShadow: true, margin: this.props.popupMargin, hasPin: popupHasPin, pinOffset: this.props.popupPinOffset, positions: this.getPositions(), disableAnimations: disableAnimations, onOpen: this.handleOpen, mobileOnCloseRequest: this.hideMenu, width: this.isMobileLayout ? 'auto' : this.props.menuWidth || 'auto' }, /*#__PURE__*/_react.default.createElement(_InternalMenu.InternalMenu, { hasShadow: false, maxHeight: this.isMobileLayout ? 'none' : this.props.menuMaxHeight || 'none', onKeyDown: this.handleKeyDown, onItemClick: this.handleItemSelection, cyclicSelection: false, ref: this.refInternalMenu, initialSelectedItemIndex: this.state.firstItemShouldBeSelected ? 0 : -1, header: this.props.header, footer: this.props.footer }, this.props.children)))));};_proto.getPositions = function getPositions() {var positions = this.getProps().positions;if (positions && (0, _validatePositions.isValidPositions)(positions)) {return positions;}return Positions;};return PopupMenu;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'PopupMenu', _class2.defaultProps = { positions: Positions, type: PopupMenuType.Tooltip, popupHasPin: true, disableAnimations: false }, _class2.Type = PopupMenuType, _temp)) || _class) || _class;exports.PopupMenu = PopupMenu;
336
+ };return _this;}var _proto = PopupMenu.prototype;_proto.render = function render() {var _this$getProps = this.getProps(),popupHasPin = _this$getProps.popupHasPin,disableAnimations = _this$getProps.disableAnimations;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement(_RenderLayer.RenderLayer, { onClickOutside: this.hideMenuWithoutFocusing, onFocusOutside: this.hideMenuWithoutFocusing, active: this.state.menuVisible }, /*#__PURE__*/_react.default.createElement("div", { id: this.props.popupMenuId, "data-tid": PopupMenuDataTids.root, className: _PopupMenu.styles.container(), style: { width: this.props.width } }, this.renderCaption(), this.captionWrapper && this.props.children && /*#__PURE__*/_react.default.createElement(_Popup.Popup, { anchorElement: this.captionWrapper, opened: this.state.menuVisible, hasShadow: true, margin: this.props.popupMargin, hasPin: popupHasPin, pinOffset: this.props.popupPinOffset, positions: this.getPositions(), disableAnimations: disableAnimations, onOpen: this.handleOpen, mobileOnCloseRequest: this.hideMenu, width: this.isMobileLayout ? 'auto' : this.props.menuWidth || 'auto' }, /*#__PURE__*/_react.default.createElement(_InternalMenu.InternalMenu, { hasShadow: false, maxHeight: this.isMobileLayout ? 'none' : this.props.menuMaxHeight || 'none', onKeyDown: this.handleKeyDown, onItemClick: this.handleItemSelection, preventIconsOffset: this.props.preventIconsOffset, cyclicSelection: false, ref: this.refInternalMenu, initialSelectedItemIndex: this.state.firstItemShouldBeSelected ? 0 : -1, header: this.props.header, footer: this.props.footer }, this.props.children)))));};_proto.getPositions = function getPositions() {var positions = this.getProps().positions;if (positions && (0, _validatePositions.isValidPositions)(positions)) {return positions;}return Positions;};return PopupMenu;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'PopupMenu', _class2.defaultProps = { positions: Positions, type: PopupMenuType.Tooltip, popupHasPin: true, disableAnimations: false }, _class2.Type = PopupMenuType, _temp)) || _class) || _class;exports.PopupMenu = PopupMenu;
@@ -1 +1 @@
1
- {"version":3,"sources":["PopupMenu.tsx"],"names":["PopupMenuType","Dropdown","Tooltip","PopupMenuDataTids","root","caption","Positions","PopupMenu","rootNode","responsiveLayout","getProps","defaultProps","state","menuVisible","firstItemShouldBeSelected","captionWrapper","savedFocusableElement","menu","open","showMenu","close","hideMenu","refInternalMenu","element","handleOpen","focus","passPropsToCaption","React","cloneElement","renderCaption","props","opened","openMenu","closeMenu","toggleMenu","styles","handleCaptionClick","handleCaptionKeyDown","hideMenuWithoutFocusing","saveFocus","setState","handleChangeMenuVisible","restoreFocus","e","isKeyEnter","isKeySpace","isKeyArrowVertical","preventDefault","handleKeyDown","document","activeElement","focusShouldBeRestored","onOpen","onClose","onChangeMenuState","handleItemSelection","event","isDefaultPrevented","type","render","popupHasPin","disableAnimations","setRootNode","popupMenuId","container","width","children","popupMargin","popupPinOffset","getPositions","isMobileLayout","menuWidth","menuMaxHeight","header","footer","positions","Component","__KONTUR_REACT_UI__","Type"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { HTMLProps } from '../../typings/html';\nimport {\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { InternalMenu } from '../InternalMenu';\nimport { Popup, PopupPositionsType } from '../Popup';\nimport { RenderLayer } from '../RenderLayer';\nimport { Nullable } from '../../typings/utility-types';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { isValidPositions } from './validatePositions';\nimport { styles } from './PopupMenu.styles';\n\nexport interface PopupMenuCaptionProps {\n opened: boolean;\n openMenu: (firstItemShouldBeSelected?: boolean) => void;\n closeMenu: (restoreFocus?: boolean) => void;\n toggleMenu: () => void;\n}\n\nexport interface PopupMenuProps extends CommonProps {\n children?: React.ReactNode;\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /** Ширина контейнера и caption */\n width?: React.CSSProperties['width'];\n\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо ```caption```,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: React.ReactNode | ((props: PopupMenuCaptionProps) => React.ReactNode);\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n /** Массив разрешенных положений меню относительно caption'а. */\n positions?: PopupPositionsType[];\n /** Колбэк, вызываемый после открытия/закрытия меню */\n onChangeMenuState?: (isOpened: boolean, restoreFocus: boolean) => void;\n /** Пропсы, передающиеся в Popup */\n popupHasPin?: boolean;\n popupMargin?: number;\n popupPinOffset?: number;\n type?: 'dropdown' | 'tooltip';\n disableAnimations?: boolean;\n /** Действие при открытии меню */\n onOpen?: () => void;\n /** Действие при закрытии меню */\n onClose?: () => void;\n /**\n * Позволяет задать `id` выпадающему меню.\n *\n * Это может пригодиться при реализации a11y. Например, для того, чтобы связать `aria-controls` с выпадающим меню.\n */\n popupMenuId?: HTMLProps['id'];\n}\n\ninterface PopupMenuState {\n menuVisible: boolean;\n firstItemShouldBeSelected?: boolean;\n}\n\nexport const PopupMenuType = {\n Dropdown: 'dropdown',\n Tooltip: 'tooltip',\n} as const;\n\nexport const PopupMenuDataTids = {\n root: 'PopupMenu__root',\n caption: 'PopupMenu__caption',\n} as const;\n\nconst Positions: PopupPositionsType[] = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right middle',\n 'right bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n 'left top',\n 'left middle',\n 'left bottom',\n];\n\ntype DefaultProps = Required<Pick<PopupMenuProps, 'positions' | 'type' | 'popupHasPin' | 'disableAnimations'>>;\n\n@rootNode\n@responsiveLayout\nexport class PopupMenu extends React.Component<PopupMenuProps, PopupMenuState> {\n public static __KONTUR_REACT_UI__ = 'PopupMenu';\n\n private isMobileLayout!: boolean;\n\n public static defaultProps: DefaultProps = {\n positions: Positions,\n type: PopupMenuType.Tooltip,\n popupHasPin: true,\n disableAnimations: false,\n };\n\n private getProps = createPropsGetter(PopupMenu.defaultProps);\n\n public static Type = PopupMenuType;\n\n public state = {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n };\n\n private captionWrapper: HTMLSpanElement | null = null;\n private savedFocusableElement: HTMLElement | null = null;\n private menu: Nullable<InternalMenu> = null;\n private setRootNode!: TSetRootNode;\n\n public render() {\n const { popupHasPin, disableAnimations } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer\n onClickOutside={this.hideMenuWithoutFocusing}\n onFocusOutside={this.hideMenuWithoutFocusing}\n active={this.state.menuVisible}\n >\n <div\n id={this.props.popupMenuId}\n data-tid={PopupMenuDataTids.root}\n className={styles.container()}\n style={{ width: this.props.width }}\n >\n {this.renderCaption()}\n {this.captionWrapper && this.props.children && (\n <Popup\n anchorElement={this.captionWrapper}\n opened={this.state.menuVisible}\n hasShadow\n margin={this.props.popupMargin}\n hasPin={popupHasPin}\n pinOffset={this.props.popupPinOffset}\n positions={this.getPositions()}\n disableAnimations={disableAnimations}\n onOpen={this.handleOpen}\n mobileOnCloseRequest={this.hideMenu}\n width={this.isMobileLayout ? 'auto' : this.props.menuWidth || 'auto'}\n >\n <InternalMenu\n hasShadow={false}\n maxHeight={this.isMobileLayout ? 'none' : this.props.menuMaxHeight || 'none'}\n onKeyDown={this.handleKeyDown}\n onItemClick={this.handleItemSelection}\n cyclicSelection={false}\n ref={this.refInternalMenu}\n initialSelectedItemIndex={this.state.firstItemShouldBeSelected ? 0 : -1}\n header={this.props.header}\n footer={this.props.footer}\n >\n {this.props.children}\n </InternalMenu>\n </Popup>\n )}\n </div>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n public open = (): void => this.showMenu();\n public close = (): void => this.hideMenu();\n\n private refInternalMenu = (element: Nullable<InternalMenu>) => (this.menu = element);\n\n private handleOpen = () => {\n if (this.menu) {\n this.menu.focus();\n }\n };\n\n private passPropsToCaption = (caption: React.ReactNode) => {\n if (typeof caption === 'string' || typeof caption === 'number') {\n return caption;\n }\n\n return React.cloneElement(caption as React.ReactElement, { 'aria-haspopup': true });\n };\n\n private renderCaption = () => {\n if (typeof this.props.caption === 'function') {\n const caption = this.props.caption({\n opened: this.state.menuVisible,\n openMenu: this.showMenu,\n closeMenu: this.hideMenu,\n toggleMenu: this.toggleMenu,\n });\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n className={styles.caption()}\n ref={(element) => (this.captionWrapper = element)}\n >\n {this.passPropsToCaption(caption)}\n </span>\n );\n }\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n onClick={this.handleCaptionClick}\n onKeyDown={this.handleCaptionKeyDown}\n ref={(element) => (this.captionWrapper = element)}\n className={styles.caption()}\n >\n {this.passPropsToCaption(this.props.caption)}\n </span>\n );\n };\n\n private hideMenuWithoutFocusing = () => this.hideMenu();\n\n private getPositions(): Readonly<PopupPositionsType[]> {\n const positions = this.getProps().positions;\n if (positions && isValidPositions(positions)) {\n return positions;\n }\n\n return Positions;\n }\n\n private showMenu = (firstItemShouldBeSelected?: boolean): void => {\n this.saveFocus();\n this.setState(\n {\n menuVisible: true,\n firstItemShouldBeSelected,\n },\n () => {\n this.handleChangeMenuVisible(false);\n },\n );\n };\n\n private hideMenu = (restoreFocus?: boolean): void => {\n this.setState(\n {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n },\n () => {\n this.handleChangeMenuVisible(!!restoreFocus);\n },\n );\n };\n\n private toggleMenu = (): void => {\n this.state.menuVisible ? this.hideMenu() : this.showMenu();\n };\n\n private handleCaptionClick = (): void => {\n this.toggleMenu();\n };\n\n private handleCaptionKeyDown = (e: React.KeyboardEvent<HTMLElement>): void => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n this.showMenu(true);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEscape(e)) {\n const restoreFocus = true;\n this.hideMenu(restoreFocus);\n }\n };\n\n private saveFocus = (): void => {\n if (document) {\n this.savedFocusableElement = document.activeElement as HTMLElement;\n }\n };\n\n private restoreFocus = (): void => {\n if (this.savedFocusableElement) {\n this.savedFocusableElement.focus();\n this.savedFocusableElement = null;\n }\n };\n\n private handleChangeMenuVisible = (focusShouldBeRestored: boolean): void => {\n if (focusShouldBeRestored) {\n this.restoreFocus();\n }\n\n if (this.state.menuVisible && this.props.onOpen) {\n this.props.onOpen();\n }\n\n if (!this.state.menuVisible && this.props.onClose) {\n this.props.onClose();\n }\n\n if (typeof this.props.onChangeMenuState === 'function') {\n this.props.onChangeMenuState(this.state.menuVisible, focusShouldBeRestored);\n }\n };\n\n private handleItemSelection = (event: React.SyntheticEvent<HTMLElement>): void => {\n if (event.isDefaultPrevented()) {\n return;\n }\n\n if (event.type === 'keydown') {\n event.preventDefault();\n }\n\n const restoreFocus = event.type === 'keydown';\n this.hideMenu(restoreFocus);\n };\n}\n"]}
1
+ {"version":3,"sources":["PopupMenu.tsx"],"names":["PopupMenuType","Dropdown","Tooltip","PopupMenuDataTids","root","caption","Positions","PopupMenu","rootNode","responsiveLayout","getProps","defaultProps","state","menuVisible","firstItemShouldBeSelected","captionWrapper","savedFocusableElement","menu","open","showMenu","close","hideMenu","refInternalMenu","element","handleOpen","focus","passPropsToCaption","React","cloneElement","renderCaption","props","opened","openMenu","closeMenu","toggleMenu","styles","handleCaptionClick","handleCaptionKeyDown","hideMenuWithoutFocusing","saveFocus","setState","handleChangeMenuVisible","restoreFocus","e","isKeyEnter","isKeySpace","isKeyArrowVertical","preventDefault","handleKeyDown","document","activeElement","focusShouldBeRestored","onOpen","onClose","onChangeMenuState","handleItemSelection","event","isDefaultPrevented","type","render","popupHasPin","disableAnimations","setRootNode","popupMenuId","container","width","children","popupMargin","popupPinOffset","getPositions","isMobileLayout","menuWidth","menuMaxHeight","preventIconsOffset","header","footer","positions","Component","__KONTUR_REACT_UI__","Type"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { HTMLProps } from '../../typings/html';\nimport {\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { InternalMenu, InternalMenuProps } from '../InternalMenu';\nimport { Popup, PopupPositionsType } from '../Popup';\nimport { RenderLayer } from '../RenderLayer';\nimport { Nullable } from '../../typings/utility-types';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { isValidPositions } from './validatePositions';\nimport { styles } from './PopupMenu.styles';\n\nexport interface PopupMenuCaptionProps {\n opened: boolean;\n openMenu: (firstItemShouldBeSelected?: boolean) => void;\n closeMenu: (restoreFocus?: boolean) => void;\n toggleMenu: () => void;\n}\n\nexport interface PopupMenuProps extends CommonProps, Pick<InternalMenuProps, 'preventIconsOffset'> {\n children?: React.ReactNode;\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /** Ширина контейнера и caption */\n width?: React.CSSProperties['width'];\n\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо ```caption```,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: React.ReactNode | ((props: PopupMenuCaptionProps) => React.ReactNode);\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n /** Массив разрешенных положений меню относительно caption'а. */\n positions?: PopupPositionsType[];\n /** Колбэк, вызываемый после открытия/закрытия меню */\n onChangeMenuState?: (isOpened: boolean, restoreFocus: boolean) => void;\n /** Пропсы, передающиеся в Popup */\n popupHasPin?: boolean;\n popupMargin?: number;\n popupPinOffset?: number;\n type?: 'dropdown' | 'tooltip';\n disableAnimations?: boolean;\n /** Действие при открытии меню */\n onOpen?: () => void;\n /** Действие при закрытии меню */\n onClose?: () => void;\n /**\n * Позволяет задать `id` выпадающему меню.\n *\n * Это может пригодиться при реализации a11y. Например, для того, чтобы связать `aria-controls` с выпадающим меню.\n */\n popupMenuId?: HTMLProps['id'];\n}\n\ninterface PopupMenuState {\n menuVisible: boolean;\n firstItemShouldBeSelected?: boolean;\n}\n\nexport const PopupMenuType = {\n Dropdown: 'dropdown',\n Tooltip: 'tooltip',\n} as const;\n\nexport const PopupMenuDataTids = {\n root: 'PopupMenu__root',\n caption: 'PopupMenu__caption',\n} as const;\n\nconst Positions: PopupPositionsType[] = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right middle',\n 'right bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n 'left top',\n 'left middle',\n 'left bottom',\n];\n\ntype DefaultProps = Required<Pick<PopupMenuProps, 'positions' | 'type' | 'popupHasPin' | 'disableAnimations'>>;\n\n@rootNode\n@responsiveLayout\nexport class PopupMenu extends React.Component<PopupMenuProps, PopupMenuState> {\n public static __KONTUR_REACT_UI__ = 'PopupMenu';\n\n private isMobileLayout!: boolean;\n\n public static defaultProps: DefaultProps = {\n positions: Positions,\n type: PopupMenuType.Tooltip,\n popupHasPin: true,\n disableAnimations: false,\n };\n\n private getProps = createPropsGetter(PopupMenu.defaultProps);\n\n public static Type = PopupMenuType;\n\n public state = {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n };\n\n private captionWrapper: HTMLSpanElement | null = null;\n private savedFocusableElement: HTMLElement | null = null;\n private menu: Nullable<InternalMenu> = null;\n private setRootNode!: TSetRootNode;\n\n public render() {\n const { popupHasPin, disableAnimations } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer\n onClickOutside={this.hideMenuWithoutFocusing}\n onFocusOutside={this.hideMenuWithoutFocusing}\n active={this.state.menuVisible}\n >\n <div\n id={this.props.popupMenuId}\n data-tid={PopupMenuDataTids.root}\n className={styles.container()}\n style={{ width: this.props.width }}\n >\n {this.renderCaption()}\n {this.captionWrapper && this.props.children && (\n <Popup\n anchorElement={this.captionWrapper}\n opened={this.state.menuVisible}\n hasShadow\n margin={this.props.popupMargin}\n hasPin={popupHasPin}\n pinOffset={this.props.popupPinOffset}\n positions={this.getPositions()}\n disableAnimations={disableAnimations}\n onOpen={this.handleOpen}\n mobileOnCloseRequest={this.hideMenu}\n width={this.isMobileLayout ? 'auto' : this.props.menuWidth || 'auto'}\n >\n <InternalMenu\n hasShadow={false}\n maxHeight={this.isMobileLayout ? 'none' : this.props.menuMaxHeight || 'none'}\n onKeyDown={this.handleKeyDown}\n onItemClick={this.handleItemSelection}\n preventIconsOffset={this.props.preventIconsOffset}\n cyclicSelection={false}\n ref={this.refInternalMenu}\n initialSelectedItemIndex={this.state.firstItemShouldBeSelected ? 0 : -1}\n header={this.props.header}\n footer={this.props.footer}\n >\n {this.props.children}\n </InternalMenu>\n </Popup>\n )}\n </div>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n public open = (): void => this.showMenu();\n public close = (): void => this.hideMenu();\n\n private refInternalMenu = (element: Nullable<InternalMenu>) => (this.menu = element);\n\n private handleOpen = () => {\n if (this.menu) {\n this.menu.focus();\n }\n };\n\n private passPropsToCaption = (caption: React.ReactNode) => {\n if (typeof caption === 'string' || typeof caption === 'number') {\n return caption;\n }\n\n return React.cloneElement(caption as React.ReactElement, { 'aria-haspopup': true });\n };\n\n private renderCaption = () => {\n if (typeof this.props.caption === 'function') {\n const caption = this.props.caption({\n opened: this.state.menuVisible,\n openMenu: this.showMenu,\n closeMenu: this.hideMenu,\n toggleMenu: this.toggleMenu,\n });\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n className={styles.caption()}\n ref={(element) => (this.captionWrapper = element)}\n >\n {this.passPropsToCaption(caption)}\n </span>\n );\n }\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n onClick={this.handleCaptionClick}\n onKeyDown={this.handleCaptionKeyDown}\n ref={(element) => (this.captionWrapper = element)}\n className={styles.caption()}\n >\n {this.passPropsToCaption(this.props.caption)}\n </span>\n );\n };\n\n private hideMenuWithoutFocusing = () => this.hideMenu();\n\n private getPositions(): Readonly<PopupPositionsType[]> {\n const positions = this.getProps().positions;\n if (positions && isValidPositions(positions)) {\n return positions;\n }\n\n return Positions;\n }\n\n private showMenu = (firstItemShouldBeSelected?: boolean): void => {\n this.saveFocus();\n this.setState(\n {\n menuVisible: true,\n firstItemShouldBeSelected,\n },\n () => {\n this.handleChangeMenuVisible(false);\n },\n );\n };\n\n private hideMenu = (restoreFocus?: boolean): void => {\n this.setState(\n {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n },\n () => {\n this.handleChangeMenuVisible(!!restoreFocus);\n },\n );\n };\n\n private toggleMenu = (): void => {\n this.state.menuVisible ? this.hideMenu() : this.showMenu();\n };\n\n private handleCaptionClick = (): void => {\n this.toggleMenu();\n };\n\n private handleCaptionKeyDown = (e: React.KeyboardEvent<HTMLElement>): void => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n this.showMenu(true);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEscape(e)) {\n const restoreFocus = true;\n this.hideMenu(restoreFocus);\n }\n };\n\n private saveFocus = (): void => {\n if (document) {\n this.savedFocusableElement = document.activeElement as HTMLElement;\n }\n };\n\n private restoreFocus = (): void => {\n if (this.savedFocusableElement) {\n this.savedFocusableElement.focus();\n this.savedFocusableElement = null;\n }\n };\n\n private handleChangeMenuVisible = (focusShouldBeRestored: boolean): void => {\n if (focusShouldBeRestored) {\n this.restoreFocus();\n }\n\n if (this.state.menuVisible && this.props.onOpen) {\n this.props.onOpen();\n }\n\n if (!this.state.menuVisible && this.props.onClose) {\n this.props.onClose();\n }\n\n if (typeof this.props.onChangeMenuState === 'function') {\n this.props.onChangeMenuState(this.state.menuVisible, focusShouldBeRestored);\n }\n };\n\n private handleItemSelection = (event: React.SyntheticEvent<HTMLElement>): void => {\n if (event.isDefaultPrevented()) {\n return;\n }\n\n if (event.type === 'keydown') {\n event.preventDefault();\n }\n\n const restoreFocus = event.type === 'keydown';\n this.hideMenu(restoreFocus);\n };\n}\n"]}
@@ -483,7 +483,7 @@ Theme2022 = /*#__PURE__*/function (_ref) {(0, _inheritsLoose2.default)(Theme2022
483
483
 
484
484
 
485
485
  //#endregion
486
- }]);return Theme2022;}( /*#__PURE__*/function () {function _class() {}return _class;}());exports.Theme2022 = Theme2022;Theme2022.borderColorDisabled = 'rgba(0, 0, 0, 0.08)';Theme2022.borderColorFocus = '#3d3d3d';Theme2022.bgActive = '#141414';Theme2022.linkColor = '#222222';Theme2022.linkHoverColor = '#222222';Theme2022.linkActiveColor = '#141414';Theme2022.linkSuccessColor = '#477916';Theme2022.linkSuccessHoverColor = '#3A6710';Theme2022.linkSuccessActiveColor = '#325A0C';Theme2022.linkDangerColor = '#CB3D35';Theme2022.linkDangerHoverColor = '#BA342E';Theme2022.linkDangerActiveColor = '#A92A27';Theme2022.linkGrayedColor = '#858585';Theme2022.linkGrayedHoverColor = '#292929';Theme2022.linkGrayedActiveColor = '#141414';Theme2022.linkLineBorderBottomStyle = 'solid';Theme2022.linkLineBorderBottomWidth = '1px';Theme2022.linkDisabledColor = '#858585';Theme2022.btnCheckedBg = '#3D3D3D';Theme2022.btnCheckedDisabledBg = '#ADADAD';Theme2022.btnCheckedDisabledColor = '#EBEBEB';Theme2022.btnDefaultBg = '#fff';Theme2022.btnDefaultHoverBg = '#f6f6f6';Theme2022.btnDefaultHoverBgStart = 'none';Theme2022.btnDefaultHoverBgEnd = 'none';Theme2022.btnDefaultActiveBg = '#ebebeb';Theme2022.btnDefaultBorderColor = 'rgba(0, 0, 0, 0.16);';Theme2022.btnDefaultBorderBottomColor = '';Theme2022.btnDefaultHoverBorderBottomColor = '';Theme2022.btnDefaultActiveBorderTopColor = '';Theme2022.btnPrimaryBg = '#3D3D3D';Theme2022.btnPrimaryHoverBg = '#292929';Theme2022.btnPrimaryActiveBg = '#141414';Theme2022.btnPrimaryBorderColor = '#3D3D3D';Theme2022.btnPrimaryHoverBorderColor = '#292929';Theme2022.btnPrimaryActiveBorderColor = '#141414';Theme2022.btnDisabledBg = 'rgba(0, 0, 0, 0.04)';Theme2022.btnDisabledBorderColor = 'rgba(0, 0, 0, 0.08)';Theme2022.btnBorderRadiusSmall = '8px';Theme2022.btnBorderRadiusMedium = '8px';Theme2022.btnBorderRadiusLarge = '8px';Theme2022.btnPaddingXSmall = '12px';Theme2022.btnPaddingXMedium = '16px';Theme2022.btnPaddingXLarge = '20px';Theme2022.btnIconSizeSmall = '16px';Theme2022.btnIconSizeMedium = '20px';Theme2022.btnIconSizeLarge = '24px';Theme2022.btnIconGapSmall = '4px';Theme2022.btnIconGapMedium = '6px';Theme2022.btnIconGapLarge = '8px';Theme2022.btnWithIconPaddingLeftSmall = '8px';Theme2022.btnWithIconPaddingLeftMedium = '10px';Theme2022.btnWithIconPaddingLeftLarge = '12px';Theme2022.btnLinkHoverTextDecoration = 'none';Theme2022.inputIconColor = '#858585';Theme2022.inputBorderColor = 'rgba(0, 0, 0, 0.16)';Theme2022.inputBorderColorHover = 'rgba(0, 0, 0, 0.32)';Theme2022.inputBorderRadiusSmall = '2px';Theme2022.inputBorderRadiusMedium = '2px';Theme2022.inputBorderRadiusLarge = '2px';Theme2022.inputIconGapSmall = '4px';Theme2022.inputIconGapMedium = '6px';Theme2022.inputIconGapLarge = '8px';Theme2022.inputIconSizeSmall = '16px';Theme2022.inputIconSizeMedium = '20px';Theme2022.inputIconSizeLarge = '24px';Theme2022.inputBlinkColor = 'rgba(61, 61, 61, 0.2)';Theme2022.inputDisabledBackgroundClip = 'padding-box';Theme2022.textareaBorderRadius = '2px';Theme2022.textareaBackgroundClip = 'padding-box';Theme2022.radioBulletSize = '6px';Theme2022.radioDisabledBg = '#F0F0F0';Theme2022.menuSeparatorMarginX = '8px';Theme2022.popupBorderRadius = '8px';Theme2022.popupBoxShadow = '0px 4px 16px 0px rgba(0, 0, 0, 0.08)';Theme2022.popupDropShadow = 'drop-shadow(0px 4px 16px rgba(0, 0, 0, 0.08))';Theme2022.pickerShadow = '0px 4px 16px 0px rgba(0, 0, 0, 0.08)';Theme2022.hintBgColor = 'rgba(0, 0, 0, 0.76)';Theme2022.hintBorderRadius = '8px';Theme2022.hintPaddingY = '8px';Theme2022.hintPaddingX = '8px';Theme2022.modalWindowShadow = '0px 16px 32px 0px rgba(0, 0, 0, 0.04)';Theme2022.modalBorderRadius = '16px';Theme2022.modalBodyBorderRadius = '0px';Theme2022.fixedPanelShadow = 'none';Theme2022.modalFixedPanelShadow = 'none';Theme2022.modalFooterPaddingTop = '20px';Theme2022.modalFooterPaddingBottom = '20px';Theme2022.modalFixedHeaderMarginBottom = '0px';Theme2022.modalCloseButtonClickArea = '6px';Theme2022.modalFixedFooterMarginTop = '0px';Theme2022.modalSeparatorBorderBottom = '1px solid #EBEBEB';Theme2022.modalHeaderFontWeight = '700';Theme2022.modalPaddingRight = '32px';Theme2022.modalCloseButtonPadding = '32px';Theme2022.modalCloseIconSize = '20px';Theme2022.mobileModalCloseIconSize = '20px';Theme2022.mobileModalCloseButtonRightPadding = '12px';Theme2022.mobileModalCloseButtonTopPadding = '8px';Theme2022.modalHeaderPaddingBottom = '16px';Theme2022.modalBackBg = '#000';Theme2022.modalBackOpacity = '0.16';Theme2022.fileUploaderIconColor = '#222222';Theme2022.fileUploaderDisabledIconColor = '#858585';Theme2022.fileUploaderDisabledTextColor = '#858585';Theme2022.fileUploaderDisabledLinkColor = '#858585';Theme2022.fileUploaderAfterLinkColor = '#858585';Theme2022.fileUploaderBorderRadius = '8px';Theme2022.fileUploaderLinkHoverTextDecoration = 'none';Theme2022.fileUploaderHoveredBg = 'rgba(0, 0, 0, 0.04)';Theme2022.fileUploaderDisabledBorderColor = 'rgba(0, 0, 0, 0.16)';Theme2022.fileUploaderHoveredBorderColor = 'transparent';Theme2022.fileUploaderBg = '';Theme2022.fileUploaderUploadButtonBg = '#fff';Theme2022.fileUploaderDisabledBgClip = 'padding-box';Theme2022.fileUploaderDragOverShadow = '0px 0px 0px 3px rgb(149, 149, 149), 0px 0px 0px 8px rgba(61, 61, 61, 0.2)';Theme2022.toastBg = 'rgba(0, 0, 0, 0.76)';Theme2022.toastLinkColor = '#fff';Theme2022.toastLinkBgHover = 'rgba(255, 255, 255, 0.12)';Theme2022.toastLinkBgActive = 'rgba(0, 0, 0, 0.87)';Theme2022.toastLinkTextDecorationHover = '';Theme2022.toastBorderRadius = '8px';Theme2022.toastCloseSize = '16px';Theme2022.toastClosePadding = '14px';Theme2022.tooltipBorderRadius = '8px';Theme2022.tooltipCloseBtnPadding = '4px';Theme2022.tooltipCloseBtnSide = '16px';Theme2022.tokenRemoveIconSize = '16px';Theme2022.tokenRemoveIconPaddingY = '0px';Theme2022.tokenRemoveIconPaddingX = '0px';Theme2022.tokenDefaultActive = '#323232';Theme2022.tokenBorderRadius = '2px';Theme2022.tokenPaddingY = '0px';Theme2022.tokenMarginX = '2px';Theme2022.tokenOutlineWidth = '1px';Theme2022.tokenShadowDisabled = '';Theme2022.tokenBorderColorDisabled = 'transparent';Theme2022.tokenDefaultIdleColor = '#222222';Theme2022.tokenDefaultIdleBg = 'rgba(0, 0, 0, 0.1)';Theme2022.tokenDefaultIdleBorderColor = 'rgba(0, 0, 0, 0.16)';Theme2022.tokenDefaultIdleColorHover = '#222222';Theme2022.tokenDefaultIdleBgHover = 'rgba(0, 0, 0, 0.16)';Theme2022.tokenDefaultIdleBorderColorHover = 'rgba(0, 0, 0, 0.16)';Theme2022.tokenDefaultActiveColor = '#FFFFFF';Theme2022.tokenDefaultActiveBg = '#3D3D3D';Theme2022.tokenDefaultActiveBorderColor = 'transparent';Theme2022.dateInputComponentSelectedBgColor = 'highlight';Theme2022.checkboxBorderRadius = '4px';Theme2022.checkboxCheckedBg = '#3D3D3D';Theme2022.checkboxCheckedHoverBg = '#292929';Theme2022.checkboxBgDisabled = '#F0F0F0';Theme2022.menuBorderRadius = '8px';Theme2022.menuPaddingX = '4px';Theme2022.menuOffsetY = '4px';Theme2022.menuBoxSizing = 'border-box';Theme2022.menuItemHoverBg = '#F6F6F6';Theme2022.menuItemSelectedBg = '#EBEBEB';Theme2022.menuItemBorderRadius = '6px';Theme2022.menuItemDisabledColor = '#858585';Theme2022.menuItemGap = '1px';Theme2022.menuItemCommentOpacity = '0.6';Theme2022.menuShadow = '0px 4px 16px 0px rgba(0, 0, 0, 0.08)';Theme2022.tokenInputBorderRadius = '2px';Theme2022.tokenInputPaddingY = '2px';Theme2022.tokenInputPaddingX = '2px';Theme2022.tokenInputMenuPopupBg = 'transparent';Theme2022.toggleHandleSize = '14px';Theme2022.toggleHandleLeft = '3px';Theme2022.toggleHandleTop = '3px';Theme2022.toggleHandleActiveWidthIncrement = '0px';Theme2022.toggleBgChecked = '#3D3D3D';Theme2022.toggleBgHover = '#3D3D3D';Theme2022.toggleCheckedBg = '#fff';Theme2022.toggleCheckedBgHover = '#fff';Theme2022.toggleContainerBg = '#FFFFFF';Theme2022.toggleContainerBoxShadow = 'inset 0 0 0 1px rgba(0, 0, 0, 0.16)';Theme2022.toggleHandleBg = '#FFFFFF';Theme2022.toggleHandleBoxShadow = '0 0 0 1px rgba(0, 0, 0, 0.16)';Theme2022.toggleContainerBgHover = '#F0F0F0';Theme2022.toggleContainerBoxShadowHover = 'inset 0 0 0 1px rgba(0, 0, 0, 0.16)';Theme2022.toggleHandleBgHover = '#FFFFFF';Theme2022.toggleHandleBoxShadowHover = '0 0 0 1px rgba(0, 0, 0, 0.16)';Theme2022.toggleContainerBgChecked = '#3D3D3D';Theme2022.toggleContainerBoxShadowChecked = 'none';Theme2022.toggleHandleBgChecked = '#FFFFFF';Theme2022.toggleHandleBoxShadowChecked = 'none';Theme2022.toggleContainerBgCheckedHover = '#292929';Theme2022.toggleContainerBoxShadowCheckedHover = 'none';Theme2022.toggleHandleBgCheckedHover = '#F0F0F0';Theme2022.toggleHandleBoxShadowCheckedHover = 'none';Theme2022.toggleContainerBgDisabled = '#F6F6F6';Theme2022.toggleContainerBoxShadowDisabled = 'inset 0 0 0 1px rgba(0, 0, 0, 0.1)';Theme2022.toggleHandleBgDisabled = 'transparent';Theme2022.toggleHandleBoxShadowDisabled = '0 0 0 1px rgba(0, 0, 0, 0.1)';Theme2022.toggleContainerBgDisabledChecked = '#D6D6D6';Theme2022.toggleContainerBoxShadowDisabledChecked = 'none';Theme2022.toggleHandleBgDisabledChecked = '#F6F6F6';Theme2022.toggleHandleBoxShadowDisabledChecked = 'none';Theme2022.switcherBorderRadius = '8px';Theme2022.calendarCellHoverBgColor = '#f6f6f6';Theme2022.calendarCellHoverColor = '';Theme2022.calendarCellActiveHoverColor = '';Theme2022.calendarCellSelectedBgColor = '#EBEBEB';Theme2022.calendarCellTodayBorder = 'inherit';Theme2022.dateSelectMenuItemBgActive = '#f6f6f6';Theme2022.dateSelectMenuItemFontActive = '';Theme2022.dateSelectTextColorInvert = '';Theme2022.pickerBorderRadius = '8px';Theme2022.pagingPageForwardLinkMarginTop = '';Theme2022.pagingPageForwardLinkMarginLeft = '0px';Theme2022.pagingLineHeight = '22px';Theme2022.pagingPageLinkPaddingX = '12px';Theme2022.pagingPageLinkBoxSizing = 'border-box';Theme2022.pagingPageLinkHintMargin = '4px -20px 0px';Theme2022.pagingDotsColor = '#ADADAD';Theme2022.pagingDotsDisabledColor = '#ADADAD';Theme2022.pagingForwardLinkColor = '#222222';Theme2022.pagingPageLinkActiveBg = 'rgba(0, 0, 0, 0.1)';Theme2022.pagingPageLinkHoverBg = 'rgba(0, 0, 0, 0.04)';Theme2022.sidePageBgDefault = '#fff';Theme2022.sidePageFooterPaddingTop = '20px';Theme2022.sidePageFooterPaddingBottom = '20px';Theme2022.sidePageHeaderFontWeight = 'bold';Theme2022.sidePageBackingBg = '#000';Theme2022.sidePageBackingBgOpacity = '0.16';Theme2022.tabColorHover = '#D6D6D6';Theme2022.tabIndicatorBorderRadius = '2px';Theme2022.kebabSizeSmall = '24px';Theme2022.kebabSizeMedium = '32px';Theme2022.kebabSizeLarge = '40px';Theme2022.kebabIconSizeSmall = '16px';Theme2022.kebabIconSizeMedium = '20px';Theme2022.kebabIconSizeLarge = '24px';Theme2022.kebabBackgroundHover = 'rgba(0, 0, 0, 0.04)';Theme2022.kebabBackgroundActive = 'rgba(0, 0, 0, 0.08)';
486
+ }]);return Theme2022;}( /*#__PURE__*/function () {function _class() {}return _class;}());exports.Theme2022 = Theme2022;Theme2022.borderColorDisabled = 'rgba(0, 0, 0, 0.08)';Theme2022.borderColorFocus = '#3d3d3d';Theme2022.bgActive = '#141414';Theme2022.linkColor = '#222222';Theme2022.linkHoverColor = '#222222';Theme2022.linkActiveColor = '#141414';Theme2022.linkSuccessColor = '#477916';Theme2022.linkSuccessHoverColor = '#3A6710';Theme2022.linkSuccessActiveColor = '#325A0C';Theme2022.linkDangerColor = '#CB3D35';Theme2022.linkDangerHoverColor = '#BA342E';Theme2022.linkDangerActiveColor = '#A92A27';Theme2022.linkGrayedColor = '#858585';Theme2022.linkGrayedHoverColor = '#292929';Theme2022.linkGrayedActiveColor = '#141414';Theme2022.linkLineBorderBottomStyle = 'solid';Theme2022.linkLineBorderBottomWidth = '1px';Theme2022.linkDisabledColor = '#858585';Theme2022.btnCheckedBg = '#3D3D3D';Theme2022.btnCheckedDisabledBg = '#ADADAD';Theme2022.btnCheckedDisabledColor = '#EBEBEB';Theme2022.btnDefaultBg = '#fff';Theme2022.btnDefaultHoverBg = '#f6f6f6';Theme2022.btnDefaultHoverBgStart = 'none';Theme2022.btnDefaultHoverBgEnd = 'none';Theme2022.btnDefaultActiveBg = '#ebebeb';Theme2022.btnDefaultBorderColor = 'rgba(0, 0, 0, 0.16);';Theme2022.btnDefaultBorderBottomColor = '';Theme2022.btnDefaultHoverBorderBottomColor = '';Theme2022.btnDefaultActiveBorderTopColor = '';Theme2022.btnPrimaryBg = '#3D3D3D';Theme2022.btnPrimaryHoverBg = '#292929';Theme2022.btnPrimaryActiveBg = '#141414';Theme2022.btnPrimaryBorderColor = '#3D3D3D';Theme2022.btnPrimaryHoverBorderColor = '#292929';Theme2022.btnPrimaryActiveBorderColor = '#141414';Theme2022.btnDisabledBg = 'rgba(0, 0, 0, 0.04)';Theme2022.btnDisabledBorderColor = 'rgba(0, 0, 0, 0.08)';Theme2022.btnBorderRadiusSmall = '8px';Theme2022.btnBorderRadiusMedium = '8px';Theme2022.btnBorderRadiusLarge = '8px';Theme2022.btnPaddingXSmall = '12px';Theme2022.btnPaddingXMedium = '16px';Theme2022.btnPaddingXLarge = '20px';Theme2022.btnIconSizeSmall = '16px';Theme2022.btnIconSizeMedium = '20px';Theme2022.btnIconSizeLarge = '24px';Theme2022.btnIconGapSmall = '4px';Theme2022.btnIconGapMedium = '6px';Theme2022.btnIconGapLarge = '8px';Theme2022.btnWithIconPaddingLeftSmall = '8px';Theme2022.btnWithIconPaddingLeftMedium = '10px';Theme2022.btnWithIconPaddingLeftLarge = '12px';Theme2022.btnLinkHoverTextDecoration = 'none';Theme2022.inputIconColor = '#858585';Theme2022.inputBorderColor = 'rgba(0, 0, 0, 0.16)';Theme2022.inputBorderColorHover = 'rgba(0, 0, 0, 0.32)';Theme2022.inputBorderRadiusSmall = '2px';Theme2022.inputBorderRadiusMedium = '2px';Theme2022.inputBorderRadiusLarge = '2px';Theme2022.inputIconGapSmall = '4px';Theme2022.inputIconGapMedium = '6px';Theme2022.inputIconGapLarge = '8px';Theme2022.inputIconSizeSmall = '16px';Theme2022.inputIconSizeMedium = '20px';Theme2022.inputIconSizeLarge = '24px';Theme2022.inputBlinkColor = 'rgba(61, 61, 61, 0.2)';Theme2022.inputDisabledBackgroundClip = 'padding-box';Theme2022.textareaBorderRadius = '2px';Theme2022.textareaBackgroundClip = 'padding-box';Theme2022.radioBulletSize = '6px';Theme2022.radioDisabledBg = '#F0F0F0';Theme2022.menuSeparatorMarginX = '8px';Theme2022.popupBorderRadius = '8px';Theme2022.popupBoxShadow = '0px 4px 16px 0px rgba(0, 0, 0, 0.08)';Theme2022.popupDropShadow = 'drop-shadow(0px 4px 16px rgba(0, 0, 0, 0.08))';Theme2022.pickerShadow = '0px 4px 16px 0px rgba(0, 0, 0, 0.08)';Theme2022.hintBgColor = 'rgba(0, 0, 0, 0.76)';Theme2022.hintBorderRadius = '8px';Theme2022.hintPaddingY = '8px';Theme2022.hintPaddingX = '8px';Theme2022.modalWindowShadow = '0px 16px 32px 0px rgba(0, 0, 0, 0.04)';Theme2022.modalBorderRadius = '16px';Theme2022.modalBodyBorderRadius = '0px';Theme2022.fixedPanelShadow = 'none';Theme2022.modalFixedPanelShadow = 'none';Theme2022.modalFooterPaddingTop = '20px';Theme2022.modalFooterPaddingBottom = '20px';Theme2022.modalFixedHeaderMarginBottom = '0px';Theme2022.modalCloseButtonClickArea = '6px';Theme2022.modalFixedFooterMarginTop = '0px';Theme2022.modalSeparatorBorderBottom = '1px solid #EBEBEB';Theme2022.modalHeaderFontWeight = '700';Theme2022.modalPaddingRight = '32px';Theme2022.modalCloseButtonPadding = '32px';Theme2022.modalCloseIconSize = '20px';Theme2022.mobileModalCloseIconSize = '20px';Theme2022.mobileModalCloseButtonRightPadding = '12px';Theme2022.mobileModalCloseButtonTopPadding = '8px';Theme2022.modalHeaderPaddingBottom = '16px';Theme2022.modalBackBg = '#000';Theme2022.modalBackOpacity = '0.16';Theme2022.fileUploaderIconColor = '#222222';Theme2022.fileUploaderDisabledIconColor = '#858585';Theme2022.fileUploaderDisabledTextColor = '#858585';Theme2022.fileUploaderDisabledLinkColor = '#858585';Theme2022.fileUploaderAfterLinkColor = '#858585';Theme2022.fileUploaderBorderRadius = '8px';Theme2022.fileUploaderLinkHoverTextDecoration = 'none';Theme2022.fileUploaderHoveredBg = 'rgba(0, 0, 0, 0.04)';Theme2022.fileUploaderDisabledBorderColor = 'rgba(0, 0, 0, 0.16)';Theme2022.fileUploaderHoveredBorderColor = 'transparent';Theme2022.fileUploaderBg = '';Theme2022.fileUploaderUploadButtonBg = '#fff';Theme2022.fileUploaderDisabledBgClip = 'padding-box';Theme2022.fileUploaderDragOverShadow = '0px 0px 0px 3px rgb(149, 149, 149), 0px 0px 0px 8px rgba(61, 61, 61, 0.2)';Theme2022.toastBg = 'rgba(0, 0, 0, 0.76)';Theme2022.toastLinkColor = '#fff';Theme2022.toastLinkBgHover = 'rgba(255, 255, 255, 0.12)';Theme2022.toastLinkBgActive = 'rgba(0, 0, 0, 0.87)';Theme2022.toastLinkTextDecorationHover = '';Theme2022.toastBorderRadius = '8px';Theme2022.toastCloseSize = '16px';Theme2022.toastClosePadding = '14px';Theme2022.tooltipBorderRadius = '8px';Theme2022.tooltipCloseBtnPadding = '4px';Theme2022.tooltipCloseBtnSide = '16px';Theme2022.tokenRemoveIconSize = '16px';Theme2022.tokenRemoveIconPaddingY = '0px';Theme2022.tokenRemoveIconPaddingX = '0px';Theme2022.tokenDefaultActive = '#323232';Theme2022.tokenBorderRadius = '2px';Theme2022.tokenPaddingY = '0px';Theme2022.tokenMarginX = '2px';Theme2022.tokenOutlineWidth = '1px';Theme2022.tokenShadowDisabled = '';Theme2022.tokenBorderColorDisabled = 'transparent';Theme2022.tokenDefaultIdleColor = '#222222';Theme2022.tokenDefaultIdleBg = 'rgba(0, 0, 0, 0.1)';Theme2022.tokenDefaultIdleBorderColor = 'rgba(0, 0, 0, 0.16)';Theme2022.tokenDefaultIdleColorHover = '#222222';Theme2022.tokenDefaultIdleBgHover = 'rgba(0, 0, 0, 0.16)';Theme2022.tokenDefaultIdleBorderColorHover = 'rgba(0, 0, 0, 0.16)';Theme2022.tokenDefaultActiveColor = '#FFFFFF';Theme2022.tokenDefaultActiveBg = '#3D3D3D';Theme2022.tokenDefaultActiveBorderColor = 'transparent';Theme2022.dateInputComponentSelectedBgColor = 'highlight';Theme2022.checkboxBorderRadius = '4px';Theme2022.checkboxCheckedBg = '#3D3D3D';Theme2022.checkboxCheckedHoverBg = '#292929';Theme2022.checkboxBgDisabled = '#F0F0F0';Theme2022.menuBorderRadius = '8px';Theme2022.menuPaddingX = '4px';Theme2022.menuOffsetY = '4px';Theme2022.menuBoxSizing = 'border-box';Theme2022.menuItemHoverBg = '#F6F6F6';Theme2022.menuItemSelectedBg = '#EBEBEB';Theme2022.menuItemBorderRadius = '6px';Theme2022.menuItemDisabledColor = '#858585';Theme2022.menuItemGap = '1px';Theme2022.menuItemCommentOpacity = '0.6';Theme2022.menuShadow = '0px 4px 16px 0px rgba(0, 0, 0, 0.08)';Theme2022.tokenInputBorderRadius = '2px';Theme2022.tokenInputPaddingY = '2px';Theme2022.tokenInputPaddingX = '2px';Theme2022.tokenInputMenuPopupBg = 'transparent';Theme2022.toggleHandleSize = '14px';Theme2022.toggleHandleLeft = '3px';Theme2022.toggleHandleTop = '3px';Theme2022.toggleHandleActiveWidthIncrement = '0px';Theme2022.toggleBgChecked = '#3D3D3D';Theme2022.toggleBgHover = '#3D3D3D';Theme2022.toggleCheckedBg = '#fff';Theme2022.toggleCheckedBgHover = '#fff';Theme2022.toggleContainerBg = '#FFFFFF';Theme2022.toggleContainerBoxShadow = 'inset 0 0 0 1px rgba(0, 0, 0, 0.16)';Theme2022.toggleHandleBg = '#FFFFFF';Theme2022.toggleHandleBoxShadow = '0 0 0 1px rgba(0, 0, 0, 0.16)';Theme2022.toggleContainerBgHover = '#F0F0F0';Theme2022.toggleContainerBoxShadowHover = 'inset 0 0 0 1px rgba(0, 0, 0, 0.16)';Theme2022.toggleHandleBgHover = '#FFFFFF';Theme2022.toggleHandleBoxShadowHover = '0 0 0 1px rgba(0, 0, 0, 0.16)';Theme2022.toggleContainerBgChecked = '#3D3D3D';Theme2022.toggleContainerBoxShadowChecked = 'none';Theme2022.toggleHandleBgChecked = '#FFFFFF';Theme2022.toggleHandleBoxShadowChecked = 'none';Theme2022.toggleContainerBgCheckedHover = '#292929';Theme2022.toggleContainerBoxShadowCheckedHover = 'none';Theme2022.toggleHandleBgCheckedHover = '#F0F0F0';Theme2022.toggleHandleBoxShadowCheckedHover = 'none';Theme2022.toggleContainerBgDisabled = '#F6F6F6';Theme2022.toggleContainerBoxShadowDisabled = 'inset 0 0 0 1px rgba(0, 0, 0, 0.1)';Theme2022.toggleHandleBgDisabled = 'transparent';Theme2022.toggleHandleBoxShadowDisabled = '0 0 0 1px rgba(0, 0, 0, 0.1)';Theme2022.toggleContainerBgDisabledChecked = '#D6D6D6';Theme2022.toggleContainerBoxShadowDisabledChecked = 'none';Theme2022.toggleHandleBgDisabledChecked = '#F6F6F6';Theme2022.toggleHandleBoxShadowDisabledChecked = 'none';Theme2022.switcherBorderRadius = '8px';Theme2022.calendarCellHoverBgColor = '#f6f6f6';Theme2022.calendarCellHoverColor = '';Theme2022.calendarCellActiveHoverColor = '';Theme2022.calendarCellSelectedBgColor = '#EBEBEB';Theme2022.calendarCellTodayBorder = '1px solid';Theme2022.dateSelectMenuItemBgActive = '#f6f6f6';Theme2022.dateSelectMenuItemFontActive = '';Theme2022.dateSelectTextColorInvert = '';Theme2022.pickerBorderRadius = '8px';Theme2022.pagingPageForwardLinkMarginTop = '';Theme2022.pagingPageForwardLinkMarginLeft = '0px';Theme2022.pagingLineHeight = '22px';Theme2022.pagingPageLinkPaddingX = '12px';Theme2022.pagingPageLinkBoxSizing = 'border-box';Theme2022.pagingPageLinkHintMargin = '4px -20px 0px';Theme2022.pagingDotsColor = '#ADADAD';Theme2022.pagingDotsDisabledColor = '#ADADAD';Theme2022.pagingForwardLinkColor = '#222222';Theme2022.pagingPageLinkActiveBg = 'rgba(0, 0, 0, 0.1)';Theme2022.pagingPageLinkHoverBg = 'rgba(0, 0, 0, 0.04)';Theme2022.sidePageBgDefault = '#fff';Theme2022.sidePageFooterPaddingTop = '20px';Theme2022.sidePageFooterPaddingBottom = '20px';Theme2022.sidePageHeaderFontWeight = 'bold';Theme2022.sidePageBackingBg = '#000';Theme2022.sidePageBackingBgOpacity = '0.16';Theme2022.tabColorHover = '#D6D6D6';Theme2022.tabIndicatorBorderRadius = '2px';Theme2022.kebabSizeSmall = '24px';Theme2022.kebabSizeMedium = '32px';Theme2022.kebabSizeLarge = '40px';Theme2022.kebabIconSizeSmall = '16px';Theme2022.kebabIconSizeMedium = '20px';Theme2022.kebabIconSizeLarge = '24px';Theme2022.kebabBackgroundHover = 'rgba(0, 0, 0, 0.04)';Theme2022.kebabBackgroundActive = 'rgba(0, 0, 0, 0.08)';
487
487
 
488
488
  var Theme2022Internal = Object.setPrototypeOf(
489
489
  (0, _ThemeHelpers.exposeGetters)(Theme2022),