@skbkontur/react-ui 3.12.7 → 3.12.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/README.md +25 -4
- package/cjs/components/CurrencyInput/CurrencyInput.js +6 -2
- package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.d.ts +1 -1
- package/cjs/components/Hint/Hint.d.ts +5 -1
- package/cjs/components/Hint/Hint.js +9 -1
- package/cjs/components/Hint/Hint.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.js +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
- package/cjs/components/Toast/Toast.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.d.ts +4 -2
- package/cjs/components/Tooltip/Tooltip.js +11 -8
- package/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +2 -1
- package/cjs/internal/CommonWrapper/CommonWrapper.js +20 -6
- package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
- package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +1 -1
- package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
- package/cjs/internal/InternalMenu/InternalMenu.js +22 -8
- package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
- package/cjs/internal/Menu/Menu.js +7 -3
- package/cjs/internal/Menu/Menu.js.map +1 -1
- package/cjs/internal/Popup/Popup.d.ts +2 -2
- package/cjs/internal/Popup/Popup.js +29 -21
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/Popup/PopupHelper.d.ts +1 -1
- package/cjs/internal/Popup/PopupHelper.js.map +1 -1
- package/cjs/internal/Popup/PopupPin.d.ts +1 -1
- package/cjs/internal/Popup/PopupPin.js.map +1 -1
- package/cjs/internal/RenderContainer/RenderContainer.js +10 -0
- package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
- package/cjs/internal/RenderContainer/RenderContainerTypes.d.ts +1 -0
- package/cjs/internal/RenderLayer/RenderLayer.d.ts +2 -1
- package/cjs/internal/RenderLayer/RenderLayer.js +11 -3
- package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
- package/cjs/lib/SSRSafe.d.ts +2 -0
- package/cjs/lib/SSRSafe.js +17 -1
- package/cjs/lib/SSRSafe.js.map +1 -1
- package/cjs/lib/dom/getDOMRect.d.ts +11 -0
- package/cjs/lib/dom/getDOMRect.js +36 -0
- package/cjs/lib/dom/getDOMRect.js.map +1 -0
- package/cjs/lib/instanceWithAnchorElement.d.ts +5 -0
- package/cjs/lib/instanceWithAnchorElement.js +9 -0
- package/cjs/lib/instanceWithAnchorElement.js.map +1 -0
- package/cjs/lib/listenFocusOutside.d.ts +1 -1
- package/cjs/lib/listenFocusOutside.js.map +1 -1
- package/cjs/lib/rootNode/getRootNode.d.ts +10 -1
- package/cjs/lib/rootNode/getRootNode.js +67 -12
- package/cjs/lib/rootNode/getRootNode.js.map +1 -1
- package/cjs/lib/rootNode/rootNodeDecorator.d.ts +22 -3
- package/cjs/lib/rootNode/rootNodeDecorator.js +40 -4
- package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -1
- package/cjs/lib/utils.d.ts +7 -0
- package/cjs/lib/utils.js +12 -2
- package/cjs/lib/utils.js.map +1 -1
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +8 -1
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +1 -1
- package/components/Hint/Hint/Hint.js +9 -1
- package/components/Hint/Hint/Hint.js.map +1 -1
- package/components/Hint/Hint.d.ts +5 -1
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +1 -1
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.d.ts +1 -1
- package/components/Toast/Toast/Toast.js.map +1 -1
- package/components/Tooltip/Tooltip/Tooltip.js +13 -9
- package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +4 -2
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +22 -7
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
- package/internal/CommonWrapper/CommonWrapper.d.ts +2 -1
- package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
- package/internal/DropdownContainer/DropdownContainer.d.ts +1 -1
- package/internal/InternalMenu/InternalMenu/InternalMenu.js +16 -6
- package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
- package/internal/Menu/Menu/Menu.js +6 -1
- package/internal/Menu/Menu/Menu.js.map +1 -1
- package/internal/Popup/Popup/Popup.js +36 -27
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/Popup/Popup.d.ts +2 -2
- package/internal/Popup/PopupHelper/PopupHelper.js.map +1 -1
- package/internal/Popup/PopupHelper.d.ts +1 -1
- package/internal/Popup/PopupPin/PopupPin.js.map +1 -1
- package/internal/Popup/PopupPin.d.ts +1 -1
- package/internal/RenderContainer/RenderContainer/RenderContainer.js +9 -0
- package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
- package/internal/RenderContainer/RenderContainerTypes.d.ts +1 -0
- package/internal/RenderLayer/RenderLayer/RenderLayer.js +13 -6
- package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
- package/internal/RenderLayer/RenderLayer.d.ts +2 -1
- package/lib/SSRSafe/SSRSafe.js +14 -0
- package/lib/SSRSafe/SSRSafe.js.map +1 -1
- package/lib/SSRSafe.d.ts +2 -0
- package/lib/dom/getDOMRect/getDOMRect.js +40 -0
- package/lib/dom/getDOMRect/getDOMRect.js.map +1 -0
- package/lib/dom/getDOMRect/package.json +6 -0
- package/lib/dom/getDOMRect.d.ts +11 -0
- package/lib/instanceWithAnchorElement/instanceWithAnchorElement.js +3 -0
- package/lib/instanceWithAnchorElement/instanceWithAnchorElement.js.map +1 -0
- package/lib/instanceWithAnchorElement/package.json +6 -0
- package/lib/instanceWithAnchorElement.d.ts +5 -0
- package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
- package/lib/listenFocusOutside.d.ts +1 -1
- package/lib/rootNode/getRootNode/getRootNode.js +58 -12
- package/lib/rootNode/getRootNode/getRootNode.js.map +1 -1
- package/lib/rootNode/getRootNode.d.ts +10 -1
- package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js +24 -3
- package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -1
- package/lib/rootNode/rootNodeDecorator.d.ts +22 -3
- package/lib/utils/utils.js +10 -0
- package/lib/utils/utils.js.map +1 -1
- package/lib/utils.d.ts +7 -0
- package/package.json +12 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["CurrencyInput.tsx"],"names":["React","PropTypes","warning","debounce","isIE11","Input","CommonWrapper","rootNode","MAX_SAFE_DIGITS","SelectionHelper","CurrencyHelper","CurrencyInputHelper","CURRENCY_INPUT_ACTIONS","extractAction","CurrencyInput","state","getState","props","value","fractionDigits","hideTrailingZeros","focused","input","tempSelectionForOnChange","fromPosition","setRootNode","renderMain","signed","onSubmit","integerDigits","rest","placeholder","format","formatted","handleBlur","handleFocus","handleMouseUp","handleKeyDown","handleValueChange","handlePaste","handleCopy","handleCut","onMouseEnter","onMouseLeave","onMouseOver","refInput","focus","blur","debouncedSetSelectionFromEvent","setSelectionFromEvent","event","persist","selection","getSelection","target","onKeyDown","defaultPrevented","action","Ignore","Unknown","preventDefault","Submit","Backspace","inputValue","moveCursor","end","Delete","start","MoveCursorLeft","MoveCursorRight","Home","setState","End","length","ExtendSelectionLeft","extendSelection","ExtendSelectionRight","FullSelection","forward","ExtendSelectionToStart","backward","ExtendSelectionToEnd","inputEnd","scrollInput","node","getNode","scrollWidth","clientWidth","PAD","SHIFT","selected","position","direction","charsCount","charWidth","frame","Math","ceil","frameStart","scrollLeft","frameEnd","getInputSelectionFromEvent","step","extended","result","safeInsert","unsigned","parsedValue","parse","onValueChange","blink","getOnChangeDelta","oldValue","substring","substr","delta","data","clipboardData","getData","formatForClipboard","setData","selectionStart","selectionEnd","selectionDirection","valueLenght","onFocus","onBlur","element","componentDidMount","maxLength","undefined","componentDidUpdate","prevProps","prevState","isValidNumber","isNumeric","Number","setSelectionRange","render","normilized","normalizeSelection","PureComponent","__KONTUR_REACT_UI__","propTypes","align","oneOf","autoFocus","bool","borderless","disabled","error","number","leftIcon","string","size","width","oneOfType","func","isRequired","defaultProps","inputMode","HTMLInputElement","Error","isNaN","parseFloat","isFinite"],"mappings":"+PAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,OAAP,MAAoB,SAApB;AACA,OAAOC,QAAP,MAAqB,iBAArB;;AAEA,SAASC,MAAT,QAAuB,kBAAvB;AACA,SAASC,KAAT,QAAkC,UAAlC;;AAEA,SAAsBC,aAAtB,QAAmE,8BAAnE;AACA,SAAuBC,QAAvB,QAAuC,oBAAvC;;AAEA,SAASC,eAAT,QAAgC,aAAhC;AACA,SAAwCC,eAAxC,QAA+D,mBAA/D;AACA,SAASC,cAAT,QAA+B,kBAA/B;AACA,SAASC,mBAAT,QAAoC,uBAApC;AACA,SAASC,sBAAT,EAAiCC,aAAjC,QAAsD,gCAAtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,OATA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAEA,IAAaC,aAAb,GADCP,QACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCSQ,IAAAA,KArCT;AAsCO,UAAKC,QAAL,CAAc,MAAKC,KAAL,CAAWC,KAAzB,EAAgC,MAAKD,KAAL,CAAWE,cAA3C,EAA2D,MAAKF,KAAL,CAAWG,iBAAtE,CAtCP;AAuCIC,MAAAA,OAAO,EAAE,KAvCb;;;AA0CUC,IAAAA,KA1CV;AA2CUC,IAAAA,wBA3CV,GA2CgDd,eAAe,CAACe,YAAhB,CAA6B,CAA7B,CA3ChD;AA4CUC,IAAAA,WA5CV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqFSC,IAAAA,UArFT,GAqFsB,UAACT,KAAD,EAAuD;AACjEE,MAAAA,cADiE,GACeF,KADf,CACjEE,cADiE,CACjDQ,MADiD,GACeV,KADf,CACjDU,MADiD,CACzCC,QADyC,GACeX,KADf,CACzCW,QADyC,CAC/BC,aAD+B,GACeZ,KADf,CAC/BY,aAD+B,CAChBT,iBADgB,GACeH,KADf,CAChBG,iBADgB,CACMU,IADN,iCACeb,KADf;AAEzE,UAAMc,WAAW;AACf,YAAKd,KAAL,CAAWc,WAAX,IAA0B,IAA1B;AACIrB,MAAAA,cAAc,CAACsB,MAAf,CAAsB,CAAtB,EAAyB,EAAEb,cAAc,EAAdA,cAAF,EAAkBC,iBAAiB,EAAjBA,iBAAlB,EAAzB,CADJ;AAEI,YAAKH,KAAL,CAAWc,WAHjB;;AAKA;AACE,4BAAC,KAAD;AACMD,QAAAA,IADN;AAEE,UAAA,KAAK,EAAE,MAAKf,KAAL,CAAWkB,SAFpB;AAGE,UAAA,MAAM,EAAE,MAAKC,UAHf;AAIE,UAAA,OAAO,EAAE,MAAKC,WAJhB;AAKE,UAAA,SAAS,EAAE,MAAKC,aALlB;AAME,UAAA,SAAS,EAAE,MAAKC,aANlB;AAOE,UAAA,aAAa,EAAE,MAAKC,iBAPtB;AAQE,UAAA,OAAO,EAAE,MAAKC,WARhB;AASE,UAAA,MAAM,EAAE,MAAKC,UATf;AAUE,UAAA,KAAK,EAAE,MAAKC,SAVd;AAWE,UAAA,YAAY,EAAE,MAAKxB,KAAL,CAAWyB,YAX3B;AAYE,UAAA,YAAY,EAAE,MAAKzB,KAAL,CAAW0B,YAZ3B;AAaE,UAAA,WAAW,EAAE,MAAK1B,KAAL,CAAW2B,WAb1B;AAcE,UAAA,GAAG,EAAE,MAAKC,QAdZ;AAeE,UAAA,WAAW,EAAE,MAAK9B,KAAL,CAAWM,OAAX,GAAqB,EAArB,GAA0BU,WAfzC,IADF;;;AAmBD,KA/GH;;;;;AAoHSe,IAAAA,KApHT,GAoHiB,YAAM;AACnB,UAAI,MAAKxB,KAAT,EAAgB;AACd,cAAKA,KAAL,CAAWwB,KAAX;AACD;AACF,KAxHH;;;;;AA6HSC,IAAAA,IA7HT,GA6HgB,YAAM;AAClB,UAAI,MAAKzB,KAAT,EAAgB;AACd,cAAKA,KAAL,CAAWyB,IAAX;AACD;AACF,KAjIH;;;;;;;;;;;;;;;;AAiJmBC,IAAAA,8BAjJnB,GAiJoD7C,QAAQ,CAAC,MAAK8C,qBAAN,EAA6B,GAA7B,CAjJ5D;;AAmJUb,IAAAA,aAnJV,GAmJ0B,UAACc,KAAD,EAA+C;AACrE,UAAI9C,MAAJ,EAAY;AACV8C,QAAAA,KAAK,CAACC,OAAN;AACA,cAAKH,8BAAL,CAAoCE,KAApC;AACD,OAHD,MAGO;AACL,cAAKD,qBAAL,CAA2BC,KAA3B;AACD;AACF,KA1JH;;AA4JUb,IAAAA,aA5JV,GA4J0B,UAACa,KAAD,EAAkD;AACxE,UAAME,SAAS,GAAG,MAAKC,YAAL,CAAkBH,KAAK,CAACI,MAAxB,CAAlB;AACA,YAAK/B,wBAAL,GAAgC6B,SAAhC;;AAEA,UAAI,MAAKnC,KAAL,CAAWsC,SAAf,EAA0B;AACxB,cAAKtC,KAAL,CAAWsC,SAAX,CAAqBL,KAArB;AACA,YAAIA,KAAK,CAACM,gBAAV,EAA4B;AAC1B;AACD;AACF;;AAED,UAAMC,MAAM,GAAG5C,aAAa,CAACqC,KAAD,CAA5B;;AAEA,UAAIO,MAAM,KAAK7C,sBAAsB,CAAC8C,MAAtC,EAA8C;AAC5C;AACD;;AAED,UAAID,MAAM,KAAK7C,sBAAsB,CAAC+C,OAAtC,EAA+C;AAC7CT,QAAAA,KAAK,CAACU,cAAN;AACD;;AAED,cAAQH,MAAR;AACE,aAAK7C,sBAAsB,CAACiD,MAA5B,CAAoC;AAClC,gBAAI,MAAK5C,KAAL,CAAWW,QAAf,EAAyB;AACvB,oBAAKX,KAAL,CAAWW,QAAX;AACD;AACD;AACD;AACD,aAAKhB,sBAAsB,CAACkD,SAA5B,CAAuC;AACrC,kBAAKC,UAAL,CAAgBpD,mBAAmB,CAACqD,UAApB,CAA+B,MAAKjD,KAAL,CAAWkB,SAA1C,EAAqDmB,SAArD,EAAgE,CAAC,CAAjE,CAAhB,EAAqFA,SAAS,CAACa,GAA/F,EAAoG,EAApG;AACA;AACD;AACD,aAAKrD,sBAAsB,CAACsD,MAA5B,CAAoC;AAClC,kBAAKH,UAAL,CAAgBX,SAAS,CAACe,KAA1B,EAAiCxD,mBAAmB,CAACqD,UAApB,CAA+B,MAAKjD,KAAL,CAAWkB,SAA1C,EAAqDmB,SAArD,EAAgE,CAAC,CAAjE,CAAjC,EAAsG,EAAtG;AACA;AACD;AACD,aAAKxC,sBAAsB,CAACwD,cAA5B,CAA4C;AAC1C,kBAAKJ,UAAL,CAAgBZ,SAAhB,EAA2B,CAAC,CAA5B;AACA;AACD;AACD,aAAKxC,sBAAsB,CAACyD,eAA5B,CAA6C;AAC3C,kBAAKL,UAAL,CAAgBZ,SAAhB,EAA2B,CAAC,CAA5B;AACA;AACD;AACD,aAAKxC,sBAAsB,CAAC0D,IAA5B,CAAkC;AAChC,kBAAKC,QAAL,CAAc,EAAEnB,SAAS,EAAE3C,eAAe,CAACe,YAAhB,CAA6B,CAA7B,CAAb,EAAd;AACA;AACD;AACD,aAAKZ,sBAAsB,CAAC4D,GAA5B,CAAiC;AAC/B,gBAAMP,GAAG,GAAG,MAAKlD,KAAL,CAAWkB,SAAX,CAAqBwC,MAAjC;AACA,kBAAKF,QAAL,CAAc,EAAEnB,SAAS,EAAE3C,eAAe,CAACe,YAAhB,CAA6ByC,GAA7B,CAAb,EAAd;AACA;AACD;AACD,aAAKrD,sBAAsB,CAAC8D,mBAA5B,CAAiD;AAC/C,kBAAKC,eAAL,CAAqBvB,SAArB,EAAgC,CAAC,CAAjC;AACA;AACD;AACD,aAAKxC,sBAAsB,CAACgE,oBAA5B,CAAkD;AAChD,kBAAKD,eAAL,CAAqBvB,SAArB,EAAgC,CAAC,CAAjC;AACA;AACD;AACD,aAAKxC,sBAAsB,CAACiE,aAA5B,CAA2C;AACzC,kBAAKN,QAAL,CAAc;AACZnB,cAAAA,SAAS,EAAE3C,eAAe,CAACqE,OAAhB,CAAwB,CAAxB,EAA2B,MAAK/D,KAAL,CAAWkB,SAAX,CAAqBwC,MAAhD,CADC,EAAd;;AAGA;AACD;AACD,aAAK7D,sBAAsB,CAACmE,sBAA5B,CAAoD;AAClD,kBAAKR,QAAL,CAAc;AACZnB,cAAAA,SAAS,EAAE3C,eAAe,CAACuE,QAAhB,CAAyB,CAAzB,EAA4B5B,SAAS,CAACe,KAAtC,CADC,EAAd;;AAGA;AACD;AACD,aAAKvD,sBAAsB,CAACqE,oBAA5B,CAAkD;AAChD,gBAAMC,QAAQ,GAAG,MAAKnE,KAAL,CAAWkB,SAAX,CAAqBwC,MAAtC;AACA,kBAAKF,QAAL,CAAc;AACZnB,cAAAA,SAAS,EAAE3C,eAAe,CAACqE,OAAhB,CAAwB1B,SAAS,CAACe,KAAlC,EAAyCe,QAAzC,CADC,EAAd;;AAGA;AACD,WA1DH;;AA4DD,KA7OH;;AA+OUC,IAAAA,WA/OV,GA+OwB,YAAM;AAC1B,UAAMC,IAAI,kBAAG,MAAK9D,KAAR,qBAAG,YAAY+D,OAAZ,EAAb;AACA,UAAI,CAACD,IAAD,IAASA,IAAI,CAACE,WAAL,KAAqBF,IAAI,CAACG,WAAvC,EAAoD;AAClD;AACD;AACD,UAAMC,GAAG,GAAG,CAAZ;AACA,UAAMC,KAAK,GAAG,CAAd;;AAEA,UAAMrC,SAAS,GAAG,MAAKrC,KAAL,CAAWqC,SAA7B;AACA,UAAMsC,QAAQ,GAAGtC,SAAS,CAACe,KAAV,KAAoBf,SAAS,CAACa,GAA/C;AACA,UAAM0B,QAAQ,GAAGD,QAAQ,IAAItC,SAAS,CAACwC,SAAV,KAAwB,SAApC,GAAgDxC,SAAS,CAACa,GAA1D,GAAgEb,SAAS,CAACe,KAA3F;AACA,UAAM0B,UAAU,GAAG,MAAK9E,KAAL,CAAWkB,SAAX,CAAqBwC,MAAxC;AACA,UAAMqB,SAAS,GAAGV,IAAI,CAACE,WAAL,GAAmBO,UAArC;AACA,UAAME,KAAK,GAAGC,IAAI,CAACC,IAAL,CAAUb,IAAI,CAACG,WAAL,GAAmBO,SAA7B,CAAd;AACA,UAAMI,UAAU,GAAGF,IAAI,CAACC,IAAL,CAAUb,IAAI,CAACe,UAAL,GAAkBL,SAA5B,CAAnB;AACA,UAAMM,QAAQ,GAAGF,UAAU,GAAGH,KAA9B;;AAEA,UAAIJ,QAAQ,GAAGO,UAAU,GAAGV,GAA5B,EAAiC;AAC/BJ,QAAAA,IAAI,CAACe,UAAL,GAAkB,CAACR,QAAQ,GAAGF,KAAZ,IAAqBK,SAAvC;AACD;AACD,UAAIH,QAAQ,GAAGS,QAAQ,GAAGZ,GAA1B,EAA+B;AAC7BJ,QAAAA,IAAI,CAACe,UAAL,GAAkB,CAACR,QAAQ,GAAGI,KAAX,GAAmBN,KAApB,IAA6BK,SAA/C;AACD;AACF,KAtQH;;AAwQUzC,IAAAA,YAxQV,GAwQyB,UAAC/B,KAAD,EAAmC;AACxD,UAAM8B,SAAS,GAAGiD,0BAA0B,CAAC/E,KAAD,CAA5C;AACA,aAAO;AACL6C,QAAAA,KAAK,EAAEf,SAAS,CAACe,KADZ;AAELF,QAAAA,GAAG,EAAEb,SAAS,CAACa,GAFV;AAGL2B,QAAAA,SAAS,EAAE,MAAK7E,KAAL,CAAWqC,SAAX,CAAqBwC,SAH3B,EAAP;;AAKD,KA/QH;;AAiRU5B,IAAAA,UAjRV,GAiRuB,UAACZ,SAAD,EAAuBkD,IAAvB,EAAwC;AAC3D,UAAMX,QAAQ,GAAGhF,mBAAmB,CAACqD,UAApB,CAA+B,MAAKjD,KAAL,CAAWkB,SAA1C,EAAqDmB,SAArD,EAAgEkD,IAAhE,CAAjB;AACA,YAAK/B,QAAL,CAAc,EAAEnB,SAAS,EAAE3C,eAAe,CAACe,YAAhB,CAA6BmE,QAA7B,CAAb,EAAd;AACD,KApRH;;AAsRUhB,IAAAA,eAtRV,GAsR4B,UAACvB,SAAD,EAAuBkD,IAAvB,EAAwC;AAChE,UAAMC,QAAQ,GAAG5F,mBAAmB,CAACgE,eAApB,CAAoC,MAAK5D,KAAL,CAAWkB,SAA/C,EAA0DmB,SAA1D,EAAqEkD,IAArE,CAAjB;AACA,YAAK/B,QAAL,CAAc,EAAEnB,SAAS,EAAEmD,QAAb,EAAd;AACD,KAzRH;;AA2RUxC,IAAAA,UA3RV,GA2RuB,UAACI,KAAD,EAAgBF,GAAhB,EAA6B/C,KAA7B,EAA+C;AAClE,UAAMsF,MAAM,GAAG7F,mBAAmB,CAAC8F,UAApB,CAA+B,MAAK1F,KAAL,CAAWkB,SAA1C,EAAqDkC,KAArD,EAA4DF,GAA5D,EAAiE/C,KAAjE,EAAwE;AACrFW,QAAAA,aAAa,EAAE,MAAKZ,KAAL,CAAWY,aAD2D;AAErFV,QAAAA,cAAc,EAAE,MAAKF,KAAL,CAAWE,cAF0D;AAGrFuF,QAAAA,QAAQ,EAAE,CAAC,MAAKzF,KAAL,CAAWU,MAH+D,EAAxE,CAAf;;AAKA,UAAI6E,MAAJ,EAAY;AACV,YAAMvE,SAAS,GAAGuE,MAAM,CAACtF,KAAzB;AACA,YAAMkC,SAAS,GAAG3C,eAAe,CAACe,YAAhB,CAA6BgF,MAAM,CAACb,QAApC,CAAlB;AACA,cAAKpB,QAAL,CAAc,EAAEtC,SAAS,EAATA,SAAF,EAAamB,SAAS,EAATA,SAAb,EAAd,EAAwC,YAAM;AAC5C,cAAMuD,WAAW,GAAGjG,cAAc,CAACkG,KAAf,CAAqB3E,SAArB,CAApB;AACA,cAAI,MAAKhB,KAAL,CAAWC,KAAX,KAAqByF,WAAzB,EAAsC;AACpC,kBAAK1F,KAAL,CAAW4F,aAAX,CAAyBF,WAAzB;AACD;AACF,SALD;AAMA,eAAO,IAAP;AACD;;AAED,UAAI,MAAKrF,KAAT,EAAgB;AACd,cAAKA,KAAL,CAAWwF,KAAX;AACD;AACD,aAAO,KAAP;AACD,KAjTH;;AAmTUC,IAAAA,gBAnTV,GAmT6B,UAAC7F,KAAD,EAAmB;AAC5C,UAAMkC,SAAS,GAAG,MAAK7B,wBAAvB;AACA,UAAMyF,QAAQ,GAAG,MAAKjG,KAAL,CAAWkB,SAA5B;AACA,UAAImB,SAAS,CAACe,KAAV,KAAoBf,SAAS,CAACa,GAAlC,EAAuC;AACrC,eAAO/C,KAAK,CAAC+F,SAAN,CAAgB7D,SAAS,CAACe,KAA1B,EAAiCjD,KAAK,CAACuD,MAAN,IAAgBuC,QAAQ,CAACvC,MAAT,GAAkBrB,SAAS,CAACa,GAA5C,CAAjC,CAAP;AACD,OAFD,MAEO,IAAI/C,KAAK,CAACuD,MAAN,GAAeuC,QAAQ,CAACvC,MAA5B,EAAoC;AACzC,eAAOvD,KAAK,CAACgG,MAAN,CAAa9D,SAAS,CAACe,KAAvB,EAA8BjD,KAAK,CAACuD,MAAN,GAAeuC,QAAQ,CAACvC,MAAtD,CAAP;AACD;AACD,aAAO,IAAP;AACD,KA5TH;;AA8TUnC,IAAAA,iBA9TV,GA8T8B,UAACpB,KAAD,EAAyB;AACnD,UAAMkC,SAAS,GAAG,MAAK7B,wBAAvB;AACA,UAAM4F,KAAK,GAAG,MAAKJ,gBAAL,CAAsB7F,KAAtB,CAAd;AACA,UAAIiG,KAAK,IAAI,IAAT,IAAiB,CAAC,MAAKpD,UAAL,CAAgBX,SAAS,CAACe,KAA1B,EAAiCf,SAAS,CAACa,GAA3C,EAAgDkD,KAAhD,CAAtB,EAA8E;AAC5E,cAAK5C,QAAL,CAAc,EAAEnB,SAAS,EAATA,SAAF,EAAd;AACD;AACF,KApUH;;AAsUUb,IAAAA,WAtUV,GAsUwB,UAACW,KAAD,EAAmD;AACvE,UAAMkE,IAAI,GAAGlE,KAAK,CAACmE,aAAN,CAAoBC,OAApB,CAA4B,MAA5B,CAAb;AACA,UAAMlE,SAAS,GAAG,MAAKC,YAAL,CAAkBH,KAAK,CAACI,MAAxB,CAAlB;AACA,YAAKS,UAAL,CAAgBX,SAAS,CAACe,KAA1B,EAAiCf,SAAS,CAACa,GAA3C,EAAgDmD,IAAhD;AACAlE,MAAAA,KAAK,CAACU,cAAN;AACD,KA3UH;;AA6UUpB,IAAAA,UA7UV,GA6UuB,UAACU,KAAD,EAAmD;AACtE,UAAME,SAAS,GAAG,MAAKC,YAAL,CAAkBH,KAAK,CAACI,MAAxB,CAAlB;AACA,UAAIF,SAAS,CAACe,KAAV,KAAoBf,SAAS,CAACa,GAAlC,EAAuC;AACrC,YAAMgD,SAAS,GAAG,MAAKlG,KAAL,CAAWkB,SAAX,CAAqBgF,SAArB,CAA+B7D,SAAS,CAACe,KAAzC,EAAgDf,SAAS,CAACa,GAA1D,CAAlB;AACA,YAAMmD,IAAI,GAAG1G,cAAc,CAAC6G,kBAAf,CAAkCN,SAAlC,CAAb;AACA/D,QAAAA,KAAK,CAACmE,aAAN,CAAoBG,OAApB,CAA4B,MAA5B,EAAoCJ,IAApC;AACD;AACDlE,MAAAA,KAAK,CAACU,cAAN;AACD,KArVH;;AAuVUnB,IAAAA,SAvVV,GAuVsB,UAACS,KAAD,EAAmD;AACrE,UAAME,SAAS,GAAG,MAAKC,YAAL,CAAkBH,KAAK,CAACI,MAAxB,CAAlB;AACA,UAAIF,SAAS,CAACe,KAAV,KAAoBf,SAAS,CAACa,GAAlC,EAAuC;AACrC,YAAMgD,SAAS,GAAG,MAAKlG,KAAL,CAAWkB,SAAX,CAAqBgF,SAArB,CAA+B7D,SAAS,CAACe,KAAzC,EAAgDf,SAAS,CAACa,GAA1D,CAAlB;AACA,YAAMmD,IAAI,GAAG1G,cAAc,CAAC6G,kBAAf,CAAkCN,SAAlC,CAAb;AACA/D,QAAAA,KAAK,CAACmE,aAAN,CAAoBG,OAApB,CAA4B,MAA5B,EAAoCJ,IAApC;AACA,cAAKrD,UAAL,CAAgBX,SAAS,CAACe,KAA1B,EAAiCf,SAAS,CAACa,GAA3C,EAAgD,EAAhD;AACD;AACDf,MAAAA,KAAK,CAACU,cAAN;AACD,KAhWH;;AAkWUzB,IAAAA,WAlWV,GAkWwB,UAACe,KAAD,EAA+C;AACNA,MAAAA,KAAK,CAACI,MADA,CAC3DmE,cAD2D,iBAC3DA,cAD2D,CAC3CC,YAD2C,iBAC3CA,YAD2C,CAC7BC,kBAD6B,iBAC7BA,kBAD6B;AAEnE,UAAMC,WAAW,GAAG1E,KAAK,CAACI,MAAN,CAAapC,KAAb,CAAmBuD,MAAvC;;AAEA,UAAMrB,SAAS,GAAG;AAChBe,QAAAA,KAAK,EAAEsD,cAAc,KAAKC,YAAnB,GAAkCD,cAAc,IAAI,CAApD,GAAwDA,cAAc,IAAIG,WADjE;AAEhB3D,QAAAA,GAAG,EAAEyD,YAAY,KAAKD,cAAjB,GAAkCC,YAAY,IAAI,CAAlD,GAAsDA,YAAY,IAAIE,WAF3D;AAGhBhC,QAAAA,SAAS,EAAG+B,kBAAD,IAA8C,MAHzC,EAAlB;;;AAMA,YAAKpD,QAAL,CAAc;AACZlD,QAAAA,OAAO,EAAE,IADG;AAEZ+B,QAAAA,SAAS,EAATA,SAFY,EAAd;;;AAKA,UAAI,MAAKnC,KAAL,CAAW4G,OAAf,EAAwB;AACtB,cAAK5G,KAAL,CAAW4G,OAAX,CAAmB3E,KAAnB;AACD;AACF,KApXH;;AAsXUhB,IAAAA,UAtXV,GAsXuB,UAACgB,KAAD,EAA+C;AAClE,UAAMhC,KAAK,GAAGR,cAAc,CAACkG,KAAf,CAAqB,MAAK7F,KAAL,CAAWkB,SAAhC,CAAd;;AAEA,YAAKsC,QAAL;AACK,YAAKvD,QAAL,CAAcE,KAAd,EAAqB,MAAKD,KAAL,CAAWE,cAAhC,EAAgD,MAAKF,KAAL,CAAWG,iBAA3D,CADL;AAEEC,QAAAA,OAAO,EAAE,KAFX;;;AAKA,UAAI,MAAKJ,KAAL,CAAW6G,MAAf,EAAuB;AACrB,cAAK7G,KAAL,CAAW6G,MAAX,CAAkB5E,KAAlB;AACD;AACF,KAjYH;;AAmYUL,IAAAA,QAnYV,GAmYqB,UAACkF,OAAD,EAA8B;AAC/C,YAAKzG,KAAL,GAAayG,OAAb;AACD,KArYH,2DA8CSC,iBA9CT,GA8CE,6BAAiC,mBACsB,KAAK/G,KAD3B,CACvBgH,SADuB,eACvBA,SADuB,CACZpG,aADY,eACZA,aADY,CACGV,cADH,eACGA,cADH,CAE/BjB,OAAO,CACL+H,SAAS,KAAKC,SADT,oGAAP,CAIAhI,OAAO,CACL,CAAC2B,aAAa,IAAI,CAAlB,KAAwBV,cAAc,IAAI,CAA1C,KAAgDX,eAD3C,EAEL,0EAAwEA,eAAxE,4EAFK,CAAP,CAKD,CAzDH,QA2DS2H,kBA3DT,GA2DE,4BAA0BC,SAA1B,EAAyDC,SAAzD,EAAwF,oBACjC,KAAKpH,KAD4B,CAC9EC,KAD8E,gBAC9EA,KAD8E,CACvEC,cADuE,gBACvEA,cADuE,CACvDC,iBADuD,gBACvDA,iBADuD,CAEtF,IACGkH,aAAa,CAACpH,KAAD,CAAb,IAAwBqH,SAAS,CAACrH,KAAD,CAAjC,IAA4CsH,MAAM,CAACtH,KAAD,CAAN,KAAkBR,cAAc,CAACkG,KAAf,CAAqByB,SAAS,CAACpG,SAA/B,CAA/D,IACAmG,SAAS,CAACjH,cAAV,KAA6BA,cAF/B,EAGE,CACA,KAAKoD,QAAL,CAAc,KAAKvD,QAAL,CAAcE,KAAd,EAAqBC,cAArB,EAAqCC,iBAArC,CAAd,EACD,CACD,IAAI,KAAKL,KAAL,CAAWM,OAAX,IAAsB,KAAKC,KAA/B,EAAsC,6BACb,KAAKP,KAAL,CAAWqC,SADE,CAC5Be,KAD4B,yBAC5BA,KAD4B,CACrBF,GADqB,yBACrBA,GADqB,CAGpC,KAAK3C,KAAL,CAAWmH,iBAAX,CAA6BtE,KAA7B,EAAoCF,GAApC,EACD,CACD,IAAIoE,SAAS,CAACjF,SAAV,KAAwB,KAAKrC,KAAL,CAAWqC,SAAvC,EAAkD,CAChD,KAAK+B,WAAL,GACD,CACF,CA3EH,QA6ESuD,MA7ET,GA6EE,kBAAgB,CACd,oBACE,oBAAC,aAAD,aAAe,WAAW,EAAE,KAAKjH,WAAjC,IAAkD,KAAKR,KAAvD,GACG,KAAKS,UADR,CADF,CAKD,CAnFH,QAmIUV,QAnIV,GAmIE,kBAAiBE,KAAjB,EAA0CC,cAA1C,EAA4EC,iBAA5E,EAAwG,CACtG,OAAO,EACLa,SAAS,EAAEvB,cAAc,CAACsB,MAAf,CAAsBd,KAAtB,EAA6B,EAAEC,cAAc,EAAdA,cAAF,EAAkBC,iBAAiB,EAAjBA,iBAAlB,EAA7B,CADN,EAELgC,SAAS,EAAE3C,eAAe,CAACe,YAAhB,CAA6B,CAA7B,CAFN,EAAP,CAID,CAxIH,QA0IUyB,qBA1IV,GA0IE,+BAA8BC,KAA9B,EAAyE,CACvE,IAAME,SAAS,GAAGiD,0BAA0B,CAACnD,KAAK,CAACI,MAAP,CAA5C,CACA,IAAMqF,UAAU,GAAGhI,mBAAmB,CAACiI,kBAApB,CAAuC,KAAK7H,KAAL,CAAWkB,SAAlD,EAA6DmB,SAA7D,CAAnB,CACA,KAAKmB,QAAL,CAAc,EAAEnB,SAAS,EAAEuF,UAAb,EAAd,EACD,CA9IH,CAgJE;AAhJF,0BAAmC3I,KAAK,CAAC6I,aAAzC,WACgBC,mBADhB,GACsC,eADtC,UAGgBC,SAHhB,GAG4B,EACxBC,KAAK,EAAE/I,SAAS,CAACgJ,KAAV,CAAgB,CAAC,MAAD,EAAS,QAAT,EAAmB,OAAnB,CAAhB,CADiB,EAExBC,SAAS,EAAEjJ,SAAS,CAACkJ,IAFG,EAGxBC,UAAU,EAAEnJ,SAAS,CAACkJ,IAHE,EAIxBE,QAAQ,EAAEpJ,SAAS,CAACkJ,IAJI,EAKxBG,KAAK,EAAErJ,SAAS,CAACkJ,IALO,EAMxBhI,cAAc,EAAElB,SAAS,CAACsJ,MANF,EAOxBnI,iBAAiB,EAAEnB,SAAS,CAACkJ,IAPL,EAQxBK,QAAQ,EAAEvJ,SAAS,CAAC8H,OARI,EASxBhG,WAAW,EAAE9B,SAAS,CAACwJ,MATC,EAUxB9H,MAAM,EAAE1B,SAAS,CAACkJ,IAVM,EAWxBO,IAAI,EAAEzJ,SAAS,CAACgJ,KAAV,CAAgB,CAAC,OAAD,EAAU,QAAV,EAAoB,OAApB,CAAhB,CAXkB,EAYxB/H,KAAK,EAAE,eAACD,KAAD,EAA+B,CACpCf,OAAO,CAACoI,aAAa,CAACrH,KAAK,CAACC,KAAP,CAAd,sDAAP,CACD,CAduB,EAexBhB,OAAO,EAAED,SAAS,CAACkJ,IAfK,EAgBxBQ,KAAK,EAAE1J,SAAS,CAAC2J,SAAV,CAAoB,CAAC3J,SAAS,CAACsJ,MAAX,EAAmBtJ,SAAS,CAACwJ,MAA7B,CAApB,CAhBiB,EAiBxB3B,MAAM,EAAE7H,SAAS,CAAC4J,IAjBM,EAkBxBhD,aAAa,EAAE5G,SAAS,CAAC4J,IAAV,CAAeC,UAlBN,EAmBxBjC,OAAO,EAAE5H,SAAS,CAAC4J,IAnBK,EAoBxBnH,YAAY,EAAEzC,SAAS,CAAC4J,IApBA,EAqBxBlH,YAAY,EAAE1C,SAAS,CAAC4J,IArBA,EAsBxBjH,WAAW,EAAE3C,SAAS,CAAC4J,IAtBC,EAuBxBjI,QAAQ,EAAE3B,SAAS,CAAC4J,IAvBI,EAH5B,UA6BgBE,YA7BhB,GA6B+B,EAC3Bf,KAAK,EAAE,OADoB,EAE3B7H,cAAc,EAAE,CAFW,EAG3BC,iBAAiB,EAAE,KAHQ,EAI3BF,KAAK,EAAE,IAJoB,EAK3B8I,SAAS,EAAE,SALgB,EA7B/B;;AAwYA,SAAS3D,0BAAT,CAAoC/E,KAApC,EAAmE;AACjE,MAAI,EAAEA,KAAK,YAAY2I,gBAAnB,CAAJ,EAA0C;AACxC,UAAM,IAAIC,KAAJ,CAAU,+BAAV,CAAN;AACD;;AAED,SAAO;AACL/F,IAAAA,KAAK,EAAE7C,KAAK,CAACmG,cADR;AAELxD,IAAAA,GAAG,EAAE3C,KAAK,CAACoG,YAFN;AAGL9B,IAAAA,SAAS,EAAEtE,KAAK,CAACqG,kBAHZ,EAAP;;AAKD;;AAED,SAASY,SAAT,CAAmBrH,KAAnB,EAA6D;AAC3D,SAAO,CAACiJ,KAAK,CAACC,UAAU,CAAClJ,KAAD,CAAX,CAAN,IAAuCmJ,QAAQ,CAACnJ,KAAD,CAAtD;AACD;;AAED,SAASoH,aAAT,CAAuBpH,KAAvB,EAAgD;AAC9C,SAAO,CAACiJ,KAAK,CAAC3B,MAAM,CAACtH,KAAD,CAAP,CAAb;AACD","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\nimport debounce from 'lodash.debounce';\n\nimport { isIE11 } from '../../lib/client';\nimport { Input, InputProps } from '../Input';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { TSetRootNode, rootNode } from '../../lib/rootNode';\n\nimport { MAX_SAFE_DIGITS } from './constants';\nimport { Selection, SelectionDirection, SelectionHelper } from './SelectionHelper';\nimport { CurrencyHelper } from './CurrencyHelper';\nimport { CurrencyInputHelper } from './CurrencyInputHelper';\nimport { CURRENCY_INPUT_ACTIONS, extractAction } from './CurrencyInputKeyboardActions';\n\nexport interface CurrencyInputProps\n extends CommonProps,\n Override<\n InputProps,\n {\n /** Значение */\n value: Nullable<number>;\n /** Убрать лишние нули после запятой */\n hideTrailingZeros: boolean;\n /** Кол-во цифр после зяпятой */\n fractionDigits?: Nullable<number>;\n /** Отрицательные значения */\n signed?: boolean;\n /**\n * Допустимое кол-во цифр целой части.\n * Если передан **0**, или `fractionDigits=15`, то и в целой части допускается только **0**.\n */\n integerDigits?: Nullable<number>;\n /** Вызывается при изменении `value` */\n onValueChange: (value: Nullable<number>) => void;\n /** onSubmit */\n onSubmit?: () => void;\n }\n > {}\n\nexport interface CurrencyInputState {\n formatted: string;\n selection: Selection;\n focused: boolean;\n}\n\n/**\n * Поле для денежных сумм (и других числовых значений).\n * Принимает любые свойства `Input`.\n *\n * Максимальная длина числа - **15 цифр** (с десятичным разделителем в любом месте).\n * <br/>\n * Если `fractionDigits=15`, то в целой части допускается **0**.\n */\n@rootNode\nexport class CurrencyInput extends React.PureComponent<CurrencyInputProps, CurrencyInputState> {\n public static __KONTUR_REACT_UI__ = 'CurrencyInput';\n\n public static propTypes = {\n align: PropTypes.oneOf(['left', 'center', 'right']),\n autoFocus: PropTypes.bool,\n borderless: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n fractionDigits: PropTypes.number,\n hideTrailingZeros: PropTypes.bool,\n leftIcon: PropTypes.element,\n placeholder: PropTypes.string,\n signed: PropTypes.bool,\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n value: (props: CurrencyInputProps) => {\n warning(isValidNumber(props.value), `[CurrencyInput]: Prop value is not a valid number`);\n },\n warning: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onBlur: PropTypes.func,\n onValueChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n onSubmit: PropTypes.func,\n };\n\n public static defaultProps = {\n align: 'right',\n fractionDigits: 2,\n hideTrailingZeros: false,\n value: null,\n inputMode: 'decimal',\n };\n\n public state: CurrencyInputState = {\n ...this.getState(this.props.value, this.props.fractionDigits, this.props.hideTrailingZeros),\n focused: false,\n };\n\n private input: Nullable<Input>;\n private tempSelectionForOnChange: Selection = SelectionHelper.fromPosition(0);\n private setRootNode!: TSetRootNode;\n\n public componentDidMount(): void {\n const { maxLength, integerDigits, fractionDigits } = this.props;\n warning(\n maxLength === undefined,\n `[CurrencyInput]: Prop 'maxLength' has been deprecated. See 'integerDigits' and 'fractionDigits'`,\n );\n warning(\n (integerDigits || 0) + (fractionDigits || 0) <= MAX_SAFE_DIGITS,\n `[CurrencyInput]: Sum of 'integerDigits' and 'fractionDigits' exceeds ${MAX_SAFE_DIGITS}.` +\n `\\nSee https://tech.skbkontur.ru/react-ui/#/CurrencyInput?id=why15`,\n );\n }\n\n public componentDidUpdate(prevProps: CurrencyInputProps, prevState: CurrencyInputState) {\n const { value, fractionDigits, hideTrailingZeros } = this.props;\n if (\n (isValidNumber(value) && isNumeric(value) && Number(value) !== CurrencyHelper.parse(prevState.formatted)) ||\n prevProps.fractionDigits !== fractionDigits\n ) {\n this.setState(this.getState(value, fractionDigits, hideTrailingZeros));\n }\n if (this.state.focused && this.input) {\n const { start, end } = this.state.selection;\n\n this.input.setSelectionRange(start, end);\n }\n if (prevState.selection !== this.state.selection) {\n this.scrollInput();\n }\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<CurrencyInputProps>) => {\n const { fractionDigits, signed, onSubmit, integerDigits, hideTrailingZeros, ...rest } = props;\n const placeholder =\n this.props.placeholder == null\n ? CurrencyHelper.format(0, { fractionDigits, hideTrailingZeros })\n : this.props.placeholder;\n\n return (\n <Input\n {...rest}\n value={this.state.formatted}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onMouseUp={this.handleMouseUp}\n onKeyDown={this.handleKeyDown}\n onValueChange={this.handleValueChange}\n onPaste={this.handlePaste}\n onCopy={this.handleCopy}\n onCut={this.handleCut}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n ref={this.refInput}\n placeholder={this.state.focused ? '' : placeholder}\n />\n );\n };\n\n /**\n * @public\n */\n public focus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private getState(value: Nullable<number>, fractionDigits: Nullable<number>, hideTrailingZeros: boolean) {\n return {\n formatted: CurrencyHelper.format(value, { fractionDigits, hideTrailingZeros }),\n selection: SelectionHelper.fromPosition(0),\n };\n }\n\n private setSelectionFromEvent(event: React.MouseEvent<HTMLInputElement>) {\n const selection = getInputSelectionFromEvent(event.target);\n const normilized = CurrencyInputHelper.normalizeSelection(this.state.formatted, selection);\n this.setState({ selection: normilized });\n }\n\n // for IE11\n private readonly debouncedSetSelectionFromEvent = debounce(this.setSelectionFromEvent, 300);\n\n private handleMouseUp = (event: React.MouseEvent<HTMLInputElement>) => {\n if (isIE11) {\n event.persist();\n this.debouncedSetSelectionFromEvent(event);\n } else {\n this.setSelectionFromEvent(event);\n }\n };\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n this.tempSelectionForOnChange = selection;\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n\n const action = extractAction(event);\n\n if (action === CURRENCY_INPUT_ACTIONS.Ignore) {\n return;\n }\n\n if (action !== CURRENCY_INPUT_ACTIONS.Unknown) {\n event.preventDefault();\n }\n\n switch (action) {\n case CURRENCY_INPUT_ACTIONS.Submit: {\n if (this.props.onSubmit) {\n this.props.onSubmit();\n }\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Backspace: {\n this.inputValue(CurrencyInputHelper.moveCursor(this.state.formatted, selection, -1), selection.end, '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Delete: {\n this.inputValue(selection.start, CurrencyInputHelper.moveCursor(this.state.formatted, selection, +1), '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorLeft: {\n this.moveCursor(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorRight: {\n this.moveCursor(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Home: {\n this.setState({ selection: SelectionHelper.fromPosition(0) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.End: {\n const end = this.state.formatted.length;\n this.setState({ selection: SelectionHelper.fromPosition(end) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionLeft: {\n this.extendSelection(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionRight: {\n this.extendSelection(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.FullSelection: {\n this.setState({\n selection: SelectionHelper.forward(0, this.state.formatted.length),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToStart: {\n this.setState({\n selection: SelectionHelper.backward(0, selection.start),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToEnd: {\n const inputEnd = this.state.formatted.length;\n this.setState({\n selection: SelectionHelper.forward(selection.start, inputEnd),\n });\n return;\n }\n }\n };\n\n private scrollInput = () => {\n const node = this.input?.getNode();\n if (!node || node.scrollWidth === node.clientWidth) {\n return;\n }\n const PAD = 1;\n const SHIFT = 3;\n\n const selection = this.state.selection;\n const selected = selection.start !== selection.end;\n const position = selected && selection.direction === 'forward' ? selection.end : selection.start;\n const charsCount = this.state.formatted.length;\n const charWidth = node.scrollWidth / charsCount;\n const frame = Math.ceil(node.clientWidth / charWidth);\n const frameStart = Math.ceil(node.scrollLeft / charWidth);\n const frameEnd = frameStart + frame;\n\n if (position < frameStart + PAD) {\n node.scrollLeft = (position - SHIFT) * charWidth;\n }\n if (position > frameEnd - PAD) {\n node.scrollLeft = (position - frame + SHIFT) * charWidth;\n }\n };\n\n private getSelection = (input: EventTarget): Selection => {\n const selection = getInputSelectionFromEvent(input);\n return {\n start: selection.start,\n end: selection.end,\n direction: this.state.selection.direction,\n };\n };\n\n private moveCursor = (selection: Selection, step: number) => {\n const position = CurrencyInputHelper.moveCursor(this.state.formatted, selection, step);\n this.setState({ selection: SelectionHelper.fromPosition(position) });\n };\n\n private extendSelection = (selection: Selection, step: number) => {\n const extended = CurrencyInputHelper.extendSelection(this.state.formatted, selection, step);\n this.setState({ selection: extended });\n };\n\n private inputValue = (start: number, end: number, value: string) => {\n const result = CurrencyInputHelper.safeInsert(this.state.formatted, start, end, value, {\n integerDigits: this.props.integerDigits,\n fractionDigits: this.props.fractionDigits,\n unsigned: !this.props.signed,\n });\n if (result) {\n const formatted = result.value;\n const selection = SelectionHelper.fromPosition(result.position);\n this.setState({ formatted, selection }, () => {\n const parsedValue = CurrencyHelper.parse(formatted);\n if (this.props.value !== parsedValue) {\n this.props.onValueChange(parsedValue);\n }\n });\n return true;\n }\n\n if (this.input) {\n this.input.blink();\n }\n return false;\n };\n\n private getOnChangeDelta = (value: string) => {\n const selection = this.tempSelectionForOnChange;\n const oldValue = this.state.formatted;\n if (selection.start !== selection.end) {\n return value.substring(selection.start, value.length - (oldValue.length - selection.end));\n } else if (value.length > oldValue.length) {\n return value.substr(selection.start, value.length - oldValue.length);\n }\n return null;\n };\n\n private handleValueChange = (value: string): void => {\n const selection = this.tempSelectionForOnChange;\n const delta = this.getOnChangeDelta(value);\n if (delta != null && !this.inputValue(selection.start, selection.end, delta)) {\n this.setState({ selection });\n }\n };\n\n private handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const data = event.clipboardData.getData('text');\n const selection = this.getSelection(event.target);\n this.inputValue(selection.start, selection.end, data);\n event.preventDefault();\n };\n\n private handleCopy = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n }\n event.preventDefault();\n };\n\n private handleCut = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n this.inputValue(selection.start, selection.end, '');\n }\n event.preventDefault();\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n const { selectionStart, selectionEnd, selectionDirection } = event.target;\n const valueLenght = event.target.value.length;\n\n const selection = {\n start: selectionStart !== selectionEnd ? selectionStart || 0 : selectionStart || valueLenght,\n end: selectionEnd !== selectionStart ? selectionEnd || 0 : selectionEnd || valueLenght,\n direction: (selectionDirection as SelectionDirection) || 'none',\n };\n\n this.setState({\n focused: true,\n selection,\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const value = CurrencyHelper.parse(this.state.formatted);\n\n this.setState({\n ...this.getState(value, this.props.fractionDigits, this.props.hideTrailingZeros),\n focused: false,\n });\n\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private refInput = (element: Nullable<Input>) => {\n this.input = element;\n };\n}\n\nfunction getInputSelectionFromEvent(input: EventTarget): Selection {\n if (!(input instanceof HTMLInputElement)) {\n throw new Error('input is not HTMLInputElement');\n }\n\n return {\n start: input.selectionStart!,\n end: input.selectionEnd!,\n direction: input.selectionDirection as SelectionDirection,\n };\n}\n\nfunction isNumeric(value: unknown): value is number | string {\n return !isNaN(parseFloat(value as string)) && isFinite(value as number);\n}\n\nfunction isValidNumber(value: unknown): boolean {\n return !isNaN(Number(value));\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["CurrencyInput.tsx"],"names":["React","PropTypes","warning","debounce","isNonNullable","isNullable","isIE11","Input","CommonWrapper","rootNode","MAX_SAFE_DIGITS","SelectionHelper","CurrencyHelper","CurrencyInputHelper","CURRENCY_INPUT_ACTIONS","extractAction","CurrencyInput","state","getState","props","value","fractionDigits","hideTrailingZeros","focused","input","tempSelectionForOnChange","fromPosition","setRootNode","renderMain","signed","onSubmit","integerDigits","rest","placeholder","format","formatted","handleBlur","handleFocus","handleMouseUp","handleKeyDown","handleValueChange","handlePaste","handleCopy","handleCut","onMouseEnter","onMouseLeave","onMouseOver","refInput","focus","blur","debouncedSetSelectionFromEvent","setSelectionFromEvent","event","persist","selection","getSelection","target","onKeyDown","defaultPrevented","action","Ignore","Unknown","preventDefault","Submit","Backspace","inputValue","moveCursor","end","Delete","start","MoveCursorLeft","MoveCursorRight","Home","setState","End","length","ExtendSelectionLeft","extendSelection","ExtendSelectionRight","FullSelection","forward","ExtendSelectionToStart","backward","ExtendSelectionToEnd","inputEnd","scrollInput","node","getNode","scrollWidth","clientWidth","PAD","SHIFT","selected","position","direction","charsCount","charWidth","frame","Math","ceil","frameStart","scrollLeft","frameEnd","getInputSelectionFromEvent","step","extended","result","safeInsert","unsigned","parsedValue","parse","onValueChange","blink","getOnChangeDelta","oldValue","substring","substr","delta","data","clipboardData","getData","formatForClipboard","setData","selectionStart","selectionEnd","selectionDirection","valueLenght","onFocus","onBlur","element","componentDidMount","maxLength","undefined","componentDidUpdate","prevProps","prevState","isValidNumber","isNumeric","Number","setSelectionRange","render","normilized","normalizeSelection","PureComponent","__KONTUR_REACT_UI__","propTypes","align","oneOf","autoFocus","bool","borderless","disabled","error","number","leftIcon","string","size","width","oneOfType","func","isRequired","defaultProps","inputMode","HTMLInputElement","Error","isNaN","parseFloat","isFinite"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\nimport debounce from 'lodash.debounce';\n\nimport { isNonNullable, isNullable } from '../../lib/utils';\nimport { isIE11 } from '../../lib/client';\nimport { Input, InputProps } from '../Input';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { TSetRootNode, rootNode } from '../../lib/rootNode';\n\nimport { MAX_SAFE_DIGITS } from './constants';\nimport { Selection, SelectionDirection, SelectionHelper } from './SelectionHelper';\nimport { CurrencyHelper } from './CurrencyHelper';\nimport { CurrencyInputHelper } from './CurrencyInputHelper';\nimport { CURRENCY_INPUT_ACTIONS, extractAction } from './CurrencyInputKeyboardActions';\n\nexport interface CurrencyInputProps\n extends CommonProps,\n Override<\n InputProps,\n {\n /** Значение */\n value: Nullable<number>;\n /** Убрать лишние нули после запятой */\n hideTrailingZeros: boolean;\n /** Кол-во цифр после зяпятой */\n fractionDigits?: Nullable<number>;\n /** Отрицательные значения */\n signed?: boolean;\n /**\n * Допустимое кол-во цифр целой части.\n * Если передан **0**, или `fractionDigits=15`, то и в целой части допускается только **0**.\n */\n integerDigits?: Nullable<number>;\n /** Вызывается при изменении `value` */\n onValueChange: (value: Nullable<number>) => void;\n /** onSubmit */\n onSubmit?: () => void;\n }\n > {}\n\nexport interface CurrencyInputState {\n formatted: string;\n selection: Selection;\n focused: boolean;\n}\n\n/**\n * Поле для денежных сумм (и других числовых значений).\n * Принимает любые свойства `Input`.\n *\n * Максимальная длина числа - **15 цифр** (с десятичным разделителем в любом месте).\n * <br/>\n * Если `fractionDigits=15`, то в целой части допускается **0**.\n */\n@rootNode\nexport class CurrencyInput extends React.PureComponent<CurrencyInputProps, CurrencyInputState> {\n public static __KONTUR_REACT_UI__ = 'CurrencyInput';\n\n public static propTypes = {\n align: PropTypes.oneOf(['left', 'center', 'right']),\n autoFocus: PropTypes.bool,\n borderless: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n fractionDigits: PropTypes.number,\n hideTrailingZeros: PropTypes.bool,\n leftIcon: PropTypes.element,\n placeholder: PropTypes.string,\n signed: PropTypes.bool,\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n value: (props: CurrencyInputProps) => {\n warning(isValidNumber(props.value), '[CurrencyInput]: Prop `value` is not a valid number');\n },\n warning: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onBlur: PropTypes.func,\n onValueChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n onSubmit: PropTypes.func,\n };\n\n public static defaultProps = {\n align: 'right',\n fractionDigits: 2,\n hideTrailingZeros: false,\n value: null,\n inputMode: 'decimal',\n };\n\n public state: CurrencyInputState = {\n ...this.getState(this.props.value, this.props.fractionDigits, this.props.hideTrailingZeros),\n focused: false,\n };\n\n private input: Nullable<Input>;\n private tempSelectionForOnChange: Selection = SelectionHelper.fromPosition(0);\n private setRootNode!: TSetRootNode;\n\n public componentDidMount(): void {\n const { maxLength, integerDigits, fractionDigits } = this.props;\n warning(\n maxLength === undefined,\n `[CurrencyInput]: Prop 'maxLength' has been deprecated. See 'integerDigits' and 'fractionDigits'`,\n );\n warning(\n (integerDigits || 0) + (fractionDigits || 0) <= MAX_SAFE_DIGITS,\n `[CurrencyInput]: Sum of 'integerDigits' and 'fractionDigits' exceeds ${MAX_SAFE_DIGITS}.` +\n `\\nSee https://tech.skbkontur.ru/react-ui/#/CurrencyInput?id=why15`,\n );\n }\n\n public componentDidUpdate(prevProps: CurrencyInputProps, prevState: CurrencyInputState) {\n const { value, fractionDigits, hideTrailingZeros } = this.props;\n if (\n (isValidNumber(value) && isNumeric(value) && Number(value) !== CurrencyHelper.parse(prevState.formatted)) ||\n prevProps.fractionDigits !== fractionDigits\n ) {\n this.setState(this.getState(value, fractionDigits, hideTrailingZeros));\n }\n if (isNonNullable(prevProps.value) && isNullable(value)) {\n this.setState({ formatted: '' });\n }\n if (this.state.focused && this.input) {\n const { start, end } = this.state.selection;\n\n this.input.setSelectionRange(start, end);\n }\n if (prevState.selection !== this.state.selection) {\n this.scrollInput();\n }\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<CurrencyInputProps>) => {\n const { fractionDigits, signed, onSubmit, integerDigits, hideTrailingZeros, ...rest } = props;\n const placeholder =\n this.props.placeholder == null\n ? CurrencyHelper.format(0, { fractionDigits, hideTrailingZeros })\n : this.props.placeholder;\n\n return (\n <Input\n {...rest}\n value={this.state.formatted}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onMouseUp={this.handleMouseUp}\n onKeyDown={this.handleKeyDown}\n onValueChange={this.handleValueChange}\n onPaste={this.handlePaste}\n onCopy={this.handleCopy}\n onCut={this.handleCut}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n ref={this.refInput}\n placeholder={this.state.focused ? '' : placeholder}\n />\n );\n };\n\n /**\n * @public\n */\n public focus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private getState(value: Nullable<number>, fractionDigits: Nullable<number>, hideTrailingZeros: boolean) {\n return {\n formatted: CurrencyHelper.format(value, { fractionDigits, hideTrailingZeros }),\n selection: SelectionHelper.fromPosition(0),\n };\n }\n\n private setSelectionFromEvent(event: React.MouseEvent<HTMLInputElement>) {\n const selection = getInputSelectionFromEvent(event.target);\n const normilized = CurrencyInputHelper.normalizeSelection(this.state.formatted, selection);\n this.setState({ selection: normilized });\n }\n\n // for IE11\n private readonly debouncedSetSelectionFromEvent = debounce(this.setSelectionFromEvent, 300);\n\n private handleMouseUp = (event: React.MouseEvent<HTMLInputElement>) => {\n if (isIE11) {\n event.persist();\n this.debouncedSetSelectionFromEvent(event);\n } else {\n this.setSelectionFromEvent(event);\n }\n };\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n this.tempSelectionForOnChange = selection;\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n\n const action = extractAction(event);\n\n if (action === CURRENCY_INPUT_ACTIONS.Ignore) {\n return;\n }\n\n if (action !== CURRENCY_INPUT_ACTIONS.Unknown) {\n event.preventDefault();\n }\n\n switch (action) {\n case CURRENCY_INPUT_ACTIONS.Submit: {\n if (this.props.onSubmit) {\n this.props.onSubmit();\n }\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Backspace: {\n this.inputValue(CurrencyInputHelper.moveCursor(this.state.formatted, selection, -1), selection.end, '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Delete: {\n this.inputValue(selection.start, CurrencyInputHelper.moveCursor(this.state.formatted, selection, +1), '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorLeft: {\n this.moveCursor(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorRight: {\n this.moveCursor(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Home: {\n this.setState({ selection: SelectionHelper.fromPosition(0) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.End: {\n const end = this.state.formatted.length;\n this.setState({ selection: SelectionHelper.fromPosition(end) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionLeft: {\n this.extendSelection(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionRight: {\n this.extendSelection(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.FullSelection: {\n this.setState({\n selection: SelectionHelper.forward(0, this.state.formatted.length),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToStart: {\n this.setState({\n selection: SelectionHelper.backward(0, selection.start),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToEnd: {\n const inputEnd = this.state.formatted.length;\n this.setState({\n selection: SelectionHelper.forward(selection.start, inputEnd),\n });\n return;\n }\n }\n };\n\n private scrollInput = () => {\n const node = this.input?.getNode();\n if (!node || node.scrollWidth === node.clientWidth) {\n return;\n }\n const PAD = 1;\n const SHIFT = 3;\n\n const selection = this.state.selection;\n const selected = selection.start !== selection.end;\n const position = selected && selection.direction === 'forward' ? selection.end : selection.start;\n const charsCount = this.state.formatted.length;\n const charWidth = node.scrollWidth / charsCount;\n const frame = Math.ceil(node.clientWidth / charWidth);\n const frameStart = Math.ceil(node.scrollLeft / charWidth);\n const frameEnd = frameStart + frame;\n\n if (position < frameStart + PAD) {\n node.scrollLeft = (position - SHIFT) * charWidth;\n }\n if (position > frameEnd - PAD) {\n node.scrollLeft = (position - frame + SHIFT) * charWidth;\n }\n };\n\n private getSelection = (input: EventTarget): Selection => {\n const selection = getInputSelectionFromEvent(input);\n return {\n start: selection.start,\n end: selection.end,\n direction: this.state.selection.direction,\n };\n };\n\n private moveCursor = (selection: Selection, step: number) => {\n const position = CurrencyInputHelper.moveCursor(this.state.formatted, selection, step);\n this.setState({ selection: SelectionHelper.fromPosition(position) });\n };\n\n private extendSelection = (selection: Selection, step: number) => {\n const extended = CurrencyInputHelper.extendSelection(this.state.formatted, selection, step);\n this.setState({ selection: extended });\n };\n\n private inputValue = (start: number, end: number, value: string) => {\n const result = CurrencyInputHelper.safeInsert(this.state.formatted, start, end, value, {\n integerDigits: this.props.integerDigits,\n fractionDigits: this.props.fractionDigits,\n unsigned: !this.props.signed,\n });\n if (result) {\n const formatted = result.value;\n const selection = SelectionHelper.fromPosition(result.position);\n this.setState({ formatted, selection }, () => {\n const parsedValue = CurrencyHelper.parse(formatted);\n if (this.props.value !== parsedValue) {\n this.props.onValueChange(parsedValue);\n }\n });\n return true;\n }\n\n if (this.input) {\n this.input.blink();\n }\n return false;\n };\n\n private getOnChangeDelta = (value: string) => {\n const selection = this.tempSelectionForOnChange;\n const oldValue = this.state.formatted;\n if (selection.start !== selection.end) {\n return value.substring(selection.start, value.length - (oldValue.length - selection.end));\n } else if (value.length > oldValue.length) {\n return value.substr(selection.start, value.length - oldValue.length);\n }\n return null;\n };\n\n private handleValueChange = (value: string): void => {\n const selection = this.tempSelectionForOnChange;\n const delta = this.getOnChangeDelta(value);\n if (delta != null && !this.inputValue(selection.start, selection.end, delta)) {\n this.setState({ selection });\n }\n };\n\n private handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const data = event.clipboardData.getData('text');\n const selection = this.getSelection(event.target);\n this.inputValue(selection.start, selection.end, data);\n event.preventDefault();\n };\n\n private handleCopy = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n }\n event.preventDefault();\n };\n\n private handleCut = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n this.inputValue(selection.start, selection.end, '');\n }\n event.preventDefault();\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n const { selectionStart, selectionEnd, selectionDirection } = event.target;\n const valueLenght = event.target.value.length;\n\n const selection = {\n start: selectionStart !== selectionEnd ? selectionStart || 0 : selectionStart || valueLenght,\n end: selectionEnd !== selectionStart ? selectionEnd || 0 : selectionEnd || valueLenght,\n direction: (selectionDirection as SelectionDirection) || 'none',\n };\n\n this.setState({\n focused: true,\n selection,\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const value = CurrencyHelper.parse(this.state.formatted);\n\n this.setState({\n ...this.getState(value, this.props.fractionDigits, this.props.hideTrailingZeros),\n focused: false,\n });\n\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private refInput = (element: Nullable<Input>) => {\n this.input = element;\n };\n}\n\nfunction getInputSelectionFromEvent(input: EventTarget): Selection {\n if (!(input instanceof HTMLInputElement)) {\n throw new Error('input is not HTMLInputElement');\n }\n\n return {\n start: input.selectionStart!,\n end: input.selectionEnd!,\n direction: input.selectionDirection as SelectionDirection,\n };\n}\n\nfunction isNumeric(value: unknown): value is number | string {\n return !isNaN(parseFloat(value as string)) && isFinite(value as number);\n}\n\nfunction isValidNumber(value: unknown): boolean {\n return !isNaN(Number(value));\n}\n"]}
|
|
@@ -118,7 +118,7 @@ export declare class DatePicker extends React.PureComponent<DatePickerProps<Date
|
|
|
118
118
|
close(): void;
|
|
119
119
|
render(): JSX.Element;
|
|
120
120
|
renderMain: (props: CommonWrapperRestProps<DatePickerProps<DatePickerValue>>) => JSX.Element;
|
|
121
|
-
getParent: () => Nullable<
|
|
121
|
+
getParent: () => Nullable<Element>;
|
|
122
122
|
private getRootStyle;
|
|
123
123
|
private getInputRef;
|
|
124
124
|
private parseValueToDate;
|
|
@@ -35,6 +35,13 @@ export var Hint = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_R
|
|
|
35
35
|
_this.timer = null;
|
|
36
36
|
_this.theme = void 0;
|
|
37
37
|
_this.setRootNode = void 0;
|
|
38
|
+
_this.popupRef = /*#__PURE__*/React.createRef();
|
|
39
|
+
|
|
40
|
+
_this.getAnchorElement = function () {
|
|
41
|
+
var _this$popupRef$curren;
|
|
42
|
+
|
|
43
|
+
return (_this$popupRef$curren = _this.popupRef.current) == null ? void 0 : _this$popupRef$curren.anchorElement;
|
|
44
|
+
};
|
|
38
45
|
|
|
39
46
|
_this.getPositions = function () {
|
|
40
47
|
return Positions.filter(function (x) {
|
|
@@ -131,7 +138,8 @@ export var Hint = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_R
|
|
|
131
138
|
disableAnimations: this.props.disableAnimations,
|
|
132
139
|
onMouseEnter: this.handleMouseEnter,
|
|
133
140
|
onMouseLeave: this.handleMouseLeave,
|
|
134
|
-
useWrapper: this.props.useWrapper
|
|
141
|
+
useWrapper: this.props.useWrapper,
|
|
142
|
+
ref: this.popupRef
|
|
135
143
|
}, this.renderContent()));
|
|
136
144
|
};
|
|
137
145
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Hint.tsx"],"names":["React","ThemeContext","ThemeFactory","Popup","isTestEnv","CommonWrapper","cx","rootNode","styles","HINT_BORDER_COLOR","Positions","Hint","state","opened","props","manual","timer","theme","setRootNode","getPositions","filter","x","startsWith","pos","handleMouseEnter","e","window","setTimeout","open","onMouseEnter","handleMouseLeave","clearTimeout","setState","onMouseLeave","componentDidUpdate","prevProps","componentWillUnmount","render","create","popupPinOffset","hintPinOffset","popupMargin","hintMargin","popupBorder","hintBorder","popupBorderRadius","hintBorderRadius","renderMain","children","hintBgColor","disableAnimations","useWrapper","renderContent","text","maxWidth","className","content","contentCenter","PureComponent","__KONTUR_REACT_UI__","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Theme } from '../../lib/theming/Theme';\nimport { Popup, PopupPositionsType } from '../../internal/Popup';\nimport { Nullable } from '../../typings/utility-types';\nimport { MouseEventType } from '../../typings/event-types';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles } from './Hint.styles';\n\nconst HINT_BORDER_COLOR = 'transparent';\n\nexport interface HintProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Переводит отображение подсказки в _\"ручной режим\"_.\n *\n * В _\"ручном режиме\"_ подcказку можно активировать только задав значение пропу `opened`.\n */\n manual?: boolean;\n /**\n * Задаёт максимальную ширину подсказки.\n */\n maxWidth?: React.CSSProperties['maxWidth'];\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: (event: MouseEventType) => void;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: (event: MouseEventType) => void;\n /**\n * Если `true` - подсказка будет открыта.\n *\n * _Примечание_: работает только при `manual=true`.\n */\n opened?: boolean;\n /**\n * Расположение подсказки относительно текста.\n *\n * **Допустимые значения**: `\"top\"`, `\"right\"`, `\"bottom\"`, `\"left\"`, `\"top left\"`, `\"top center\"`, `\"top right\"`, `\"right top\"`, `\"right middle\"`, `\"right bottom\"`, `\"bottom left\"`, `\"bottom center\"`, `\"bottom right\"`, `\"left top\"`, `\"left middle\"`, `\"left bottom\"`.\n */\n pos: 'top' | 'right' | 'bottom' | 'left' | PopupPositionsType;\n /**\n * Текст подсказки.\n */\n text: React.ReactNode;\n /**\n * Отключает анимацию.\n */\n disableAnimations: boolean;\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper: boolean;\n}\n\nexport interface HintState {\n opened: boolean;\n}\n\nconst Positions: PopupPositionsType[] = [\n 'top center',\n 'top left',\n 'top right',\n 'bottom center',\n 'bottom left',\n 'bottom right',\n 'left middle',\n 'left top',\n 'left bottom',\n 'right middle',\n 'right top',\n 'right bottom',\n];\n\n/**\n * Всплывающая подсказка, которая по умолчанию отображается при наведении на элемент. <br/> Можно задать другие условия отображения.\n */\n@rootNode\nexport class Hint extends React.PureComponent<HintProps, HintState> {\n public static __KONTUR_REACT_UI__ = 'Hint';\n\n public static defaultProps = {\n pos: 'top',\n manual: false,\n opened: false,\n maxWidth: 200,\n disableAnimations: isTestEnv,\n useWrapper: false,\n };\n\n public state: HintState = {\n opened: this.props.manual ? !!this.props.opened : false,\n };\n\n private timer: Nullable<number> = null;\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n public componentDidUpdate(prevProps: HintProps) {\n if (!this.props.manual) {\n return;\n }\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n if (this.props.opened !== prevProps.opened) {\n this.setState({ opened: !!this.props.opened });\n }\n }\n\n public componentWillUnmount() {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.hintPinOffset,\n popupMargin: theme.hintMargin,\n popupBorder: theme.hintBorder,\n popupBorderRadius: theme.hintBorderRadius,\n },\n this.theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Popup\n hasPin\n opened={this.state.opened}\n anchorElement={this.props.children}\n positions={this.getPositions()}\n backgroundColor={this.theme.hintBgColor}\n borderColor={HINT_BORDER_COLOR}\n disableAnimations={this.props.disableAnimations}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n useWrapper={this.props.useWrapper}\n >\n {this.renderContent()}\n </Popup>\n </CommonWrapper>\n );\n }\n\n private renderContent() {\n if (!this.props.text) {\n return null;\n }\n\n const { pos, maxWidth } = this.props;\n const className = cx({\n [styles.content(this.theme)]: true,\n [styles.contentCenter(this.theme)]: pos === 'top' || pos === 'bottom',\n });\n return (\n <div className={className} style={{ maxWidth }}>\n {this.props.text}\n </div>\n );\n }\n\n private getPositions = (): PopupPositionsType[] => {\n return Positions.filter((x) => x.startsWith(this.props.pos));\n };\n\n private handleMouseEnter = (e: MouseEventType) => {\n if (!this.props.manual && !this.timer) {\n this.timer = window.setTimeout(this.open, 400);\n }\n\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: MouseEventType) => {\n if (!this.props.manual && this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n this.setState({ opened: false });\n }\n\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private open = () => {\n this.setState({ opened: true });\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Hint.tsx"],"names":["React","ThemeContext","ThemeFactory","Popup","isTestEnv","CommonWrapper","cx","rootNode","styles","HINT_BORDER_COLOR","Positions","Hint","state","opened","props","manual","timer","theme","setRootNode","popupRef","createRef","getAnchorElement","current","anchorElement","getPositions","filter","x","startsWith","pos","handleMouseEnter","e","window","setTimeout","open","onMouseEnter","handleMouseLeave","clearTimeout","setState","onMouseLeave","componentDidUpdate","prevProps","componentWillUnmount","render","create","popupPinOffset","hintPinOffset","popupMargin","hintMargin","popupBorder","hintBorder","popupBorderRadius","hintBorderRadius","renderMain","children","hintBgColor","disableAnimations","useWrapper","renderContent","text","maxWidth","className","content","contentCenter","PureComponent","__KONTUR_REACT_UI__","defaultProps"],"mappings":"2JAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,YAAT,QAA6B,gCAA7B;;AAEA,SAASC,KAAT,QAA0C,sBAA1C;;;AAGA,SAASC,SAAT,QAA0B,8BAA1B;AACA,SAASC,aAAT,QAA2C,8BAA3C;AACA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,QAAT,QAAuC,oBAAvC;;;AAGA,SAASC,MAAT,QAAuB,eAAvB;;AAEA,IAAMC,iBAAiB,GAAG,aAA1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDA,IAAMC,SAA+B,GAAG;AACtC,YADsC;AAEtC,UAFsC;AAGtC,WAHsC;AAItC,eAJsC;AAKtC,aALsC;AAMtC,cANsC;AAOtC,aAPsC;AAQtC,UARsC;AAStC,aATsC;AAUtC,cAVsC;AAWtC,WAXsC;AAYtC,cAZsC,CAAxC;;;AAeA;AACA;AACA;;AAEA,WAAaC,IAAb,GADCJ,QACD;;;;;;;;;;;;AAYSK,IAAAA,KAZT,GAY4B;AACxBC,MAAAA,MAAM,EAAE,MAAKC,KAAL,CAAWC,MAAX,GAAoB,CAAC,CAAC,MAAKD,KAAL,CAAWD,MAAjC,GAA0C,KAD1B,EAZ5B;;;AAgBUG,IAAAA,KAhBV,GAgBoC,IAhBpC;AAiBUC,IAAAA,KAjBV;AAkBUC,IAAAA,WAlBV;;AAoBUC,IAAAA,QApBV,gBAoBqBnB,KAAK,CAACoB,SAAN,EApBrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyFSC,IAAAA,gBAzFT,GAyF4B,YAAyB;AACjD,sCAAO,MAAKF,QAAL,CAAcG,OAArB,qBAAO,sBAAuBC,aAA9B;AACD,KA3FH;;;;;;;;;;;;;;;;;;;AA8GUC,IAAAA,YA9GV,GA8GyB,YAA4B;AACjD,aAAOd,SAAS,CAACe,MAAV,CAAiB,UAACC,CAAD,UAAOA,CAAC,CAACC,UAAF,CAAa,MAAKb,KAAL,CAAWc,GAAxB,CAAP,EAAjB,CAAP;AACD,KAhHH;;AAkHUC,IAAAA,gBAlHV,GAkH6B,UAACC,CAAD,EAAuB;AAChD,UAAI,CAAC,MAAKhB,KAAL,CAAWC,MAAZ,IAAsB,CAAC,MAAKC,KAAhC,EAAuC;AACrC,cAAKA,KAAL,GAAae,MAAM,CAACC,UAAP,CAAkB,MAAKC,IAAvB,EAA6B,GAA7B,CAAb;AACD;;AAED,UAAI,MAAKnB,KAAL,CAAWoB,YAAf,EAA6B;AAC3B,cAAKpB,KAAL,CAAWoB,YAAX,CAAwBJ,CAAxB;AACD;AACF,KA1HH;;AA4HUK,IAAAA,gBA5HV,GA4H6B,UAACL,CAAD,EAAuB;AAChD,UAAI,CAAC,MAAKhB,KAAL,CAAWC,MAAZ,IAAsB,MAAKC,KAA/B,EAAsC;AACpCoB,QAAAA,YAAY,CAAC,MAAKpB,KAAN,CAAZ;AACA,cAAKA,KAAL,GAAa,IAAb;AACA,cAAKqB,QAAL,CAAc,EAAExB,MAAM,EAAE,KAAV,EAAd;AACD;;AAED,UAAI,MAAKC,KAAL,CAAWwB,YAAf,EAA6B;AAC3B,cAAKxB,KAAL,CAAWwB,YAAX,CAAwBR,CAAxB;AACD;AACF,KAtIH;;AAwIUG,IAAAA,IAxIV,GAwIiB,YAAM;AACnB,YAAKI,QAAL,CAAc,EAAExB,MAAM,EAAE,IAAV,EAAd;AACD,KA1IH,kDAsBS0B,kBAtBT,GAsBE,4BAA0BC,SAA1B,EAAgD,CAC9C,IAAI,CAAC,KAAK1B,KAAL,CAAWC,MAAhB,EAAwB,CACtB,OACD,CACD,IAAI,KAAKC,KAAT,EAAgB,CACdoB,YAAY,CAAC,KAAKpB,KAAN,CAAZ,CACA,KAAKA,KAAL,GAAa,IAAb,CACD,CACD,IAAI,KAAKF,KAAL,CAAWD,MAAX,KAAsB2B,SAAS,CAAC3B,MAApC,EAA4C,CAC1C,KAAKwB,QAAL,CAAc,EAAExB,MAAM,EAAE,CAAC,CAAC,KAAKC,KAAL,CAAWD,MAAvB,EAAd,EACD,CACF,CAjCH,QAmCS4B,oBAnCT,GAmCE,gCAA8B,CAC5B,IAAI,KAAKzB,KAAT,EAAgB,CACdoB,YAAY,CAAC,KAAKpB,KAAN,CAAZ,CACA,KAAKA,KAAL,GAAa,IAAb,CACD,CACF,CAxCH,QA0CS0B,MA1CT,GA0CE,kBAAgB,mBACd,oBACE,oBAAC,YAAD,CAAc,QAAd,QACG,UAACzB,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,oBACE,oBAAC,YAAD,CAAc,QAAd,IACE,KAAK,EAAEf,YAAY,CAACyC,MAAb,CACL,EACEC,cAAc,EAAE3B,KAAK,CAAC4B,aADxB,EAEEC,WAAW,EAAE7B,KAAK,CAAC8B,UAFrB,EAGEC,WAAW,EAAE/B,KAAK,CAACgC,UAHrB,EAIEC,iBAAiB,EAAEjC,KAAK,CAACkC,gBAJ3B,EADK,EAOL,MAAI,CAAClC,KAPA,CADT,IAWG,MAAI,CAACmC,UAAL,EAXH,CADF,CAeD,CAlBH,CADF,CAsBD,CAjEH,QAmESA,UAnET,GAmEE,sBAAoB,CAClB,oBACE,oBAAC,aAAD,aAAe,WAAW,EAAE,KAAKlC,WAAjC,IAAkD,KAAKJ,KAAvD,gBACE,oBAAC,KAAD,IACE,MAAM,MADR,EAEE,MAAM,EAAE,KAAKF,KAAL,CAAWC,MAFrB,EAGE,aAAa,EAAE,KAAKC,KAAL,CAAWuC,QAH5B,EAIE,SAAS,EAAE,KAAK7B,YAAL,EAJb,EAKE,eAAe,EAAE,KAAKP,KAAL,CAAWqC,WAL9B,EAME,WAAW,EAAE7C,iBANf,EAOE,iBAAiB,EAAE,KAAKK,KAAL,CAAWyC,iBAPhC,EAQE,YAAY,EAAE,KAAK1B,gBARrB,EASE,YAAY,EAAE,KAAKM,gBATrB,EAUE,UAAU,EAAE,KAAKrB,KAAL,CAAW0C,UAVzB,EAWE,GAAG,EAAE,KAAKrC,QAXZ,IAaG,KAAKsC,aAAL,EAbH,CADF,CADF,CAmBD,CAvFH,QA6FUA,aA7FV,GA6FE,yBAAwB,SACtB,IAAI,CAAC,KAAK3C,KAAL,CAAW4C,IAAhB,EAAsB,CACpB,OAAO,IAAP,CACD,CAHqB,kBAKI,KAAK5C,KALT,CAKdc,GALc,eAKdA,GALc,CAKT+B,QALS,eAKTA,QALS,CAMtB,IAAMC,SAAS,GAAGtD,EAAE,gBACjBE,MAAM,CAACqD,OAAP,CAAe,KAAK5C,KAApB,CADiB,IACY,IADZ,MAEjBT,MAAM,CAACsD,aAAP,CAAqB,KAAK7C,KAA1B,CAFiB,IAEkBW,GAAG,KAAK,KAAR,IAAiBA,GAAG,KAAK,QAF3C,OAApB,CAIA,oBACE,6BAAK,SAAS,EAAEgC,SAAhB,EAA2B,KAAK,EAAE,EAAED,QAAQ,EAARA,QAAF,EAAlC,IACG,KAAK7C,KAAL,CAAW4C,IADd,CADF,CAKD,CA5GH,eAA0B1D,KAAK,CAAC+D,aAAhC,WACgBC,mBADhB,GACsC,MADtC,UAGgBC,YAHhB,GAG+B,EAC3BrC,GAAG,EAAE,KADsB,EAE3Bb,MAAM,EAAE,KAFmB,EAG3BF,MAAM,EAAE,KAHmB,EAI3B8C,QAAQ,EAAE,GAJiB,EAK3BJ,iBAAiB,EAAEnD,SALQ,EAM3BoD,UAAU,EAAE,KANe,EAH/B","sourcesContent":["import React from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Theme } from '../../lib/theming/Theme';\nimport { Popup, PopupPositionsType } from '../../internal/Popup';\nimport { Nullable } from '../../typings/utility-types';\nimport { MouseEventType } from '../../typings/event-types';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { InstanceWithAnchorElement } from '../../lib/instanceWithAnchorElement';\n\nimport { styles } from './Hint.styles';\n\nconst HINT_BORDER_COLOR = 'transparent';\n\nexport interface HintProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Переводит отображение подсказки в _\"ручной режим\"_.\n *\n * В _\"ручном режиме\"_ подcказку можно активировать только задав значение пропу `opened`.\n */\n manual?: boolean;\n /**\n * Задаёт максимальную ширину подсказки.\n */\n maxWidth?: React.CSSProperties['maxWidth'];\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: (event: MouseEventType) => void;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: (event: MouseEventType) => void;\n /**\n * Если `true` - подсказка будет открыта.\n *\n * _Примечание_: работает только при `manual=true`.\n */\n opened?: boolean;\n /**\n * Расположение подсказки относительно текста.\n *\n * **Допустимые значения**: `\"top\"`, `\"right\"`, `\"bottom\"`, `\"left\"`, `\"top left\"`, `\"top center\"`, `\"top right\"`, `\"right top\"`, `\"right middle\"`, `\"right bottom\"`, `\"bottom left\"`, `\"bottom center\"`, `\"bottom right\"`, `\"left top\"`, `\"left middle\"`, `\"left bottom\"`.\n */\n pos: 'top' | 'right' | 'bottom' | 'left' | PopupPositionsType;\n /**\n * Текст подсказки.\n */\n text: React.ReactNode;\n /**\n * Отключает анимацию.\n */\n disableAnimations: boolean;\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper: boolean;\n}\n\nexport interface HintState {\n opened: boolean;\n}\n\nconst Positions: PopupPositionsType[] = [\n 'top center',\n 'top left',\n 'top right',\n 'bottom center',\n 'bottom left',\n 'bottom right',\n 'left middle',\n 'left top',\n 'left bottom',\n 'right middle',\n 'right top',\n 'right bottom',\n];\n\n/**\n * Всплывающая подсказка, которая по умолчанию отображается при наведении на элемент. <br/> Можно задать другие условия отображения.\n */\n@rootNode\nexport class Hint extends React.PureComponent<HintProps, HintState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Hint';\n\n public static defaultProps = {\n pos: 'top',\n manual: false,\n opened: false,\n maxWidth: 200,\n disableAnimations: isTestEnv,\n useWrapper: false,\n };\n\n public state: HintState = {\n opened: this.props.manual ? !!this.props.opened : false,\n };\n\n private timer: Nullable<number> = null;\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n private popupRef = React.createRef<Popup>();\n\n public componentDidUpdate(prevProps: HintProps) {\n if (!this.props.manual) {\n return;\n }\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n if (this.props.opened !== prevProps.opened) {\n this.setState({ opened: !!this.props.opened });\n }\n }\n\n public componentWillUnmount() {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.hintPinOffset,\n popupMargin: theme.hintMargin,\n popupBorder: theme.hintBorder,\n popupBorderRadius: theme.hintBorderRadius,\n },\n this.theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Popup\n hasPin\n opened={this.state.opened}\n anchorElement={this.props.children}\n positions={this.getPositions()}\n backgroundColor={this.theme.hintBgColor}\n borderColor={HINT_BORDER_COLOR}\n disableAnimations={this.props.disableAnimations}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n useWrapper={this.props.useWrapper}\n ref={this.popupRef}\n >\n {this.renderContent()}\n </Popup>\n </CommonWrapper>\n );\n }\n\n public getAnchorElement = (): Nullable<Element> => {\n return this.popupRef.current?.anchorElement;\n };\n\n private renderContent() {\n if (!this.props.text) {\n return null;\n }\n\n const { pos, maxWidth } = this.props;\n const className = cx({\n [styles.content(this.theme)]: true,\n [styles.contentCenter(this.theme)]: pos === 'top' || pos === 'bottom',\n });\n return (\n <div className={className} style={{ maxWidth }}>\n {this.props.text}\n </div>\n );\n }\n\n private getPositions = (): PopupPositionsType[] => {\n return Positions.filter((x) => x.startsWith(this.props.pos));\n };\n\n private handleMouseEnter = (e: MouseEventType) => {\n if (!this.props.manual && !this.timer) {\n this.timer = window.setTimeout(this.open, 400);\n }\n\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: MouseEventType) => {\n if (!this.props.manual && this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n this.setState({ opened: false });\n }\n\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private open = () => {\n this.setState({ opened: true });\n };\n}\n"]}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { PopupPositionsType } from '../../internal/Popup';
|
|
3
|
+
import { Nullable } from '../../typings/utility-types';
|
|
3
4
|
import { MouseEventType } from '../../typings/event-types';
|
|
4
5
|
import { CommonProps } from '../../internal/CommonWrapper';
|
|
6
|
+
import { InstanceWithAnchorElement } from '../../lib/instanceWithAnchorElement';
|
|
5
7
|
export interface HintProps extends CommonProps {
|
|
6
8
|
children?: React.ReactNode;
|
|
7
9
|
/**
|
|
@@ -55,7 +57,7 @@ export interface HintState {
|
|
|
55
57
|
/**
|
|
56
58
|
* Всплывающая подсказка, которая по умолчанию отображается при наведении на элемент. <br/> Можно задать другие условия отображения.
|
|
57
59
|
*/
|
|
58
|
-
export declare class Hint extends React.PureComponent<HintProps, HintState> {
|
|
60
|
+
export declare class Hint extends React.PureComponent<HintProps, HintState> implements InstanceWithAnchorElement {
|
|
59
61
|
static __KONTUR_REACT_UI__: string;
|
|
60
62
|
static defaultProps: {
|
|
61
63
|
pos: string;
|
|
@@ -69,10 +71,12 @@ export declare class Hint extends React.PureComponent<HintProps, HintState> {
|
|
|
69
71
|
private timer;
|
|
70
72
|
private theme;
|
|
71
73
|
private setRootNode;
|
|
74
|
+
private popupRef;
|
|
72
75
|
componentDidUpdate(prevProps: HintProps): void;
|
|
73
76
|
componentWillUnmount(): void;
|
|
74
77
|
render(): JSX.Element;
|
|
75
78
|
renderMain(): JSX.Element;
|
|
79
|
+
getAnchorElement: () => Nullable<Element>;
|
|
76
80
|
private renderContent;
|
|
77
81
|
private getPositions;
|
|
78
82
|
private handleMouseEnter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ScrollContainer.tsx"],"names":["React","PropTypes","LayoutEvents","CommonWrapper","cx","isIE11","rootNode","styles","globalClasses","scrollSizeParametersNames","getScrollYOffset","convertScrollbarXScrollState","convertScrollbarYScrollState","ScrollBar","ScrollContainer","scrollX","scrollY","inner","setRootNode","render","props","innerStyle","scrollBehavior","scrollBehaviour","maxHeight","maxWidth","scrollbarY","renderScrollbar","scrollbarX","root","handleMouseMove","handleMouseLeave","refInner","innerIE11","handleNativeScroll","children","axis","refScrollBar","refScrollBarX","refScrollBarY","invert","handleScrollStateChange","scrollState","scrollXState","onScrollStateChangeX","scrollYState","onScrollStateChange","onScrollStateChangeY","scrollbar","element","preventWindowScroll","addEventListener","handleInnerScrollWheel","passive","removeEventListener","event","reflow","onScroll","preventDefault","emit","WheelEvent","shiftKey","hasScrollBar","pos","size","offset","deltaY","right","currentTarget","getBoundingClientRect","pageX","bottom","pageY","setHover","componentDidMount","setInnerElement","componentDidUpdate","prevProps","scrollTo","scrollLeft","offsetLeft","scrollTop","scrollToTop","scrollToBottom","scrollHeight","offsetHeight","scrollToLeft","scrollToRight","scrollWidth","offsetWidth","Component","__KONTUR_REACT_UI__","propTypes","bool","oneOfType","string","number","oneOf","func","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isIE11 } from '../../lib/client';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles, globalClasses } from './ScrollContainer.styles';\nimport { scrollSizeParametersNames } from './ScrollContainer.constants';\nimport {\n getScrollYOffset,\n convertScrollbarXScrollState,\n convertScrollbarYScrollState,\n} from './ScrollContainer.helpers';\nimport { ScrollAxis, ScrollBar, ScrollBarScrollState } from './ScrollBar';\n\nexport type ScrollContainerScrollStateX = 'left' | 'scroll' | 'right';\nexport type ScrollContainerScrollStateY = 'top' | 'scroll' | 'bottom';\nexport type ScrollContainerScrollState = ScrollContainerScrollStateY; // deprecated\nexport type ScrollBehaviour = 'auto' | 'smooth';\n\nexport interface ScrollContainerProps extends CommonProps {\n /**\n * Инвертировать цвет скроллбара\n * @default false\n */\n invert: boolean;\n maxHeight?: React.CSSProperties['maxHeight'];\n maxWidth?: React.CSSProperties['maxWidth'];\n /**\n * @default false\n */\n preventWindowScroll: boolean;\n /**\n * Поведение скролла (https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior)\n * @default 'auto'\n */\n scrollBehaviour?: ScrollBehaviour;\n onScrollStateChangeX?: (scrollState: ScrollContainerScrollStateX) => void;\n onScrollStateChangeY?: (scrollState: ScrollContainerScrollStateY) => void;\n onScrollStateChange?: (scrollYState: ScrollContainerScrollState) => void; // deprecated\n onScroll?: (e: React.UIEvent<HTMLDivElement>) => void;\n}\n\n@rootNode\nexport class ScrollContainer extends React.Component<ScrollContainerProps> {\n public static __KONTUR_REACT_UI__ = 'ScrollContainer';\n\n public static propTypes = {\n invert: PropTypes.bool,\n maxWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n scrollBehaviour: PropTypes.oneOf(['auto', 'smooth']),\n preventWindowScroll: PropTypes.bool,\n onScrollStateChange: PropTypes.func,\n };\n\n public static defaultProps = {\n invert: false,\n scrollBehaviour: 'auto',\n preventWindowScroll: false,\n };\n\n private scrollX: Nullable<ScrollBar>;\n private scrollY: Nullable<ScrollBar>;\n private inner: Nullable<HTMLElement>;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n this.scrollX?.setInnerElement(this.inner);\n this.scrollY?.setInnerElement(this.inner);\n }\n\n public componentDidUpdate(prevProps: ScrollContainerProps) {\n if (this.inner) {\n if (prevProps.preventWindowScroll && !this.props.preventWindowScroll) {\n this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);\n }\n if (!prevProps.preventWindowScroll && this.props.preventWindowScroll) {\n this.inner.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });\n }\n }\n }\n\n public render = () => {\n const props = this.props;\n\n const innerStyle: React.CSSProperties = {\n scrollBehavior: props.scrollBehaviour,\n maxHeight: props.maxHeight,\n maxWidth: props.maxWidth,\n };\n\n const scrollbarY = this.renderScrollbar('y');\n const scrollbarX = this.renderScrollbar('x');\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div className={styles.root()} onMouseMove={this.handleMouseMove} onMouseLeave={this.handleMouseLeave}>\n {scrollbarY}\n {scrollbarX}\n <div\n style={innerStyle}\n ref={this.refInner}\n className={cx(styles.inner(), globalClasses.inner, isIE11 && styles.innerIE11())}\n data-tid=\"ScrollContainer__inner\"\n onScroll={this.handleNativeScroll}\n >\n {props.children}\n </div>\n </div>\n </CommonWrapper>\n );\n };\n\n /**\n * @public\n * @param {HTMLElement} element\n */\n public scrollTo(element: Nullable<HTMLElement>) {\n if (!element || !this.inner) {\n return;\n }\n\n this.inner.scrollLeft = element.offsetLeft;\n this.inner.scrollTop = getScrollYOffset(element, this.inner);\n }\n\n /**\n * @public\n */\n public scrollToTop() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = 0;\n }\n\n /**\n * @public\n */\n public scrollToBottom() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = this.inner.scrollHeight - this.inner.offsetHeight;\n }\n\n /**\n * @public\n */\n public scrollToLeft() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollLeft = 0;\n }\n\n /**\n * @public\n */\n public scrollToRight() {\n if (!this.inner) {\n return;\n }\n\n this.inner.scrollLeft = this.inner.scrollWidth - this.inner.offsetWidth;\n }\n\n private hasScrollBar(axis: ScrollAxis) {\n if (!this.inner) {\n return false;\n }\n\n return axis === 'x'\n ? this.inner.offsetWidth < this.inner.scrollWidth\n : this.inner.offsetHeight < this.inner.scrollHeight;\n }\n\n private renderScrollbar = (axis: ScrollAxis) => {\n const refScrollBar = axis === 'x' ? this.refScrollBarX : this.refScrollBarY;\n\n return (\n <ScrollBar\n axis={axis}\n ref={refScrollBar}\n invert={this.props.invert}\n onScrollStateChange={this.handleScrollStateChange}\n />\n );\n };\n\n private handleScrollStateChange = (scrollState: ScrollBarScrollState, axis: ScrollAxis) => {\n if (!this.scrollY || !this.scrollX) {\n return;\n }\n\n if (axis === 'x') {\n const scrollXState = convertScrollbarXScrollState(scrollState);\n\n this.props.onScrollStateChangeX?.(scrollXState);\n return;\n }\n\n const scrollYState = convertScrollbarYScrollState(scrollState);\n\n this.props.onScrollStateChange?.(scrollYState);\n this.props.onScrollStateChangeY?.(scrollYState);\n };\n\n private refScrollBarY = (scrollbar: Nullable<ScrollBar>) => {\n this.scrollY = scrollbar;\n };\n\n private refScrollBarX = (scrollbar: Nullable<ScrollBar>) => {\n this.scrollX = scrollbar;\n };\n\n private refInner = (element: HTMLElement | null) => {\n if (!this.inner && element && this.props.preventWindowScroll) {\n element.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });\n }\n if (this.inner && !element) {\n this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);\n }\n this.inner = element;\n };\n\n private handleNativeScroll = (event: React.UIEvent<HTMLDivElement>) => {\n this.scrollX?.reflow();\n this.scrollY?.reflow();\n\n this.props.onScroll?.(event);\n if (this.props.preventWindowScroll) {\n event.preventDefault();\n return;\n }\n LayoutEvents.emit();\n };\n\n private handleInnerScrollWheel = (event: Event) => {\n if (!this.inner || !(event instanceof WheelEvent)) {\n return;\n }\n\n const axis: ScrollAxis = event.shiftKey ? 'x' : 'y';\n\n if (this.hasScrollBar(axis)) {\n const { pos, size, offset } = scrollSizeParametersNames[axis];\n\n if (event.deltaY > 0 && this.inner[size] <= this.inner[pos] + this.inner[offset]) {\n event.preventDefault();\n return false;\n }\n if (event.deltaY < 0 && this.inner[pos] <= 0) {\n event.preventDefault();\n return false;\n }\n }\n };\n\n private handleMouseMove = (event: React.MouseEvent<HTMLDivElement>) => {\n const right = event.currentTarget.getBoundingClientRect().right - event.pageX;\n const bottom = event.currentTarget.getBoundingClientRect().bottom - event.pageY;\n\n this.scrollY?.setHover(right <= 12);\n this.scrollX?.setHover(right >= 12 && bottom <= 12);\n };\n\n private handleMouseLeave = () => {\n this.scrollY?.setHover(false);\n this.scrollX?.setHover(false);\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["ScrollContainer.tsx"],"names":["React","PropTypes","LayoutEvents","CommonWrapper","cx","isIE11","rootNode","styles","globalClasses","scrollSizeParametersNames","getScrollYOffset","convertScrollbarXScrollState","convertScrollbarYScrollState","ScrollBar","ScrollContainer","scrollX","scrollY","inner","setRootNode","render","props","innerStyle","scrollBehavior","scrollBehaviour","maxHeight","maxWidth","scrollbarY","renderScrollbar","scrollbarX","root","handleMouseMove","handleMouseLeave","refInner","innerIE11","handleNativeScroll","children","axis","refScrollBar","refScrollBarX","refScrollBarY","invert","handleScrollStateChange","scrollState","scrollXState","onScrollStateChangeX","scrollYState","onScrollStateChange","onScrollStateChangeY","scrollbar","element","preventWindowScroll","addEventListener","handleInnerScrollWheel","passive","removeEventListener","event","reflow","onScroll","preventDefault","emit","WheelEvent","shiftKey","hasScrollBar","pos","size","offset","deltaY","right","currentTarget","getBoundingClientRect","pageX","bottom","pageY","setHover","componentDidMount","setInnerElement","componentDidUpdate","prevProps","scrollTo","scrollLeft","offsetLeft","scrollTop","scrollToTop","scrollToBottom","scrollHeight","offsetHeight","scrollToLeft","scrollToRight","scrollWidth","offsetWidth","Component","__KONTUR_REACT_UI__","propTypes","bool","oneOfType","string","number","oneOf","func","defaultProps"],"mappings":"2JAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;;AAEA,OAAO,KAAKC,YAAZ,MAA8B,wBAA9B;AACA,SAAsBC,aAAtB,QAA2C,8BAA3C;;AAEA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,MAAT,QAAuB,kBAAvB;AACA,SAASC,QAAT,QAAuC,oBAAvC;;AAEA,SAASC,MAAT,EAAiBC,aAAjB,QAAsC,0BAAtC;AACA,SAASC,yBAAT,QAA0C,6BAA1C;AACA;AACEC,gBADF;AAEEC,4BAFF;AAGEC,4BAHF;AAIO,2BAJP;AAKA,SAAqBC,SAArB,QAA4D,aAA5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,WAAaC,eAAb,GADCR,QACD;;;;;;;;;;;;;;;;;;AAkBUS,IAAAA,OAlBV;AAmBUC,IAAAA,OAnBV;AAoBUC,IAAAA,KApBV;AAqBUC,IAAAA,WArBV;;;;;;;;;;;;;;;;;;AAuCSC,IAAAA,MAvCT,GAuCkB,YAAM;AACpB,UAAMC,KAAK,GAAG,MAAKA,KAAnB;;AAEA,UAAMC,UAA+B,GAAG;AACtCC,QAAAA,cAAc,EAAEF,KAAK,CAACG,eADgB;AAEtCC,QAAAA,SAAS,EAAEJ,KAAK,CAACI,SAFqB;AAGtCC,QAAAA,QAAQ,EAAEL,KAAK,CAACK,QAHsB,EAAxC;;;AAMA,UAAMC,UAAU,GAAG,MAAKC,eAAL,CAAqB,GAArB,CAAnB;AACA,UAAMC,UAAU,GAAG,MAAKD,eAAL,CAAqB,GAArB,CAAnB;;AAEA;AACE,4BAAC,aAAD,aAAe,WAAW,EAAE,MAAKT,WAAjC,IAAkD,MAAKE,KAAvD;AACE,qCAAK,SAAS,EAAEb,MAAM,CAACsB,IAAP,EAAhB,EAA+B,WAAW,EAAE,MAAKC,eAAjD,EAAkE,YAAY,EAAE,MAAKC,gBAArF;AACGL,QAAAA,UADH;AAEGE,QAAAA,UAFH;AAGE;AACE,UAAA,KAAK,EAAEP,UADT;AAEE,UAAA,GAAG,EAAE,MAAKW,QAFZ;AAGE,UAAA,SAAS,EAAE5B,EAAE,CAACG,MAAM,CAACU,KAAP,EAAD,EAAiBT,aAAa,CAACS,KAA/B,EAAsCZ,MAAM,IAAIE,MAAM,CAAC0B,SAAP,EAAhD,CAHf;AAIE,sBAAS,wBAJX;AAKE,UAAA,QAAQ,EAAE,MAAKC,kBALjB;;AAOGd,QAAAA,KAAK,CAACe,QAPT,CAHF,CADF,CADF;;;;;AAiBD,KApEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsIUR,IAAAA,eAtIV,GAsI4B,UAACS,IAAD,EAAsB;AAC9C,UAAMC,YAAY,GAAGD,IAAI,KAAK,GAAT,GAAe,MAAKE,aAApB,GAAoC,MAAKC,aAA9D;;AAEA;AACE,4BAAC,SAAD;AACE,UAAA,IAAI,EAAEH,IADR;AAEE,UAAA,GAAG,EAAEC,YAFP;AAGE,UAAA,MAAM,EAAE,MAAKjB,KAAL,CAAWoB,MAHrB;AAIE,UAAA,mBAAmB,EAAE,MAAKC,uBAJ5B,GADF;;;AAQD,KAjJH;;AAmJUA,IAAAA,uBAnJV,GAmJoC,UAACC,WAAD,EAAoCN,IAApC,EAAyD;AACzF,UAAI,CAAC,MAAKpB,OAAN,IAAiB,CAAC,MAAKD,OAA3B,EAAoC;AAClC;AACD;;AAED,UAAIqB,IAAI,KAAK,GAAb,EAAkB;AAChB,YAAMO,YAAY,GAAGhC,4BAA4B,CAAC+B,WAAD,CAAjD;;AAEA,cAAKtB,KAAL,CAAWwB,oBAAX,0BAAKxB,KAAL,CAAWwB,oBAAX,CAAkCD,YAAlC;AACA;AACD;;AAED,UAAME,YAAY,GAAGjC,4BAA4B,CAAC8B,WAAD,CAAjD;;AAEA,YAAKtB,KAAL,CAAW0B,mBAAX,0BAAK1B,KAAL,CAAW0B,mBAAX,CAAiCD,YAAjC;AACA,YAAKzB,KAAL,CAAW2B,oBAAX,0BAAK3B,KAAL,CAAW2B,oBAAX,CAAkCF,YAAlC;AACD,KAnKH;;AAqKUN,IAAAA,aArKV,GAqK0B,UAACS,SAAD,EAAoC;AAC1D,YAAKhC,OAAL,GAAegC,SAAf;AACD,KAvKH;;AAyKUV,IAAAA,aAzKV,GAyK0B,UAACU,SAAD,EAAoC;AAC1D,YAAKjC,OAAL,GAAeiC,SAAf;AACD,KA3KH;;AA6KUhB,IAAAA,QA7KV,GA6KqB,UAACiB,OAAD,EAAiC;AAClD,UAAI,CAAC,MAAKhC,KAAN,IAAegC,OAAf,IAA0B,MAAK7B,KAAL,CAAW8B,mBAAzC,EAA8D;AAC5DD,QAAAA,OAAO,CAACE,gBAAR,CAAyB,OAAzB,EAAkC,MAAKC,sBAAvC,EAA+D,EAAEC,OAAO,EAAE,KAAX,EAA/D;AACD;AACD,UAAI,MAAKpC,KAAL,IAAc,CAACgC,OAAnB,EAA4B;AAC1B,cAAKhC,KAAL,CAAWqC,mBAAX,CAA+B,OAA/B,EAAwC,MAAKF,sBAA7C;AACD;AACD,YAAKnC,KAAL,GAAagC,OAAb;AACD,KArLH;;AAuLUf,IAAAA,kBAvLV,GAuL+B,UAACqB,KAAD,EAA0C;AACrE,6BAAKxC,OAAL,mCAAcyC,MAAd;AACA,6BAAKxC,OAAL,mCAAcwC,MAAd;;AAEA,YAAKpC,KAAL,CAAWqC,QAAX,0BAAKrC,KAAL,CAAWqC,QAAX,CAAsBF,KAAtB;AACA,UAAI,MAAKnC,KAAL,CAAW8B,mBAAf,EAAoC;AAClCK,QAAAA,KAAK,CAACG,cAAN;AACA;AACD;AACDxD,MAAAA,YAAY,CAACyD,IAAb;AACD,KAjMH;;AAmMUP,IAAAA,sBAnMV,GAmMmC,UAACG,KAAD,EAAkB;AACjD,UAAI,CAAC,MAAKtC,KAAN,IAAe,EAAEsC,KAAK,YAAYK,UAAnB,CAAnB,EAAmD;AACjD;AACD;;AAED,UAAMxB,IAAgB,GAAGmB,KAAK,CAACM,QAAN,GAAiB,GAAjB,GAAuB,GAAhD;;AAEA,UAAI,MAAKC,YAAL,CAAkB1B,IAAlB,CAAJ,EAA6B;AACG3B,QAAAA,yBAAyB,CAAC2B,IAAD,CAD5B,CACnB2B,GADmB,yBACnBA,GADmB,CACdC,IADc,yBACdA,IADc,CACRC,MADQ,yBACRA,MADQ;;AAG3B,YAAIV,KAAK,CAACW,MAAN,GAAe,CAAf,IAAoB,MAAKjD,KAAL,CAAW+C,IAAX,KAAoB,MAAK/C,KAAL,CAAW8C,GAAX,IAAkB,MAAK9C,KAAL,CAAWgD,MAAX,CAA9D,EAAkF;AAChFV,UAAAA,KAAK,CAACG,cAAN;AACA,iBAAO,KAAP;AACD;AACD,YAAIH,KAAK,CAACW,MAAN,GAAe,CAAf,IAAoB,MAAKjD,KAAL,CAAW8C,GAAX,KAAmB,CAA3C,EAA8C;AAC5CR,UAAAA,KAAK,CAACG,cAAN;AACA,iBAAO,KAAP;AACD;AACF;AACF,KAtNH;;AAwNU5B,IAAAA,eAxNV,GAwN4B,UAACyB,KAAD,EAA6C;AACrE,UAAMY,KAAK,GAAGZ,KAAK,CAACa,aAAN,CAAoBC,qBAApB,GAA4CF,KAA5C,GAAoDZ,KAAK,CAACe,KAAxE;AACA,UAAMC,MAAM,GAAGhB,KAAK,CAACa,aAAN,CAAoBC,qBAApB,GAA4CE,MAA5C,GAAqDhB,KAAK,CAACiB,KAA1E;;AAEA,8BAAKxD,OAAL,oCAAcyD,QAAd,CAAuBN,KAAK,IAAI,EAAhC;AACA,8BAAKpD,OAAL,oCAAc0D,QAAd,CAAuBN,KAAK,IAAI,EAAT,IAAeI,MAAM,IAAI,EAAhD;AACD,KA9NH;;AAgOUxC,IAAAA,gBAhOV,GAgO6B,YAAM;AAC/B,8BAAKf,OAAL,oCAAcyD,QAAd,CAAuB,KAAvB;AACA,8BAAK1D,OAAL,oCAAc0D,QAAd,CAAuB,KAAvB;AACD,KAnOH,6DAuBSC,iBAvBT,GAuBE,6BAA2B,oCACzB,uBAAK3D,OAAL,oCAAc4D,eAAd,CAA8B,KAAK1D,KAAnC,EACA,uBAAKD,OAAL,oCAAc2D,eAAd,CAA8B,KAAK1D,KAAnC,EACD,CA1BH,QA4BS2D,kBA5BT,GA4BE,4BAA0BC,SAA1B,EAA2D,CACzD,IAAI,KAAK5D,KAAT,EAAgB,CACd,IAAI4D,SAAS,CAAC3B,mBAAV,IAAiC,CAAC,KAAK9B,KAAL,CAAW8B,mBAAjD,EAAsE,CACpE,KAAKjC,KAAL,CAAWqC,mBAAX,CAA+B,OAA/B,EAAwC,KAAKF,sBAA7C,EACD,CACD,IAAI,CAACyB,SAAS,CAAC3B,mBAAX,IAAkC,KAAK9B,KAAL,CAAW8B,mBAAjD,EAAsE,CACpE,KAAKjC,KAAL,CAAWkC,gBAAX,CAA4B,OAA5B,EAAqC,KAAKC,sBAA1C,EAAkE,EAAEC,OAAO,EAAE,KAAX,EAAlE,EACD,CACF,CACF,CArCH,EAsEE;AACF;AACA;AACA,KAzEA,OA0ESyB,QA1ET,GA0EE,kBAAgB7B,OAAhB,EAAgD,CAC9C,IAAI,CAACA,OAAD,IAAY,CAAC,KAAKhC,KAAtB,EAA6B,CAC3B,OACD,CAED,KAAKA,KAAL,CAAW8D,UAAX,GAAwB9B,OAAO,CAAC+B,UAAhC,CACA,KAAK/D,KAAL,CAAWgE,SAAX,GAAuBvE,gBAAgB,CAACuC,OAAD,EAAU,KAAKhC,KAAf,CAAvC,CACD,CAjFH,CAmFE;AACF;AACA,KArFA,QAsFSiE,WAtFT,GAsFE,uBAAqB,CACnB,IAAI,CAAC,KAAKjE,KAAV,EAAiB,CACf,OACD,CACD,KAAKA,KAAL,CAAWgE,SAAX,GAAuB,CAAvB,CACD,CA3FH,CA6FE;AACF;AACA,KA/FA,QAgGSE,cAhGT,GAgGE,0BAAwB,CACtB,IAAI,CAAC,KAAKlE,KAAV,EAAiB,CACf,OACD,CACD,KAAKA,KAAL,CAAWgE,SAAX,GAAuB,KAAKhE,KAAL,CAAWmE,YAAX,GAA0B,KAAKnE,KAAL,CAAWoE,YAA5D,CACD,CArGH,CAuGE;AACF;AACA,KAzGA,QA0GSC,YA1GT,GA0GE,wBAAsB,CACpB,IAAI,CAAC,KAAKrE,KAAV,EAAiB,CACf,OACD,CACD,KAAKA,KAAL,CAAW8D,UAAX,GAAwB,CAAxB,CACD,CA/GH,CAiHE;AACF;AACA,KAnHA,QAoHSQ,aApHT,GAoHE,yBAAuB,CACrB,IAAI,CAAC,KAAKtE,KAAV,EAAiB,CACf,OACD,CAED,KAAKA,KAAL,CAAW8D,UAAX,GAAwB,KAAK9D,KAAL,CAAWuE,WAAX,GAAyB,KAAKvE,KAAL,CAAWwE,WAA5D,CACD,CA1HH,QA4HU3B,YA5HV,GA4HE,sBAAqB1B,IAArB,EAAuC,CACrC,IAAI,CAAC,KAAKnB,KAAV,EAAiB,CACf,OAAO,KAAP,CACD,CAED,OAAOmB,IAAI,KAAK,GAAT,GACH,KAAKnB,KAAL,CAAWwE,WAAX,GAAyB,KAAKxE,KAAL,CAAWuE,WADjC,GAEH,KAAKvE,KAAL,CAAWoE,YAAX,GAA0B,KAAKpE,KAAL,CAAWmE,YAFzC,CAGD,CApIH,0BAAqCpF,KAAK,CAAC0F,SAA3C,WACgBC,mBADhB,GACsC,iBADtC,UAGgBC,SAHhB,GAG4B,EACxBpD,MAAM,EAAEvC,SAAS,CAAC4F,IADM,EAExBpE,QAAQ,EAAExB,SAAS,CAAC6F,SAAV,CAAoB,CAAC7F,SAAS,CAAC8F,MAAX,EAAmB9F,SAAS,CAAC+F,MAA7B,CAApB,CAFc,EAGxBxE,SAAS,EAAEvB,SAAS,CAAC6F,SAAV,CAAoB,CAAC7F,SAAS,CAAC8F,MAAX,EAAmB9F,SAAS,CAAC+F,MAA7B,CAApB,CAHa,EAIxBzE,eAAe,EAAEtB,SAAS,CAACgG,KAAV,CAAgB,CAAC,MAAD,EAAS,QAAT,CAAhB,CAJO,EAKxB/C,mBAAmB,EAAEjD,SAAS,CAAC4F,IALP,EAMxB/C,mBAAmB,EAAE7C,SAAS,CAACiG,IANP,EAH5B,UAYgBC,YAZhB,GAY+B,EAC3B3D,MAAM,EAAE,KADmB,EAE3BjB,eAAe,EAAE,MAFU,EAG3B2B,mBAAmB,EAAE,KAHM,EAZ/B","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isIE11 } from '../../lib/client';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles, globalClasses } from './ScrollContainer.styles';\nimport { scrollSizeParametersNames } from './ScrollContainer.constants';\nimport {\n getScrollYOffset,\n convertScrollbarXScrollState,\n convertScrollbarYScrollState,\n} from './ScrollContainer.helpers';\nimport { ScrollAxis, ScrollBar, ScrollBarScrollState } from './ScrollBar';\n\nexport type ScrollContainerScrollStateX = 'left' | 'scroll' | 'right';\nexport type ScrollContainerScrollStateY = 'top' | 'scroll' | 'bottom';\nexport type ScrollContainerScrollState = ScrollContainerScrollStateY; // deprecated\nexport type ScrollBehaviour = 'auto' | 'smooth';\n\nexport interface ScrollContainerProps extends CommonProps {\n /**\n * Инвертировать цвет скроллбара\n * @default false\n */\n invert: boolean;\n maxHeight?: React.CSSProperties['maxHeight'];\n maxWidth?: React.CSSProperties['maxWidth'];\n /**\n * @default false\n */\n preventWindowScroll: boolean;\n /**\n * Поведение скролла (https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior)\n * @default 'auto'\n */\n scrollBehaviour?: ScrollBehaviour;\n onScrollStateChangeX?: (scrollState: ScrollContainerScrollStateX) => void;\n onScrollStateChangeY?: (scrollState: ScrollContainerScrollStateY) => void;\n onScrollStateChange?: (scrollYState: ScrollContainerScrollState) => void; // deprecated\n onScroll?: (e: React.UIEvent<HTMLDivElement>) => void;\n}\n\n@rootNode\nexport class ScrollContainer extends React.Component<ScrollContainerProps> {\n public static __KONTUR_REACT_UI__ = 'ScrollContainer';\n\n public static propTypes = {\n invert: PropTypes.bool,\n maxWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n scrollBehaviour: PropTypes.oneOf(['auto', 'smooth']),\n preventWindowScroll: PropTypes.bool,\n onScrollStateChange: PropTypes.func,\n };\n\n public static defaultProps = {\n invert: false,\n scrollBehaviour: 'auto',\n preventWindowScroll: false,\n };\n\n private scrollX: Nullable<ScrollBar>;\n private scrollY: Nullable<ScrollBar>;\n private inner: Nullable<HTMLElement>;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n this.scrollX?.setInnerElement(this.inner);\n this.scrollY?.setInnerElement(this.inner);\n }\n\n public componentDidUpdate(prevProps: ScrollContainerProps) {\n if (this.inner) {\n if (prevProps.preventWindowScroll && !this.props.preventWindowScroll) {\n this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);\n }\n if (!prevProps.preventWindowScroll && this.props.preventWindowScroll) {\n this.inner.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });\n }\n }\n }\n\n public render = () => {\n const props = this.props;\n\n const innerStyle: React.CSSProperties = {\n scrollBehavior: props.scrollBehaviour,\n maxHeight: props.maxHeight,\n maxWidth: props.maxWidth,\n };\n\n const scrollbarY = this.renderScrollbar('y');\n const scrollbarX = this.renderScrollbar('x');\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div className={styles.root()} onMouseMove={this.handleMouseMove} onMouseLeave={this.handleMouseLeave}>\n {scrollbarY}\n {scrollbarX}\n <div\n style={innerStyle}\n ref={this.refInner}\n className={cx(styles.inner(), globalClasses.inner, isIE11 && styles.innerIE11())}\n data-tid=\"ScrollContainer__inner\"\n onScroll={this.handleNativeScroll}\n >\n {props.children}\n </div>\n </div>\n </CommonWrapper>\n );\n };\n\n /**\n * @public\n * @param {Element} element\n */\n public scrollTo(element: Nullable<HTMLElement>) {\n if (!element || !this.inner) {\n return;\n }\n\n this.inner.scrollLeft = element.offsetLeft;\n this.inner.scrollTop = getScrollYOffset(element, this.inner);\n }\n\n /**\n * @public\n */\n public scrollToTop() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = 0;\n }\n\n /**\n * @public\n */\n public scrollToBottom() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = this.inner.scrollHeight - this.inner.offsetHeight;\n }\n\n /**\n * @public\n */\n public scrollToLeft() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollLeft = 0;\n }\n\n /**\n * @public\n */\n public scrollToRight() {\n if (!this.inner) {\n return;\n }\n\n this.inner.scrollLeft = this.inner.scrollWidth - this.inner.offsetWidth;\n }\n\n private hasScrollBar(axis: ScrollAxis) {\n if (!this.inner) {\n return false;\n }\n\n return axis === 'x'\n ? this.inner.offsetWidth < this.inner.scrollWidth\n : this.inner.offsetHeight < this.inner.scrollHeight;\n }\n\n private renderScrollbar = (axis: ScrollAxis) => {\n const refScrollBar = axis === 'x' ? this.refScrollBarX : this.refScrollBarY;\n\n return (\n <ScrollBar\n axis={axis}\n ref={refScrollBar}\n invert={this.props.invert}\n onScrollStateChange={this.handleScrollStateChange}\n />\n );\n };\n\n private handleScrollStateChange = (scrollState: ScrollBarScrollState, axis: ScrollAxis) => {\n if (!this.scrollY || !this.scrollX) {\n return;\n }\n\n if (axis === 'x') {\n const scrollXState = convertScrollbarXScrollState(scrollState);\n\n this.props.onScrollStateChangeX?.(scrollXState);\n return;\n }\n\n const scrollYState = convertScrollbarYScrollState(scrollState);\n\n this.props.onScrollStateChange?.(scrollYState);\n this.props.onScrollStateChangeY?.(scrollYState);\n };\n\n private refScrollBarY = (scrollbar: Nullable<ScrollBar>) => {\n this.scrollY = scrollbar;\n };\n\n private refScrollBarX = (scrollbar: Nullable<ScrollBar>) => {\n this.scrollX = scrollbar;\n };\n\n private refInner = (element: HTMLElement | null) => {\n if (!this.inner && element && this.props.preventWindowScroll) {\n element.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });\n }\n if (this.inner && !element) {\n this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);\n }\n this.inner = element;\n };\n\n private handleNativeScroll = (event: React.UIEvent<HTMLDivElement>) => {\n this.scrollX?.reflow();\n this.scrollY?.reflow();\n\n this.props.onScroll?.(event);\n if (this.props.preventWindowScroll) {\n event.preventDefault();\n return;\n }\n LayoutEvents.emit();\n };\n\n private handleInnerScrollWheel = (event: Event) => {\n if (!this.inner || !(event instanceof WheelEvent)) {\n return;\n }\n\n const axis: ScrollAxis = event.shiftKey ? 'x' : 'y';\n\n if (this.hasScrollBar(axis)) {\n const { pos, size, offset } = scrollSizeParametersNames[axis];\n\n if (event.deltaY > 0 && this.inner[size] <= this.inner[pos] + this.inner[offset]) {\n event.preventDefault();\n return false;\n }\n if (event.deltaY < 0 && this.inner[pos] <= 0) {\n event.preventDefault();\n return false;\n }\n }\n };\n\n private handleMouseMove = (event: React.MouseEvent<HTMLDivElement>) => {\n const right = event.currentTarget.getBoundingClientRect().right - event.pageX;\n const bottom = event.currentTarget.getBoundingClientRect().bottom - event.pageY;\n\n this.scrollY?.setHover(right <= 12);\n this.scrollX?.setHover(right >= 12 && bottom <= 12);\n };\n\n private handleMouseLeave = () => {\n this.scrollY?.setHover(false);\n this.scrollX?.setHover(false);\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Toast.tsx"],"names":["React","CSSTransition","TransitionGroup","RenderContainer","CommonWrapper","isTestEnv","rootNode","styles","ToastView","ToastStatic","Toast","push","notification","action","close","props","setRootNode","_toast","_timeout","rootRef","createRef","safelyCall","onClose","state","setState","setRootRef","element","current","_clearTimer","clearTimeout","_setTimer","timeOut","window","setTimeout","_refToast","id","componentWillUnmount","render","_renderToast","onPush","toastProps","onMouseEnter","onMouseLeave","children","enter","enterActive","exit","exitActive","Component","__KONTUR_REACT_UI__","fn","args"],"mappings":"2JAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,aAAT,EAAwBC,eAAxB,QAA+C,wBAA/C;;AAEA,SAASC,eAAT,QAAgC,gCAAhC;;AAEA,SAAsBC,aAAtB,QAA2C,8BAA3C;AACA,SAASC,SAAT,QAA0B,8BAA1B;AACA,SAASC,QAAT,QAAuC,oBAAvC;;AAEA,SAASC,MAAT,QAAuB,gBAAvB;AACA,SAASC,SAAT,QAA0C,aAA1C;AACA,SAASC,WAAT,QAA4B,eAA5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,OAVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAEA,IAAaC,KAAb,GADCJ,QACD,qHAIgBK,IAJhB,GAIE,cAAmBC,YAAnB,EAAyCC,MAAzC,EAA0D,CACxDJ,WAAW,CAACE,IAAZ,CAAiBC,YAAjB,EAA+BC,MAA/B,EACD,CANH,OAQgBC,KARhB,GAQE,iBAAsB;AACpBL,IAAAA,WAAW,CAACK,KAAZ;AACD,GAVH;;;;;;AAgBE,iBAAYC,KAAZ,EAA+B;AAC7B,wCAAMA,KAAN,UAD6B,MAdvBC,WAcuB,gBAJxBC,MAIwB,gBAHvBC,QAGuB,GAHM,IAGN,OAFvBC,OAEuB,gBAFbnB,KAAK,CAACoB,SAAN,EAEa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CxBN,IAAAA,KA5CwB,GA4ChB,YAAM;AACnBO,MAAAA,UAAU,CAAC,MAAKN,KAAL,CAAWO,OAAZ,EAAqB,MAAKC,KAAL,CAAWX,YAAhC,EAA8C,MAAKW,KAAL,CAAWV,MAAzD,CAAV;AACA,YAAKW,QAAL,CAAc,EAAEZ,YAAY,EAAE,IAAhB,EAAsBC,MAAM,EAAE,IAA9B,EAAd;AACD,KA/C8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwFvBY,IAAAA,UAxFuB,GAwFV,UAACC,OAAD,
|
|
1
|
+
{"version":3,"sources":["Toast.tsx"],"names":["React","CSSTransition","TransitionGroup","RenderContainer","CommonWrapper","isTestEnv","rootNode","styles","ToastView","ToastStatic","Toast","push","notification","action","close","props","setRootNode","_toast","_timeout","rootRef","createRef","safelyCall","onClose","state","setState","setRootRef","element","current","_clearTimer","clearTimeout","_setTimer","timeOut","window","setTimeout","_refToast","id","componentWillUnmount","render","_renderToast","onPush","toastProps","onMouseEnter","onMouseLeave","children","enter","enterActive","exit","exitActive","Component","__KONTUR_REACT_UI__","fn","args"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\n\nimport { RenderContainer } from '../../internal/RenderContainer';\nimport { Nullable } from '../../typings/utility-types';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles } from './Toast.styles';\nimport { ToastView, ToastViewProps } from './ToastView';\nimport { ToastStatic } from './ToastStatic';\n\nexport interface Action {\n label: string;\n handler: () => void;\n}\n\nexport interface ToastState {\n notification: Nullable<string>;\n action: Nullable<Action>;\n id: number;\n}\n\nexport interface ToastProps extends CommonProps {\n onPush?: (notification: string, action?: Action) => void;\n onClose?: (notification: string, action?: Action) => void;\n}\n\n/**\n * Показывает уведомления.\n *\n * Доступен статический метод: `Toast.push(notification, action?)`.\n * Однако, при его использовании не работает кастомизация и могут быть проблемы\n * с перекрытием уведомления другими элементами страницы.\n *\n * Рекомендуется использовать Toast через `ref` (см. примеры).\n */\n@rootNode\nexport class Toast extends React.Component<ToastProps, ToastState> {\n public static __KONTUR_REACT_UI__ = 'Toast';\n private setRootNode!: TSetRootNode;\n\n public static push(notification: string, action?: Action) {\n ToastStatic.push(notification, action);\n }\n\n public static close() {\n ToastStatic.close();\n }\n\n public _toast: Nullable<ToastView>;\n private _timeout: Nullable<number> = null;\n private rootRef = React.createRef<HTMLElement>();\n\n constructor(props: ToastProps) {\n super(props);\n this.state = {\n notification: null,\n action: null,\n id: 0,\n };\n }\n\n public componentWillUnmount() {\n this._clearTimer();\n }\n\n public render() {\n return (\n <RenderContainer>\n <TransitionGroup>{this._renderToast()}</TransitionGroup>\n </RenderContainer>\n );\n }\n\n /**\n * Показывает тост с `notification` в качестве сообщения.\n * Тост автоматически скрывается через 3 или 7 секунд,\n * в зависимости от наличия у него кнопки `action`.\n *\n * @public\n * @param {string} notification\n * @param {Action} action `action` опциональный параметр формата `{ label: string, handler: function }`\n * добавляет кнопку в виде ссылки при клике на которую вызывается переданный handler\n */\n public push(notification: string, action?: Action) {\n if (this.state.notification) {\n this.close();\n }\n\n safelyCall(this.props.onPush, notification, action);\n\n this.setState(({ id }) => ({ notification, action, id: id + 1 }), this._setTimer);\n }\n\n /**\n * @public\n */\n public close = () => {\n safelyCall(this.props.onClose, this.state.notification, this.state.action);\n this.setState({ notification: null, action: null });\n };\n\n private _renderToast() {\n const { notification, action, id } = this.state;\n\n if (!notification) {\n return null;\n }\n\n const toastProps: ToastViewProps = {\n onMouseEnter: this._clearTimer,\n onMouseLeave: this._setTimer,\n onClose: this.close,\n children: notification,\n action,\n };\n\n return (\n <CSSTransition\n key={id}\n classNames={{\n enter: styles.enter(),\n enterActive: styles.enterActive(),\n exit: styles.exit(),\n exitActive: styles.exitActive(),\n }}\n timeout={{\n enter: 200,\n exit: 150,\n }}\n enter={!isTestEnv}\n exit={!isTestEnv}\n nodeRef={this.rootRef}\n >\n <CommonWrapper rootNodeRef={this.setRootRef} {...this.props}>\n <ToastView ref={this._refToast} {...toastProps} />\n </CommonWrapper>\n </CSSTransition>\n );\n }\n\n private setRootRef = (element: Nullable<Element>) => {\n this.setRootNode(element);\n // @ts-ignore\n this.rootRef.current = element;\n };\n\n private _clearTimer = () => {\n if (this._timeout) {\n clearTimeout(this._timeout);\n this._timeout = null;\n }\n };\n\n private _setTimer = () => {\n this._clearTimer();\n\n const timeOut = this.state.action ? 7 : 3;\n\n this._timeout = window.setTimeout(this.close, timeOut * 1000);\n };\n\n private _refToast = (element: ToastView) => {\n this._toast = element;\n };\n}\n\nfunction safelyCall(fn: Nullable<(a?: any) => any>, ...args: any[]) {\n if (fn) {\n fn(...args);\n }\n}\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized";
|
|
3
2
|
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
|
|
4
3
|
|
|
5
4
|
var _class, _class2, _temp;
|
|
@@ -15,7 +14,7 @@ import { containsTargetOrRenderContainer } from "../../../lib/listenFocusOutside
|
|
|
15
14
|
import { ThemeContext } from "../../../lib/theming/ThemeContext";
|
|
16
15
|
import { isTestEnv } from "../../../lib/currentEnvironment";
|
|
17
16
|
import { CommonWrapper } from "../../../internal/CommonWrapper";
|
|
18
|
-
import {
|
|
17
|
+
import { rootNode } from "../../../lib/rootNode";
|
|
19
18
|
import { styles } from "../Tooltip.styles";
|
|
20
19
|
var Positions = ['right bottom', 'right middle', 'right top', 'top right', 'top center', 'top left', 'left top', 'left middle', 'left bottom', 'bottom left', 'bottom center', 'bottom right'];
|
|
21
20
|
export var Tooltip = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$PureComponent) {
|
|
@@ -39,6 +38,7 @@ export var Tooltip = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function
|
|
|
39
38
|
_this.positions = null;
|
|
40
39
|
_this.clickedOutside = true;
|
|
41
40
|
_this.setRootNode = void 0;
|
|
41
|
+
_this.popupRef = /*#__PURE__*/React.createRef();
|
|
42
42
|
|
|
43
43
|
_this.renderContent = function () {
|
|
44
44
|
var content = _this.props.render ? _this.props.render() : null;
|
|
@@ -49,12 +49,15 @@ export var Tooltip = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function
|
|
|
49
49
|
|
|
50
50
|
return /*#__PURE__*/React.createElement("div", {
|
|
51
51
|
ref: _this.refContent,
|
|
52
|
-
className: styles.tooltipContent(_this.theme)
|
|
52
|
+
className: styles.tooltipContent(_this.theme),
|
|
53
|
+
"data-tid": 'Tooltip__content'
|
|
53
54
|
}, content, _this.renderCloseButton());
|
|
54
55
|
};
|
|
55
56
|
|
|
56
|
-
_this.
|
|
57
|
-
|
|
57
|
+
_this.getAnchorElement = function () {
|
|
58
|
+
var _this$popupRef$curren;
|
|
59
|
+
|
|
60
|
+
return (_this$popupRef$curren = _this.popupRef.current) == null ? void 0 : _this$popupRef$curren.anchorElement;
|
|
58
61
|
};
|
|
59
62
|
|
|
60
63
|
_this.refContent = function (node) {
|
|
@@ -212,13 +215,13 @@ export var Tooltip = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function
|
|
|
212
215
|
className: styles.cross(this.theme),
|
|
213
216
|
onClick: this.handleCloseButtonClick
|
|
214
217
|
}, /*#__PURE__*/React.createElement(CrossIcon, null));
|
|
215
|
-
}
|
|
218
|
+
};
|
|
216
219
|
/**
|
|
217
220
|
* Программно открывает тултип.
|
|
218
221
|
* <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>
|
|
219
222
|
* @public
|
|
220
223
|
*/
|
|
221
|
-
|
|
224
|
+
|
|
222
225
|
|
|
223
226
|
_proto.show = function show() {
|
|
224
227
|
if (this.state.opened) return;
|
|
@@ -260,7 +263,7 @@ export var Tooltip = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function
|
|
|
260
263
|
var anchorElement = props.children || props.anchorElement;
|
|
261
264
|
var popup = this.renderPopup(anchorElement, popupProps, content);
|
|
262
265
|
return /*#__PURE__*/React.createElement(RenderLayer, _extends({}, layerProps, {
|
|
263
|
-
getAnchorElement: this.
|
|
266
|
+
getAnchorElement: this.getAnchorElement
|
|
264
267
|
}), popup);
|
|
265
268
|
};
|
|
266
269
|
|
|
@@ -278,7 +281,8 @@ export var Tooltip = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function
|
|
|
278
281
|
ignoreHover: this.props.trigger === 'hoverAnchor',
|
|
279
282
|
onOpen: this.props.onOpen,
|
|
280
283
|
onClose: this.props.onClose,
|
|
281
|
-
tryPreserveFirstRenderedPosition: true
|
|
284
|
+
tryPreserveFirstRenderedPosition: true,
|
|
285
|
+
ref: this.popupRef
|
|
282
286
|
}, popupProps), content));
|
|
283
287
|
};
|
|
284
288
|
|