@skbkontur/react-ui 4.25.1 → 4.25.2-ZIndex-several-roots.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/cjs/components/Calendar/Calendar.d.ts +0 -12
  3. package/cjs/components/Calendar/Calendar.js +0 -12
  4. package/cjs/components/Calendar/Calendar.js.map +1 -1
  5. package/cjs/components/DatePicker/DatePicker.md +10 -17
  6. package/cjs/components/Loader/Loader.md +23 -1
  7. package/cjs/components/Modal/Modal.md +39 -6
  8. package/cjs/components/RadioGroup/RadioGroup.js +10 -1
  9. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  10. package/cjs/components/Select/Select.js +2 -1
  11. package/cjs/components/Select/Select.js.map +1 -1
  12. package/cjs/components/Token/Token.js +2 -1
  13. package/cjs/components/Token/Token.js.map +1 -1
  14. package/cjs/internal/RenderContainer/RenderContainer.d.ts +2 -0
  15. package/cjs/internal/RenderContainer/RenderContainer.js +6 -3
  16. package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
  17. package/cjs/internal/RenderContainer/RenderInnerContainer.js +3 -2
  18. package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  19. package/cjs/internal/ZIndex/ZIndex.d.ts +7 -3
  20. package/cjs/internal/ZIndex/ZIndex.js +41 -3
  21. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  22. package/cjs/lib/listenFocusOutside.js +4 -2
  23. package/cjs/lib/listenFocusOutside.js.map +1 -1
  24. package/cjs/lib/taskWithDelayAndMinimalDuration.js +1 -0
  25. package/cjs/lib/taskWithDelayAndMinimalDuration.js.map +1 -1
  26. package/components/Calendar/Calendar/Calendar.js.map +1 -1
  27. package/components/Calendar/Calendar.d.ts +0 -12
  28. package/components/DatePicker/DatePicker.md +10 -17
  29. package/components/Loader/Loader.md +23 -1
  30. package/components/Modal/Modal.md +39 -6
  31. package/components/RadioGroup/RadioGroup/RadioGroup.js +6 -2
  32. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  33. package/components/Select/Select/Select.js +2 -1
  34. package/components/Select/Select/Select.js.map +1 -1
  35. package/components/Token/Token/Token.js +4 -1
  36. package/components/Token/Token/Token.js.map +1 -1
  37. package/internal/RenderContainer/RenderContainer/RenderContainer.js +3 -1
  38. package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
  39. package/internal/RenderContainer/RenderContainer.d.ts +2 -0
  40. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +5 -4
  41. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
  42. package/internal/ZIndex/ZIndex/ZIndex.js +55 -7
  43. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  44. package/internal/ZIndex/ZIndex.d.ts +7 -3
  45. package/lib/listenFocusOutside/listenFocusOutside.js +3 -2
  46. package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
  47. package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js +2 -0
  48. package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js.map +1 -1
  49. package/package.json +2 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["Select.tsx"],"names":["PASS_BUTTON_PROPS","disabled","error","use","size","warning","onMouseEnter","onMouseLeave","onMouseOver","SelectDataTids","root","menu","label","SelectIds","Select","SelectLocaleHelper","responsiveLayout","rootNode","state","opened","value","props","defaultValue","searchPattern","menuId","buttonElement","getProps","defaultProps","open","setState","onOpen","close","onClose","focus","getDefaultButtonParams","renderLabel","isPlaceholder","buttonParams","onClick","toggle","onKeyDown","handleKey","getSearch","styles","search","debouncedFocusInput","handleSearch","getMobileSearch","getMenuItems","isMobile","isMobileLayout","mapItems","iValue","item","i","comment","element","React","isValidElement","cloneElement","key","areValuesEqual","select","bind","renderItem","dropdownContainerGetParent","focusInput","input","refMenu","e","preventDefault","up","down","enter","menuItemsAtAnyLevel","featureFlags","highlightItem","buttonRef","getButton","button","_renderButton","renderDefaultButton","Children","only","ref","onFocus","onBlur","componentDidUpdate","_prevProps","prevState","globalObject","addEventListener","removeEventListener","render","flags","theme","ThemeFactory","create","menuOffsetY","selectMenuOffsetY","renderMain","getMenuRenderer","renderMobileMenu","renderMenu","style","width","maxWidth","undefined","rootMobile","setRootNode","getValue","getItemByValue","renderValue","placeholder","locale","getLeftIconClass","leftIconLink","leftIconLarge","leftIconMedium","leftIconSmall","params","buttonProps","align","active","labelProps","className","customUsePlaceholder","placeholderDisabled","paddingRight","getSelectIconGap","useIsCustom","icon","selectButtonContainer","_icon","arrowWrap","arrowDisabled","customUseArrow","getArrowPadding","selectIconGapLarge","selectIconGapMedium","selectIconGapSmall","arrowLeftPadding","parseFloat","hasFixedWidth","menuWidth","menuAlign","disablePortal","menuPos","maxMenuHeight","mobileMenuHeaderText","onValueChange","fn","items","pattern","toLowerCase","result","index","entry","normalizeEntry","filterItem","push","itemValue","value1","value2","Component","__KONTUR_REACT_UI__","displayName","Item","SEP","static","Array","isArray","getTextFromItem","toString","itemText","indexOf"],"mappings":"umBAAA;AACA;AACA;AACA;;AAEA;;;;;;;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;;;;;AAMA;AACA;AACA;AACA;AACA,4C;;;;;;;;;;;;;AAaA,IAAMA,iBAAiB,GAAG;AACxBC,EAAAA,QAAQ,EAAE,IADc;AAExBC,EAAAA,KAAK,EAAE,IAFiB;AAGxBC,EAAAA,GAAG,EAAE,IAHmB;AAIxBC,EAAAA,IAAI,EAAE,IAJkB;AAKxBC,EAAAA,OAAO,EAAE,IALe;;AAOxBC,EAAAA,YAAY,EAAE,IAPU;AAQxBC,EAAAA,YAAY,EAAE,IARU;AASxBC,EAAAA,WAAW,EAAE,IATW,EAA1B;;;AAYO,IAAMC,cAAc,GAAG;AAC5BC,EAAAA,IAAI,EAAE,cADsB;AAE5BC,EAAAA,IAAI,EAAE,cAFsB;AAG5BC,EAAAA,KAAK,EAAE,eAHqB,EAAvB,C;;;AAMA,IAAMC,SAAS,GAAG;AACvBF,EAAAA,IAAI,EAAEF,cAAc,CAACE,IADE,EAAlB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuHMG,M,WAHZ,wBAAO,QAAP,EAAiBC,0BAAjB,C,MAFAC,2B,eACAC,kB;;;;;;;;;;;;;;;;;;;;;;;;AA4BQC,IAAAA,K,GAA6B;AAClCC,MAAAA,MAAM,EAAE,KAD0B;AAElCC,MAAAA,KAAK,EAAE,MAAKC,KAAL,CAAWC,YAFgB;AAGlCC,MAAAA,aAAa,EAAE,EAHmB,E;;;;;;;AAU5BC,IAAAA,M,GAASX,SAAS,CAACF,IAAV,GAAiB,yB;AAC1Bc,IAAAA,a,GAA8C,I;AAC9CC,IAAAA,Q,GAAW,0CAAkBZ,MAAM,CAACa,YAAzB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCZC,IAAAA,I,GAAO,YAAM;AAClB,UAAI,CAAC,MAAKV,KAAL,CAAWC,MAAhB,EAAwB;AACtB,cAAKU,QAAL,CAAc,EAAEV,MAAM,EAAE,IAAV,EAAd;;AAEA,YAAI,MAAKE,KAAL,CAAWS,MAAf,EAAuB;AACrB,gBAAKT,KAAL,CAAWS,MAAX;AACD;AACF;AACF,K;;;;;AAKMC,IAAAA,K,GAAQ,YAAM;AACnB,UAAI,MAAKb,KAAL,CAAWC,MAAf,EAAuB;AACrB,cAAKU,QAAL,CAAc,EAAEV,MAAM,EAAE,KAAV,EAAiBI,aAAa,EAAE,EAAhC,EAAd;;AAEA,YAAI,MAAKF,KAAL,CAAWW,OAAf,EAAwB;AACtB,gBAAKX,KAAL,CAAWW,OAAX;AACD;AACF;AACF,K;;;;;AAKMC,IAAAA,K,GAAQ,YAAM;AACnB,UAAI,MAAKR,aAAL,IAAsB,MAAKA,aAAL,CAAmBQ,KAA7C,EAAoD;AAClD,cAAKR,aAAL,CAAmBQ,KAAnB;AACD;AACF,K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDOC,IAAAA,sB,GAAyB,YAAoB;AACnD,8BAAiC,MAAKC,WAAL,EAAjC,CAAQvB,KAAR,qBAAQA,KAAR,CAAewB,aAAf,qBAAeA,aAAf;;AAEA,UAAMC,YAA0B,GAAG;AACjClB,QAAAA,MAAM,EAAE,MAAKD,KAAL,CAAWC,MADc;AAEjCP,QAAAA,KAAK,EAALA,KAFiC;AAGjCwB,QAAAA,aAAa,EAAbA,aAHiC;AAIjCE,QAAAA,OAAO,EAAE,MAAKC,MAJmB;AAKjCC,QAAAA,SAAS,EAAE,MAAKC,SALiB;AAMjCrC,QAAAA,IAAI,EAAE,MAAKsB,QAAL,GAAgBtB,IANW,EAAnC;;;AASA,aAAOiC,YAAP;AACD,K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmIOK,IAAAA,S,GAAY,YAAM;AACxB;AACE,8CAAK,SAAS,EAAEC,eAAOC,MAAP,EAAhB,EAAiC,SAAS,EAAE,MAAKH,SAAjD;AACE,qCAAC,YAAD,IAAO,GAAG,EAAE,MAAKI,mBAAjB,EAAsC,aAAa,EAAE,MAAKC,YAA1D,EAAwE,KAAK,EAAC,MAA9E,GADF,CADF;;;AAKD,K;;;;;;;;;;;;;;;;;;;;AAoBOC,IAAAA,e,GAAkB,YAAM;AAC9B;AACE,qCAAC,YAAD;AACE,UAAA,SAAS,MADX;AAEE,UAAA,KAAK,EAAE,MAAK7B,KAAL,CAAWK,aAFpB;AAGE,UAAA,GAAG,EAAE,MAAKsB,mBAHZ;AAIE,UAAA,aAAa,EAAE,MAAKC,YAJtB;AAKE,UAAA,KAAK,EAAC,MALR,GADF;;;AASD,K;;AAEOE,IAAAA,Y,GAAe,UAAC5B,KAAD,EAA6B;AAClD,UAAM6B,QAAQ,GAAG,MAAKC,cAAtB;AACA,UAAM9C,IAAI,GAAG,MAAKiB,KAAL,CAAWjB,IAAxB;;AAEA,aAAO,MAAK+C,QAAL;AACL,gBAACC,MAAD,EAAiBC,IAAjB,EAAwDC,CAAxD,EAAmEC,OAAnE,EAA0G;AACxG,YAAI,uBAAWF,IAAX,CAAJ,EAAsB;AACpB,cAAMG,OAAO,GAAGH,IAAI,EAApB;;AAEA,4BAAII,eAAMC,cAAN,CAAqBF,OAArB,CAAJ,EAAmC;AACjC,gCAAOC,eAAME,YAAN,CAAmBH,OAAnB,EAA4B,EAAEI,GAAG,EAAEN,CAAP,EAAUL,QAAQ,EAARA,QAAV,EAAoB7C,IAAI,EAAJA,IAApB,EAA5B,CAAP;AACD;;AAED,iBAAO,IAAP;AACD;;AAED,0BAAIqD,eAAMC,cAAN,CAAqBL,IAArB,CAAJ,EAAgC;AAC9B,cAAI,0BAAc,UAAd,EAA0BA,IAA1B,CAAJ,EAAqC;AACnC,gCAAOI,eAAME,YAAN,CAAmBN,IAAnB,EAAyB,EAAEO,GAAG,EAAEN,CAAP,EAAUL,QAAQ,EAARA,QAAV,EAAoB7C,IAAI,EAAJA,IAApB,EAAzB,CAAP;AACD;AACD,cAAI,0BAAc,YAAd,EAA4BiD,IAA5B,CAAJ,EAAuC;AACrC,gCAAOI,eAAME,YAAN,CAAmBN,IAAnB,EAAyB,EAAEjD,IAAI,EAAJA,IAAF,EAAzB,CAAP;AACD;AACD,8BAAOqD,eAAME,YAAN,CAAmBN,IAAnB,EAAyB,EAAEO,GAAG,EAAEN,CAAP,EAAzB,CAAP;AACD;;AAED;AACE,uCAAC,kBAAD;AACE,YAAA,GAAG,EAAEA,CADP;AAEE,YAAA,KAAK,EAAE,MAAKO,cAAL,CAAoBT,MAApB,EAA4BhC,KAA5B,IAAqC,UAArC,GAAkD,IAF3D;AAGE,YAAA,OAAO,EAAE,MAAK0C,MAAL,CAAYC,IAAZ,8CAAuBX,MAAvB,CAHX;AAIE,YAAA,OAAO,EAAEG,OAJX;AAKE,YAAA,QAAQ,EAAEN,QALZ;AAME,YAAA,IAAI,EAAE,MAAK5B,KAAL,CAAWjB,IANnB;;AAQG,gBAAKsB,QAAL,GAAgBsC,UAAhB,CAA2BZ,MAA3B,EAAmCC,IAAnC,CARH,CADF;;;AAYD,OAlCI,CAAP;;AAoCD,K;;AAEOY,IAAAA,0B,GAA6B,YAAM;AACzC,aAAO,uEAAP;AACD,K;;;;AAIOC,IAAAA,U,GAAa,UAACC,KAAD,UAAkBA,KAAlB,oBAAkBA,KAAK,CAAElC,KAAP,EAAlB,E;AACbY,IAAAA,mB,GAAsB,qBAAS,MAAKqB,UAAd,C;;AAEtBE,IAAAA,O,GAAU,UAACzD,IAAD,EAAgB;AAChC,YAAKA,IAAL,GAAYA,IAAZ;AACD,K;;AAEO4B,IAAAA,M,GAAS,YAAM;AACrB,UAAI,MAAKrB,KAAL,CAAWC,MAAf,EAAuB;AACrB,cAAKY,KAAL;AACD,OAFD,MAEO;AACL,cAAKH,IAAL;AACD;AACF,K;;AAEOa,IAAAA,S,GAAY,UAAC4B,CAAD,EAAyC;AAC3D,UAAI,CAAC,MAAKnD,KAAL,CAAWC,MAAhB,EAAwB;AACtB,YAAI,6BAAWkD,CAAX,KAAiB,qCAAmBA,CAAnB,CAArB,EAA4C;AAC1CA,UAAAA,CAAC,CAACC,cAAF;AACA,gBAAK1C,IAAL;AACD;AACF,OALD,MAKO;AACL,gBAAQ,IAAR;AACE,eAAK,8BAAYyC,CAAZ,CAAL;AACE,kBAAKpC,KAAL;AACA,kBAAKF,KAAL;AACA;AACF,eAAK,+BAAasC,CAAb,CAAL;AACEA,YAAAA,CAAC,CAACC,cAAF;AACA,gBAAI,MAAK3D,IAAT,EAAe;AACb,oBAAKA,IAAL,CAAU4D,EAAV;AACD;AACD;AACF,eAAK,iCAAeF,CAAf,CAAL;AACEA,YAAAA,CAAC,CAACC,cAAF;AACA,gBAAI,MAAK3D,IAAT,EAAe;AACb,oBAAKA,IAAL,CAAU6D,IAAV;AACD;AACD;AACF,eAAK,6BAAWH,CAAX,CAAL;AACEA,YAAAA,CAAC,CAACC,cAAF,GADF,CACsB;AACpB,gBAAI,MAAK3D,IAAT,EAAe;AACb,oBAAKA,IAAL,CAAU8D,KAAV,CAAgBJ,CAAhB;AACD;AACD,kBAtBJ;;AAwBD;AACD,UAAI,MAAKhD,KAAL,CAAWmB,SAAf,EAA0B;AACxB,cAAKnB,KAAL,CAAWmB,SAAX,CAAqB6B,CAArB;AACD;AACF,K;;AAEOvB,IAAAA,Y,GAAe,UAAC1B,KAAD,EAAmB;AACxC,UAAMsD,mBAAmB,GAAG,MAAKC,YAAL,CAAkBD,mBAA9C;;AAEA,YAAK7C,QAAL,CAAc,EAAEN,aAAa,EAAEH,KAAjB,EAAd;AACA,0BAAKT,IAAL,gCAAWiE,aAAX,CAAyBF,mBAAmB,GAAG,CAAH,GAAO,CAAnD;AACD,K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DOG,IAAAA,S,GAAY,UAACrB,OAAD,EAA2C;AAC7D,YAAK/B,aAAL,GAAqB+B,OAArB;AACD,K;;AAEOsB,IAAAA,S,GAAY,UAACzC,YAAD,EAAgC;AAClD,UAAM0C,MAAM,GAAG,MAAK1D,KAAL,CAAW2D,aAAX;AACX,YAAK3D,KAAL,CAAW2D,aAAX,CAAyB3C,YAAzB,CADW;AAEX,YAAK4C,mBAAL,CAAyB5C,YAAzB,CAFJ;;AAIA,UAAMZ,aAAa,GAAGgC,eAAMyB,QAAN,CAAeC,IAAf,CAAoBJ,MAApB,CAAtB;;AAEA,aAAO,4BAAMrB,cAAN,CAAqBjC,aAArB;AACHgC,qBAAME,YAAN,CAAmBlC,aAAnB,EAAwD;AACtD2D,QAAAA,GAAG,EAAE,MAAKP,SAD4C;AAEtDQ,QAAAA,OAAO,EAAE,MAAKhE,KAAL,CAAWgE,OAFkC;AAGtDC,QAAAA,MAAM,EAAE,MAAKjE,KAAL,CAAWiE,MAHmC;AAItDlF,QAAAA,IAAI,EAAE,MAAKiB,KAAL,CAAWjB,IAJqC;AAKtD,4BAAoB,MAAKiB,KAAL,CAAW,kBAAX,CALkC;AAMtD,yBAAiB,MAAKH,KAAL,CAAWC,MAAX,GAAoB,MAApB,GAA6B,OANQ;AAOtD,yBAAiB,MAAKK,MAPgC;AAQtD,+CAAcC,aAAa,CAACJ,KAAd,CAAoB,YAApB,CAAd,oCAAmD,MAAKA,KAAL,CAAW,YAAX,CARG,EAAxD,CADG;;AAWHI,MAAAA,aAXJ;AAYD,K,oDA5eM8D,kB,GAAP,4BAA0BC,UAA1B,EAAkEC,SAAlE,EAAkG,CAChG,IAAI,CAACA,SAAS,CAACtE,MAAX,IAAqB,KAAKD,KAAL,CAAWC,MAApC,EAA4C,CAC1CuE,2BAAaC,gBAAb,+CAAaA,gBAAb,CAAgC,UAAhC,EAA4C,KAAK5D,KAAjD,EACD,CACD,IAAI0D,SAAS,CAACtE,MAAV,IAAoB,CAAC,KAAKD,KAAL,CAAWC,MAApC,EAA4C,CAC1CuE,2BAAaE,mBAAb,+CAAaA,mBAAb,CAAmC,UAAnC,EAA+C,KAAK7D,KAApD,EACD,CACF,C,QAEM8D,M,GAAP,kBAAgB,mBACd,oBACE,6BAAC,+CAAD,CAA4B,QAA5B,QACG,UAACC,KAAD,EAAW,CACV,MAAI,CAACnB,YAAL,GAAoB,qDAA2BmB,KAA3B,CAApB,CACA,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAACC,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaC,2BAAaC,MAAb,CACX,EACEC,WAAW,EAAEH,KAAK,CAACI,iBADrB,EADW,EAIXJ,KAJW,CAAb,CAMA,oBAAO,6BAAC,0BAAD,CAAc,QAAd,IAAuB,KAAK,EAAE,MAAI,CAACA,KAAnC,IAA2C,MAAI,CAACK,UAAL,EAA3C,CAAP,CACD,CATH,CADF,CAaD,CAhBH,CADF,CAoBD,C,CAED;AACF;AACA,K,QAiCUC,e,GAAR,2BAA0B,CACxB,IAAI,KAAKhF,KAAL,CAAWpB,QAAf,EAAyB,CACvB,OAAO,IAAP,CACD,CAED,IAAI,KAAKiD,cAAT,EAAyB,CACvB,OAAO,KAAKoD,gBAAL,EAAP,CACD,CAED,IAAI,KAAKpF,KAAL,CAAWC,MAAf,EAAuB,CACrB,OAAO,KAAKoF,UAAL,EAAP,CACD,CAED,OAAO,IAAP,CACD,C,QAEOH,U,GAAR,sBAAqB,SACnB,IAAM/D,YAAY,GAAG,KAAKH,sBAAL,EAArB,CACA,IAAM6C,MAAM,gBACV,6BAAC,0BAAD,CAAc,QAAd,IAAuB,KAAK,EAAE,iCAAe,KAAKgB,KAApB,EAA2B,KAAK1E,KAAhC,CAA9B,IACG,KAAKyD,SAAL,CAAezC,YAAf,CADH,CADF,CAMA,IAAMY,QAAQ,GAAG,KAAKC,cAAtB,CAEA,IAAMsD,KAAK,GAAG,EACZC,KAAK,EAAE,KAAKpF,KAAL,CAAWoF,KADN,EAEZC,QAAQ,EAAE,KAAKrF,KAAL,CAAWqF,QAAX,IAAuBC,SAFrB,EAAd,CAKA,IAAMjG,IAAI,gBACR,uCACE,YAAUD,cAAc,CAACC,IAD3B,EAEE,SAAS,EAAE,gCAAMiC,eAAOjC,IAAP,EAAN,IAAsB,IAAtB,MAA6BiC,eAAOiE,UAAP,CAAkB,KAAKb,KAAvB,CAA7B,IAA6D9C,QAA7D,OAFb,EAGE,KAAK,EAAEuD,KAHT,IAKGzB,MALH,EAMG,KAAKsB,eAAL,EANH,CADF,CAWA,oBACE,6BAAC,4BAAD,2BAAe,WAAW,EAAE,KAAKQ,WAAjC,IAAkD,KAAKxF,KAAvD,gBACE,6BAAC,wBAAD,IACE,cAAc,EAAE,KAAKU,KADvB,EAEE,cAAc,EAAE,KAAKA,KAFvB,EAGE,MAAM,EAAEkB,QAAQ,GAAG,KAAH,GAAW,KAAK/B,KAAL,CAAWC,MAHxC,IAKGT,IALH,CADF,CADF,CAWD,C,QAiBOyB,W,GAAR,uBAAsB,kBACpB,IAAMf,KAAK,GAAG,KAAK0F,QAAL,EAAd,CACA,IAAMzD,IAAI,GAAG,KAAK0D,cAAL,CAAoB3F,KAApB,CAAb,CAEA,IAAI,0BAAcA,KAAd,CAAJ,EAA0B,CACxB,OAAO,EACLR,KAAK,EAAE,KAAKc,QAAL,GAAgBsF,WAAhB,CAA4B5F,KAA5B,EAAmCiC,IAAnC,CADF,EAELjB,aAAa,EAAE,KAFV,EAAP,CAID,CAED,OAAO,EACLxB,KAAK,eAAE,2CAAO,KAAKS,KAAL,CAAW4F,WAAX,qBAA0B,KAAKC,MAA/B,qBAA0B,aAAaD,WAAvC,CAAP,CADF,EAEL7E,aAAa,EAAE,IAFV,EAAP,CAID,C,QAEO+E,gB,GAAR,0BAAyB/G,IAAzB,EAAqD,CACnD,IAAI,KAAKsB,QAAL,GAAgBvB,GAAhB,KAAwB,MAA5B,EAAoC,CAClC,OAAOwC,eAAOyE,YAAP,CAAoB,KAAKrB,KAAzB,CAAP,CACD,CAED,QAAQ3F,IAAR,GACE,KAAK,OAAL,CACE,OAAOuC,eAAO0E,aAAP,CAAqB,KAAKtB,KAA1B,CAAP,CACF,KAAK,QAAL,CACE,OAAOpD,eAAO2E,cAAP,CAAsB,KAAKvB,KAA3B,CAAP,CACF,KAAK,OAAL,CACA,QACE,OAAOpD,eAAO4E,aAAP,CAAqB,KAAKxB,KAA1B,CAAP,CAPJ,CASD,C,QAEOd,mB,GAAR,6BAA4BuC,MAA5B,EAAkD,gBAChD,IAAMC,WAAwB,8BACzB,8BAAY,KAAKpG,KAAjB,EAAwBrB,iBAAxB,CADyB,IAE5B0H,KAAK,EAAE,MAFqB,EAG5BzH,QAAQ,EAAE,KAAKoB,KAAL,CAAWpB,QAHO,EAI5BwG,KAAK,EAAE,MAJqB,EAK5BnE,OAAO,EAAEkF,MAAM,CAAClF,OALY,EAM5BE,SAAS,EAAEgF,MAAM,CAAChF,SANU,EAO5BmF,MAAM,EAAEH,MAAM,CAACrG,MAPa,EAQ5Bf,IAAI,EAAEoH,MAAM,CAACpH,IARe,GAA9B,CAUA,IAAMD,GAAG,GAAG,KAAKuB,QAAL,GAAgBvB,GAA5B,CAEA,IAAMyH,UAAU,GAAG,EACjB,YAAYnH,cAAc,CAACG,KADV,EAEjBiH,SAAS,EAAE,kCACRlF,eAAO/B,KAAP,EADQ,IACST,GAAG,KAAK,MADjB,OAERwC,eAAOsE,WAAP,CAAmB,KAAKlB,KAAxB,CAFQ,IAEyByB,MAAM,CAACpF,aAFhC,OAGRO,eAAOmF,oBAAP,EAHQ,IAGwBN,MAAM,CAACpF,aAAP,IAAwBjC,GAAG,KAAK,SAHxD,OAIRwC,eAAOoF,mBAAP,CAA2B,KAAKhC,KAAhC,CAJQ,IAIiCyB,MAAM,CAACpF,aAAP,IAAwB,KAAKf,KAAL,CAAWpB,QAJpE,QAFM,EAQjBuG,KAAK,EAAE,EACLwB,YAAY,EAAE,KAAKC,gBAAL,EADT,EARU,EAAnB,CAaA,IAAMC,WAAW,GAAG/H,GAAG,KAAK,SAA5B,CAEA,IAAMgI,IAAI,GAAG,+BAAY,KAAKpC,KAAjB,iBAA0B,6BAAC,4BAAD,IAAe,IAAI,EAAE,KAAK1E,KAAL,CAAWjB,IAAhC,GAA1B,gBAAqE,6BAAC,wBAAD,OAAlF,CAEA,oBACE,6BAAC,cAAD,EAAYqH,WAAZ,eACE,sCAAK,SAAS,EAAE9E,eAAOyF,qBAAP,EAAhB,IACG,KAAK/G,KAAL,CAAWgH,KAAX,iBAAoB,sCAAK,SAAS,EAAE,KAAKlB,gBAAL,CAAsB,KAAK9F,KAAL,CAAWjB,IAAjC,CAAhB,IAAyD,KAAKiB,KAAL,CAAWgH,KAApE,CADvB,eAEE,qCAAUT,UAAV,EAAuBJ,MAAM,CAAC5G,KAA9B,CAFF,eAIE,sCACE,SAAS,EAAE,iBAAG+B,eAAO2F,SAAP,CAAiB,KAAKvC,KAAtB,CAAH,mBACRpD,eAAO4F,aAAP,CAAqB,KAAKxC,KAA1B,CADQ,IAC2B,KAAK1E,KAAL,CAAWpB,QADtC,OAER0C,eAAO6F,cAAP,EAFQ,IAEkBN,WAFlB,QADb,IAMGC,IANH,CAJF,CADF,CADF,CAiBD,C,QAEOF,gB,GAAR,4BAAmC,mBACjC,IAAMQ,eAAe,GAAG,SAAlBA,eAAkB,GAAM,CAC5B,QAAQ,MAAI,CAACpH,KAAL,CAAWjB,IAAnB,GACE,KAAK,OAAL,CACE,OAAO,MAAI,CAAC2F,KAAL,CAAW2C,kBAAlB,CACF,KAAK,QAAL,CACE,OAAO,MAAI,CAAC3C,KAAL,CAAW4C,mBAAlB,CACF,KAAK,OAAL,CACA,QACE,OAAO,MAAI,CAAC5C,KAAL,CAAW6C,kBAAlB,CAPJ,CASD,CAVD,CAWA,IAAMC,gBAAgB,GAAGC,UAAU,CAACL,eAAe,EAAhB,CAAV,IAAiC,CAA1D,CAEA,OAAOI,gBAAP,CACD,C,QAEOtC,U,GAAR,sBAAsC,CACpC,IAAM3D,MAAM,GAAG,KAAKvB,KAAL,CAAWuB,MAAX,GAAoB,KAAKF,SAAL,EAApB,GAAuC,IAAtD,CAEA,IAAMtB,KAAK,GAAG,KAAK0F,QAAL,EAAd,CACA,IAAMiC,aAAa,GAAG,CAAC,CAAC,KAAK1H,KAAL,CAAW2H,SAAb,IAA0B,KAAK3H,KAAL,CAAW2H,SAAX,KAAyB,MAAzE,CAEA,oBACE,6BAAC,oCAAD,IACE,EAAE,EAAE,KAAKxH,MADX,EAEE,YAAUf,cAAc,CAACE,IAF3B,EAGE,SAAS,EAAE,KAAKsD,0BAHlB,EAIE,KAAK,EAAE,KAAK5C,KAAL,CAAW4H,SAJpB,EAKE,aAAa,EAAE,KAAK5H,KAAL,CAAW6H,aAL5B,EAME,aAAa,EAAEH,aANjB,EAOE,OAAO,EAAE,KAAK1H,KAAL,CAAW8H,OAPtB,iBASE,6BAAC,UAAD,IACE,GAAG,EAAE,KAAK/E,OADZ,EAEE,KAAK,EAAE,KAAK/C,KAAL,CAAW2H,SAFpB,EAGE,WAAW,EAAE,KAAKjH,KAHpB,EAIE,SAAS,EAAE,KAAKV,KAAL,CAAW+H,aAJxB,EAKE,KAAK,EAAE,KAAK/H,KAAL,CAAW4H,SALpB,IAOGrG,MAPH,EAQG,KAAKI,YAAL,CAAkB5B,KAAlB,CARH,CATF,CADF,CAsBD,C,QAUOkF,gB,GAAR,4BAA4C,CAC1C,IAAM1D,MAAM,GAAG,KAAKvB,KAAL,CAAWuB,MAAX,GAAoB,KAAKG,eAAL,EAApB,GAA6C,IAA5D,CACA,IAAM3B,KAAK,GAAG,KAAK0F,QAAL,EAAd,CAEA,oBACE,6BAAC,wBAAD,IACE,oBAAoB,EAAElE,MADxB,EAEE,OAAO,EAAE,KAAKvB,KAAL,CAAWgI,oBAFtB,EAGE,cAAc,EAAE,KAAKtH,KAHvB,EAIE,MAAM,EAAE,KAAKb,KAAL,CAAWC,MAJrB,iBAME,6BAAC,UAAD,IAAM,SAAS,EAAE,KAAjB,EAAwB,WAAW,EAAE,KAAKY,KAA1C,EAAiD,sBAAsB,MAAvE,EAAwE,SAAS,EAAE,MAAnF,IACG,KAAKiB,YAAL,CAAkB5B,KAAlB,CADH,CANF,CADF,CAYD,C,QAyHO0C,M,GAAR,gBAAe1C,KAAf,EAA8B,CAC5B,KAAKa,KAAL,GACA,KAAKJ,QAAL,CAAc,EAAEV,MAAM,EAAE,KAAV,EAAiBC,KAAK,EAALA,KAAjB,EAAd,EAEA,IAAI,CAAC,KAAKyC,cAAL,CAAoB,KAAKiD,QAAL,EAApB,EAAqC1F,KAArC,CAAL,EAAkD,wCAChD,6CAAKC,KAAL,EAAWiI,aAAX,6DAA2BlI,KAA3B,EACD,CACF,C,QAEO0F,Q,GAAR,oBAAmB,CACjB,IAAI,KAAKzF,KAAL,CAAWD,KAAX,KAAqBuF,SAAzB,EAAoC,CAClC,OAAO,KAAKtF,KAAL,CAAWD,KAAlB,CACD,CACD,OAAO,KAAKF,KAAL,CAAWE,KAAlB,CACD,C,QAEO+B,Q,GAAR,kBAAiBoG,EAAjB,EAAuG,CACrG,IAAQC,KAAR,GAAkB,KAAKnI,KAAvB,CAAQmI,KAAR,CACA,IAAI,CAACA,KAAL,EAAY,CACV,OAAO,EAAP,CACD,CACD,IAAMC,OAAO,GAAG,KAAKvI,KAAL,CAAWK,aAAX,IAA4B,KAAKL,KAAL,CAAWK,aAAX,CAAyBmI,WAAzB,EAA5C,CAEA,IAAMC,MAAyB,GAAG,EAAlC,CACA,IAAIC,KAAK,GAAG,CAAZ,CACA,mEAAoBJ,KAApB,wCAA2B,KAAhBK,KAAgB,eACzB,sBAA+BC,cAAc,CAACD,KAAD,CAA7C,CAAOzI,MAAP,sBAAciC,KAAd,sBAAoBE,QAApB,sBAEA,IAAI,CAACkG,OAAD,IAAY,KAAK/H,QAAL,GAAgBqI,UAAhB,CAA2B3I,MAA3B,EAAkCiC,KAAlC,EAAwCoG,OAAxC,CAAhB,EAAkE,CAChEE,MAAM,CAACK,IAAP,CAAYT,EAAE,CAACnI,MAAD,EAAQiC,KAAR,EAAcuG,KAAd,EAAqBrG,QAArB,CAAd,EACA,EAAEqG,KAAF,CACD,CACF,CAED,OAAOD,MAAP,CACD,C,QAEO5C,c,GAAR,wBAAuB3F,KAAvB,EAAiD,CAC/C,IAAIA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKuF,SAAhC,EAA2C,CACzC,OAAO,IAAP,CACD,CAED,IAAM6C,KAAK,GAAG,KAAKnI,KAAL,CAAWmI,KAAX,IAAoB,EAAlC,CAEA,oEAAoBA,KAApB,2CAA2B,KAAhBK,KAAgB,gBACzB,uBAA0BC,cAAc,CAACD,KAAD,CAAxC,CAAOI,SAAP,uBAAkB5G,MAAlB,uBAEA,IAAI,KAAKQ,cAAL,CAAoBoG,SAApB,EAA+B7I,KAA/B,CAAJ,EAA2C,CACzC,OAAOiC,MAAP,CACD,CACF,CACD,OAAO,IAAP,CACD,C,QAEOQ,c,GAAR,wBAAuBqG,MAAvB,EAAiDC,MAAjD,EAA2E,CACzE,OAAO,0BAAcD,MAAd,KAAyB,0BAAcC,MAAd,CAAzB,IAAkD,KAAKzI,QAAL,GAAgBmC,cAAhB,CAA+BqG,MAA/B,EAAuCC,MAAvC,CAAzD,CACD,C,iBA3fkD1G,eAAM2G,S,WAC3CC,mB,GAAsB,Q,UACtBC,W,GAAc,Q,UAEd3I,Y,GAA+D,EAC3EqF,WAAW,EAAXA,WAD2E,EAE3EhD,UAAU,EAAVA,UAF2E,EAG3EH,cAAc,EAAdA,cAH2E,EAI3EkG,UAAU,EAAVA,UAJ2E,EAK3E5J,GAAG,EAAE,SALsE,EAM3EC,IAAI,EAAE,OANqE,E,UAS/DmK,I,GAAOA,U,UACPC,G,GAAM,iCAAM,6BAAC,4BAAD,OAAN,E,UAENC,M,GAAS,UAACjH,OAAD,EAA8D,CACnF,wBACE,6BAAME,cAAN,CAAqBF,OAArB,KAAiC,OAAOA,OAAP,KAAmB,UADtD,EAEE,qEAFF,EAIA,OAAOA,OAAP,CACD,C;AAigBH,SAASwD,WAAT,CAAoC5F,KAApC,EAAmDiC,IAAnD,EAA0E;AACxE,SAAOA,IAAP;AACD;;AAED,SAASW,UAAT,CAAmC5C,KAAnC,EAAkDiC,IAAlD,EAAgE;AAC9D,SAAOA,IAAP;AACD;;AAED,SAASQ,cAAT,CAAgCqG,MAAhC,EAAgDC,MAAhD,EAAgE;AAC9D,SAAOD,MAAM,KAAKC,MAAlB;AACD;;AAED,SAASL,cAAT,CAAwBD,KAAxB,EAAoC;AAClC,MAAIa,KAAK,CAACC,OAAN,CAAcd,KAAd,CAAJ,EAA0B;AACxB,WAAOA,KAAP;AACD;;AAED,SAAO,CAACA,KAAD,EAAQA,KAAR,EAAelD,SAAf,CAAP;AACD;;AAED,IAAMiE,eAAe,GAAG,SAAlBA,eAAkB,CAACvH,IAAD,EAAuB;AAC7C,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5B,WAAOA,IAAP;AACD;;AAED,MAAI,uBAAWA,IAAX,CAAJ,EAAsB;AACpB,WAAOuH,eAAe,CAACvH,IAAI,EAAL,CAAtB;AACD;;AAED,oBAAII,eAAMC,cAAN,CAAqBL,IAArB,CAAJ,EAAgC;AAC9B,WAAO,8CAAoBA,IAApB,CAAP;AACD;;AAED,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5B,WAAOA,IAAI,CAACwH,QAAL,CAAc,EAAd,CAAP;AACD;;AAED,SAAO,EAAP;AACD,CAlBD;;AAoBA,SAASd,UAAT,CAA4B3I,KAA5B,EAA2CiC,IAA3C,EAAsDoG,OAAtD,EAAuE;AACrE,MAAIpG,IAAI,KAAKvC,MAAM,CAAC0J,GAApB,EAAyB;AACvB,WAAO,KAAP;AACD;;AAED,MAAMM,QAAQ,GAAGF,eAAe,CAACvH,IAAD,CAAhC;;AAEA,MAAI,CAACyH,QAAL,EAAe;AACb,WAAO,KAAP;AACD;;AAED,SAAOA,QAAQ,CAACpB,WAAT,GAAuBqB,OAAvB,CAA+BtB,OAA/B,MAA4C,CAAC,CAApD;AACD","sourcesContent":["import React, { ReactNode, ReactPortal, AriaAttributes } from 'react';\nimport invariant from 'invariant';\nimport { globalObject } from '@skbkontur/global-object';\nimport debounce from 'lodash.debounce';\n\nimport {\n isKeyArrowDown,\n isKeyArrowUp,\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n} from '../../lib/events/keyboard/identifiers';\nimport { locale } from '../../lib/locale/decorators';\nimport { reactGetTextContent } from '../../lib/reactGetTextContent';\nimport { Button, ButtonProps, ButtonUse } from '../Button';\nimport { DropdownContainer, DropdownContainerProps } from '../../internal/DropdownContainer';\nimport { filterProps } from '../../lib/filterProps';\nimport { Input } from '../Input';\nimport { Menu } from '../../internal/Menu';\nimport { MenuItem, MenuItemProps } from '../MenuItem';\nimport { MenuSeparator } from '../MenuSeparator';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { getRandomID, isFunction, isNonNullable, isReactUINode } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { ArrowChevronDownIcon } from '../../internal/icons/16px';\nimport { MobilePopup } from '../../internal/MobilePopup';\nimport { cx } from '../../lib/theming/Emotion';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { MenuHeaderProps } from '../MenuHeader';\nimport { SizeProp } from '../../lib/types/props';\nimport {\n getFullReactUIFlagsContext,\n ReactUIFeatureFlags,\n ReactUIFeatureFlagsContext,\n} from '../../lib/featureFlagsContext';\n\nimport { ArrowDownIcon } from './ArrowDownIcon';\nimport { Item } from './Item';\nimport { SelectLocale, SelectLocaleHelper } from './locale';\nimport { styles } from './Select.styles';\nimport { getSelectTheme } from './selectTheme';\n\nexport interface ButtonParams\n extends Pick<AriaAttributes, 'aria-describedby' | 'aria-controls' | 'aria-label' | 'aria-expanded'> {\n disabled?: boolean;\n label: React.ReactNode;\n onClick: () => void;\n onKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;\n opened: boolean;\n isPlaceholder: boolean;\n size: SizeProp;\n}\n\nconst PASS_BUTTON_PROPS = {\n disabled: true,\n error: true,\n use: true,\n size: true,\n warning: true,\n\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n};\n\nexport const SelectDataTids = {\n root: 'Select__root',\n menu: 'Select__menu',\n label: 'Select__label',\n} as const;\n\nexport const SelectIds = {\n menu: SelectDataTids.menu,\n} as const;\n\ntype SelectItem<TValue, TItem> =\n | [TValue, TItem, React.ReactNode?]\n | TItem\n | TValue\n | React.ReactElement\n | (() => React.ReactElement);\n\nexport interface SelectProps<TValue, TItem>\n extends CommonProps,\n Pick<DropdownContainerProps, 'menuPos'>,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'> {\n /** @ignore */\n _icon?: React.ReactNode;\n /** @ignore */\n _renderButton?: (params: ButtonParams) => React.ReactNode;\n defaultValue?: TValue;\n /**\n * Отключает использование портала\n */\n disablePortal?: boolean;\n disabled?: boolean;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n filterItem?: (value: TValue, item: TItem, pattern: string) => boolean;\n /**\n * Набор значений. Поддерживаются любые перечисляемые типы, в том числе\n * `Array`, `Map`, `Immutable.Map`.\n *\n * Элементы воспринимаются следующим образом: если элемент — это массив, то\n * первый элемент является значением, второй — отображается в списке,\n * а третий – комментарий;\n * если элемент не является массивом, то он используется и для отображения,\n * и для значения.\n *\n * Для вставки разделителя можно использовать `Select.SEP`.\n *\n * Вставить невыделяемый элемент со своей разметкой можно так:\n * ```\n * <Select ...\n * items={[Select.static(() => <div>My Element</div>)]}\n * />\n * ```\n *\n * Чтобы добавить стандартный отступ для статического элемента:\n * ```\n * <Select.Item>My Element</Select.Item>\n * ```\n */\n items?: Array<SelectItem<TValue, TItem>>;\n maxMenuHeight?: number;\n maxWidth?: React.CSSProperties['maxWidth'];\n menuAlign?: 'left' | 'right';\n menuWidth?: React.CSSProperties['width'];\n onValueChange?: (value: TValue) => void;\n onClose?: () => void;\n onMouseEnter?: (e: React.MouseEvent<HTMLElement>) => void;\n onMouseLeave?: (e: React.MouseEvent<HTMLElement>) => void;\n onMouseOver?: (e: React.MouseEvent<HTMLElement>) => void;\n onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n onOpen?: () => void;\n placeholder?: React.ReactNode;\n /**\n * Функция для отрисовки элемента в выпадающем списке. Аргументы — *value*,\n * *item*.\n */\n renderItem?: (value: TValue, item?: TItem) => React.ReactNode;\n /**\n * Функция для отрисовки выбранного элемента. Аргументы — *value*, *item*.\n */\n renderValue?: (value: TValue, item?: TItem) => React.ReactNode;\n /**\n * Функция для сравнения `value` с элементом из `items`\n */\n areValuesEqual?: (value1: TValue, value2: TValue) => boolean;\n /**\n * Показывать строку поиска в списке.\n */\n search?: boolean;\n value?: TValue;\n width?: number | string;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n use?: ButtonUse;\n size?: SizeProp;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n /**\n * Текст заголовка выпадающего меню в мобильной версии\n */\n mobileMenuHeaderText?: string;\n}\n\nexport interface SelectState<TValue> {\n opened: boolean;\n searchPattern: string;\n value: Nullable<TValue>;\n}\n\ninterface FocusableReactElement extends React.ReactElement<any> {\n focus: (event?: any) => void;\n}\n\ntype DefaultProps<TValue, TItem> = Required<\n Pick<SelectProps<TValue, TItem>, 'renderValue' | 'renderItem' | 'areValuesEqual' | 'filterItem' | 'use' | 'size'>\n>;\n\n@responsiveLayout\n@rootNode\n@locale('Select', SelectLocaleHelper)\n// Suggested solutions break current behavior\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport class Select<TValue = {}, TItem = {}> extends React.Component<SelectProps<TValue, TItem>, SelectState<TValue>> {\n public static __KONTUR_REACT_UI__ = 'Select';\n public static displayName = 'Select';\n\n public static defaultProps: DefaultProps<unknown, ReactNode | ReactPortal> = {\n renderValue,\n renderItem,\n areValuesEqual,\n filterItem,\n use: 'default',\n size: 'small',\n };\n\n public static Item = Item;\n public static SEP = () => <MenuSeparator />;\n\n public static static = (element: React.ReactElement | (() => React.ReactElement)) => {\n invariant(\n React.isValidElement(element) || typeof element === 'function',\n 'Select.static(element) expects element to be a valid react element.',\n );\n return element;\n };\n\n public state: SelectState<TValue> = {\n opened: false,\n value: this.props.defaultValue,\n searchPattern: '',\n };\n\n private theme!: Theme;\n private isMobileLayout!: boolean;\n private readonly locale!: SelectLocale;\n private menu: Nullable<Menu>;\n private menuId = SelectIds.menu + getRandomID();\n private buttonElement: FocusableReactElement | null = null;\n private getProps = createPropsGetter(Select.defaultProps);\n private setRootNode!: TSetRootNode;\n private featureFlags!: ReactUIFeatureFlags;\n\n public componentDidUpdate(_prevProps: SelectProps<TValue, TItem>, prevState: SelectState<TValue>) {\n if (!prevState.opened && this.state.opened) {\n globalObject.addEventListener?.('popstate', this.close);\n }\n if (prevState.opened && !this.state.opened) {\n globalObject.removeEventListener?.('popstate', this.close);\n }\n }\n\n public render() {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullReactUIFlagsContext(flags);\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = ThemeFactory.create(\n {\n menuOffsetY: theme.selectMenuOffsetY,\n },\n theme,\n );\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }}\n </ReactUIFeatureFlagsContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public open = () => {\n if (!this.state.opened) {\n this.setState({ opened: true });\n\n if (this.props.onOpen) {\n this.props.onOpen();\n }\n }\n };\n\n /**\n * @public\n */\n public close = () => {\n if (this.state.opened) {\n this.setState({ opened: false, searchPattern: '' });\n\n if (this.props.onClose) {\n this.props.onClose();\n }\n }\n };\n\n /**\n * @public\n */\n public focus = () => {\n if (this.buttonElement && this.buttonElement.focus) {\n this.buttonElement.focus();\n }\n };\n\n private getMenuRenderer() {\n if (this.props.disabled) {\n return null;\n }\n\n if (this.isMobileLayout) {\n return this.renderMobileMenu();\n }\n\n if (this.state.opened) {\n return this.renderMenu();\n }\n\n return null;\n }\n\n private renderMain() {\n const buttonParams = this.getDefaultButtonParams();\n const button = (\n <ThemeContext.Provider value={getSelectTheme(this.theme, this.props)}>\n {this.getButton(buttonParams)}\n </ThemeContext.Provider>\n );\n\n const isMobile = this.isMobileLayout;\n\n const style = {\n width: this.props.width,\n maxWidth: this.props.maxWidth || undefined,\n };\n\n const root = (\n <span\n data-tid={SelectDataTids.root}\n className={cx({ [styles.root()]: true, [styles.rootMobile(this.theme)]: isMobile })}\n style={style}\n >\n {button}\n {this.getMenuRenderer()}\n </span>\n );\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer\n onClickOutside={this.close}\n onFocusOutside={this.close}\n active={isMobile ? false : this.state.opened}\n >\n {root}\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n private getDefaultButtonParams = (): ButtonParams => {\n const { label, isPlaceholder } = this.renderLabel();\n\n const buttonParams: ButtonParams = {\n opened: this.state.opened,\n label,\n isPlaceholder,\n onClick: this.toggle,\n onKeyDown: this.handleKey,\n size: this.getProps().size,\n };\n\n return buttonParams;\n };\n\n private renderLabel() {\n const value = this.getValue();\n const item = this.getItemByValue(value);\n\n if (isNonNullable(value)) {\n return {\n label: this.getProps().renderValue(value, item),\n isPlaceholder: false,\n };\n }\n\n return {\n label: <span>{this.props.placeholder || this.locale?.placeholder}</span>,\n isPlaceholder: true,\n };\n }\n\n private getLeftIconClass(size: SizeProp | undefined) {\n if (this.getProps().use === 'link') {\n return styles.leftIconLink(this.theme);\n }\n\n switch (size) {\n case 'large':\n return styles.leftIconLarge(this.theme);\n case 'medium':\n return styles.leftIconMedium(this.theme);\n case 'small':\n default:\n return styles.leftIconSmall(this.theme);\n }\n }\n\n private renderDefaultButton(params: ButtonParams) {\n const buttonProps: ButtonProps = {\n ...filterProps(this.props, PASS_BUTTON_PROPS),\n align: 'left' as React.CSSProperties['textAlign'],\n disabled: this.props.disabled,\n width: '100%',\n onClick: params.onClick,\n onKeyDown: params.onKeyDown,\n active: params.opened,\n size: params.size,\n };\n const use = this.getProps().use;\n\n const labelProps = {\n 'data-tid': SelectDataTids.label,\n className: cx({\n [styles.label()]: use !== 'link',\n [styles.placeholder(this.theme)]: params.isPlaceholder,\n [styles.customUsePlaceholder()]: params.isPlaceholder && use !== 'default',\n [styles.placeholderDisabled(this.theme)]: params.isPlaceholder && this.props.disabled,\n }),\n style: {\n paddingRight: this.getSelectIconGap(),\n },\n };\n\n const useIsCustom = use !== 'default';\n\n const icon = isTheme2022(this.theme) ? <ArrowDownIcon size={this.props.size} /> : <ArrowChevronDownIcon />;\n\n return (\n <Button {...buttonProps}>\n <div className={styles.selectButtonContainer()}>\n {this.props._icon && <div className={this.getLeftIconClass(this.props.size)}>{this.props._icon}</div>}\n <span {...labelProps}>{params.label}</span>\n\n <div\n className={cx(styles.arrowWrap(this.theme), {\n [styles.arrowDisabled(this.theme)]: this.props.disabled,\n [styles.customUseArrow()]: useIsCustom,\n })}\n >\n {icon}\n </div>\n </div>\n </Button>\n );\n }\n\n private getSelectIconGap(): number {\n const getArrowPadding = () => {\n switch (this.props.size) {\n case 'large':\n return this.theme.selectIconGapLarge;\n case 'medium':\n return this.theme.selectIconGapMedium;\n case 'small':\n default:\n return this.theme.selectIconGapSmall;\n }\n };\n const arrowLeftPadding = parseFloat(getArrowPadding()) || 0;\n\n return arrowLeftPadding;\n }\n\n private renderMenu(): React.ReactNode {\n const search = this.props.search ? this.getSearch() : null;\n\n const value = this.getValue();\n const hasFixedWidth = !!this.props.menuWidth && this.props.menuWidth !== 'auto';\n\n return (\n <DropdownContainer\n id={this.menuId}\n data-tid={SelectDataTids.menu}\n getParent={this.dropdownContainerGetParent}\n align={this.props.menuAlign}\n disablePortal={this.props.disablePortal}\n hasFixedWidth={hasFixedWidth}\n menuPos={this.props.menuPos}\n >\n <Menu\n ref={this.refMenu}\n width={this.props.menuWidth}\n onItemClick={this.close}\n maxHeight={this.props.maxMenuHeight}\n align={this.props.menuAlign}\n >\n {search}\n {this.getMenuItems(value)}\n </Menu>\n </DropdownContainer>\n );\n }\n\n private getSearch = () => {\n return (\n <div className={styles.search()} onKeyDown={this.handleKey}>\n <Input ref={this.debouncedFocusInput} onValueChange={this.handleSearch} width=\"100%\" />\n </div>\n );\n };\n\n private renderMobileMenu(): React.ReactNode {\n const search = this.props.search ? this.getMobileSearch() : null;\n const value = this.getValue();\n\n return (\n <MobilePopup\n headerChildComponent={search}\n caption={this.props.mobileMenuHeaderText}\n onCloseRequest={this.close}\n opened={this.state.opened}\n >\n <Menu hasShadow={false} onItemClick={this.close} disableScrollContainer maxHeight={'auto'}>\n {this.getMenuItems(value)}\n </Menu>\n </MobilePopup>\n );\n }\n\n private getMobileSearch = () => {\n return (\n <Input\n autoFocus\n value={this.state.searchPattern}\n ref={this.debouncedFocusInput}\n onValueChange={this.handleSearch}\n width=\"100%\"\n />\n );\n };\n\n private getMenuItems = (value: Nullable<TValue>) => {\n const isMobile = this.isMobileLayout;\n const size = this.props.size;\n\n return this.mapItems(\n (iValue: TValue, item: TItem | (() => React.ReactNode), i: number, comment: Nullable<React.ReactNode>) => {\n if (isFunction(item)) {\n const element = item();\n\n if (React.isValidElement(element)) {\n return React.cloneElement(element, { key: i, isMobile, size });\n }\n\n return null;\n }\n\n if (React.isValidElement(item)) {\n if (isReactUINode('MenuItem', item)) {\n return React.cloneElement(item, { key: i, isMobile, size } as MenuItemProps);\n }\n if (isReactUINode('MenuHeader', item)) {\n return React.cloneElement(item, { size } as MenuHeaderProps);\n }\n return React.cloneElement(item, { key: i });\n }\n\n return (\n <MenuItem\n key={i}\n state={this.areValuesEqual(iValue, value) ? 'selected' : null}\n onClick={this.select.bind(this, iValue)}\n comment={comment}\n isMobile={isMobile}\n size={this.props.size}\n >\n {this.getProps().renderItem(iValue, item)}\n </MenuItem>\n );\n },\n );\n };\n\n private dropdownContainerGetParent = () => {\n return getRootNode(this);\n };\n\n // fix cases when an Input is rendered in portal\n // https://github.com/skbkontur/retail-ui/issues/1995\n private focusInput = (input: Input) => input?.focus();\n private debouncedFocusInput = debounce(this.focusInput);\n\n private refMenu = (menu: Menu) => {\n this.menu = menu;\n };\n\n private toggle = () => {\n if (this.state.opened) {\n this.close();\n } else {\n this.open();\n }\n };\n\n private handleKey = (e: React.KeyboardEvent<HTMLElement>) => {\n if (!this.state.opened) {\n if (isKeySpace(e) || isKeyArrowVertical(e)) {\n e.preventDefault();\n this.open();\n }\n } else {\n switch (true) {\n case isKeyEscape(e):\n this.focus();\n this.close();\n break;\n case isKeyArrowUp(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.up();\n }\n break;\n case isKeyArrowDown(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.down();\n }\n break;\n case isKeyEnter(e):\n e.preventDefault(); // To prevent form submission.\n if (this.menu) {\n this.menu.enter(e);\n }\n break;\n }\n }\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n private handleSearch = (value: string) => {\n const menuItemsAtAnyLevel = this.featureFlags.menuItemsAtAnyLevel;\n\n this.setState({ searchPattern: value });\n this.menu?.highlightItem(menuItemsAtAnyLevel ? 0 : 1);\n };\n\n private select(value: TValue) {\n this.focus();\n this.setState({ opened: false, value });\n\n if (!this.areValuesEqual(this.getValue(), value)) {\n this.props.onValueChange?.(value);\n }\n }\n\n private getValue() {\n if (this.props.value !== undefined) {\n return this.props.value;\n }\n return this.state.value;\n }\n\n private mapItems(fn: (value: TValue, item: TItem, index: number, comment?: string) => React.ReactNode) {\n const { items } = this.props;\n if (!items) {\n return [];\n }\n const pattern = this.state.searchPattern && this.state.searchPattern.toLowerCase();\n\n const result: React.ReactNode[] = [];\n let index = 0;\n for (const entry of items) {\n const [value, item, comment] = normalizeEntry(entry as TItem);\n\n if (!pattern || this.getProps().filterItem(value, item, pattern)) {\n result.push(fn(value, item, index, comment));\n ++index;\n }\n }\n\n return result;\n }\n\n private getItemByValue(value?: Nullable<TValue>) {\n if (value === null || value === undefined) {\n return null;\n }\n\n const items = this.props.items || [];\n\n for (const entry of items) {\n const [itemValue, item] = normalizeEntry(entry);\n\n if (this.areValuesEqual(itemValue, value)) {\n return item;\n }\n }\n return null;\n }\n\n private areValuesEqual(value1: Nullable<TValue>, value2: Nullable<TValue>) {\n return isNonNullable(value1) && isNonNullable(value2) && this.getProps().areValuesEqual(value1, value2);\n }\n\n private buttonRef = (element: FocusableReactElement | null) => {\n this.buttonElement = element;\n };\n\n private getButton = (buttonParams: ButtonParams) => {\n const button = this.props._renderButton\n ? this.props._renderButton(buttonParams)\n : this.renderDefaultButton(buttonParams);\n\n const buttonElement = React.Children.only(button);\n\n return React.isValidElement(buttonElement)\n ? React.cloneElement(buttonElement as React.ReactElement, {\n ref: this.buttonRef,\n onFocus: this.props.onFocus,\n onBlur: this.props.onBlur,\n size: this.props.size,\n 'aria-describedby': this.props['aria-describedby'],\n 'aria-expanded': this.state.opened ? 'true' : 'false',\n 'aria-controls': this.menuId,\n 'aria-label': buttonElement.props['aria-label'] ?? this.props['aria-label'],\n })\n : buttonElement;\n };\n}\n\nfunction renderValue<TValue, TItem>(value: TValue, item: Nullable<TItem>) {\n return item;\n}\n\nfunction renderItem<TValue, TItem>(value: TValue, item?: TItem) {\n return item;\n}\n\nfunction areValuesEqual<TValue>(value1: TValue, value2: TValue) {\n return value1 === value2;\n}\n\nfunction normalizeEntry(entry: any) {\n if (Array.isArray(entry)) {\n return entry;\n }\n\n return [entry, entry, undefined];\n}\n\nconst getTextFromItem = (item: any): string => {\n if (typeof item === 'string') {\n return item;\n }\n\n if (isFunction(item)) {\n return getTextFromItem(item());\n }\n\n if (React.isValidElement(item)) {\n return reactGetTextContent(item);\n }\n\n if (typeof item === 'number') {\n return item.toString(10);\n }\n\n return '';\n};\n\nfunction filterItem<TValue>(value: TValue, item: any, pattern: string) {\n if (item === Select.SEP) {\n return false;\n }\n\n const itemText = getTextFromItem(item);\n\n if (!itemText) {\n return false;\n }\n\n return itemText.toLowerCase().indexOf(pattern) !== -1;\n}\n"]}
1
+ {"version":3,"sources":["Select.tsx"],"names":["PASS_BUTTON_PROPS","disabled","error","use","size","warning","onMouseEnter","onMouseLeave","onMouseOver","SelectDataTids","root","menu","label","SelectIds","Select","SelectLocaleHelper","responsiveLayout","rootNode","state","opened","value","props","defaultValue","searchPattern","menuId","buttonElement","getProps","defaultProps","open","setState","onOpen","close","onClose","focus","getDefaultButtonParams","renderLabel","isPlaceholder","buttonParams","onClick","toggle","onKeyDown","handleKey","getSearch","styles","search","debouncedFocusInput","handleSearch","getMobileSearch","getMenuItems","isMobile","isMobileLayout","mapItems","iValue","item","i","comment","element","React","isValidElement","cloneElement","key","areValuesEqual","select","bind","renderItem","dropdownContainerGetParent","focusInput","input","refMenu","e","preventDefault","up","down","enter","menuItemsAtAnyLevel","featureFlags","highlightItem","buttonRef","getButton","button","_renderButton","renderDefaultButton","Children","only","ref","onFocus","onBlur","componentDidUpdate","_prevProps","prevState","globalObject","addEventListener","removeEventListener","render","flags","theme","ThemeFactory","create","menuOffsetY","selectMenuOffsetY","renderMain","getMenuRenderer","renderMobileMenu","renderMenu","style","width","maxWidth","undefined","rootMobile","setRootNode","getValue","getItemByValue","renderValue","placeholder","locale","getLeftIconClass","leftIconLink","leftIconLarge","leftIconMedium","leftIconSmall","params","buttonProps","align","active","labelProps","className","customUsePlaceholder","placeholderDisabled","paddingRight","getSelectIconGap","useIsCustom","icon","selectButtonContainer","_icon","arrowWrap","arrowDisabled","customUseArrow","getArrowPadding","selectIconGapLarge","selectIconGapMedium","selectIconGapSmall","arrowLeftPadding","parseFloat","hasFixedWidth","menuWidth","menuAlign","disablePortal","menuPos","maxMenuHeight","mobileMenuHeaderText","onValueChange","fn","items","pattern","toLowerCase","result","index","entry","normalizeEntry","filterItem","push","itemValue","value1","value2","Component","__KONTUR_REACT_UI__","displayName","Item","SEP","static","Array","isArray","getTextFromItem","toString","itemText","indexOf"],"mappings":"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","sourcesContent":["import React, { ReactNode, ReactPortal, AriaAttributes } from 'react';\nimport invariant from 'invariant';\nimport { globalObject } from '@skbkontur/global-object';\nimport debounce from 'lodash.debounce';\n\nimport {\n isKeyArrowDown,\n isKeyArrowUp,\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n} from '../../lib/events/keyboard/identifiers';\nimport { locale } from '../../lib/locale/decorators';\nimport { reactGetTextContent } from '../../lib/reactGetTextContent';\nimport { Button, ButtonProps, ButtonUse } from '../Button';\nimport { DropdownContainer, DropdownContainerProps } from '../../internal/DropdownContainer';\nimport { filterProps } from '../../lib/filterProps';\nimport { Input } from '../Input';\nimport { Menu } from '../../internal/Menu';\nimport { MenuItem, MenuItemProps } from '../MenuItem';\nimport { MenuSeparator } from '../MenuSeparator';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { getRandomID, isFunction, isNonNullable, isReactUINode } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { ArrowChevronDownIcon } from '../../internal/icons/16px';\nimport { MobilePopup } from '../../internal/MobilePopup';\nimport { cx } from '../../lib/theming/Emotion';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { MenuHeaderProps } from '../MenuHeader';\nimport { SizeProp } from '../../lib/types/props';\nimport {\n getFullReactUIFlagsContext,\n ReactUIFeatureFlags,\n ReactUIFeatureFlagsContext,\n} from '../../lib/featureFlagsContext';\n\nimport { ArrowDownIcon } from './ArrowDownIcon';\nimport { Item } from './Item';\nimport { SelectLocale, SelectLocaleHelper } from './locale';\nimport { styles } from './Select.styles';\nimport { getSelectTheme } from './selectTheme';\n\nexport interface ButtonParams\n extends Pick<AriaAttributes, 'aria-describedby' | 'aria-controls' | 'aria-label' | 'aria-expanded'> {\n disabled?: boolean;\n label: React.ReactNode;\n onClick: () => void;\n onKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;\n opened: boolean;\n isPlaceholder: boolean;\n size: SizeProp;\n}\n\nconst PASS_BUTTON_PROPS = {\n disabled: true,\n error: true,\n use: true,\n size: true,\n warning: true,\n\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n};\n\nexport const SelectDataTids = {\n root: 'Select__root',\n menu: 'Select__menu',\n label: 'Select__label',\n} as const;\n\nexport const SelectIds = {\n menu: SelectDataTids.menu,\n} as const;\n\ntype SelectItem<TValue, TItem> =\n | [TValue, TItem, React.ReactNode?]\n | TItem\n | TValue\n | React.ReactElement\n | (() => React.ReactElement);\n\nexport interface SelectProps<TValue, TItem>\n extends CommonProps,\n Pick<DropdownContainerProps, 'menuPos'>,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'> {\n /** @ignore */\n _icon?: React.ReactNode;\n /** @ignore */\n _renderButton?: (params: ButtonParams) => React.ReactNode;\n defaultValue?: TValue;\n /**\n * Отключает использование портала\n */\n disablePortal?: boolean;\n disabled?: boolean;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n filterItem?: (value: TValue, item: TItem, pattern: string) => boolean;\n /**\n * Набор значений. Поддерживаются любые перечисляемые типы, в том числе\n * `Array`, `Map`, `Immutable.Map`.\n *\n * Элементы воспринимаются следующим образом: если элемент — это массив, то\n * первый элемент является значением, второй — отображается в списке,\n * а третий – комментарий;\n * если элемент не является массивом, то он используется и для отображения,\n * и для значения.\n *\n * Для вставки разделителя можно использовать `Select.SEP`.\n *\n * Вставить невыделяемый элемент со своей разметкой можно так:\n * ```\n * <Select ...\n * items={[Select.static(() => <div>My Element</div>)]}\n * />\n * ```\n *\n * Чтобы добавить стандартный отступ для статического элемента:\n * ```\n * <Select.Item>My Element</Select.Item>\n * ```\n */\n items?: Array<SelectItem<TValue, TItem>>;\n maxMenuHeight?: number;\n maxWidth?: React.CSSProperties['maxWidth'];\n menuAlign?: 'left' | 'right';\n menuWidth?: React.CSSProperties['width'];\n onValueChange?: (value: TValue) => void;\n onClose?: () => void;\n onMouseEnter?: (e: React.MouseEvent<HTMLElement>) => void;\n onMouseLeave?: (e: React.MouseEvent<HTMLElement>) => void;\n onMouseOver?: (e: React.MouseEvent<HTMLElement>) => void;\n onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n onOpen?: () => void;\n placeholder?: React.ReactNode;\n /**\n * Функция для отрисовки элемента в выпадающем списке. Аргументы — *value*,\n * *item*.\n */\n renderItem?: (value: TValue, item?: TItem) => React.ReactNode;\n /**\n * Функция для отрисовки выбранного элемента. Аргументы — *value*, *item*.\n */\n renderValue?: (value: TValue, item?: TItem) => React.ReactNode;\n /**\n * Функция для сравнения `value` с элементом из `items`\n */\n areValuesEqual?: (value1: TValue, value2: TValue) => boolean;\n /**\n * Показывать строку поиска в списке.\n */\n search?: boolean;\n value?: TValue;\n width?: number | string;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n use?: ButtonUse;\n size?: SizeProp;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n /**\n * Текст заголовка выпадающего меню в мобильной версии\n */\n mobileMenuHeaderText?: string;\n}\n\nexport interface SelectState<TValue> {\n opened: boolean;\n searchPattern: string;\n value: Nullable<TValue>;\n}\n\ninterface FocusableReactElement extends React.ReactElement<any> {\n focus: (event?: any) => void;\n}\n\ntype DefaultProps<TValue, TItem> = Required<\n Pick<SelectProps<TValue, TItem>, 'renderValue' | 'renderItem' | 'areValuesEqual' | 'filterItem' | 'use' | 'size'>\n>;\n\n@responsiveLayout\n@rootNode\n@locale('Select', SelectLocaleHelper)\n// Suggested solutions break current behavior\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport class Select<TValue = {}, TItem = {}> extends React.Component<SelectProps<TValue, TItem>, SelectState<TValue>> {\n public static __KONTUR_REACT_UI__ = 'Select';\n public static displayName = 'Select';\n\n public static defaultProps: DefaultProps<unknown, ReactNode | ReactPortal> = {\n renderValue,\n renderItem,\n areValuesEqual,\n filterItem,\n use: 'default',\n size: 'small',\n };\n\n public static Item = Item;\n public static SEP = () => <MenuSeparator />;\n\n public static static = (element: React.ReactElement | (() => React.ReactElement)) => {\n invariant(\n React.isValidElement(element) || typeof element === 'function',\n 'Select.static(element) expects element to be a valid react element.',\n );\n return element;\n };\n\n public state: SelectState<TValue> = {\n opened: false,\n value: this.props.defaultValue,\n searchPattern: '',\n };\n\n private theme!: Theme;\n private isMobileLayout!: boolean;\n private readonly locale!: SelectLocale;\n private menu: Nullable<Menu>;\n private menuId = SelectIds.menu + getRandomID();\n private buttonElement: FocusableReactElement | null = null;\n private getProps = createPropsGetter(Select.defaultProps);\n private setRootNode!: TSetRootNode;\n private featureFlags!: ReactUIFeatureFlags;\n\n public componentDidUpdate(_prevProps: SelectProps<TValue, TItem>, prevState: SelectState<TValue>) {\n if (!prevState.opened && this.state.opened) {\n globalObject.addEventListener?.('popstate', this.close);\n }\n if (prevState.opened && !this.state.opened) {\n globalObject.removeEventListener?.('popstate', this.close);\n }\n }\n\n public render() {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullReactUIFlagsContext(flags);\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = ThemeFactory.create(\n {\n menuOffsetY: theme.selectMenuOffsetY,\n },\n theme,\n );\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }}\n </ReactUIFeatureFlagsContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public open = () => {\n if (!this.state.opened) {\n this.setState({ opened: true });\n\n if (this.props.onOpen) {\n this.props.onOpen();\n }\n }\n };\n\n /**\n * @public\n */\n public close = () => {\n if (this.state.opened) {\n this.setState({ opened: false, searchPattern: '' });\n\n if (this.props.onClose) {\n this.props.onClose();\n }\n }\n };\n\n /**\n * @public\n */\n public focus = () => {\n if (this.buttonElement && this.buttonElement.focus) {\n this.buttonElement.focus();\n }\n };\n\n private getMenuRenderer() {\n if (this.props.disabled) {\n return null;\n }\n\n if (this.isMobileLayout) {\n return this.renderMobileMenu();\n }\n\n if (this.state.opened) {\n return this.renderMenu();\n }\n\n return null;\n }\n\n private renderMain() {\n const buttonParams = this.getDefaultButtonParams();\n const button = (\n <ThemeContext.Provider value={getSelectTheme(this.theme, this.props)}>\n {this.getButton(buttonParams)}\n </ThemeContext.Provider>\n );\n\n const isMobile = this.isMobileLayout;\n\n const style = {\n width: this.props.width,\n maxWidth: this.props.maxWidth || undefined,\n };\n\n const root = (\n <span\n data-tid={SelectDataTids.root}\n className={cx({ [styles.root()]: true, [styles.rootMobile(this.theme)]: isMobile })}\n style={style}\n >\n {button}\n {this.getMenuRenderer()}\n </span>\n );\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer\n onClickOutside={this.close}\n onFocusOutside={this.close}\n active={isMobile ? false : this.state.opened}\n >\n {root}\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n private getDefaultButtonParams = (): ButtonParams => {\n const { label, isPlaceholder } = this.renderLabel();\n\n const buttonParams: ButtonParams = {\n opened: this.state.opened,\n label,\n isPlaceholder,\n onClick: this.toggle,\n onKeyDown: this.handleKey,\n size: this.getProps().size,\n disabled: this.getProps().disabled,\n };\n\n return buttonParams;\n };\n\n private renderLabel() {\n const value = this.getValue();\n const item = this.getItemByValue(value);\n\n if (isNonNullable(value)) {\n return {\n label: this.getProps().renderValue(value, item),\n isPlaceholder: false,\n };\n }\n\n return {\n label: <span>{this.props.placeholder || this.locale?.placeholder}</span>,\n isPlaceholder: true,\n };\n }\n\n private getLeftIconClass(size: SizeProp | undefined) {\n if (this.getProps().use === 'link') {\n return styles.leftIconLink(this.theme);\n }\n\n switch (size) {\n case 'large':\n return styles.leftIconLarge(this.theme);\n case 'medium':\n return styles.leftIconMedium(this.theme);\n case 'small':\n default:\n return styles.leftIconSmall(this.theme);\n }\n }\n\n private renderDefaultButton(params: ButtonParams) {\n const buttonProps: ButtonProps = {\n ...filterProps(this.props, PASS_BUTTON_PROPS),\n align: 'left' as React.CSSProperties['textAlign'],\n disabled: this.props.disabled,\n width: '100%',\n onClick: params.onClick,\n onKeyDown: params.onKeyDown,\n active: params.opened,\n size: params.size,\n };\n const use = this.getProps().use;\n\n const labelProps = {\n 'data-tid': SelectDataTids.label,\n className: cx({\n [styles.label()]: use !== 'link',\n [styles.placeholder(this.theme)]: params.isPlaceholder,\n [styles.customUsePlaceholder()]: params.isPlaceholder && use !== 'default',\n [styles.placeholderDisabled(this.theme)]: params.isPlaceholder && this.props.disabled,\n }),\n style: {\n paddingRight: this.getSelectIconGap(),\n },\n };\n\n const useIsCustom = use !== 'default';\n\n const icon = isTheme2022(this.theme) ? <ArrowDownIcon size={this.props.size} /> : <ArrowChevronDownIcon />;\n\n return (\n <Button {...buttonProps}>\n <div className={styles.selectButtonContainer()}>\n {this.props._icon && <div className={this.getLeftIconClass(this.props.size)}>{this.props._icon}</div>}\n <span {...labelProps}>{params.label}</span>\n\n <div\n className={cx(styles.arrowWrap(this.theme), {\n [styles.arrowDisabled(this.theme)]: this.props.disabled,\n [styles.customUseArrow()]: useIsCustom,\n })}\n >\n {icon}\n </div>\n </div>\n </Button>\n );\n }\n\n private getSelectIconGap(): number {\n const getArrowPadding = () => {\n switch (this.props.size) {\n case 'large':\n return this.theme.selectIconGapLarge;\n case 'medium':\n return this.theme.selectIconGapMedium;\n case 'small':\n default:\n return this.theme.selectIconGapSmall;\n }\n };\n const arrowLeftPadding = parseFloat(getArrowPadding()) || 0;\n\n return arrowLeftPadding;\n }\n\n private renderMenu(): React.ReactNode {\n const search = this.props.search ? this.getSearch() : null;\n\n const value = this.getValue();\n const hasFixedWidth = !!this.props.menuWidth && this.props.menuWidth !== 'auto';\n\n return (\n <DropdownContainer\n id={this.menuId}\n data-tid={SelectDataTids.menu}\n getParent={this.dropdownContainerGetParent}\n align={this.props.menuAlign}\n disablePortal={this.props.disablePortal}\n hasFixedWidth={hasFixedWidth}\n menuPos={this.props.menuPos}\n >\n <Menu\n ref={this.refMenu}\n width={this.props.menuWidth}\n onItemClick={this.close}\n maxHeight={this.props.maxMenuHeight}\n align={this.props.menuAlign}\n >\n {search}\n {this.getMenuItems(value)}\n </Menu>\n </DropdownContainer>\n );\n }\n\n private getSearch = () => {\n return (\n <div className={styles.search()} onKeyDown={this.handleKey}>\n <Input ref={this.debouncedFocusInput} onValueChange={this.handleSearch} width=\"100%\" />\n </div>\n );\n };\n\n private renderMobileMenu(): React.ReactNode {\n const search = this.props.search ? this.getMobileSearch() : null;\n const value = this.getValue();\n\n return (\n <MobilePopup\n headerChildComponent={search}\n caption={this.props.mobileMenuHeaderText}\n onCloseRequest={this.close}\n opened={this.state.opened}\n >\n <Menu hasShadow={false} onItemClick={this.close} disableScrollContainer maxHeight={'auto'}>\n {this.getMenuItems(value)}\n </Menu>\n </MobilePopup>\n );\n }\n\n private getMobileSearch = () => {\n return (\n <Input\n autoFocus\n value={this.state.searchPattern}\n ref={this.debouncedFocusInput}\n onValueChange={this.handleSearch}\n width=\"100%\"\n />\n );\n };\n\n private getMenuItems = (value: Nullable<TValue>) => {\n const isMobile = this.isMobileLayout;\n const size = this.props.size;\n\n return this.mapItems(\n (iValue: TValue, item: TItem | (() => React.ReactNode), i: number, comment: Nullable<React.ReactNode>) => {\n if (isFunction(item)) {\n const element = item();\n\n if (React.isValidElement(element)) {\n return React.cloneElement(element, { key: i, isMobile, size });\n }\n\n return null;\n }\n\n if (React.isValidElement(item)) {\n if (isReactUINode('MenuItem', item)) {\n return React.cloneElement(item, { key: i, isMobile, size } as MenuItemProps);\n }\n if (isReactUINode('MenuHeader', item)) {\n return React.cloneElement(item, { size } as MenuHeaderProps);\n }\n return React.cloneElement(item, { key: i });\n }\n\n return (\n <MenuItem\n key={i}\n state={this.areValuesEqual(iValue, value) ? 'selected' : null}\n onClick={this.select.bind(this, iValue)}\n comment={comment}\n isMobile={isMobile}\n size={this.props.size}\n >\n {this.getProps().renderItem(iValue, item)}\n </MenuItem>\n );\n },\n );\n };\n\n private dropdownContainerGetParent = () => {\n return getRootNode(this);\n };\n\n // fix cases when an Input is rendered in portal\n // https://github.com/skbkontur/retail-ui/issues/1995\n private focusInput = (input: Input) => input?.focus();\n private debouncedFocusInput = debounce(this.focusInput);\n\n private refMenu = (menu: Menu) => {\n this.menu = menu;\n };\n\n private toggle = () => {\n if (this.state.opened) {\n this.close();\n } else {\n this.open();\n }\n };\n\n private handleKey = (e: React.KeyboardEvent<HTMLElement>) => {\n if (!this.state.opened) {\n if (isKeySpace(e) || isKeyArrowVertical(e)) {\n e.preventDefault();\n this.open();\n }\n } else {\n switch (true) {\n case isKeyEscape(e):\n this.focus();\n this.close();\n break;\n case isKeyArrowUp(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.up();\n }\n break;\n case isKeyArrowDown(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.down();\n }\n break;\n case isKeyEnter(e):\n e.preventDefault(); // To prevent form submission.\n if (this.menu) {\n this.menu.enter(e);\n }\n break;\n }\n }\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n private handleSearch = (value: string) => {\n const menuItemsAtAnyLevel = this.featureFlags.menuItemsAtAnyLevel;\n\n this.setState({ searchPattern: value });\n this.menu?.highlightItem(menuItemsAtAnyLevel ? 0 : 1);\n };\n\n private select(value: TValue) {\n this.focus();\n this.setState({ opened: false, value });\n\n if (!this.areValuesEqual(this.getValue(), value)) {\n this.props.onValueChange?.(value);\n }\n }\n\n private getValue() {\n if (this.props.value !== undefined) {\n return this.props.value;\n }\n return this.state.value;\n }\n\n private mapItems(fn: (value: TValue, item: TItem, index: number, comment?: string) => React.ReactNode) {\n const { items } = this.props;\n if (!items) {\n return [];\n }\n const pattern = this.state.searchPattern && this.state.searchPattern.toLowerCase();\n\n const result: React.ReactNode[] = [];\n let index = 0;\n for (const entry of items) {\n const [value, item, comment] = normalizeEntry(entry as TItem);\n\n if (!pattern || this.getProps().filterItem(value, item, pattern)) {\n result.push(fn(value, item, index, comment));\n ++index;\n }\n }\n\n return result;\n }\n\n private getItemByValue(value?: Nullable<TValue>) {\n if (value === null || value === undefined) {\n return null;\n }\n\n const items = this.props.items || [];\n\n for (const entry of items) {\n const [itemValue, item] = normalizeEntry(entry);\n\n if (this.areValuesEqual(itemValue, value)) {\n return item;\n }\n }\n return null;\n }\n\n private areValuesEqual(value1: Nullable<TValue>, value2: Nullable<TValue>) {\n return isNonNullable(value1) && isNonNullable(value2) && this.getProps().areValuesEqual(value1, value2);\n }\n\n private buttonRef = (element: FocusableReactElement | null) => {\n this.buttonElement = element;\n };\n\n private getButton = (buttonParams: ButtonParams) => {\n const button = this.props._renderButton\n ? this.props._renderButton(buttonParams)\n : this.renderDefaultButton(buttonParams);\n\n const buttonElement = React.Children.only(button);\n\n return React.isValidElement(buttonElement)\n ? React.cloneElement(buttonElement as React.ReactElement, {\n ref: this.buttonRef,\n onFocus: this.props.onFocus,\n onBlur: this.props.onBlur,\n size: this.props.size,\n 'aria-describedby': this.props['aria-describedby'],\n 'aria-expanded': this.state.opened ? 'true' : 'false',\n 'aria-controls': this.menuId,\n 'aria-label': buttonElement.props['aria-label'] ?? this.props['aria-label'],\n })\n : buttonElement;\n };\n}\n\nfunction renderValue<TValue, TItem>(value: TValue, item: Nullable<TItem>) {\n return item;\n}\n\nfunction renderItem<TValue, TItem>(value: TValue, item?: TItem) {\n return item;\n}\n\nfunction areValuesEqual<TValue>(value1: TValue, value2: TValue) {\n return value1 === value2;\n}\n\nfunction normalizeEntry(entry: any) {\n if (Array.isArray(entry)) {\n return entry;\n }\n\n return [entry, entry, undefined];\n}\n\nconst getTextFromItem = (item: any): string => {\n if (typeof item === 'string') {\n return item;\n }\n\n if (isFunction(item)) {\n return getTextFromItem(item());\n }\n\n if (React.isValidElement(item)) {\n return reactGetTextContent(item);\n }\n\n if (typeof item === 'number') {\n return item.toString(10);\n }\n\n return '';\n};\n\nfunction filterItem<TValue>(value: TValue, item: any, pattern: string) {\n if (item === Select.SEP) {\n return false;\n }\n\n const itemText = getTextFromItem(item);\n\n if (!itemText) {\n return false;\n }\n\n return itemText.toLowerCase().indexOf(pattern) !== -1;\n}\n"]}
@@ -12,6 +12,7 @@ var _ThemeHelpers = require("../../lib/theming/ThemeHelpers");
12
12
  var _CloseButtonIcon = require("../../internal/CloseButtonIcon/CloseButtonIcon");
13
13
 
14
14
  var _reactGetTextContent = require("../../lib/reactGetTextContent");
15
+ var _getVisualStateDataAttributes = require("../../internal/CommonWrapper/utils/getVisualStateDataAttributes");
15
16
 
16
17
  var _Token = require("./Token.styles");
17
18
  var _locale = require("./locale");
@@ -183,4 +184,4 @@ Token = (_dec = (0, _decorators.locale)('Token', _locale.TokenLocaleHelper), (0,
183
184
  }
184
185
 
185
186
  onRemove(event);
186
- };return _this;}var _proto = Token.prototype;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _this$props2 = this.props,size = _this$props2.size,children = _this$props2.children,isActive = _this$props2.isActive,_this$props2$colors = _this$props2.colors,colors = _this$props2$colors === void 0 ? { idle: 'defaultIdle', active: 'defaultActive' } : _this$props2$colors,error = _this$props2.error,warning = _this$props2.warning,disabled = _this$props2.disabled,ariaDescribedby = _this$props2['aria-describedby'],_this$props2$onClick = _this$props2.onClick,onClick = _this$props2$onClick === void 0 ? _utils.emptyHandler : _this$props2$onClick,_this$props2$onDouble = _this$props2.onDoubleClick,onDoubleClick = _this$props2$onDouble === void 0 ? _utils.emptyHandler : _this$props2$onDouble,_this$props2$onMouseE = _this$props2.onMouseEnter,onMouseEnter = _this$props2$onMouseE === void 0 ? _utils.emptyHandler : _this$props2$onMouseE,_this$props2$onMouseL = _this$props2.onMouseLeave,onMouseLeave = _this$props2$onMouseL === void 0 ? _utils.emptyHandler : _this$props2$onMouseL,_this$props2$onFocus = _this$props2.onFocus,onFocus = _this$props2$onFocus === void 0 ? _utils.emptyHandler : _this$props2$onFocus,_this$props2$onBlur = _this$props2.onBlur,onBlur = _this$props2$onBlur === void 0 ? _utils.emptyHandler : _this$props2$onBlur;var theme = this.theme;var validation = getValidation(error, warning);var removeButtonAriaLabel = this.locale.removeButtonAriaLabel + ' ' + (0, _reactGetTextContent.reactGetTextContent)(children);var icon = (0, _ThemeHelpers.isTheme2022)(theme) ? /*#__PURE__*/_react.default.createElement(_CloseButtonIcon.CloseButtonIcon, { side: 16, color: "inherit", colorHover: "inherit", "aria-label": removeButtonAriaLabel, tabbable: false }) : /*#__PURE__*/_react.default.createElement(_CrossIcon.CrossIcon, null);var classNames = (0, _ThemeHelpers.isTheme2022)(theme) ? (0, _Emotion.cx)(_Token.styles.tokenDefaultIdle2022(theme), !isActive && !warning && !error && !disabled && _Token.styles.tokenDefaultIdleHovering2022(theme), isActive && _Token.styles.tokenDefaultActive2022(theme), warning && _Token.styles.tokenWarning2022(theme), error && _Token.styles.tokenError2022(theme), disabled && _Token.styles.tokenDisabled2022(theme)) : (0, _Emotion.cx)(_Token.colorStyles[colors.idle](theme, validation), !!isActive && _Token.colorStyles[colors.active || colors.idle](theme, validation), !!disabled && _Token.styles.disabled(theme), !!disabled && _Token.colorStyles.defaultDisabled(theme), !!disabled && warning && _Token.colorStyles.defaultDisabledWarning(theme), !!disabled && error && _Token.colorStyles.defaultDisabledError(theme));var textholder = /*#__PURE__*/_react.default.createElement("span", { className: _Token.styles.text(this.theme) }, children);var closeButton = /*#__PURE__*/_react.default.createElement("span", { role: (0, _ThemeHelpers.isTheme2022)(theme) ? undefined : 'button', "aria-label": (0, _ThemeHelpers.isTheme2022)(theme) ? undefined : removeButtonAriaLabel, onClick: this.onRemoveClick, "data-tid": TokenDataTids.removeIcon }, icon);return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement(_TokenView.TokenView, { className: classNames, size: size, closeButton: closeButton, "data-tid": TokenDataTids.root, "aria-describedby": ariaDescribedby, onClick: onClick, onDoubleClick: onDoubleClick, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, onFocus: onFocus, onBlur: onBlur }, textholder));};return Token;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Token', _class2.displayName = 'Token', _temp)) || _class) || _class);exports.Token = Token;
187
+ };return _this;}var _proto = Token.prototype;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _this$props2 = this.props,size = _this$props2.size,children = _this$props2.children,isActive = _this$props2.isActive,_this$props2$colors = _this$props2.colors,colors = _this$props2$colors === void 0 ? { idle: 'defaultIdle', active: 'defaultActive' } : _this$props2$colors,error = _this$props2.error,warning = _this$props2.warning,disabled = _this$props2.disabled,ariaDescribedby = _this$props2['aria-describedby'],_this$props2$onClick = _this$props2.onClick,onClick = _this$props2$onClick === void 0 ? _utils.emptyHandler : _this$props2$onClick,_this$props2$onDouble = _this$props2.onDoubleClick,onDoubleClick = _this$props2$onDouble === void 0 ? _utils.emptyHandler : _this$props2$onDouble,_this$props2$onMouseE = _this$props2.onMouseEnter,onMouseEnter = _this$props2$onMouseE === void 0 ? _utils.emptyHandler : _this$props2$onMouseE,_this$props2$onMouseL = _this$props2.onMouseLeave,onMouseLeave = _this$props2$onMouseL === void 0 ? _utils.emptyHandler : _this$props2$onMouseL,_this$props2$onFocus = _this$props2.onFocus,onFocus = _this$props2$onFocus === void 0 ? _utils.emptyHandler : _this$props2$onFocus,_this$props2$onBlur = _this$props2.onBlur,onBlur = _this$props2$onBlur === void 0 ? _utils.emptyHandler : _this$props2$onBlur;var theme = this.theme;var validation = getValidation(error, warning);var removeButtonAriaLabel = this.locale.removeButtonAriaLabel + ' ' + (0, _reactGetTextContent.reactGetTextContent)(children);var icon = (0, _ThemeHelpers.isTheme2022)(theme) ? /*#__PURE__*/_react.default.createElement(_CloseButtonIcon.CloseButtonIcon, { side: 16, color: "inherit", colorHover: "inherit", "aria-label": removeButtonAriaLabel, tabbable: false }) : /*#__PURE__*/_react.default.createElement(_CrossIcon.CrossIcon, null);var classNames = (0, _ThemeHelpers.isTheme2022)(theme) ? (0, _Emotion.cx)(_Token.styles.tokenDefaultIdle2022(theme), !isActive && !warning && !error && !disabled && _Token.styles.tokenDefaultIdleHovering2022(theme), isActive && _Token.styles.tokenDefaultActive2022(theme), warning && _Token.styles.tokenWarning2022(theme), error && _Token.styles.tokenError2022(theme), disabled && _Token.styles.tokenDisabled2022(theme)) : (0, _Emotion.cx)(_Token.colorStyles[colors.idle](theme, validation), !!isActive && _Token.colorStyles[colors.active || colors.idle](theme, validation), !!disabled && _Token.styles.disabled(theme), !!disabled && _Token.colorStyles.defaultDisabled(theme), !!disabled && warning && _Token.colorStyles.defaultDisabledWarning(theme), !!disabled && error && _Token.colorStyles.defaultDisabledError(theme));var textholder = /*#__PURE__*/_react.default.createElement("span", { className: _Token.styles.text(this.theme) }, children);var closeButton = /*#__PURE__*/_react.default.createElement("span", { role: (0, _ThemeHelpers.isTheme2022)(theme) ? undefined : 'button', "aria-label": (0, _ThemeHelpers.isTheme2022)(theme) ? undefined : removeButtonAriaLabel, onClick: this.onRemoveClick, "data-tid": TokenDataTids.removeIcon }, icon);return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props, (0, _getVisualStateDataAttributes.getVisualStateDataAttributes)({ disabled: disabled })), /*#__PURE__*/_react.default.createElement(_TokenView.TokenView, { className: classNames, size: size, closeButton: closeButton, "data-tid": TokenDataTids.root, "aria-describedby": ariaDescribedby, onClick: onClick, onDoubleClick: onDoubleClick, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, onFocus: onFocus, onBlur: onBlur }, textholder));};return Token;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Token', _class2.displayName = 'Token', _temp)) || _class) || _class);exports.Token = Token;
@@ -1 +1 @@
1
- {"version":3,"sources":["Token.tsx"],"names":["getValidation","error","warning","TokenDataTids","root","removeIcon","Token","TokenLocaleHelper","rootNode","onRemoveClick","event","props","disabled","onRemove","emptyHandler","preventDefault","render","theme","renderMain","size","children","isActive","colors","idle","active","ariaDescribedby","onClick","onDoubleClick","onMouseEnter","onMouseLeave","onFocus","onBlur","validation","removeButtonAriaLabel","locale","icon","classNames","styles","tokenDefaultIdle2022","tokenDefaultIdleHovering2022","tokenDefaultActive2022","tokenWarning2022","tokenError2022","tokenDisabled2022","colorStyles","defaultDisabled","defaultDisabledWarning","defaultDisabledError","textholder","text","closeButton","undefined","setRootNode","React","Component","__KONTUR_REACT_UI__","displayName"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\n\nimport { locale } from '../../lib/locale/decorators';\nimport { CrossIcon } from '../../internal/icons/CrossIcon';\nimport { emptyHandler } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { CloseButtonIcon } from '../../internal/CloseButtonIcon/CloseButtonIcon';\nimport { SizeProp } from '../../lib/types/props';\nimport { reactGetTextContent } from '../../lib/reactGetTextContent';\n\nimport { styles, colorStyles } from './Token.styles';\nimport { TokenLocale, TokenLocaleHelper } from './locale';\nimport { TokenView } from './TokenView';\n\nexport type TokenColorName = keyof typeof colorStyles;\n\nexport interface TokenColors {\n idle: TokenColorName;\n active?: TokenColorName;\n}\n\nexport type TokenSize = SizeProp;\n\nexport interface TokenProps extends Pick<AriaAttributes, 'aria-describedby'>, CommonProps {\n colors?: TokenColors;\n isActive?: boolean;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n disabled?: boolean;\n /**\n * Размер\n */\n size?: TokenSize;\n onClick?: React.MouseEventHandler<HTMLDivElement>;\n onDoubleClick?: React.MouseEventHandler<HTMLDivElement>;\n onRemove?: React.MouseEventHandler<HTMLElement>;\n onMouseEnter?: React.MouseEventHandler<HTMLDivElement>;\n onMouseLeave?: React.MouseEventHandler<HTMLDivElement>;\n onFocus?: React.FocusEventHandler<HTMLDivElement>;\n onBlur?: React.FocusEventHandler<HTMLDivElement>;\n}\n\nconst getValidation = (error: TokenProps['error'], warning: TokenProps['warning']) => {\n if (error) {\n return 'error';\n } else if (warning) {\n return 'warning';\n }\n\n return null;\n};\n\nexport const TokenDataTids = {\n root: 'Token__root',\n removeIcon: 'Token__removeIcon',\n} as const;\n\n@rootNode\n@locale('Token', TokenLocaleHelper)\nexport class Token extends React.Component<TokenProps> {\n public static __KONTUR_REACT_UI__ = 'Token';\n public static displayName = 'Token';\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n private readonly locale!: TokenLocale;\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 {\n size,\n children,\n isActive,\n colors = { idle: 'defaultIdle', active: 'defaultActive' },\n error,\n warning,\n disabled,\n 'aria-describedby': ariaDescribedby,\n onClick = emptyHandler,\n onDoubleClick = emptyHandler,\n onMouseEnter = emptyHandler,\n onMouseLeave = emptyHandler,\n onFocus = emptyHandler,\n onBlur = emptyHandler,\n } = this.props;\n\n const theme = this.theme;\n\n const validation = getValidation(error, warning);\n const removeButtonAriaLabel = this.locale.removeButtonAriaLabel + ' ' + reactGetTextContent(children);\n\n const icon = isTheme2022(theme) ? (\n <CloseButtonIcon\n side={16}\n color=\"inherit\"\n colorHover=\"inherit\"\n aria-label={removeButtonAriaLabel}\n tabbable={false}\n />\n ) : (\n <CrossIcon />\n );\n\n const classNames = isTheme2022(theme)\n ? cx(\n styles.tokenDefaultIdle2022(theme),\n !isActive && !warning && !error && !disabled && styles.tokenDefaultIdleHovering2022(theme),\n isActive && styles.tokenDefaultActive2022(theme),\n warning && styles.tokenWarning2022(theme),\n error && styles.tokenError2022(theme),\n disabled && styles.tokenDisabled2022(theme),\n )\n : cx(\n colorStyles[colors.idle](theme, validation),\n !!isActive && colorStyles[colors.active || colors.idle](theme, validation),\n !!disabled && styles.disabled(theme),\n !!disabled && colorStyles.defaultDisabled(theme),\n !!disabled && warning && colorStyles.defaultDisabledWarning(theme),\n !!disabled && error && colorStyles.defaultDisabledError(theme),\n );\n\n const textholder = <span className={styles.text(this.theme)}>{children}</span>;\n\n const closeButton = (\n <span\n role={isTheme2022(theme) ? undefined : 'button'}\n aria-label={isTheme2022(theme) ? undefined : removeButtonAriaLabel}\n onClick={this.onRemoveClick}\n data-tid={TokenDataTids.removeIcon}\n >\n {icon}\n </span>\n );\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <TokenView\n className={classNames}\n size={size}\n closeButton={closeButton}\n data-tid={TokenDataTids.root}\n aria-describedby={ariaDescribedby}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onFocus={onFocus}\n onBlur={onBlur}\n >\n {textholder}\n </TokenView>\n </CommonWrapper>\n );\n }\n\n private onRemoveClick = (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n const { disabled, onRemove = emptyHandler } = this.props;\n\n if (disabled) {\n event.preventDefault();\n return;\n }\n\n onRemove(event);\n };\n}\n"]}
1
+ {"version":3,"sources":["Token.tsx"],"names":["getValidation","error","warning","TokenDataTids","root","removeIcon","Token","TokenLocaleHelper","rootNode","onRemoveClick","event","props","disabled","onRemove","emptyHandler","preventDefault","render","theme","renderMain","size","children","isActive","colors","idle","active","ariaDescribedby","onClick","onDoubleClick","onMouseEnter","onMouseLeave","onFocus","onBlur","validation","removeButtonAriaLabel","locale","icon","classNames","styles","tokenDefaultIdle2022","tokenDefaultIdleHovering2022","tokenDefaultActive2022","tokenWarning2022","tokenError2022","tokenDisabled2022","colorStyles","defaultDisabled","defaultDisabledWarning","defaultDisabledError","textholder","text","closeButton","undefined","setRootNode","React","Component","__KONTUR_REACT_UI__","displayName"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\n\nimport { locale } from '../../lib/locale/decorators';\nimport { CrossIcon } from '../../internal/icons/CrossIcon';\nimport { emptyHandler } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { CloseButtonIcon } from '../../internal/CloseButtonIcon/CloseButtonIcon';\nimport { SizeProp } from '../../lib/types/props';\nimport { reactGetTextContent } from '../../lib/reactGetTextContent';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\n\nimport { styles, colorStyles } from './Token.styles';\nimport { TokenLocale, TokenLocaleHelper } from './locale';\nimport { TokenView } from './TokenView';\n\nexport type TokenColorName = keyof typeof colorStyles;\n\nexport interface TokenColors {\n idle: TokenColorName;\n active?: TokenColorName;\n}\n\nexport type TokenSize = SizeProp;\n\nexport interface TokenProps extends Pick<AriaAttributes, 'aria-describedby'>, CommonProps {\n colors?: TokenColors;\n isActive?: boolean;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n disabled?: boolean;\n /**\n * Размер\n */\n size?: TokenSize;\n onClick?: React.MouseEventHandler<HTMLDivElement>;\n onDoubleClick?: React.MouseEventHandler<HTMLDivElement>;\n onRemove?: React.MouseEventHandler<HTMLElement>;\n onMouseEnter?: React.MouseEventHandler<HTMLDivElement>;\n onMouseLeave?: React.MouseEventHandler<HTMLDivElement>;\n onFocus?: React.FocusEventHandler<HTMLDivElement>;\n onBlur?: React.FocusEventHandler<HTMLDivElement>;\n}\n\nconst getValidation = (error: TokenProps['error'], warning: TokenProps['warning']) => {\n if (error) {\n return 'error';\n } else if (warning) {\n return 'warning';\n }\n\n return null;\n};\n\nexport const TokenDataTids = {\n root: 'Token__root',\n removeIcon: 'Token__removeIcon',\n} as const;\n\n@rootNode\n@locale('Token', TokenLocaleHelper)\nexport class Token extends React.Component<TokenProps> {\n public static __KONTUR_REACT_UI__ = 'Token';\n public static displayName = 'Token';\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n private readonly locale!: TokenLocale;\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 {\n size,\n children,\n isActive,\n colors = { idle: 'defaultIdle', active: 'defaultActive' },\n error,\n warning,\n disabled,\n 'aria-describedby': ariaDescribedby,\n onClick = emptyHandler,\n onDoubleClick = emptyHandler,\n onMouseEnter = emptyHandler,\n onMouseLeave = emptyHandler,\n onFocus = emptyHandler,\n onBlur = emptyHandler,\n } = this.props;\n\n const theme = this.theme;\n\n const validation = getValidation(error, warning);\n const removeButtonAriaLabel = this.locale.removeButtonAriaLabel + ' ' + reactGetTextContent(children);\n\n const icon = isTheme2022(theme) ? (\n <CloseButtonIcon\n side={16}\n color=\"inherit\"\n colorHover=\"inherit\"\n aria-label={removeButtonAriaLabel}\n tabbable={false}\n />\n ) : (\n <CrossIcon />\n );\n\n const classNames = isTheme2022(theme)\n ? cx(\n styles.tokenDefaultIdle2022(theme),\n !isActive && !warning && !error && !disabled && styles.tokenDefaultIdleHovering2022(theme),\n isActive && styles.tokenDefaultActive2022(theme),\n warning && styles.tokenWarning2022(theme),\n error && styles.tokenError2022(theme),\n disabled && styles.tokenDisabled2022(theme),\n )\n : cx(\n colorStyles[colors.idle](theme, validation),\n !!isActive && colorStyles[colors.active || colors.idle](theme, validation),\n !!disabled && styles.disabled(theme),\n !!disabled && colorStyles.defaultDisabled(theme),\n !!disabled && warning && colorStyles.defaultDisabledWarning(theme),\n !!disabled && error && colorStyles.defaultDisabledError(theme),\n );\n\n const textholder = <span className={styles.text(this.theme)}>{children}</span>;\n\n const closeButton = (\n <span\n role={isTheme2022(theme) ? undefined : 'button'}\n aria-label={isTheme2022(theme) ? undefined : removeButtonAriaLabel}\n onClick={this.onRemoveClick}\n data-tid={TokenDataTids.removeIcon}\n >\n {icon}\n </span>\n );\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props} {...getVisualStateDataAttributes({ disabled })}>\n <TokenView\n className={classNames}\n size={size}\n closeButton={closeButton}\n data-tid={TokenDataTids.root}\n aria-describedby={ariaDescribedby}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onFocus={onFocus}\n onBlur={onBlur}\n >\n {textholder}\n </TokenView>\n </CommonWrapper>\n );\n }\n\n private onRemoveClick = (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n const { disabled, onRemove = emptyHandler } = this.props;\n\n if (disabled) {\n event.preventDefault();\n return;\n }\n\n onRemove(event);\n };\n}\n"]}
@@ -1,5 +1,7 @@
1
1
  import React from 'react';
2
2
  import { RenderContainerProps } from './RenderContainerTypes';
3
+ export declare const PORTAL_ANCHOR_ATTR = "data-render-container-id";
4
+ export declare const PORTAL_TAG_ATTR = "data-rendered-container-id";
3
5
  export declare class RenderContainer extends React.Component<RenderContainerProps> {
4
6
  static __KONTUR_REACT_UI__: string;
5
7
  static displayName: string;
@@ -1,4 +1,4 @@
1
- "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;exports.__esModule = true;exports.RenderContainer = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;exports.__esModule = true;exports.RenderContainer = exports.PORTAL_TAG_ATTR = exports.PORTAL_ANCHOR_ATTR = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
2
2
  var _globalObject = require("@skbkontur/global-object");
3
3
 
4
4
 
@@ -6,9 +6,12 @@ var _utils = require("../../lib/utils");
6
6
  var _Upgrades = require("../../lib/Upgrades");
7
7
  var _callChildRef = require("../../lib/callChildRef/callChildRef");
8
8
 
9
- var _RenderInnerContainer = require("./RenderInnerContainer");var
9
+ var _RenderInnerContainer = require("./RenderInnerContainer");
10
10
 
11
11
 
12
+ var PORTAL_ANCHOR_ATTR = 'data-render-container-id';exports.PORTAL_ANCHOR_ATTR = PORTAL_ANCHOR_ATTR;
13
+ var PORTAL_TAG_ATTR = 'data-rendered-container-id';exports.PORTAL_TAG_ATTR = PORTAL_TAG_ATTR;var
14
+
12
15
  RenderContainer = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(RenderContainer, _React$Component);function RenderContainer() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;_this.
13
16
 
14
17
 
@@ -44,7 +47,7 @@ RenderContainer = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.
44
47
  var domContainer = (_globalObject$documen = _globalObject.globalObject.document) == null ? void 0 : _globalObject$documen.createElement('div');
45
48
  if (domContainer) {
46
49
  domContainer.setAttribute('class', _Upgrades.Upgrade.getSpecificityClassName());
47
- domContainer.setAttribute('data-rendered-container-id', "" + this.rootId);
50
+ domContainer.setAttribute(PORTAL_TAG_ATTR, "" + this.rootId);
48
51
  this.domContainer = domContainer;
49
52
  }
50
53
  };_proto.
@@ -1 +1 @@
1
- {"version":3,"sources":["RenderContainer.tsx"],"names":["RenderContainer","domContainer","rootId","getRootId","shouldComponentUpdate","nextProps","props","children","mountContainer","unmountContainer","componentWillUnmount","destroyContainer","render","createContainer","globalObject","document","createElement","setAttribute","Upgrade","getSpecificityClassName","parentNode","body","appendChild","containerRef","ReactTesting","addRenderContainer","removeChild","removeRenderContainer","React","Component","__KONTUR_REACT_UI__","displayName"],"mappings":"qVAAA;AACA;;;AAGA;AACA;AACA;;AAEA,8D;;;AAGaA,e;;;;;AAKHC,IAAAA,Y,GAAsC,I;;AAE7BC,IAAAA,M,GAAiBF,eAAe,CAACG,SAAhB,E;;AAE3BC,EAAAA,qB,GAAP,+BAA6BC,SAA7B,EAA8D;AAC5D,QAAI,CAAC,KAAKC,KAAL,CAAWC,QAAZ,IAAwBF,SAAS,CAACE,QAAtC,EAAgD;AAC9C,WAAKC,cAAL;AACD;AACD,QAAI,KAAKF,KAAL,CAAWC,QAAX,IAAuB,CAACF,SAAS,CAACE,QAAtC,EAAgD;AAC9C,WAAKE,gBAAL;AACD;AACD,WAAO,IAAP;AACD,G;;AAEMC,EAAAA,oB,GAAP,gCAA8B;AAC5B,SAAKC,gBAAL;AACD,G;;AAEMC,EAAAA,M,GAAP,kBAAgB;AACd,QAAI,KAAKN,KAAL,CAAWC,QAAf,EAAyB;AACvB,WAAKC,cAAL;AACD;;AAED,wBAAO,6BAAC,0CAAD,6BAA0B,KAAKF,KAA/B,IAAsC,YAAY,EAAE,KAAKL,YAAzD,EAAuE,MAAM,EAAE,KAAKC,MAApF,IAAP;AACD,G;;AAEOW,EAAAA,e,GAAR,2BAA0B;AACxB,QAAMZ,YAAY,4BAAGa,2BAAaC,QAAhB,qBAAG,sBAAuBC,aAAvB,CAAqC,KAArC,CAArB;AACA,QAAIf,YAAJ,EAAkB;AAChBA,MAAAA,YAAY,CAACgB,YAAb,CAA0B,OAA1B,EAAmCC,kBAAQC,uBAAR,EAAnC;AACAlB,MAAAA,YAAY,CAACgB,YAAb,CAA0B,4BAA1B,OAA2D,KAAKf,MAAhE;AACA,WAAKD,YAAL,GAAoBA,YAApB;AACD;AACF,G;;AAEOO,EAAAA,c,GAAR,0BAAyB;AACvB,QAAI,CAAC,KAAKP,YAAV,EAAwB;AACtB,WAAKY,eAAL;AACD;AACD,QAAI,KAAKZ,YAAL,IAAqB,KAAKA,YAAL,CAAkBmB,UAAlB,gCAAiCN,2BAAaC,QAA9C,qBAAiC,uBAAuBM,IAAxD,CAAzB,EAAuF;AACrF,2DAAaN,QAAb,4CAAuBM,IAAvB,CAA4BC,WAA5B,CAAwC,KAAKrB,YAA7C;;AAEA,UAAI,KAAKK,KAAL,CAAWiB,YAAf,EAA6B;AAC3B,wCAAa,KAAKjB,KAAL,CAAWiB,YAAxB,EAAsC,KAAKtB,YAA3C;AACD;AACD,UAAIa,2BAAaU,YAAjB,EAA+B;AAC7BV,mCAAaU,YAAb,CAA0BC,kBAA1B,CAA6C,KAAKvB,MAAlD,EAA0D,IAA1D;AACD;AACF;AACF,G;;AAEOS,EAAAA,gB,GAAR,4BAA2B;AACzB,QAAI,KAAKV,YAAT,EAAuB;AACrB,WAAKQ,gBAAL;AACA,WAAKR,YAAL,GAAoB,IAApB;AACD;AACF,G;;AAEOQ,EAAAA,gB,GAAR,4BAA2B;AACzB,QAAI,KAAKR,YAAL,IAAqB,KAAKA,YAAL,CAAkBmB,UAA3C,EAAuD;AACrD,WAAKnB,YAAL,CAAkBmB,UAAlB,CAA6BM,WAA7B,CAAyC,KAAKzB,YAA9C;;AAEA,UAAI,KAAKK,KAAL,CAAWiB,YAAf,EAA6B;AAC3B,wCAAa,KAAKjB,KAAL,CAAWiB,YAAxB,EAAsC,IAAtC;AACD;;AAED,UAAIT,2BAAaU,YAAjB,EAA+B;AAC7BV,mCAAaU,YAAb,CAA0BG,qBAA1B,CAAgD,KAAKzB,MAArD;AACD;AACF;AACF,G,0BA3EkC0B,eAAMC,S,4CAA9B7B,e,CACG8B,mB,GAAsB,iB,CADzB9B,e,CAEG+B,W,GAAc,iB,CAFjB/B,e,CAIIG,S,GAAY,oBAAM,yBAAN,E","sourcesContent":["import React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { getRandomID } from '../../lib/utils';\nimport { Upgrade } from '../../lib/Upgrades';\nimport { callChildRef } from '../../lib/callChildRef/callChildRef';\n\nimport { RenderInnerContainer } from './RenderInnerContainer';\nimport { RenderContainerProps } from './RenderContainerTypes';\n\nexport class RenderContainer extends React.Component<RenderContainerProps> {\n public static __KONTUR_REACT_UI__ = 'RenderContainer';\n public static displayName = 'RenderContainer';\n\n private static getRootId = () => getRandomID();\n private domContainer: Nullable<HTMLElement> = null;\n\n private readonly rootId: string = RenderContainer.getRootId();\n\n public shouldComponentUpdate(nextProps: RenderContainerProps) {\n if (!this.props.children && nextProps.children) {\n this.mountContainer();\n }\n if (this.props.children && !nextProps.children) {\n this.unmountContainer();\n }\n return true;\n }\n\n public componentWillUnmount() {\n this.destroyContainer();\n }\n\n public render() {\n if (this.props.children) {\n this.mountContainer();\n }\n\n return <RenderInnerContainer {...this.props} domContainer={this.domContainer} rootId={this.rootId} />;\n }\n\n private createContainer() {\n const domContainer = globalObject.document?.createElement('div');\n if (domContainer) {\n domContainer.setAttribute('class', Upgrade.getSpecificityClassName());\n domContainer.setAttribute('data-rendered-container-id', `${this.rootId}`);\n this.domContainer = domContainer;\n }\n }\n\n private mountContainer() {\n if (!this.domContainer) {\n this.createContainer();\n }\n if (this.domContainer && this.domContainer.parentNode !== globalObject.document?.body) {\n globalObject.document?.body.appendChild(this.domContainer);\n\n if (this.props.containerRef) {\n callChildRef(this.props.containerRef, this.domContainer);\n }\n if (globalObject.ReactTesting) {\n globalObject.ReactTesting.addRenderContainer(this.rootId, this);\n }\n }\n }\n\n private destroyContainer() {\n if (this.domContainer) {\n this.unmountContainer();\n this.domContainer = null;\n }\n }\n\n private unmountContainer() {\n if (this.domContainer && this.domContainer.parentNode) {\n this.domContainer.parentNode.removeChild(this.domContainer);\n\n if (this.props.containerRef) {\n callChildRef(this.props.containerRef, null);\n }\n\n if (globalObject.ReactTesting) {\n globalObject.ReactTesting.removeRenderContainer(this.rootId);\n }\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["RenderContainer.tsx"],"names":["PORTAL_ANCHOR_ATTR","PORTAL_TAG_ATTR","RenderContainer","domContainer","rootId","getRootId","shouldComponentUpdate","nextProps","props","children","mountContainer","unmountContainer","componentWillUnmount","destroyContainer","render","createContainer","globalObject","document","createElement","setAttribute","Upgrade","getSpecificityClassName","parentNode","body","appendChild","containerRef","ReactTesting","addRenderContainer","removeChild","removeRenderContainer","React","Component","__KONTUR_REACT_UI__","displayName"],"mappings":"4YAAA;AACA;;;AAGA;AACA;AACA;;AAEA;;;AAGO,IAAMA,kBAAkB,GAAG,0BAA3B,C;AACA,IAAMC,eAAe,GAAG,4BAAxB,C;;AAEMC,e;;;;;AAKHC,IAAAA,Y,GAAsC,I;;AAE7BC,IAAAA,M,GAAiBF,eAAe,CAACG,SAAhB,E;;AAE3BC,EAAAA,qB,GAAP,+BAA6BC,SAA7B,EAA8D;AAC5D,QAAI,CAAC,KAAKC,KAAL,CAAWC,QAAZ,IAAwBF,SAAS,CAACE,QAAtC,EAAgD;AAC9C,WAAKC,cAAL;AACD;AACD,QAAI,KAAKF,KAAL,CAAWC,QAAX,IAAuB,CAACF,SAAS,CAACE,QAAtC,EAAgD;AAC9C,WAAKE,gBAAL;AACD;AACD,WAAO,IAAP;AACD,G;;AAEMC,EAAAA,oB,GAAP,gCAA8B;AAC5B,SAAKC,gBAAL;AACD,G;;AAEMC,EAAAA,M,GAAP,kBAAgB;AACd,QAAI,KAAKN,KAAL,CAAWC,QAAf,EAAyB;AACvB,WAAKC,cAAL;AACD;;AAED,wBAAO,6BAAC,0CAAD,6BAA0B,KAAKF,KAA/B,IAAsC,YAAY,EAAE,KAAKL,YAAzD,EAAuE,MAAM,EAAE,KAAKC,MAApF,IAAP;AACD,G;;AAEOW,EAAAA,e,GAAR,2BAA0B;AACxB,QAAMZ,YAAY,4BAAGa,2BAAaC,QAAhB,qBAAG,sBAAuBC,aAAvB,CAAqC,KAArC,CAArB;AACA,QAAIf,YAAJ,EAAkB;AAChBA,MAAAA,YAAY,CAACgB,YAAb,CAA0B,OAA1B,EAAmCC,kBAAQC,uBAAR,EAAnC;AACAlB,MAAAA,YAAY,CAACgB,YAAb,CAA0BlB,eAA1B,OAA8C,KAAKG,MAAnD;AACA,WAAKD,YAAL,GAAoBA,YAApB;AACD;AACF,G;;AAEOO,EAAAA,c,GAAR,0BAAyB;AACvB,QAAI,CAAC,KAAKP,YAAV,EAAwB;AACtB,WAAKY,eAAL;AACD;AACD,QAAI,KAAKZ,YAAL,IAAqB,KAAKA,YAAL,CAAkBmB,UAAlB,gCAAiCN,2BAAaC,QAA9C,qBAAiC,uBAAuBM,IAAxD,CAAzB,EAAuF;AACrF,2DAAaN,QAAb,4CAAuBM,IAAvB,CAA4BC,WAA5B,CAAwC,KAAKrB,YAA7C;;AAEA,UAAI,KAAKK,KAAL,CAAWiB,YAAf,EAA6B;AAC3B,wCAAa,KAAKjB,KAAL,CAAWiB,YAAxB,EAAsC,KAAKtB,YAA3C;AACD;AACD,UAAIa,2BAAaU,YAAjB,EAA+B;AAC7BV,mCAAaU,YAAb,CAA0BC,kBAA1B,CAA6C,KAAKvB,MAAlD,EAA0D,IAA1D;AACD;AACF;AACF,G;;AAEOS,EAAAA,gB,GAAR,4BAA2B;AACzB,QAAI,KAAKV,YAAT,EAAuB;AACrB,WAAKQ,gBAAL;AACA,WAAKR,YAAL,GAAoB,IAApB;AACD;AACF,G;;AAEOQ,EAAAA,gB,GAAR,4BAA2B;AACzB,QAAI,KAAKR,YAAL,IAAqB,KAAKA,YAAL,CAAkBmB,UAA3C,EAAuD;AACrD,WAAKnB,YAAL,CAAkBmB,UAAlB,CAA6BM,WAA7B,CAAyC,KAAKzB,YAA9C;;AAEA,UAAI,KAAKK,KAAL,CAAWiB,YAAf,EAA6B;AAC3B,wCAAa,KAAKjB,KAAL,CAAWiB,YAAxB,EAAsC,IAAtC;AACD;;AAED,UAAIT,2BAAaU,YAAjB,EAA+B;AAC7BV,mCAAaU,YAAb,CAA0BG,qBAA1B,CAAgD,KAAKzB,MAArD;AACD;AACF;AACF,G,0BA3EkC0B,eAAMC,S,4CAA9B7B,e,CACG8B,mB,GAAsB,iB,CADzB9B,e,CAEG+B,W,GAAc,iB,CAFjB/B,e,CAIIG,S,GAAY,oBAAM,yBAAN,E","sourcesContent":["import React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { getRandomID } from '../../lib/utils';\nimport { Upgrade } from '../../lib/Upgrades';\nimport { callChildRef } from '../../lib/callChildRef/callChildRef';\n\nimport { RenderInnerContainer } from './RenderInnerContainer';\nimport { RenderContainerProps } from './RenderContainerTypes';\n\nexport const PORTAL_ANCHOR_ATTR = 'data-render-container-id';\nexport const PORTAL_TAG_ATTR = 'data-rendered-container-id';\n\nexport class RenderContainer extends React.Component<RenderContainerProps> {\n public static __KONTUR_REACT_UI__ = 'RenderContainer';\n public static displayName = 'RenderContainer';\n\n private static getRootId = () => getRandomID();\n private domContainer: Nullable<HTMLElement> = null;\n\n private readonly rootId: string = RenderContainer.getRootId();\n\n public shouldComponentUpdate(nextProps: RenderContainerProps) {\n if (!this.props.children && nextProps.children) {\n this.mountContainer();\n }\n if (this.props.children && !nextProps.children) {\n this.unmountContainer();\n }\n return true;\n }\n\n public componentWillUnmount() {\n this.destroyContainer();\n }\n\n public render() {\n if (this.props.children) {\n this.mountContainer();\n }\n\n return <RenderInnerContainer {...this.props} domContainer={this.domContainer} rootId={this.rootId} />;\n }\n\n private createContainer() {\n const domContainer = globalObject.document?.createElement('div');\n if (domContainer) {\n domContainer.setAttribute('class', Upgrade.getSpecificityClassName());\n domContainer.setAttribute(PORTAL_TAG_ATTR, `${this.rootId}`);\n this.domContainer = domContainer;\n }\n }\n\n private mountContainer() {\n if (!this.domContainer) {\n this.createContainer();\n }\n if (this.domContainer && this.domContainer.parentNode !== globalObject.document?.body) {\n globalObject.document?.body.appendChild(this.domContainer);\n\n if (this.props.containerRef) {\n callChildRef(this.props.containerRef, this.domContainer);\n }\n if (globalObject.ReactTesting) {\n globalObject.ReactTesting.addRenderContainer(this.rootId, this);\n }\n }\n }\n\n private destroyContainer() {\n if (this.domContainer) {\n this.unmountContainer();\n this.domContainer = null;\n }\n }\n\n private unmountContainer() {\n if (this.domContainer && this.domContainer.parentNode) {\n this.domContainer.parentNode.removeChild(this.domContainer);\n\n if (this.props.containerRef) {\n callChildRef(this.props.containerRef, null);\n }\n\n if (globalObject.ReactTesting) {\n globalObject.ReactTesting.removeRenderContainer(this.rootId);\n }\n }\n }\n}\n"]}
@@ -7,6 +7,7 @@ var _globalObject = require("@skbkontur/global-object");
7
7
  var _SSRSafe = require("../../lib/SSRSafe");
8
8
 
9
9
 
10
+ var _RenderContainer = require("./RenderContainer");
10
11
 
11
12
 
12
13
 
@@ -33,12 +34,12 @@ var _SSRSafe = require("../../lib/SSRSafe");
33
34
 
34
35
  var SSRPlaceholder = function SSRPlaceholder() {return /*#__PURE__*/_react.default.createElement("script", { "data-id": "ssr-placeholder" });};
35
36
 
36
- var Portal = function Portal(_ref) {var container = _ref.container,rt_rootID = _ref.rt_rootID,children = _ref.children;
37
+ var Portal = function Portal(_ref) {var _ref2;var container = _ref.container,rt_rootID = _ref.rt_rootID,children = _ref.children;
37
38
  // container exists only in browser
38
39
  return /*#__PURE__*/(
39
40
  _react.default.createElement(_react.default.Fragment, null,
40
41
  container ? /*#__PURE__*/_reactDom.default.createPortal(children, container) : /*#__PURE__*/_react.default.createElement(SSRPlaceholder, null),
41
- container ? /*#__PURE__*/_react.default.createElement("noscript", { "data-render-container-id": rt_rootID }) : /*#__PURE__*/_react.default.createElement(SSRPlaceholder, null)));
42
+ container ? /*#__PURE__*/_react.default.createElement("noscript", (_ref2 = {}, _ref2[_RenderContainer.PORTAL_ANCHOR_ATTR] = rt_rootID, _ref2)) : /*#__PURE__*/_react.default.createElement(SSRPlaceholder, null)));
42
43
 
43
44
 
44
45
  };exports.Portal = Portal;var
@@ -1 +1 @@
1
- {"version":3,"sources":["RenderInnerContainer.tsx"],"names":["SSRPlaceholder","Portal","container","rt_rootID","children","ReactDOM","createPortal","RenderInnerContainer","render","props","anchor","domContainer","rootId","inner","React","Component","__KONTUR_REACT_UI__","displayName","propTypes","globalObject","HTMLElement","string","isRequired","node"],"mappings":"yRAAA;AACA;AACA;AACA;;;AAGA;;;;;;;;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,wBAAM,yCAAQ,WAAQ,iBAAhB,GAAN,EAAvB;;AAEO,IAAMC,MAAM,GAAG,SAATA,MAAS,OAAqD,KAAlDC,SAAkD,QAAlDA,SAAkD,CAAvCC,SAAuC,QAAvCA,SAAuC,CAA5BC,QAA4B,QAA5BA,QAA4B;AACzE;AACA;AACE,iCAAC,cAAD,CAAO,QAAP;AACGF,IAAAA,SAAS,gBAAGG,kBAASC,YAAT,CAAsBF,QAAtB,EAAgCF,SAAhC,CAAH,gBAAgD,6BAAC,cAAD,OAD5D;AAEGA,IAAAA,SAAS,gBAAG,2CAAU,4BAA0BC,SAApC,GAAH,gBAAuD,6BAAC,cAAD,OAFnE,CADF;;;AAMD,CARM,C;;AAUMI,oB;;;;AAIJC,EAAAA,M,GAAP,kBAAgB;AACd,sBAAmD,KAAKC,KAAxD,CAAQC,MAAR,eAAQA,MAAR,CAAgBN,QAAhB,eAAgBA,QAAhB,CAA0BO,YAA1B,eAA0BA,YAA1B,CAAwCC,MAAxC,eAAwCA,MAAxC;AACA,QAAIC,KAAK,GAAGH,MAAZ;;AAEA,QAAIN,QAAJ,EAAc;AACZS,MAAAA,KAAK;AACH,mCAAC,cAAD,CAAO,QAAP;AACGH,MAAAA,MADH;AAEE,mCAAC,MAAD,IAAQ,GAAG,EAAC,YAAZ,EAAyB,SAAS,EAAEE,MAApC,EAA4C,SAAS,EAAED,YAAvD;AACGP,MAAAA,QADH,CAFF,CADF;;;;AAQD;;AAED,WAAOS,KAAP;AACD,G,+BApBuCC,eAAMC,S,sDAAnCR,oB,CACGS,mB,GAAsB,sB,CADzBT,oB,CAEGU,W,GAAc,sB;;;AAqB9BhB,MAAM,CAACiB,SAAP,GAAmB;AACjBhB,EAAAA,SAAS,EAAE,sCAAwBiB,2BAAaC,WAArC,CADM;AAEjBjB,EAAAA,SAAS,EAAEe,mBAAUG,MAAV,CAAiBC,UAFX;AAGjBlB,EAAAA,QAAQ,EAAEc,mBAAUK,IAAV,CAAeD,UAHR,EAAnB;;;AAMArB,MAAM,CAACe,mBAAP,GAA6B,QAA7B;AACAf,MAAM,CAACgB,WAAP,GAAqB,QAArB","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport propTypes from 'prop-types';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { safePropTypesInstanceOf } from '../../lib/SSRSafe';\n\nimport { PortalProps, RenderContainerProps } from './RenderContainerTypes';\n\ninterface RenderInnerContainerProps extends RenderContainerProps {\n domContainer: Nullable<HTMLElement>;\n rootId: string;\n}\n\n// Заглушка нужна для корректной гидрации порталов после SSR,\n// которую реакт сам пока не поддерживает.\n// @see https://github.com/facebook/react/issues/13097\n// А также для вставки актуального render-container-id на клиенте.\n//\n// Дело в том, что во время гидрации, структура HTML на сервере\n// и на клиенте должна совпадать, иначе возможны артефакты.\n// Алгоритм там примерно такой. Клиент во время гидрации идет\n// по этим двум деревьям и сравнивает узлы. Элементы разных типов\n// он подменяет на свои. А те, что совпадают, он оставляет как есть\n// вместе со всеми атрибутами, навесив только обработчики событий.\n//\n// Поэтому, для портала, который рендерится только на клиенте,\n// нужно использовать серверную заглушку, чтобы при гидрации\n// он не испортил какой-то другой элемент. Null не подходит,\n// т.к. на сервере он тоже не рендерится.\n// А элемент с render-container-id нужно отрендерить с нуля.\n\nconst SSRPlaceholder = () => <script data-id=\"ssr-placeholder\" />;\n\nexport const Portal = ({ container, rt_rootID, children }: PortalProps) => {\n // container exists only in browser\n return (\n <React.Fragment>\n {container ? ReactDOM.createPortal(children, container) : <SSRPlaceholder />}\n {container ? <noscript data-render-container-id={rt_rootID} /> : <SSRPlaceholder />}\n </React.Fragment>\n );\n};\n\nexport class RenderInnerContainer extends React.Component<RenderInnerContainerProps> {\n public static __KONTUR_REACT_UI__ = 'RenderInnerContainer';\n public static displayName = 'RenderInnerContainer';\n\n public render() {\n const { anchor, children, domContainer, rootId } = this.props;\n let inner = anchor;\n\n if (children) {\n inner = (\n <React.Fragment>\n {anchor}\n <Portal key=\"portal-ref\" rt_rootID={rootId} container={domContainer}>\n {children}\n </Portal>\n </React.Fragment>\n );\n }\n\n return inner;\n }\n}\n\nPortal.propTypes = {\n container: safePropTypesInstanceOf(globalObject.HTMLElement),\n rt_rootID: propTypes.string.isRequired,\n children: propTypes.node.isRequired,\n};\n\nPortal.__KONTUR_REACT_UI__ = 'Portal';\nPortal.displayName = 'Portal';\n"]}
1
+ {"version":3,"sources":["RenderInnerContainer.tsx"],"names":["SSRPlaceholder","Portal","container","rt_rootID","children","ReactDOM","createPortal","PORTAL_ANCHOR_ATTR","RenderInnerContainer","render","props","anchor","domContainer","rootId","inner","React","Component","__KONTUR_REACT_UI__","displayName","propTypes","globalObject","HTMLElement","string","isRequired","node"],"mappings":"yRAAA;AACA;AACA;AACA;;;AAGA;;;AAGA;;;;;;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,wBAAM,yCAAQ,WAAQ,iBAAhB,GAAN,EAAvB;;AAEO,IAAMC,MAAM,GAAG,SAATA,MAAS,OAAqD,eAAlDC,SAAkD,QAAlDA,SAAkD,CAAvCC,SAAuC,QAAvCA,SAAuC,CAA5BC,QAA4B,QAA5BA,QAA4B;AACzE;AACA;AACE,iCAAC,cAAD,CAAO,QAAP;AACGF,IAAAA,SAAS,gBAAGG,kBAASC,YAAT,CAAsBF,QAAtB,EAAgCF,SAAhC,CAAH,gBAAgD,6BAAC,cAAD,OAD5D;AAEGA,IAAAA,SAAS,gBAAG,4DAAiBK,mCAAjB,IAAsCJ,SAAtC,SAAH,gBAA2D,6BAAC,cAAD,OAFvE,CADF;;;AAMD,CARM,C;;AAUMK,oB;;;;AAIJC,EAAAA,M,GAAP,kBAAgB;AACd,sBAAmD,KAAKC,KAAxD,CAAQC,MAAR,eAAQA,MAAR,CAAgBP,QAAhB,eAAgBA,QAAhB,CAA0BQ,YAA1B,eAA0BA,YAA1B,CAAwCC,MAAxC,eAAwCA,MAAxC;AACA,QAAIC,KAAK,GAAGH,MAAZ;;AAEA,QAAIP,QAAJ,EAAc;AACZU,MAAAA,KAAK;AACH,mCAAC,cAAD,CAAO,QAAP;AACGH,MAAAA,MADH;AAEE,mCAAC,MAAD,IAAQ,GAAG,EAAC,YAAZ,EAAyB,SAAS,EAAEE,MAApC,EAA4C,SAAS,EAAED,YAAvD;AACGR,MAAAA,QADH,CAFF,CADF;;;;AAQD;;AAED,WAAOU,KAAP;AACD,G,+BApBuCC,eAAMC,S,sDAAnCR,oB,CACGS,mB,GAAsB,sB,CADzBT,oB,CAEGU,W,GAAc,sB;;;AAqB9BjB,MAAM,CAACkB,SAAP,GAAmB;AACjBjB,EAAAA,SAAS,EAAE,sCAAwBkB,2BAAaC,WAArC,CADM;AAEjBlB,EAAAA,SAAS,EAAEgB,mBAAUG,MAAV,CAAiBC,UAFX;AAGjBnB,EAAAA,QAAQ,EAAEe,mBAAUK,IAAV,CAAeD,UAHR,EAAnB;;;AAMAtB,MAAM,CAACgB,mBAAP,GAA6B,QAA7B;AACAhB,MAAM,CAACiB,WAAP,GAAqB,QAArB","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport propTypes from 'prop-types';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { safePropTypesInstanceOf } from '../../lib/SSRSafe';\n\nimport { PortalProps, RenderContainerProps } from './RenderContainerTypes';\nimport { PORTAL_ANCHOR_ATTR } from './RenderContainer';\n\ninterface RenderInnerContainerProps extends RenderContainerProps {\n domContainer: Nullable<HTMLElement>;\n rootId: string;\n}\n\n// Заглушка нужна для корректной гидрации порталов после SSR,\n// которую реакт сам пока не поддерживает.\n// @see https://github.com/facebook/react/issues/13097\n// А также для вставки актуального render-container-id на клиенте.\n//\n// Дело в том, что во время гидрации, структура HTML на сервере\n// и на клиенте должна совпадать, иначе возможны артефакты.\n// Алгоритм там примерно такой. Клиент во время гидрации идет\n// по этим двум деревьям и сравнивает узлы. Элементы разных типов\n// он подменяет на свои. А те, что совпадают, он оставляет как есть\n// вместе со всеми атрибутами, навесив только обработчики событий.\n//\n// Поэтому, для портала, который рендерится только на клиенте,\n// нужно использовать серверную заглушку, чтобы при гидрации\n// он не испортил какой-то другой элемент. Null не подходит,\n// т.к. на сервере он тоже не рендерится.\n// А элемент с render-container-id нужно отрендерить с нуля.\n\nconst SSRPlaceholder = () => <script data-id=\"ssr-placeholder\" />;\n\nexport const Portal = ({ container, rt_rootID, children }: PortalProps) => {\n // container exists only in browser\n return (\n <React.Fragment>\n {container ? ReactDOM.createPortal(children, container) : <SSRPlaceholder />}\n {container ? <noscript {...{ [PORTAL_ANCHOR_ATTR]: rt_rootID }} /> : <SSRPlaceholder />}\n </React.Fragment>\n );\n};\n\nexport class RenderInnerContainer extends React.Component<RenderInnerContainerProps> {\n public static __KONTUR_REACT_UI__ = 'RenderInnerContainer';\n public static displayName = 'RenderInnerContainer';\n\n public render() {\n const { anchor, children, domContainer, rootId } = this.props;\n let inner = anchor;\n\n if (children) {\n inner = (\n <React.Fragment>\n {anchor}\n <Portal key=\"portal-ref\" rt_rootID={rootId} container={domContainer}>\n {children}\n </Portal>\n </React.Fragment>\n );\n }\n\n return inner;\n }\n}\n\nPortal.propTypes = {\n container: safePropTypesInstanceOf(globalObject.HTMLElement),\n rt_rootID: propTypes.string.isRequired,\n children: propTypes.node.isRequired,\n};\n\nPortal.__KONTUR_REACT_UI__ = 'Portal';\nPortal.displayName = 'Portal';\n"]}
@@ -23,19 +23,22 @@ export interface ZIndexProps extends React.HTMLAttributes<HTMLDivElement> {
23
23
  declare type DefaultProps = Required<Pick<ZIndexProps, 'delta' | 'priority' | 'style' | 'applyZIndex' | 'coverChildren' | 'createStackingContext' | 'useWrapper'>>;
24
24
  interface ZIndexState {
25
25
  zIndex: number;
26
+ savedZIndexContext: {
27
+ parentLayerZIndex: number;
28
+ maxZIndex: number;
29
+ } | null;
26
30
  }
27
31
  export declare class ZIndex extends React.Component<ZIndexProps, ZIndexState> {
28
32
  static __KONTUR_REACT_UI__: string;
29
33
  static displayName: string;
30
34
  static defaultProps: DefaultProps;
31
- state: {
32
- zIndex: number;
33
- };
35
+ state: ZIndexState;
34
36
  private getProps;
35
37
  static propTypes: {
36
38
  delta(props: ZIndexProps): Error | undefined;
37
39
  };
38
40
  private setRootNode;
41
+ private zIndexContext;
39
42
  constructor(props: ZIndexProps);
40
43
  componentDidUpdate(prevProps: Readonly<ZIndexProps>): void;
41
44
  componentWillUnmount(): void;
@@ -43,5 +46,6 @@ export declare class ZIndex extends React.Component<ZIndexProps, ZIndexState> {
43
46
  private wrapperRef;
44
47
  private calcZIndex;
45
48
  private increment;
49
+ private tryGetContextByDOM;
46
50
  }
47
51
  export {};
@@ -4,10 +4,15 @@ var _globalObject = require("@skbkontur/global-object");
4
4
  var _callChildRef = require("../../lib/callChildRef/callChildRef");
5
5
  var _rootNode = require("../../lib/rootNode");
6
6
  var _createPropsGetter = require("../../lib/createPropsGetter");
7
+ var _isInstanceOf = require("../../lib/isInstanceOf");
8
+ var _Loader = require("../../components/Loader");
9
+ var _RenderContainer = require("../RenderContainer");
7
10
 
8
11
  var _ZIndexStorage = require("./ZIndexStorage");var _excluded = ["style", "children", "delta", "priority", "applyZIndex", "coverChildren", "createStackingContext", "wrapperRef", "useWrapper"];var _class, _class2, _temp;
9
12
 
10
- var ZIndexContext = /*#__PURE__*/_react.default.createContext({ parentLayerZIndex: 0, maxZIndex: Infinity });
13
+ var DEFAULT_ZINDEX_CONTEXT = { parentLayerZIndex: 0, maxZIndex: Infinity };
14
+
15
+ var ZIndexContext = /*#__PURE__*/_react.default.createContext(DEFAULT_ZINDEX_CONTEXT);
11
16
 
12
17
  ZIndexContext.displayName = 'ZIndexContext';var
13
18
 
@@ -43,6 +48,7 @@ ZIndexContext.displayName = 'ZIndexContext';var
43
48
 
44
49
 
45
50
 
51
+
46
52
 
47
53
 
48
54
  ZIndex = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(ZIndex, _React$Component);
@@ -75,11 +81,15 @@ ZIndex = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functi
75
81
 
76
82
 
77
83
 
84
+
85
+
78
86
 
79
87
 
80
88
 
81
89
  function ZIndex(props) {var _this;
82
- _this = _React$Component.call(this, props) || this;_this.state = { zIndex: 0 };_this.getProps = (0, _createPropsGetter.createPropsGetter)(ZIndex.defaultProps);_this.
90
+ _this = _React$Component.call(this, props) || this;_this.state = { zIndex: 0, savedZIndexContext: null };_this.getProps = (0, _createPropsGetter.createPropsGetter)(ZIndex.defaultProps);_this.zIndexContext = null;_this.
91
+
92
+
83
93
 
84
94
 
85
95
 
@@ -148,6 +158,7 @@ ZIndex = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functi
148
158
  var wrapperRef = _this.props.wrapperRef;
149
159
  _this.setRootNode(element);
150
160
  wrapperRef && (0, _callChildRef.callChildRef)(wrapperRef, element);
161
+ element && _this.tryGetContextByDOM(element);
151
162
  };_this.
152
163
 
153
164
 
@@ -168,4 +179,31 @@ ZIndex = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functi
168
179
  var _this$getProps = _this.getProps(),priority = _this$getProps.priority,delta = _this$getProps.delta;
169
180
 
170
181
  return (0, _ZIndexStorage.incrementZIndex)(priority, delta);
171
- };_this.state.zIndex = _this.increment();return _this;}var _proto = ZIndex.prototype;_proto.componentDidUpdate = function componentDidUpdate(prevProps) {if (prevProps.priority !== this.props.priority || prevProps.delta !== this.props.delta) {(0, _ZIndexStorage.removeZIndex)(this.state.zIndex);this.setState({ zIndex: this.increment() });}};_proto.componentWillUnmount = function componentWillUnmount() {(0, _ZIndexStorage.removeZIndex)(this.state.zIndex);};_proto.render = function render() {var _this2 = this;var _this$getProps2 = this.getProps(),style = _this$getProps2.style,children = _this$getProps2.children,delta = _this$getProps2.delta,priority = _this$getProps2.priority,applyZIndex = _this$getProps2.applyZIndex,coverChildren = _this$getProps2.coverChildren,createStackingContext = _this$getProps2.createStackingContext,wrapperRef = _this$getProps2.wrapperRef,useWrapper = _this$getProps2.useWrapper,rest = (0, _objectWithoutPropertiesLoose2.default)(_this$getProps2, _excluded);var wrapperStyle = {};return /*#__PURE__*/_react.default.createElement(ZIndexContext.Consumer, null, function (_ref) {var parentLayerZIndex = _ref.parentLayerZIndex,maxZIndex = _ref.maxZIndex;var zIndexContextValue = { parentLayerZIndex: parentLayerZIndex, maxZIndex: maxZIndex };if (applyZIndex) {var newZIndex = _this2.calcZIndex(parentLayerZIndex, maxZIndex);wrapperStyle.zIndex = newZIndex;zIndexContextValue = coverChildren ? { parentLayerZIndex: parentLayerZIndex, maxZIndex: newZIndex } : { parentLayerZIndex: newZIndex, maxZIndex: Number.isFinite(maxZIndex) ? newZIndex : Infinity };if (createStackingContext) {(0, _globalObject.isBrowser)(_globalObject.globalObject) && 'isolation' in _globalObject.globalObject.document.body.style ? wrapperStyle.isolation = 'isolate' : wrapperStyle.transform = 'rotate(0)';}}var child = !useWrapper ? children : /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({ style: (0, _extends2.default)({}, style, wrapperStyle), ref: _this2.wrapperRef }, rest), children);return /*#__PURE__*/_react.default.createElement(ZIndexContext.Provider, { value: zIndexContextValue }, child);});};_proto.calcZIndex = function calcZIndex(parentLayerZIndex, maxZIndex) {var newZIndex = this.state.zIndex;if (Number.isFinite(maxZIndex)) {var allowedValuesIntervalLength = maxZIndex - parentLayerZIndex;var scale = _ZIndexStorage.upperBorder / allowedValuesIntervalLength;newZIndex = Math.ceil(newZIndex / scale);}newZIndex += parentLayerZIndex;return newZIndex;};return ZIndex;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'ZIndex', _class2.displayName = 'ZIndex', _class2.defaultProps = { delta: 10, priority: 0, style: {}, applyZIndex: true, coverChildren: false, createStackingContext: false, useWrapper: true }, _class2.propTypes = { delta: function delta(props) {if ((props.delta || _class2.defaultProps.delta) <= 0) {return new Error("[ZIndex]: Prop 'delta' must be greater than 0, received " + props.delta);}if (Math.trunc(props.delta || _class2.defaultProps.delta) !== props.delta) {return new Error("[ZIndex]: Prop 'delta' must be integer, received " + props.delta);}} }, _temp)) || _class;exports.ZIndex = ZIndex;
182
+ };_this.
183
+
184
+ tryGetContextByDOM = function (element) {
185
+ if (DEFAULT_ZINDEX_CONTEXT === _this.zIndexContext && _this.state.savedZIndexContext === null) {var _element$parentElemen;
186
+ var savedZIndexContext = DEFAULT_ZINDEX_CONTEXT;
187
+ var portal = (_element$parentElemen = element.parentElement) == null ? void 0 : _element$parentElemen.closest("[" + _RenderContainer.PORTAL_TAG_ATTR + "]");
188
+
189
+ if ((0, _isInstanceOf.isInstanceOf)(portal, _globalObject.globalObject.HTMLElement)) {var _noscript$parentEleme;
190
+ var portalID = portal.getAttribute(_RenderContainer.PORTAL_TAG_ATTR);
191
+ var noscript = document.querySelector("noscript[" + _RenderContainer.PORTAL_ANCHOR_ATTR + "=\"" + portalID + "\"]");
192
+ var parent = noscript == null ? void 0 : (_noscript$parentEleme = noscript.parentElement) == null ? void 0 : _noscript$parentEleme.closest('[style*=z-index]');
193
+
194
+ if ((0, _isInstanceOf.isInstanceOf)(parent, _globalObject.globalObject.HTMLElement)) {var _parent$parentElement;
195
+ var newZIndex = Number(parent.style.zIndex || 0);
196
+
197
+ var maxZIndex = Infinity;
198
+
199
+ if (((_parent$parentElement = parent.parentElement) == null ? void 0 : _parent$parentElement.dataset.tid) === _Loader.LoaderDataTids.veil) {
200
+ maxZIndex = _this.calcZIndex(newZIndex, maxZIndex);
201
+ }
202
+
203
+ savedZIndexContext = { maxZIndex: maxZIndex, parentLayerZIndex: newZIndex };
204
+ }
205
+ }
206
+
207
+ _this.setState({ savedZIndexContext: savedZIndexContext });
208
+ }
209
+ };_this.state.zIndex = _this.increment();return _this;}var _proto = ZIndex.prototype;_proto.componentDidUpdate = function componentDidUpdate(prevProps) {if (prevProps.priority !== this.props.priority || prevProps.delta !== this.props.delta) {(0, _ZIndexStorage.removeZIndex)(this.state.zIndex);this.setState({ zIndex: this.increment() });}};_proto.componentWillUnmount = function componentWillUnmount() {(0, _ZIndexStorage.removeZIndex)(this.state.zIndex);};_proto.render = function render() {var _this2 = this;var _this$getProps2 = this.getProps(),style = _this$getProps2.style,children = _this$getProps2.children,delta = _this$getProps2.delta,priority = _this$getProps2.priority,applyZIndex = _this$getProps2.applyZIndex,coverChildren = _this$getProps2.coverChildren,createStackingContext = _this$getProps2.createStackingContext,wrapperRef = _this$getProps2.wrapperRef,useWrapper = _this$getProps2.useWrapper,rest = (0, _objectWithoutPropertiesLoose2.default)(_this$getProps2, _excluded);var wrapperStyle = {};return /*#__PURE__*/_react.default.createElement(ZIndexContext.Consumer, null, function (context) {_this2.zIndexContext = context;var _ref = _this2.state.savedZIndexContext || context,parentLayerZIndex = _ref.parentLayerZIndex,maxZIndex = _ref.maxZIndex;var zIndexContextValue = { parentLayerZIndex: parentLayerZIndex, maxZIndex: maxZIndex };var newZIndex = 0;if (applyZIndex) {newZIndex = _this2.calcZIndex(parentLayerZIndex, maxZIndex);wrapperStyle.zIndex = newZIndex;zIndexContextValue = coverChildren ? { parentLayerZIndex: parentLayerZIndex, maxZIndex: newZIndex } : { parentLayerZIndex: newZIndex, maxZIndex: Number.isFinite(maxZIndex) ? newZIndex : Infinity };if (createStackingContext) {(0, _globalObject.isBrowser)(_globalObject.globalObject) && 'isolation' in _globalObject.globalObject.document.body.style ? wrapperStyle.isolation = 'isolate' : wrapperStyle.transform = 'rotate(0)';}}var child = !useWrapper ? children : /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({ style: (0, _extends2.default)({}, style, wrapperStyle), ref: _this2.wrapperRef }, rest), children);return /*#__PURE__*/_react.default.createElement(ZIndexContext.Provider, { value: zIndexContextValue }, child);});};_proto.calcZIndex = function calcZIndex(parentLayerZIndex, maxZIndex) {var newZIndex = this.state.zIndex;if (Number.isFinite(maxZIndex)) {var allowedValuesIntervalLength = maxZIndex - parentLayerZIndex;var scale = _ZIndexStorage.upperBorder / allowedValuesIntervalLength;newZIndex = Math.ceil(newZIndex / scale);}newZIndex += parentLayerZIndex;return newZIndex;};return ZIndex;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'ZIndex', _class2.displayName = 'ZIndex', _class2.defaultProps = { delta: 10, priority: 0, style: {}, applyZIndex: true, coverChildren: false, createStackingContext: false, useWrapper: true }, _class2.propTypes = { delta: function delta(props) {if ((props.delta || _class2.defaultProps.delta) <= 0) {return new Error("[ZIndex]: Prop 'delta' must be greater than 0, received " + props.delta);}if (Math.trunc(props.delta || _class2.defaultProps.delta) !== props.delta) {return new Error("[ZIndex]: Prop 'delta' must be integer, received " + props.delta);}} }, _temp)) || _class;exports.ZIndex = ZIndex;