@skbkontur/react-ui 4.26.0 → 4.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/cjs/components/Button/Button.d.ts +1 -1
  3. package/cjs/components/Button/Button.js +3 -2
  4. package/cjs/components/Button/Button.js.map +1 -1
  5. package/cjs/components/ComboBox/ComboBox.d.ts +2 -2
  6. package/cjs/components/ComboBox/ComboBox.js +1 -0
  7. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  8. package/cjs/components/CurrencyLabel/CurrencyLabel.d.ts +3 -3
  9. package/cjs/components/CurrencyLabel/CurrencyLabel.js +4 -3
  10. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  11. package/cjs/components/DateInput/DateInput.d.ts +2 -2
  12. package/cjs/components/DateInput/DateInput.js +2 -1
  13. package/cjs/components/DateInput/DateInput.js.map +1 -1
  14. package/cjs/components/DatePicker/DatePicker.d.ts +2 -2
  15. package/cjs/components/DatePicker/DatePicker.js +3 -1
  16. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  17. package/cjs/components/Dropdown/Dropdown.d.ts +2 -2
  18. package/cjs/components/Dropdown/Dropdown.js +2 -0
  19. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  20. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +2 -2
  21. package/cjs/components/DropdownMenu/DropdownMenu.js +3 -1
  22. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  23. package/cjs/components/Kebab/Kebab.d.ts +2 -2
  24. package/cjs/components/Kebab/Kebab.js +3 -1
  25. package/cjs/components/Kebab/Kebab.js.map +1 -1
  26. package/cjs/components/MenuFooter/MenuFooter.d.ts +3 -3
  27. package/cjs/components/MenuFooter/MenuFooter.js +3 -2
  28. package/cjs/components/MenuFooter/MenuFooter.js.map +1 -1
  29. package/cjs/components/MenuHeader/MenuHeader.d.ts +3 -3
  30. package/cjs/components/MenuHeader/MenuHeader.js +3 -2
  31. package/cjs/components/MenuHeader/MenuHeader.js.map +1 -1
  32. package/cjs/components/MenuItem/MenuItem.d.ts +2 -2
  33. package/cjs/components/MenuItem/MenuItem.js +1 -0
  34. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  35. package/cjs/components/Select/Select.d.ts +2 -2
  36. package/cjs/components/Select/Select.js +2 -0
  37. package/cjs/components/Select/Select.js.map +1 -1
  38. package/cjs/components/TokenInput/TokenInput.d.ts +4 -3
  39. package/cjs/components/TokenInput/TokenInput.js +11 -4
  40. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  41. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +2 -2
  42. package/cjs/internal/CustomComboBox/ComboBoxView.js +5 -1
  43. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  44. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +2 -2
  45. package/cjs/internal/CustomComboBox/CustomComboBox.js +3 -1
  46. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  47. package/cjs/internal/PopupMenu/PopupMenu.d.ts +3 -3
  48. package/cjs/internal/PopupMenu/PopupMenu.js +3 -1
  49. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  50. package/cjs/internal/themes/Theme2022Dark.js +1 -1
  51. package/cjs/internal/themes/Theme2022Dark.js.map +1 -1
  52. package/components/Button/Button/Button.js +3 -1
  53. package/components/Button/Button/Button.js.map +1 -1
  54. package/components/Button/Button.d.ts +1 -1
  55. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  56. package/components/ComboBox/ComboBox.d.ts +2 -2
  57. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +4 -2
  58. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  59. package/components/CurrencyLabel/CurrencyLabel.d.ts +3 -3
  60. package/components/DateInput/DateInput/DateInput.js +1 -0
  61. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  62. package/components/DateInput/DateInput.d.ts +2 -2
  63. package/components/DatePicker/DatePicker/DatePicker.js +3 -1
  64. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  65. package/components/DatePicker/DatePicker.d.ts +2 -2
  66. package/components/Dropdown/Dropdown/Dropdown.js +1 -0
  67. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  68. package/components/Dropdown/Dropdown.d.ts +2 -2
  69. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +1 -0
  70. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  71. package/components/DropdownMenu/DropdownMenu.d.ts +2 -2
  72. package/components/Kebab/Kebab/Kebab.js +1 -0
  73. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  74. package/components/Kebab/Kebab.d.ts +2 -2
  75. package/components/MenuFooter/MenuFooter/MenuFooter.js +4 -2
  76. package/components/MenuFooter/MenuFooter/MenuFooter.js.map +1 -1
  77. package/components/MenuFooter/MenuFooter.d.ts +3 -3
  78. package/components/MenuHeader/MenuHeader/MenuHeader.js +4 -2
  79. package/components/MenuHeader/MenuHeader/MenuHeader.js.map +1 -1
  80. package/components/MenuHeader/MenuHeader.d.ts +3 -3
  81. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  82. package/components/MenuItem/MenuItem.d.ts +2 -2
  83. package/components/Select/Select/Select.js +1 -0
  84. package/components/Select/Select/Select.js.map +1 -1
  85. package/components/Select/Select.d.ts +2 -2
  86. package/components/TokenInput/TokenInput/TokenInput.js +9 -2
  87. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  88. package/components/TokenInput/TokenInput.d.ts +4 -3
  89. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +3 -0
  90. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  91. package/internal/CustomComboBox/ComboBoxView.d.ts +2 -2
  92. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +1 -0
  93. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  94. package/internal/CustomComboBox/CustomComboBox.d.ts +2 -2
  95. package/internal/PopupMenu/PopupMenu/PopupMenu.js +2 -1
  96. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  97. package/internal/PopupMenu/PopupMenu.d.ts +3 -3
  98. package/internal/themes/Theme2022Dark/Theme2022Dark.js +1 -1
  99. package/internal/themes/Theme2022Dark/Theme2022Dark.js.map +1 -1
  100. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["DateInput.tsx"],"names":["DateInputDataTids","icon","DateInput","DatePickerLocaleHelper","rootNode","props","getProps","defaultProps","iDateMediator","InternalDateMediator","inputLikeText","dateFragmentsView","isMouseDown","isMouseFocus","ignoringDelimiter","blurEvent","conditionalHandler","ConditionalHandler","add","Actions","MoveSelectionLeft","shiftSelection","MoveSelectionRight","Separator","pressDelimiter","MoveSelectionFirst","selectDateComponent","getLeftmostType","MoveSelectionLast","getRightmostType","Increment","shiftDateComponent","Decrement","Digit","e","inputValue","ClearSelection","clearSelected","ClearOneChar","clearOneChar","FullSelection","fullSelection","WrongInput","blink","build","selectNode","type","state","selected","getRootNode","InternalDateComponentType","All","selectInnerNode","index","getTypesOrder","indexOf","renderIcon","withIcon","disabled","size","theme","iconStyles","styles","iconSmall","iconMedium","iconLarge","iconDisabled","handleFocus","setState","prevState","focused","onFocus","resetFocus","updateValue","inputMode","handleBlur","onBlur","restored","restore","persist","handleMouseDownCapture","isFragment","target","preventDefault","handleSelectDateComponent","isEmpty","handleMouseDragStart","dragged","handleMouseDragEnd","selection","globalObject","getSelection","toString","length","LENGTH_FULLDATE","handleKeyDown","onKeyDown","handlePaste","pasted","clipboardData","getData","trim","validateString","paste","handleDoubleClick","inputLikeTextRef","el","dateFragmentsViewRef","sync","valueFormatted","getString","update","emitChange","React","version","search","ReactDOM","flushSync","updateFromProps","locale","value","get","getInternalString","onValueChange","clear","nextType","isNull","deleteOneCharRight","step","changed","getShiftedType","event","inputKey","key","componentDidUpdate","prevProps","minDate","maxDate","isChangedLocale","componentDidMount","autoFocus","focus","blur","render","renderMain","showValue","Boolean","width","setRootNode","error","warning","onClick","valueVisible","getFragments","Component","__KONTUR_REACT_UI__","displayName","MIN_FULLDATE","MAX_FULLDATE"],"mappings":"2WAAA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,sE;;;;;;;;;;AAUO,IAAMA,iBAAiB,GAAG;AAC/BC,EAAAA,IAAI,EAAE,iBADyB,EAA1B,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDMC,S,WADZ,wBAAO,YAAP,EAAqBC,8BAArB,C,MADAC,kB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCC,qBAAYC,KAAZ,EAAmC;AACjC,wCAAMA,KAAN,UADiC,MA3B3BC,QA2B2B,GA3BhB,0CAAkBJ,SAAS,CAACK,YAA5B,CA2BgB,OAzB3BC,aAyB2B,GAzBW,IAAIC,0CAAJ,EAyBX,OAxB3BC,aAwB2B,GAxBW,IAwBX,OAvB3BC,iBAuB2B,GAvBmB,IAuBnB,OAtB3BC,WAsB2B,GAtBb,KAsBa,OArB3BC,YAqB2B,GArBZ,KAqBY,OApB3BC,iBAoB2B,GApBP,KAoBO,OAlB3BC,SAkB2B,GAlBuB,IAkBvB,OAf3BC,kBAe2B,GAfN,IAAIC,sCAAJ,GAC1BC,GAD0B,CACtBC,kCAAQC,iBADc,EACK,oBAAM,MAAKC,cAAL,CAAoB,CAAC,CAArB,CAAN,EADL,EAE1BH,GAF0B,CAEtBC,kCAAQG,kBAFc,EAEM,oBAAM,MAAKD,cAAL,CAAoB,CAApB,CAAN,EAFN,EAG1BH,GAH0B,CAGtBC,kCAAQI,SAHc,EAGH,oBAAM,MAAKC,cAAL,EAAN,EAHG,EAI1BN,GAJ0B,CAItBC,kCAAQM,kBAJc,EAIM,oBAAM,MAAKC,mBAAL,CAAyB,MAAKlB,aAAL,CAAmBmB,eAAnB,EAAzB,CAAN,EAJN,EAK1BT,GAL0B,CAKtBC,kCAAQS,iBALc,EAKK,oBAAM,MAAKF,mBAAL,CAAyB,MAAKlB,aAAL,CAAmBqB,gBAAnB,EAAzB,CAAN,EALL,EAM1BX,GAN0B,CAMtBC,kCAAQW,SANc,EAMH,oBAAM,MAAKC,kBAAL,CAAwB,CAAxB,CAAN,EANG,EAO1Bb,GAP0B,CAOtBC,kCAAQa,SAPc,EAOH,oBAAM,MAAKD,kBAAL,CAAwB,CAAC,CAAzB,CAAN,EAPG,EAQ1Bb,GAR0B,CAQtBC,kCAAQc,KARc,EAQP,UAACC,CAAD,UAAO,MAAKC,UAAL,CAAgBD,CAAhB,CAAP,EARO,EAS1BhB,GAT0B,CAStBC,kCAAQiB,cATc,EASE,oBAAM,MAAKC,aAAL,EAAN,EATF,EAU1BnB,GAV0B,CAUtBC,kCAAQmB,YAVc,EAUA,oBAAM,MAAKC,YAAL,EAAN,EAVA,EAW1BrB,GAX0B,CAWtBC,kCAAQqB,aAXc,EAWC,oBAAM,MAAKC,aAAL,EAAN,EAXD,EAY1BvB,GAZ0B,CAYtBC,kCAAQuB,UAZc,EAYF,oBAAM,MAAKC,KAAL,EAAN,EAZE,EAa1BC,KAb0B,EAeM;;;;;;;;;;;;;;;;;;;;;;;;AAyB5BC,IAAAA,UAzB4B,GAyBf,YAAM;AACxB,UAAMC,IAAI,GAAG,MAAKC,KAAL,CAAWC,QAAxB;AACA,UAAMrC,iBAAiB,GAAG,MAAKA,iBAAL,IAA0B,MAAKA,iBAAL,CAAuBsC,WAAvB,EAApD;AACA,UAAIH,IAAI,KAAK,IAAT,IAAiB,CAAC,MAAKpC,aAAvB,IAAwC,CAACC,iBAA7C,EAAgE;AAC9D;AACD;AACD,UAAImC,IAAI,KAAKI,iCAA0BC,GAAvC,EAA4C;AAC1C,cAAKzC,aAAL,CAAmB0C,eAAnB,CAAmCzC,iBAAnC,EAAsD,CAAtD,EAAyD,CAAzD;AACA;AACD;AACD,UAAM0C,KAAK,GAAG,MAAK7C,aAAL,CAAmB8C,aAAnB,GAAmCC,OAAnC,CAA2CT,IAA3C,CAAd;AACA,UAAIO,KAAK,GAAG,CAAC,CAAb,EAAgB;AACd,cAAK3C,aAAL,CAAmB0C,eAAnB,CAAmCzC,iBAAnC,EAAsD0C,KAAK,GAAG,CAA9D,EAAiEA,KAAK,GAAG,CAAR,GAAY,CAA7E;AACD;AACF,KAvCkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyH3BG,IAAAA,UAzH2B,GAyHd,YAAM;AACzB,wBAAuC,MAAKnD,KAA5C,CAAQoD,QAAR,eAAQA,QAAR,oCAAkBC,QAAlB,CAAkBA,QAAlB,qCAA6B,KAA7B;AACA,UAAMC,IAAI,GAAG,MAAKrD,QAAL,GAAgBqD,IAA7B;;AAEA,UAAIF,QAAJ,EAAc;AACZ,YAAMG,KAAK,GAAG,MAAKA,KAAnB;AACA,YAAM3D,IAAI,GAAG,+BAAY2D,KAAZ,iBAAqB,6BAAC,0BAAD,IAAkB,IAAI,EAAED,IAAxB,GAArB,gBAAwD,6BAAC,gBAAD,OAArE;AACA,YAAME,UAAU,GAAG;AAChBC,0BAAO7D,IAAP,CAAY2D,KAAZ,CADgB,IACK,IADL;AAEhBE,0BAAOC,SAAP,CAAiBH,KAAjB,CAFgB,IAEUD,IAAI,KAAK,OAFnB;AAGhBG,0BAAOE,UAAP,CAAkBJ,KAAlB,CAHgB,IAGWD,IAAI,KAAK,QAHpB;AAIhBG,0BAAOG,SAAP,CAAiBL,KAAjB,CAJgB,IAIUD,IAAI,KAAK,OAJnB;AAKhBG,0BAAOI,YAAP,CAAoBN,KAApB,CALgB,IAKaF,QALb,OAAnB;;AAOA;AACE,iDAAM,SAAS,EAAEG,UAAjB,EAA6B,YAAU7D,iBAAiB,CAACC,IAAzD;AACGA,UAAAA,IADH,CADF;;;AAKD;AACD,aAAO,IAAP;AACD,KA9IkC;;AAgJ3BkE,IAAAA,WAhJ2B,GAgJb,UAACjC,CAAD,EAAsC;AAC1D,YAAKkC,QAAL,CAAc,UAACC,SAAD,UAAgB;AAC5BC,UAAAA,OAAO,EAAE,IADmB;AAE5BtB,UAAAA,QAAQ,EAAE,MAAKpC,WAAL,IAAoB,CAACyD,SAAS,CAACC,OAA/B,GAAyCD,SAAS,CAACrB,QAAnD,GAA8D,MAAKxC,aAAL,CAAmBmB,eAAnB,EAF5C,EAAhB,EAAd;;;AAKA,UAAI,MAAKtB,KAAL,CAAWkE,OAAf,EAAwB;AACtB,cAAKlE,KAAL,CAAWkE,OAAX,CAAmBrC,CAAnB;AACD;AACF,KAzJkC;;AA2J3BsC,IAAAA,UA3J2B,GA2Jd,oBAAM,MAAKC,WAAL,CAAiB,EAAEH,OAAO,EAAE,KAAX,EAAkBtB,QAAQ,EAAE,IAA5B,EAAkC0B,SAAS,EAAE,KAA7C,EAAjB,CAAN,EA3Jc;;AA6J3BC,IAAAA,UA7J2B,GA6Jd,UAACzC,CAAD,EAAsC;AACzD,YAAKsC,UAAL;;AAEA,UAAI,MAAKnE,KAAL,CAAWuE,MAAf,EAAuB;AACrB,YAAMC,QAAQ,GAAG,MAAKrE,aAAL,CAAmBsE,OAAnB,EAAjB;AACA,YAAID,QAAJ,EAAc;AACZ3C,UAAAA,CAAC,CAAC6C,OAAF;AACA,gBAAKhE,SAAL,GAAiBmB,CAAjB;AACD,SAHD,MAGO;AACL,gBAAK7B,KAAL,CAAWuE,MAAX,CAAkB1C,CAAlB;AACD;AACF;AACF,KAzKkC;;AA2K3B8C,IAAAA,sBA3K2B,GA2KF,UAAC9C,CAAD,EAA0C;AACzE,UAAM+C,UAAU,GAAG,MAAKtE,iBAAL,GAAyB,MAAKA,iBAAL,CAAuBsE,UAAvB,CAAkC/C,CAAC,CAACgD,MAApC,CAAzB,GAAuE,KAA1F;AACA,UAAI,MAAKnC,KAAL,CAAWuB,OAAX,IAAsB,CAACW,UAA3B,EAAuC;AACrC/C,QAAAA,CAAC,CAACiD,cAAF;AACD;AACD,YAAKtE,YAAL,GAAoB,CAAC,MAAKkC,KAAL,CAAWuB,OAAhC;AACA,YAAK1D,WAAL,GAAmBqE,UAAnB;AACD,KAlLkC;;AAoL3BG,IAAAA,yBApL2B,GAoLC,UAACtC,IAAD,EAAqC;AACvE,UAAI,EAAE,MAAKjC,YAAL,IAAqB,MAAKL,aAAL,CAAmB6E,OAAnB,EAAvB,CAAJ,EAA0D;AACxD,cAAK3D,mBAAL,CAAyBoB,IAAzB;AACD;AACD,YAAKjC,YAAL,GAAoB,KAApB;AACA,YAAKD,WAAL,GAAmB,KAAnB;AACD,KA1LkC;;AA4L3B0E,IAAAA,oBA5L2B,GA4LJ,YAAM;AACnC,YAAKlB,QAAL,CAAc,EAAEmB,OAAO,EAAE,IAAX,EAAiBvC,QAAQ,EAAE,IAA3B,EAAd;AACD,KA9LkC;;AAgM3BwC,IAAAA,kBAhM2B,GAgMN,YAAM;AACjC,UAAMC,SAAS,GAAGC,2BAAaC,YAAhB,oBAAGD,2BAAaC,YAAb,EAAlB;AACA;AACEF,MAAAA,SAAS;AACTA,MAAAA,SAAS,CAACG,QAAV,GAAqBC,MAArB,KAAgCC,0BADhC;AAEA,YAAK/C,KAAL,CAAWC,QAAX,KAAwBE,iCAA0BC,GAHpD;AAIE;AACA,cAAKzB,mBAAL,CAAyBwB,iCAA0BC,GAAnD;AACD;AACF,KAzMkC;;AA2M3B4C,IAAAA,aA3M2B,GA2MX,UAAC7D,CAAD,EAAyC;AAC/D,UAAI,MAAKlB,kBAAL,CAAwB,6CAAckB,CAAd,CAAxB,EAA0CA,CAA1C,CAAJ,EAAkD;AAChDA,QAAAA,CAAC,CAACiD,cAAF;AACD;AACD,UAAI,MAAK9E,KAAL,CAAW2F,SAAf,EAA0B;AACxB,cAAK3F,KAAL,CAAW2F,SAAX,CAAqB9D,CAArB;AACD;AACF,KAlNkC;;AAoN3B+D,IAAAA,WApN2B,GAoNb,UAAC/D,CAAD,EAA0C;AAC9D,UAAMgE,MAAM,GAAGhE,CAAC,IAAIA,CAAC,CAACiE,aAAF,CAAgBC,OAAhB,CAAwB,MAAxB,EAAgCC,IAAhC,EAApB;AACA,UAAIH,MAAM,IAAI,MAAK1F,aAAL,CAAmB8F,cAAnB,CAAkCJ,MAAlC,CAAd,EAAyD;AACvD,cAAK1F,aAAL,CAAmB+F,KAAnB,CAAyBL,MAAzB;AACA,cAAKzB,WAAL;AACD;AACF,KA1NkC;;AA4N3B+B,IAAAA,iBA5N2B,GA4NP,YAAM;AAChC,YAAK9E,mBAAL,CAAyBwB,iCAA0BC,GAAnD;AACD,KA9NkC;;AAgO3BsD,IAAAA,gBAhO2B,GAgOR,UAACC,EAAD,EAA8B;AACvD,YAAKhG,aAAL,GAAqBgG,EAArB;AACD,KAlOkC;;AAoO3BC,IAAAA,oBApO2B,GAoOJ,UAACD,EAAD,EAAkC;AAC/D,YAAK/F,iBAAL,GAAyB+F,EAAzB;AACD,KAtOkC;;AAwO3BhF,IAAAA,mBAxO2B,GAwOL,UAACsB,QAAD,EAAsD;AAClF,YAAKoB,QAAL,CAAc,EAAEpB,QAAQ,EAARA,QAAF,EAAY0B,SAAS,EAAE,KAAvB,EAAd;AACD,KA1OkC;;AA4O3BD,IAAAA,WA5O2B,GA4Ob,UAAC1B,KAAD,EAAsC6D,IAAtC,EAA4D,KAA3D7D,KAA2D,cAA3DA,KAA2D,GAA1B,EAA0B,MAAtB6D,IAAsB,cAAtBA,IAAsB,GAAf,IAAe;AAChF,UAAMC,cAAc,GAAG,MAAKrG,aAAL,CAAmBsG,SAAnB,EAAvB;;AAEA,UAAMC,MAAM,GAAG,SAATA,MAAS,WAAM,MAAK3C,QAAL,4BAAmBrB,KAAnB,IAA0B8D,cAAc,EAAdA,cAA1B,KAA8D,MAAKG,UAAnE,CAAN,EAAf;;AAEA,UAAIJ,IAAI,IAAIK,eAAMC,OAAN,CAAcC,MAAd,CAAqB,IAArB,MAA+B,CAA3C,EAA8C;AAC5CC,0BAASC,SAAT,CAAmBN,MAAnB;AACD,OAFD,MAEO;AACLA,QAAAA,MAAM;AACP;AACF,KAtPkC;;AAwP3BO,IAAAA,eAxP2B,GAwPT,UAACV,IAAD,EAAyB;AACjD,YAAKpG,aAAL,CAAmBuG,MAAnB,CAA0B,MAAK1G,KAA/B,EAAsC,MAAKkH,MAA3C;;AAEA,YAAK9C,WAAL,CAAiB,EAAjB,EAAqBmC,IAArB;AACD,KA5PkC;;AA8P3BnE,IAAAA,aA9P2B,GA8PX,YAAY;AAClC,YAAKf,mBAAL,CAAyBwB,iCAA0BC,GAAnD;AACD,KAhQkC;;AAkQ3B3B,IAAAA,cAlQ2B,GAkQV,YAAY;AACnC,UAAMgG,KAAK,GAAG,MAAKhH,aAAL,CAAmBiH,GAAnB,CAAuB,MAAK1E,KAAL,CAAWC,QAAlC,CAAd;AACA,UAAIwE,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAK,EAAhC,EAAoC;AAClC,YAAI,CAAC,MAAK1G,iBAAV,EAA6B;AAC3B,gBAAKO,cAAL,CAAoB,CAApB;AACD;AACD,cAAKP,iBAAL,GAAyB,KAAzB;AACD;AACF,KA1QkC;;AA4Q3BkG,IAAAA,UA5Q2B,GA4Qd,YAAY;AAC/B,UAAMQ,KAAK,GAAG,MAAKhH,aAAL,CAAmBkH,iBAAnB,EAAd;AACA,UAAI,MAAKrH,KAAL,CAAWmH,KAAX,KAAqBA,KAAzB,EAAgC;AAC9B;AACD;AACD,UAAI,MAAKnH,KAAL,CAAWsH,aAAf,EAA8B;AAC5B,cAAKtH,KAAL,CAAWsH,aAAX,CAAyBH,KAAzB;AACD;AACD,UAAI,MAAKzG,SAAL,IAAkB,MAAKV,KAAL,CAAWuE,MAAjC,EAAyC;AACvC,cAAKvE,KAAL,CAAWuE,MAAX,CAAkB,MAAK7D,SAAvB;AACA,cAAKA,SAAL,GAAiB,IAAjB;AACD;AACF,KAxRkC;;AA0R3BsB,IAAAA,aA1R2B,GA0RX,YAAY;AAClC,UAAMW,QAAQ,GAAG,MAAKD,KAAL,CAAWC,QAAX,KAAwB,IAAxB,GAA+B,MAAKxC,aAAL,CAAmBmB,eAAnB,EAA/B,GAAsE,MAAKoB,KAAL,CAAWC,QAAlG;AACA,YAAKxC,aAAL,CAAmBoH,KAAnB,CAAyB5E,QAAzB;AACA,YAAKyB,WAAL,CAAiB;AACfC,QAAAA,SAAS,EAAE,KADI;AAEf1B,QAAAA,QAAQ,EAAEA,QAAQ,KAAKE,iCAA0BC,GAAvC,GAA6C,MAAK3C,aAAL,CAAmBmB,eAAnB,EAA7C,GAAoFqB,QAF/E,EAAjB;;AAID,KAjSkC;;AAmS3BT,IAAAA,YAnS2B,GAmSZ,YAAY;AACjC,wBAAgC,MAAKQ,KAArC,CAAQC,QAAR,eAAQA,QAAR,CAAkB0B,SAAlB,eAAkBA,SAAlB;AACA,UAAMmD,QAAQ,GAAG7E,QAAQ,KAAK,IAAb,GAAoB,MAAKxC,aAAL,CAAmBqB,gBAAnB,EAApB,GAA4DmB,QAA7E;AACA,UAAI,MAAKxC,aAAL,CAAmBsH,MAAnB,CAA0BD,QAA1B,CAAJ,EAAyC;AACvC,cAAKxG,cAAL,CAAoB,CAAC,CAArB;AACA;AACD;AACD,UAAI2B,QAAQ,KAAKE,iCAA0BC,GAA3C,EAAgD;AAC9C,cAAK3C,aAAL,CAAmBoH,KAAnB,CAAyB1E,iCAA0BC,GAAnD;AACA,cAAKsB,WAAL,CAAiB,EAAEzB,QAAQ,EAAE,MAAKxC,aAAL,CAAmBmB,eAAnB,EAAZ,EAAjB;AACA;AACD;AACD,YAAKnB,aAAL,CAAmBuH,kBAAnB,CAAsCF,QAAtC,EAAgDnD,SAAhD;AACA,YAAKD,WAAL,CAAiB;AACfC,QAAAA,SAAS,EAAE,MAAKlE,aAAL,CAAmBiH,GAAnB,CAAuBI,QAAvB,MAAqC,IADjC;AAEf7E,QAAAA,QAAQ,EAAE6E,QAFK,EAAjB;;AAID,KApTkC;;AAsT3B9F,IAAAA,kBAtT2B,GAsTN,UAACiG,IAAD,EAAwB;AACnD,UAAQhF,QAAR,GAAqB,MAAKD,KAA1B,CAAQC,QAAR;AACA,UAAMiF,OAAO,GAAG,MAAKzH,aAAL,CAAmBuB,kBAAnB,CAAsCiB,QAAtC,EAAgDgF,IAAhD,CAAhB;AACA,UAAI,CAACC,OAAL,EAAc;AACZ,cAAKtF,KAAL;AACA;AACD;AACD,YAAK8B,WAAL,CAAiB;AACfC,QAAAA,SAAS,EAAE,KADI;AAEf1B,QAAAA,QAAQ,EAAEA,QAAQ,KAAKE,iCAA0BC,GAAvC,GAA6C,MAAK3C,aAAL,CAAmBmB,eAAnB,EAA7C,GAAoFqB,QAF/E,EAAjB;;AAID,KAjUkC;;AAmU3B3B,IAAAA,cAnU2B,GAmUV,UAAC2G,IAAD,EAAwB;AAC/C,UAAMhF,QAAQ,GAAG,MAAKxC,aAAL,CAAmB0H,cAAnB,CAAkC,MAAKnF,KAAL,CAAWC,QAA7C,EAAuDgF,IAAvD,CAAjB;AACA,UAAIhF,QAAQ,KAAK,MAAKD,KAAL,CAAWC,QAA5B,EAAsC;AACpC,cAAKoB,QAAL,CAAc,EAAEpB,QAAQ,EAARA,QAAF,EAAY0B,SAAS,EAAE,KAAvB,EAAd;AACD;AACF,KAxUkC;;AA0U3BvC,IAAAA,UA1U2B,GA0Ud,UAACgG,KAAD,EAAmD;AACtE,UAAInF,QAAQ,GAAG,MAAKD,KAAL,CAAWC,QAA1B;AACA,UAAIA,QAAQ,KAAKE,iCAA0BC,GAA3C,EAAgD;AAC9CH,QAAAA,QAAQ,GAAG,MAAKxC,aAAL,CAAmBmB,eAAnB,EAAX;AACA,cAAKnB,aAAL,CAAmBoH,KAAnB,CAAyB1E,iCAA0BC,GAAnD;AACA,cAAKiB,QAAL,CAAc,EAAEpB,QAAQ,EAARA,QAAF,EAAd;AACD;AACD,kCAA+B,MAAKxC,aAAL,CAAmB4H,QAAnB,CAA4BD,KAAK,CAACE,GAAlC,EAAuCrF,QAAvC,EAAiD,MAAKD,KAAL,CAAW2B,SAA5D,CAA/B,CAAQA,SAAR,yBAAQA,SAAR,CAAmBuD,OAAnB,yBAAmBA,OAAnB;AACA,UAAI,CAACA,OAAL,EAAc;AACZ,cAAKtF,KAAL;AACA;AACD;;AAED,UAAI,CAAC+B,SAAL,EAAgB;AACd,cAAK5D,iBAAL,GAAyB,IAAzB;AACA,cAAKO,cAAL,CAAoB,CAApB;AACD;AACD,YAAKoD,WAAL,CAAiB,EAAEC,SAAS,EAATA,SAAF,EAAjB;AACD,KA5VkC,CAGjC,MAAK3B,KAAL,GAAa,EACX8D,cAAc,EAAE,EADL,EAEX7D,QAAQ,EAAE,IAFC,EAGX0B,SAAS,EAAE,KAHA,EAIXJ,OAAO,EAAE,KAJE,EAKXiB,OAAO,EAAE,KALE,EAAb,CAHiC,aAUlC,C,wCAEM+C,kB,GAAP,4BAA0BC,SAA1B,EAAqD,CACnD,qBAAoC,KAAKjI,QAAL,EAApC,CAAQkH,KAAR,kBAAQA,KAAR,CAAegB,OAAf,kBAAeA,OAAf,CAAwBC,OAAxB,kBAAwBA,OAAxB,CACA,IACEF,SAAS,CAACf,KAAV,KAAoBA,KAApB,IACAe,SAAS,CAACC,OAAV,KAAsBA,OADtB,IAEAD,SAAS,CAACE,OAAV,KAAsBA,OAFtB,IAGA,KAAKjI,aAAL,CAAmBkI,eAAnB,CAAmC,KAAKnB,MAAxC,CAJF,EAKE,CACA,KAAKD,eAAL,CAAqB,KAArB,EACD,CACD,KAAKzE,UAAL,GACD,C,QAkBM8F,iB,GAAP,6BAAiC,CAC/B,KAAKrB,eAAL,CAAqB,KAArB,EACA,IAAI,KAAKjH,KAAL,CAAWuI,SAAf,EAA0B,CACxB,KAAKC,KAAL,GACD,CACF,C,QAEMC,I,GAAP,gBAAc,CACZ,IAAI,KAAKpI,aAAT,EAAwB,CACtB,KAAKA,aAAL,CAAmBoI,IAAnB,GACD,CACF,C,QAEMD,K,GAAP,iBAAe,CACb,IAAI,KAAKnI,aAAT,EAAwB,CACtB,KAAKA,aAAL,CAAmBmI,KAAnB,GACD,CACF,C,QAEMlG,K,GAAP,iBAAe,CACb,IAAI,KAAKjC,aAAT,EAAwB,CACtB,KAAKA,aAAL,CAAmBiC,KAAnB,GACD,CACF,C,QAEMoG,M,GAAP,kBAAgB,mBACd,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAACnF,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,OAAO,MAAI,CAACoF,UAAL,EAAP,CACD,CAJH,CADF,CAQD,C,QAEOA,U,GAAR,sBAAqB,UACnB,mBAAyD,KAAKjG,KAA9D,CAAQuB,OAAR,gBAAQA,OAAR,CAAiBtB,QAAjB,gBAAiBA,QAAjB,CAA2B0B,SAA3B,gBAA2BA,SAA3B,CAAsCmC,cAAtC,gBAAsCA,cAAtC,CACA,IAAMoC,SAAS,GAAGC,OAAO,CAAC5E,OAAO,IAAIuC,cAAZ,CAAzB,CACA,sBAAwB,KAAKvG,QAAL,EAAxB,CAAQ6I,KAAR,mBAAQA,KAAR,CAAexF,IAAf,mBAAeA,IAAf,CAEA,oBACE,6BAAC,4BAAD,2BAAe,WAAW,EAAE,KAAKyF,WAAjC,IAAkD,KAAK/I,KAAvD,gBACE,6BAAC,wCAAD,IAAqB,kBAAkB,EAAE,KAAKmE,UAA9C,iBACE,6BAAC,4BAAD,IACE,KAAK,EAAE2E,KADT,EAEE,GAAG,EAAE,KAAK1C,gBAFZ,EAGE,IAAI,EAAE9C,IAHR,EAIE,QAAQ,EAAE,KAAKtD,KAAL,CAAWqD,QAJvB,EAKE,KAAK,EAAE,KAAKrD,KAAL,CAAWgJ,KALpB,EAME,OAAO,EAAE,KAAKhJ,KAAL,CAAWiJ,OANtB,EAOE,MAAM,EAAE,KAAK3E,UAPf,EAQE,OAAO,EAAE,KAAKR,WARhB,EASE,OAAO,EAAE,KAAK9D,KAAL,CAAWkJ,OATtB,EAUE,SAAS,EAAE,KAAKxD,aAVlB,EAWE,kBAAkB,EAAE,KAAKf,sBAX3B,EAYE,OAAO,EAAE,KAAKiB,WAZhB,EAaE,SAAS,EAAE,KAAKzC,UAAL,EAbb,EAcE,oBAAoB,EAAE,KAAKgD,iBAd7B,EAeE,gBAAgB,EAAE,KAAKlB,oBAfzB,EAgBE,cAAc,EAAE,KAAKE,kBAhBvB,EAiBE,KAAK,EAAE,KAAKhF,aAAL,CAAmBkH,iBAAnB,EAjBT,EAkBE,SAAS,EAAE,SAlBb,EAmBE,gBAAgB,MAnBlB,iBAqBE,uCAAM,SAAS,EAAE,iBAAG5D,kBAAO0D,KAAP,EAAH,mBAAsB1D,kBAAO0F,YAAP,EAAtB,IAA8CP,SAA9C,QAAjB,iBACE,6BAAC,oCAAD,IACE,GAAG,EAAE,KAAKtC,oBADZ,EAEE,SAAS,EAAE,KAAKnG,aAAL,CAAmBiJ,YAAnB,EAFb,EAGE,qBAAqB,EAAE,KAAKrE,yBAH9B,EAIE,QAAQ,EAAEpC,QAJZ,EAKE,SAAS,EAAE0B,SALb,GADF,CArBF,CADF,CADF,CADF,CAqCD,C,oBA9J4BuC,eAAMyC,S,WACrBC,mB,GAAsB,W,UACtBC,W,GAAc,W,UAEdrJ,Y,GAA6B,EACzCiH,KAAK,EAAE,EADkC,EAEzCgB,OAAO,EAAEqB,uBAFgC,EAGzCpB,OAAO,EAAEqB,uBAHgC,EAIzCnG,IAAI,EAAE,OAJmC,EAKzCwF,KAAK,EAAE,GALkC,E","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { ConditionalHandler } from '../../lib/ConditionalHandler';\nimport { LENGTH_FULLDATE, MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateComponentType } from '../../lib/date/types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { DatePickerLocale, DatePickerLocaleHelper } from '../DatePicker/locale';\nimport { InputLikeText } from '../../internal/InputLikeText';\nimport { locale } from '../../lib/locale/decorators';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CalendarIcon } from '../../internal/icons/16px';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { SizeProp } from '../../lib/types/props';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { CalendarIcon as CalendarIcon2022 } from './CalendarIcon';\nimport { DateFragmentsView } from './DateFragmentsView';\nimport { styles } from './DateInput.styles';\nimport { Actions, extractAction } from './helpers/DateInputKeyboardActions';\nimport { InternalDateMediator } from './helpers/InternalDateMediator';\n\nexport interface DateInputState {\n selected: InternalDateComponentType | null;\n valueFormatted: string;\n inputMode: boolean;\n focused: boolean;\n dragged: boolean;\n}\n\nexport const DateInputDataTids = {\n icon: 'DateInput__icon',\n} as const;\n\nexport interface DateInputProps extends CommonProps {\n autoFocus?: boolean;\n value?: string;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n disabled?: boolean;\n /**\n * Минимальная дата.\n * @default '01.01.1900'\n */\n minDate?: string;\n /**\n * Максимальная дата\n * @default '31.12.2099'\n */\n maxDate?: string;\n /**\n * Ширина поля\n * @default 125\n */\n width?: string | number;\n withIcon?: boolean;\n /**\n * Размер поля\n * @default 'small'\n */\n size?: SizeProp;\n onBlur?: (x0: React.FocusEvent<HTMLElement>) => void;\n onClick?: (x0: React.MouseEvent<HTMLElement>) => void;\n onFocus?: (x0: React.FocusEvent<HTMLElement>) => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange?: (value: string) => void;\n onKeyDown?: (x0: React.KeyboardEvent<HTMLElement>) => void;\n}\n\ntype DefaultProps = Required<Pick<DateInputProps, 'value' | 'minDate' | 'maxDate' | 'size' | 'width'>>;\n\n@rootNode\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DateInput extends React.Component<DateInputProps, DateInputState> {\n public static __KONTUR_REACT_UI__ = 'DateInput';\n public static displayName = 'DateInput';\n\n public static defaultProps: DefaultProps = {\n value: '',\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n size: 'small',\n width: 125,\n };\n\n private getProps = createPropsGetter(DateInput.defaultProps);\n\n private iDateMediator: InternalDateMediator = new InternalDateMediator();\n private inputLikeText: InputLikeText | null = null;\n private dateFragmentsView: DateFragmentsView | null = null;\n private isMouseDown = false;\n private isMouseFocus = false;\n private ignoringDelimiter = false;\n private locale!: DatePickerLocale;\n private blurEvent: React.FocusEvent<HTMLElement> | null = null;\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n private conditionalHandler = new ConditionalHandler<Actions, [React.KeyboardEvent<HTMLElement>]>()\n .add(Actions.MoveSelectionLeft, () => this.shiftSelection(-1))\n .add(Actions.MoveSelectionRight, () => this.shiftSelection(1))\n .add(Actions.Separator, () => this.pressDelimiter())\n .add(Actions.MoveSelectionFirst, () => this.selectDateComponent(this.iDateMediator.getLeftmostType()))\n .add(Actions.MoveSelectionLast, () => this.selectDateComponent(this.iDateMediator.getRightmostType()))\n .add(Actions.Increment, () => this.shiftDateComponent(1))\n .add(Actions.Decrement, () => this.shiftDateComponent(-1))\n .add(Actions.Digit, (e) => this.inputValue(e))\n .add(Actions.ClearSelection, () => this.clearSelected())\n .add(Actions.ClearOneChar, () => this.clearOneChar())\n .add(Actions.FullSelection, () => this.fullSelection())\n .add(Actions.WrongInput, () => this.blink())\n .build();\n\n constructor(props: DateInputProps) {\n super(props);\n\n this.state = {\n valueFormatted: '',\n selected: null,\n inputMode: false,\n focused: false,\n dragged: false,\n };\n }\n\n public componentDidUpdate(prevProps: DateInputProps) {\n const { value, minDate, maxDate } = this.getProps();\n if (\n prevProps.value !== value ||\n prevProps.minDate !== minDate ||\n prevProps.maxDate !== maxDate ||\n this.iDateMediator.isChangedLocale(this.locale)\n ) {\n this.updateFromProps(false);\n }\n this.selectNode();\n }\n\n public selectNode = () => {\n const type = this.state.selected;\n const dateFragmentsView = this.dateFragmentsView && this.dateFragmentsView.getRootNode();\n if (type === null || !this.inputLikeText || !dateFragmentsView) {\n return;\n }\n if (type === InternalDateComponentType.All) {\n this.inputLikeText.selectInnerNode(dateFragmentsView, 0, 5);\n return;\n }\n const index = this.iDateMediator.getTypesOrder().indexOf(type);\n if (index > -1) {\n this.inputLikeText.selectInnerNode(dateFragmentsView, index * 2, index * 2 + 1);\n }\n };\n\n public componentDidMount(): void {\n this.updateFromProps(false);\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public blur() {\n if (this.inputLikeText) {\n this.inputLikeText.blur();\n }\n }\n\n public focus() {\n if (this.inputLikeText) {\n this.inputLikeText.focus();\n }\n }\n\n public blink() {\n if (this.inputLikeText) {\n this.inputLikeText.blink();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { focused, selected, inputMode, valueFormatted } = this.state;\n const showValue = Boolean(focused || valueFormatted);\n const { width, size } = this.getProps();\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>\n <InputLikeText\n width={width}\n ref={this.inputLikeTextRef}\n size={size}\n disabled={this.props.disabled}\n error={this.props.error}\n warning={this.props.warning}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onClick={this.props.onClick}\n onKeyDown={this.handleKeyDown}\n onMouseDownCapture={this.handleMouseDownCapture}\n onPaste={this.handlePaste}\n rightIcon={this.renderIcon()}\n onDoubleClickCapture={this.handleDoubleClick}\n onMouseDragStart={this.handleMouseDragStart}\n onMouseDragEnd={this.handleMouseDragEnd}\n value={this.iDateMediator.getInternalString()}\n inputMode={'numeric'}\n takeContentWidth\n >\n <span className={cx(styles.value(), { [styles.valueVisible()]: showValue })}>\n <DateFragmentsView\n ref={this.dateFragmentsViewRef}\n fragments={this.iDateMediator.getFragments()}\n onSelectDateComponent={this.handleSelectDateComponent}\n selected={selected}\n inputMode={inputMode}\n />\n </span>\n </InputLikeText>\n </FocusControlWrapper>\n </CommonWrapper>\n );\n }\n\n private renderIcon = () => {\n const { withIcon, disabled = false } = this.props;\n const size = this.getProps().size;\n\n if (withIcon) {\n const theme = this.theme;\n const icon = isTheme2022(theme) ? <CalendarIcon2022 size={size} /> : <CalendarIcon />;\n const iconStyles = cx({\n [styles.icon(theme)]: true,\n [styles.iconSmall(theme)]: size === 'small',\n [styles.iconMedium(theme)]: size === 'medium',\n [styles.iconLarge(theme)]: size === 'large',\n [styles.iconDisabled(theme)]: disabled,\n });\n return (\n <span className={iconStyles} data-tid={DateInputDataTids.icon}>\n {icon}\n </span>\n );\n }\n return null;\n };\n\n private handleFocus = (e: React.FocusEvent<HTMLElement>) => {\n this.setState((prevState) => ({\n focused: true,\n selected: this.isMouseDown && !prevState.focused ? prevState.selected : this.iDateMediator.getLeftmostType(),\n }));\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n };\n\n private resetFocus = () => this.updateValue({ focused: false, selected: null, inputMode: false });\n\n private handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n this.resetFocus();\n\n if (this.props.onBlur) {\n const restored = this.iDateMediator.restore();\n if (restored) {\n e.persist();\n this.blurEvent = e;\n } else {\n this.props.onBlur(e);\n }\n }\n };\n\n private handleMouseDownCapture = (e: React.MouseEvent<HTMLSpanElement>) => {\n const isFragment = this.dateFragmentsView ? this.dateFragmentsView.isFragment(e.target) : false;\n if (this.state.focused && !isFragment) {\n e.preventDefault();\n }\n this.isMouseFocus = !this.state.focused;\n this.isMouseDown = isFragment;\n };\n\n private handleSelectDateComponent = (type: InternalDateComponentType) => {\n if (!(this.isMouseFocus && this.iDateMediator.isEmpty())) {\n this.selectDateComponent(type);\n }\n this.isMouseFocus = false;\n this.isMouseDown = false;\n };\n\n private handleMouseDragStart = () => {\n this.setState({ dragged: true, selected: null });\n };\n\n private handleMouseDragEnd = () => {\n const selection = globalObject.getSelection?.();\n if (\n selection &&\n selection.toString().length === LENGTH_FULLDATE &&\n this.state.selected !== InternalDateComponentType.All\n ) {\n this.selectDateComponent(InternalDateComponentType.All);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.conditionalHandler(extractAction(e), e)) {\n e.preventDefault();\n }\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n private handlePaste = (e: React.ClipboardEvent<HTMLElement>) => {\n const pasted = e && e.clipboardData.getData('text').trim();\n if (pasted && this.iDateMediator.validateString(pasted)) {\n this.iDateMediator.paste(pasted);\n this.updateValue();\n }\n };\n\n private handleDoubleClick = () => {\n this.selectDateComponent(InternalDateComponentType.All);\n };\n\n private inputLikeTextRef = (el: InputLikeText | null) => {\n this.inputLikeText = el;\n };\n\n private dateFragmentsViewRef = (el: DateFragmentsView | null) => {\n this.dateFragmentsView = el;\n };\n\n private selectDateComponent = (selected: InternalDateComponentType | null): void => {\n this.setState({ selected, inputMode: false });\n };\n\n private updateValue = (state: Partial<DateInputState> = {}, sync = true): void => {\n const valueFormatted = this.iDateMediator.getString();\n\n const update = () => this.setState({ ...state, valueFormatted } as DateInputState, this.emitChange);\n\n if (sync && React.version.search('18') === 0) {\n ReactDOM.flushSync(update);\n } else {\n update();\n }\n };\n\n private updateFromProps = (sync: boolean): void => {\n this.iDateMediator.update(this.props, this.locale);\n\n this.updateValue({}, sync);\n };\n\n private fullSelection = (): void => {\n this.selectDateComponent(InternalDateComponentType.All);\n };\n\n private pressDelimiter = (): void => {\n const value = this.iDateMediator.get(this.state.selected);\n if (value !== null && value !== '') {\n if (!this.ignoringDelimiter) {\n this.shiftSelection(1);\n }\n this.ignoringDelimiter = false;\n }\n };\n\n private emitChange = (): void => {\n const value = this.iDateMediator.getInternalString();\n if (this.props.value === value) {\n return;\n }\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n if (this.blurEvent && this.props.onBlur) {\n this.props.onBlur(this.blurEvent);\n this.blurEvent = null;\n }\n };\n\n private clearSelected = (): void => {\n const selected = this.state.selected === null ? this.iDateMediator.getLeftmostType() : this.state.selected;\n this.iDateMediator.clear(selected);\n this.updateValue({\n inputMode: false,\n selected: selected === InternalDateComponentType.All ? this.iDateMediator.getLeftmostType() : selected,\n });\n };\n\n private clearOneChar = (): void => {\n const { selected, inputMode } = this.state;\n const nextType = selected === null ? this.iDateMediator.getRightmostType() : selected;\n if (this.iDateMediator.isNull(nextType)) {\n this.shiftSelection(-1);\n return;\n }\n if (selected === InternalDateComponentType.All) {\n this.iDateMediator.clear(InternalDateComponentType.All);\n this.updateValue({ selected: this.iDateMediator.getLeftmostType() });\n return;\n }\n this.iDateMediator.deleteOneCharRight(nextType, inputMode);\n this.updateValue({\n inputMode: this.iDateMediator.get(nextType) !== null,\n selected: nextType,\n });\n };\n\n private shiftDateComponent = (step: number): void => {\n const { selected } = this.state;\n const changed = this.iDateMediator.shiftDateComponent(selected, step);\n if (!changed) {\n this.blink();\n return;\n }\n this.updateValue({\n inputMode: false,\n selected: selected === InternalDateComponentType.All ? this.iDateMediator.getLeftmostType() : selected,\n });\n };\n\n private shiftSelection = (step: number): void => {\n const selected = this.iDateMediator.getShiftedType(this.state.selected, step);\n if (selected !== this.state.selected) {\n this.setState({ selected, inputMode: false });\n }\n };\n\n private inputValue = (event: React.KeyboardEvent<HTMLElement>): void => {\n let selected = this.state.selected;\n if (selected === InternalDateComponentType.All) {\n selected = this.iDateMediator.getLeftmostType();\n this.iDateMediator.clear(InternalDateComponentType.All);\n this.setState({ selected });\n }\n const { inputMode, changed } = this.iDateMediator.inputKey(event.key, selected, this.state.inputMode);\n if (!changed) {\n this.blink();\n return;\n }\n\n if (!inputMode) {\n this.ignoringDelimiter = true;\n this.shiftSelection(1);\n }\n this.updateValue({ inputMode });\n };\n}\n"]}
1
+ {"version":3,"sources":["DateInput.tsx"],"names":["DateInputDataTids","icon","DateInput","DatePickerLocaleHelper","rootNode","props","getProps","defaultProps","iDateMediator","InternalDateMediator","inputLikeText","dateFragmentsView","isMouseDown","isMouseFocus","ignoringDelimiter","blurEvent","conditionalHandler","ConditionalHandler","add","Actions","MoveSelectionLeft","shiftSelection","MoveSelectionRight","Separator","pressDelimiter","MoveSelectionFirst","selectDateComponent","getLeftmostType","MoveSelectionLast","getRightmostType","Increment","shiftDateComponent","Decrement","Digit","e","inputValue","ClearSelection","clearSelected","ClearOneChar","clearOneChar","FullSelection","fullSelection","WrongInput","blink","build","selectNode","type","state","selected","getRootNode","InternalDateComponentType","All","selectInnerNode","index","getTypesOrder","indexOf","renderIcon","withIcon","disabled","size","theme","iconStyles","styles","iconSmall","iconMedium","iconLarge","iconDisabled","handleFocus","setState","prevState","focused","onFocus","resetFocus","updateValue","inputMode","handleBlur","onBlur","restored","restore","persist","handleMouseDownCapture","isFragment","target","preventDefault","handleSelectDateComponent","isEmpty","handleMouseDragStart","dragged","handleMouseDragEnd","selection","globalObject","getSelection","toString","length","LENGTH_FULLDATE","handleKeyDown","onKeyDown","handlePaste","pasted","clipboardData","getData","trim","validateString","paste","handleDoubleClick","inputLikeTextRef","el","dateFragmentsViewRef","sync","valueFormatted","getString","update","emitChange","React","version","search","ReactDOM","flushSync","updateFromProps","locale","value","get","getInternalString","onValueChange","clear","nextType","isNull","deleteOneCharRight","step","changed","getShiftedType","event","inputKey","key","componentDidUpdate","prevProps","minDate","maxDate","isChangedLocale","componentDidMount","autoFocus","focus","blur","render","renderMain","showValue","Boolean","width","setRootNode","id","error","warning","onClick","valueVisible","getFragments","Component","__KONTUR_REACT_UI__","displayName","MIN_FULLDATE","MAX_FULLDATE"],"mappings":"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","sourcesContent":["import React, { HTMLAttributes } from 'react';\nimport ReactDOM from 'react-dom';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { ConditionalHandler } from '../../lib/ConditionalHandler';\nimport { LENGTH_FULLDATE, MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateComponentType } from '../../lib/date/types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { DatePickerLocale, DatePickerLocaleHelper } from '../DatePicker/locale';\nimport { InputLikeText } from '../../internal/InputLikeText';\nimport { locale } from '../../lib/locale/decorators';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CalendarIcon } from '../../internal/icons/16px';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { SizeProp } from '../../lib/types/props';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { CalendarIcon as CalendarIcon2022 } from './CalendarIcon';\nimport { DateFragmentsView } from './DateFragmentsView';\nimport { styles } from './DateInput.styles';\nimport { Actions, extractAction } from './helpers/DateInputKeyboardActions';\nimport { InternalDateMediator } from './helpers/InternalDateMediator';\n\nexport interface DateInputState {\n selected: InternalDateComponentType | null;\n valueFormatted: string;\n inputMode: boolean;\n focused: boolean;\n dragged: boolean;\n}\n\nexport const DateInputDataTids = {\n icon: 'DateInput__icon',\n} as const;\n\nexport interface DateInputProps extends CommonProps, Pick<HTMLAttributes<HTMLElement>, 'id'> {\n autoFocus?: boolean;\n value?: string;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n disabled?: boolean;\n /**\n * Минимальная дата.\n * @default '01.01.1900'\n */\n minDate?: string;\n /**\n * Максимальная дата\n * @default '31.12.2099'\n */\n maxDate?: string;\n /**\n * Ширина поля\n * @default 125\n */\n width?: string | number;\n withIcon?: boolean;\n /**\n * Размер поля\n * @default 'small'\n */\n size?: SizeProp;\n onBlur?: (x0: React.FocusEvent<HTMLElement>) => void;\n onClick?: (x0: React.MouseEvent<HTMLElement>) => void;\n onFocus?: (x0: React.FocusEvent<HTMLElement>) => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange?: (value: string) => void;\n onKeyDown?: (x0: React.KeyboardEvent<HTMLElement>) => void;\n}\n\ntype DefaultProps = Required<Pick<DateInputProps, 'value' | 'minDate' | 'maxDate' | 'size' | 'width'>>;\n\n@rootNode\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DateInput extends React.Component<DateInputProps, DateInputState> {\n public static __KONTUR_REACT_UI__ = 'DateInput';\n public static displayName = 'DateInput';\n\n public static defaultProps: DefaultProps = {\n value: '',\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n size: 'small',\n width: 125,\n };\n\n private getProps = createPropsGetter(DateInput.defaultProps);\n\n private iDateMediator: InternalDateMediator = new InternalDateMediator();\n private inputLikeText: InputLikeText | null = null;\n private dateFragmentsView: DateFragmentsView | null = null;\n private isMouseDown = false;\n private isMouseFocus = false;\n private ignoringDelimiter = false;\n private locale!: DatePickerLocale;\n private blurEvent: React.FocusEvent<HTMLElement> | null = null;\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n private conditionalHandler = new ConditionalHandler<Actions, [React.KeyboardEvent<HTMLElement>]>()\n .add(Actions.MoveSelectionLeft, () => this.shiftSelection(-1))\n .add(Actions.MoveSelectionRight, () => this.shiftSelection(1))\n .add(Actions.Separator, () => this.pressDelimiter())\n .add(Actions.MoveSelectionFirst, () => this.selectDateComponent(this.iDateMediator.getLeftmostType()))\n .add(Actions.MoveSelectionLast, () => this.selectDateComponent(this.iDateMediator.getRightmostType()))\n .add(Actions.Increment, () => this.shiftDateComponent(1))\n .add(Actions.Decrement, () => this.shiftDateComponent(-1))\n .add(Actions.Digit, (e) => this.inputValue(e))\n .add(Actions.ClearSelection, () => this.clearSelected())\n .add(Actions.ClearOneChar, () => this.clearOneChar())\n .add(Actions.FullSelection, () => this.fullSelection())\n .add(Actions.WrongInput, () => this.blink())\n .build();\n\n constructor(props: DateInputProps) {\n super(props);\n\n this.state = {\n valueFormatted: '',\n selected: null,\n inputMode: false,\n focused: false,\n dragged: false,\n };\n }\n\n public componentDidUpdate(prevProps: DateInputProps) {\n const { value, minDate, maxDate } = this.getProps();\n if (\n prevProps.value !== value ||\n prevProps.minDate !== minDate ||\n prevProps.maxDate !== maxDate ||\n this.iDateMediator.isChangedLocale(this.locale)\n ) {\n this.updateFromProps(false);\n }\n this.selectNode();\n }\n\n public selectNode = () => {\n const type = this.state.selected;\n const dateFragmentsView = this.dateFragmentsView && this.dateFragmentsView.getRootNode();\n if (type === null || !this.inputLikeText || !dateFragmentsView) {\n return;\n }\n if (type === InternalDateComponentType.All) {\n this.inputLikeText.selectInnerNode(dateFragmentsView, 0, 5);\n return;\n }\n const index = this.iDateMediator.getTypesOrder().indexOf(type);\n if (index > -1) {\n this.inputLikeText.selectInnerNode(dateFragmentsView, index * 2, index * 2 + 1);\n }\n };\n\n public componentDidMount(): void {\n this.updateFromProps(false);\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public blur() {\n if (this.inputLikeText) {\n this.inputLikeText.blur();\n }\n }\n\n public focus() {\n if (this.inputLikeText) {\n this.inputLikeText.focus();\n }\n }\n\n public blink() {\n if (this.inputLikeText) {\n this.inputLikeText.blink();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { focused, selected, inputMode, valueFormatted } = this.state;\n const showValue = Boolean(focused || valueFormatted);\n const { width, size } = this.getProps();\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>\n <InputLikeText\n id={this.props.id}\n width={width}\n ref={this.inputLikeTextRef}\n size={size}\n disabled={this.props.disabled}\n error={this.props.error}\n warning={this.props.warning}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onClick={this.props.onClick}\n onKeyDown={this.handleKeyDown}\n onMouseDownCapture={this.handleMouseDownCapture}\n onPaste={this.handlePaste}\n rightIcon={this.renderIcon()}\n onDoubleClickCapture={this.handleDoubleClick}\n onMouseDragStart={this.handleMouseDragStart}\n onMouseDragEnd={this.handleMouseDragEnd}\n value={this.iDateMediator.getInternalString()}\n inputMode={'numeric'}\n takeContentWidth\n >\n <span className={cx(styles.value(), { [styles.valueVisible()]: showValue })}>\n <DateFragmentsView\n ref={this.dateFragmentsViewRef}\n fragments={this.iDateMediator.getFragments()}\n onSelectDateComponent={this.handleSelectDateComponent}\n selected={selected}\n inputMode={inputMode}\n />\n </span>\n </InputLikeText>\n </FocusControlWrapper>\n </CommonWrapper>\n );\n }\n\n private renderIcon = () => {\n const { withIcon, disabled = false } = this.props;\n const size = this.getProps().size;\n\n if (withIcon) {\n const theme = this.theme;\n const icon = isTheme2022(theme) ? <CalendarIcon2022 size={size} /> : <CalendarIcon />;\n const iconStyles = cx({\n [styles.icon(theme)]: true,\n [styles.iconSmall(theme)]: size === 'small',\n [styles.iconMedium(theme)]: size === 'medium',\n [styles.iconLarge(theme)]: size === 'large',\n [styles.iconDisabled(theme)]: disabled,\n });\n return (\n <span className={iconStyles} data-tid={DateInputDataTids.icon}>\n {icon}\n </span>\n );\n }\n return null;\n };\n\n private handleFocus = (e: React.FocusEvent<HTMLElement>) => {\n this.setState((prevState) => ({\n focused: true,\n selected: this.isMouseDown && !prevState.focused ? prevState.selected : this.iDateMediator.getLeftmostType(),\n }));\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n };\n\n private resetFocus = () => this.updateValue({ focused: false, selected: null, inputMode: false });\n\n private handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n this.resetFocus();\n\n if (this.props.onBlur) {\n const restored = this.iDateMediator.restore();\n if (restored) {\n e.persist();\n this.blurEvent = e;\n } else {\n this.props.onBlur(e);\n }\n }\n };\n\n private handleMouseDownCapture = (e: React.MouseEvent<HTMLSpanElement>) => {\n const isFragment = this.dateFragmentsView ? this.dateFragmentsView.isFragment(e.target) : false;\n if (this.state.focused && !isFragment) {\n e.preventDefault();\n }\n this.isMouseFocus = !this.state.focused;\n this.isMouseDown = isFragment;\n };\n\n private handleSelectDateComponent = (type: InternalDateComponentType) => {\n if (!(this.isMouseFocus && this.iDateMediator.isEmpty())) {\n this.selectDateComponent(type);\n }\n this.isMouseFocus = false;\n this.isMouseDown = false;\n };\n\n private handleMouseDragStart = () => {\n this.setState({ dragged: true, selected: null });\n };\n\n private handleMouseDragEnd = () => {\n const selection = globalObject.getSelection?.();\n if (\n selection &&\n selection.toString().length === LENGTH_FULLDATE &&\n this.state.selected !== InternalDateComponentType.All\n ) {\n this.selectDateComponent(InternalDateComponentType.All);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.conditionalHandler(extractAction(e), e)) {\n e.preventDefault();\n }\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n private handlePaste = (e: React.ClipboardEvent<HTMLElement>) => {\n const pasted = e && e.clipboardData.getData('text').trim();\n if (pasted && this.iDateMediator.validateString(pasted)) {\n this.iDateMediator.paste(pasted);\n this.updateValue();\n }\n };\n\n private handleDoubleClick = () => {\n this.selectDateComponent(InternalDateComponentType.All);\n };\n\n private inputLikeTextRef = (el: InputLikeText | null) => {\n this.inputLikeText = el;\n };\n\n private dateFragmentsViewRef = (el: DateFragmentsView | null) => {\n this.dateFragmentsView = el;\n };\n\n private selectDateComponent = (selected: InternalDateComponentType | null): void => {\n this.setState({ selected, inputMode: false });\n };\n\n private updateValue = (state: Partial<DateInputState> = {}, sync = true): void => {\n const valueFormatted = this.iDateMediator.getString();\n\n const update = () => this.setState({ ...state, valueFormatted } as DateInputState, this.emitChange);\n\n if (sync && React.version.search('18') === 0) {\n ReactDOM.flushSync(update);\n } else {\n update();\n }\n };\n\n private updateFromProps = (sync: boolean): void => {\n this.iDateMediator.update(this.props, this.locale);\n\n this.updateValue({}, sync);\n };\n\n private fullSelection = (): void => {\n this.selectDateComponent(InternalDateComponentType.All);\n };\n\n private pressDelimiter = (): void => {\n const value = this.iDateMediator.get(this.state.selected);\n if (value !== null && value !== '') {\n if (!this.ignoringDelimiter) {\n this.shiftSelection(1);\n }\n this.ignoringDelimiter = false;\n }\n };\n\n private emitChange = (): void => {\n const value = this.iDateMediator.getInternalString();\n if (this.props.value === value) {\n return;\n }\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n if (this.blurEvent && this.props.onBlur) {\n this.props.onBlur(this.blurEvent);\n this.blurEvent = null;\n }\n };\n\n private clearSelected = (): void => {\n const selected = this.state.selected === null ? this.iDateMediator.getLeftmostType() : this.state.selected;\n this.iDateMediator.clear(selected);\n this.updateValue({\n inputMode: false,\n selected: selected === InternalDateComponentType.All ? this.iDateMediator.getLeftmostType() : selected,\n });\n };\n\n private clearOneChar = (): void => {\n const { selected, inputMode } = this.state;\n const nextType = selected === null ? this.iDateMediator.getRightmostType() : selected;\n if (this.iDateMediator.isNull(nextType)) {\n this.shiftSelection(-1);\n return;\n }\n if (selected === InternalDateComponentType.All) {\n this.iDateMediator.clear(InternalDateComponentType.All);\n this.updateValue({ selected: this.iDateMediator.getLeftmostType() });\n return;\n }\n this.iDateMediator.deleteOneCharRight(nextType, inputMode);\n this.updateValue({\n inputMode: this.iDateMediator.get(nextType) !== null,\n selected: nextType,\n });\n };\n\n private shiftDateComponent = (step: number): void => {\n const { selected } = this.state;\n const changed = this.iDateMediator.shiftDateComponent(selected, step);\n if (!changed) {\n this.blink();\n return;\n }\n this.updateValue({\n inputMode: false,\n selected: selected === InternalDateComponentType.All ? this.iDateMediator.getLeftmostType() : selected,\n });\n };\n\n private shiftSelection = (step: number): void => {\n const selected = this.iDateMediator.getShiftedType(this.state.selected, step);\n if (selected !== this.state.selected) {\n this.setState({ selected, inputMode: false });\n }\n };\n\n private inputValue = (event: React.KeyboardEvent<HTMLElement>): void => {\n let selected = this.state.selected;\n if (selected === InternalDateComponentType.All) {\n selected = this.iDateMediator.getLeftmostType();\n this.iDateMediator.clear(InternalDateComponentType.All);\n this.setState({ selected });\n }\n const { inputMode, changed } = this.iDateMediator.inputKey(event.key, selected, this.state.inputMode);\n if (!changed) {\n this.blink();\n return;\n }\n\n if (!inputMode) {\n this.ignoringDelimiter = true;\n this.shiftSelection(1);\n }\n this.updateValue({ inputMode });\n };\n}\n"]}
@@ -1,12 +1,12 @@
1
1
  import PropTypes from 'prop-types';
2
- import React from 'react';
2
+ import React, { HTMLAttributes } from 'react';
3
3
  import { Nullable } from '../../typings/utility-types';
4
4
  import { DropdownContainerProps } from '../../internal/DropdownContainer';
5
5
  import { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';
6
6
  import { CalendarDateShape, CalendarProps } from '../Calendar';
7
7
  import { SizeProp } from '../../lib/types/props';
8
8
  export declare const MIN_WIDTH = 120;
9
- export interface DatePickerProps extends Pick<DropdownContainerProps, 'menuPos'>, Pick<CalendarProps, 'isHoliday' | 'minDate' | 'maxDate' | 'renderDay' | 'onMonthChange'>, CommonProps {
9
+ export interface DatePickerProps extends Pick<DropdownContainerProps, 'menuPos'>, Pick<HTMLAttributes<HTMLElement>, 'id'>, Pick<CalendarProps, 'isHoliday' | 'minDate' | 'maxDate' | 'renderDay' | 'onMonthChange'>, CommonProps {
10
10
  autoFocus?: boolean;
11
11
  disabled?: boolean;
12
12
  /**
@@ -90,6 +90,7 @@ var MIN_WIDTH = 120;exports.MIN_WIDTH = MIN_WIDTH;
90
90
 
91
91
 
92
92
 
93
+
93
94
 
94
95
 
95
96
  var DatePickerDataTids = {
@@ -348,7 +349,8 @@ DatePicker = (_dec = (0, _decorators.locale)('DatePicker', _locale2.DatePickerLo
348
349
  onMouseOver: _this.props.onMouseOver,
349
350
  "data-tid": DatePickerDataTids.label }, /*#__PURE__*/
350
351
 
351
- _react.default.createElement(_DateInput.DateInput, (0, _extends2.default)({},
352
+ _react.default.createElement(_DateInput.DateInput, (0, _extends2.default)({
353
+ id: _this.props.id },
352
354
  (0, _filterProps.filterProps)(props, INPUT_PASS_PROPS), {
353
355
  ref: _this.getInputRef,
354
356
  value: _this.props.value || '',
@@ -1 +1 @@
1
- {"version":3,"sources":["DatePicker.tsx"],"names":["INPUT_PASS_PROPS","autoFocus","disabled","warning","error","size","onKeyDown","MIN_WIDTH","DatePickerDataTids","root","input","label","pickerRoot","pickerTodayWrapper","DatePicker","DatePickerLocaleHelper","responsiveLayout","rootNode","getProps","defaultProps","calendar","state","opened","canUseMobileNativeDatePicker","today","focused","renderMain","props","picker","minDate","maxDate","isMobile","isMobileLayout","value","parseValueToDate","onValueChange","enableTodayLink","isHoliday","handleBlur","renderDay","onMonthChange","locale","Calendar","months","dayCellChooseDateAriaLabel","selectMonthAriaLabel","selectYearAriaLabel","selectChosenAriaLabel","menuPos","getParent","parseInt","theme","datePickerMenuOffsetY","menuAlign","styles","calendarWrapper","e","preventDefault","c","handleValueChange","renderTodayLink","getRootStyle","onMouseEnter","onMouseLeave","onMouseOver","getInputRef","undefined","handleFocus","handleSelectToday","handleSelect","month","year","scrollToMonth","width","minWidth","ref","setState","onFocus","close","onBlur","blur","componentDidMount","useMobileNativeDatePicker","focus","componentDidUpdate","render","ThemeFactory","create","calendarBottomSeparatorBorder","setRootNode","date","InternalDate","validate","checks","InternalDateValidateCheck","NotNull","Native","toString","withPad","order","separator","setComponents","InternalDateGetter","getTodayComponents","withSeparator","margin","todayAriaLabel","todayLinkWrapper","React","PureComponent","__KONTUR_REACT_UI__","displayName","propTypes","PropTypes","bool","string","isRequired","oneOf","oneOfType","number","func","MIN_FULLDATE","MAX_FULLDATE","range","internalDate","InternalDateOrder","DMY","InternalDateSeparator","Dot","setRangeStart","setRangeEnd","parseValue","Number","Limits","Range"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { LocaleContext } from '../../lib/locale';\nimport { locale } from '../../lib/locale/decorators';\nimport { InternalDateGetter } from '../../lib/date/InternalDateGetter';\nimport { ArrowAUpIcon16Light } from '../../internal/icons2022/ArrowAUpIcon/ArrowAUp16Light';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { cx } from '../../lib/theming/Emotion';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateOrder, InternalDateSeparator, InternalDateValidateCheck } from '../../lib/date/types';\nimport { Nullable } from '../../typings/utility-types';\nimport { DateInput } from '../DateInput';\nimport { DropdownContainer, DropdownContainerProps } from '../../internal/DropdownContainer';\nimport { filterProps } from '../../lib/filterProps';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { isMobile } from '../../lib/client';\nimport { NativeDateInput } from '../../internal/NativeDateInput';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isNonNullable } from '../../lib/utils';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Calendar, CalendarDateShape, CalendarProps } from '../Calendar';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { Button } from '../Button';\nimport { getTodayDate } from '../Calendar/CalendarUtils';\nimport { SizeProp } from '../../lib/types/props';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\n\nimport { styles } from './DatePicker.styles';\nimport { DatePickerLocale, DatePickerLocaleHelper } from './locale';\nimport { MobilePicker } from './MobilePicker';\n\nconst INPUT_PASS_PROPS = {\n autoFocus: true,\n disabled: true,\n warning: true,\n error: true,\n size: true,\n onKeyDown: true,\n};\n\nexport const MIN_WIDTH = 120;\n\nexport interface DatePickerProps\n extends Pick<DropdownContainerProps, 'menuPos'>,\n Pick<CalendarProps, 'isHoliday' | 'minDate' | 'maxDate' | 'renderDay' | 'onMonthChange'>,\n CommonProps {\n autoFocus?: boolean;\n disabled?: boolean;\n /**\n * Отвечает за отображение кнопки \"Сегодня\".\n */\n enableTodayLink?: boolean;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n menuAlign?: 'left' | 'right';\n size?: SizeProp;\n value?: string | null;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: number | string;\n onBlur?: () => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange: (value: string) => void;\n onFocus?: () => void;\n onKeyDown?: (e: React.KeyboardEvent<any>) => void;\n onMouseEnter?: (e: React.MouseEvent<any>) => void;\n onMouseLeave?: (e: React.MouseEvent<any>) => void;\n onMouseOver?: (e: React.MouseEvent<any>) => void;\n /**\n * Использовать на мобильных устройствах нативный календарь для выбора дат.\n *\n * - На iOS нативный календарь не умеет работать с minDate и maxDate\n */\n useMobileNativeDatePicker?: boolean;\n}\n\nexport interface DatePickerState {\n opened: boolean;\n canUseMobileNativeDatePicker: boolean;\n today: CalendarDateShape;\n}\n\nexport const DatePickerDataTids = {\n root: 'DatePicker__root',\n input: 'DatePicker__input',\n label: 'DatePicker__label',\n pickerRoot: 'Picker__root',\n pickerTodayWrapper: 'Picker__todayWrapper',\n} as const;\n\ntype DefaultProps = Required<Pick<DatePickerProps, 'minDate' | 'maxDate'>>;\n\n@responsiveLayout\n@rootNode\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DatePicker extends React.PureComponent<DatePickerProps, DatePickerState> {\n public static __KONTUR_REACT_UI__ = 'DatePicker';\n public static displayName = 'DatePicker';\n\n public static propTypes = {\n autoFocus: PropTypes.bool,\n\n disabled: PropTypes.bool,\n\n /**\n * Включает кнопку сегодня в календаре\n */\n enableTodayLink: PropTypes.bool,\n\n error: PropTypes.bool,\n\n /**\n * Максимальная дата в календаре.\n */\n maxDate: PropTypes.string.isRequired,\n\n menuAlign: PropTypes.oneOf(['left', 'right']),\n\n /**\n * Минимальная дата в календаре.\n */\n minDate: PropTypes.string.isRequired,\n\n /**\n * Строка формата `dd.mm.yyyy`\n */\n value: PropTypes.string,\n\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n onBlur: PropTypes.func,\n\n onValueChange: PropTypes.func.isRequired,\n\n onFocus: PropTypes.func,\n\n onKeyDown: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n isHoliday: PropTypes.func,\n\n renderDay: PropTypes.func,\n\n onMonthChange: PropTypes.func,\n };\n\n public static defaultProps: DefaultProps = {\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n };\n\n private getProps = createPropsGetter(DatePicker.defaultProps);\n private theme!: Theme;\n private calendar: Calendar | null = null;\n private readonly locale!: DatePickerLocale;\n\n public static validate = (value: Nullable<string>, range: { minDate?: string; maxDate?: string } = {}) => {\n if (!value) {\n return false;\n }\n\n const { minDate = MIN_FULLDATE, maxDate = MAX_FULLDATE } = range;\n const internalDate = new InternalDate({\n order: InternalDateOrder.DMY,\n separator: InternalDateSeparator.Dot,\n })\n .setRangeStart(new InternalDate({ value: minDate }))\n .setRangeEnd(new InternalDate({ value: maxDate }))\n .parseValue(value);\n\n return internalDate.validate({\n checks: [\n InternalDateValidateCheck.NotNull,\n InternalDateValidateCheck.Number,\n InternalDateValidateCheck.Native,\n InternalDateValidateCheck.Limits,\n InternalDateValidateCheck.Range,\n ],\n });\n };\n\n public state: DatePickerState = { opened: false, canUseMobileNativeDatePicker: false, today: getTodayDate() };\n\n private input: DateInput | null = null;\n private focused = false;\n private setRootNode!: TSetRootNode;\n private isMobileLayout!: boolean;\n\n public componentDidMount() {\n if (this.props.useMobileNativeDatePicker && isMobile) {\n this.setState({\n canUseMobileNativeDatePicker: true,\n });\n }\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate() {\n const { disabled } = this.props;\n const { opened } = this.state;\n if (disabled && opened) {\n this.close();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.input) {\n this.input.blur();\n }\n this.handleBlur();\n }\n\n /**\n * @public\n */\n public focus() {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.focus();\n }\n this.handleFocus();\n }\n\n /**\n * Закрывает выпадашку выбора дня\n * @public\n */\n public close() {\n this.setState({ opened: false });\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ calendarBottomSeparatorBorder: 'none' }, theme)}>\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<DatePickerProps>) => {\n let picker = null;\n\n const { minDate, maxDate } = this.getProps();\n\n const isMobile = this.isMobileLayout;\n\n if (this.state.opened) {\n if (isMobile) {\n picker = (\n <MobilePicker\n value={this.props.value}\n minDate={this.parseValueToDate(minDate)}\n maxDate={this.parseValueToDate(maxDate)}\n onValueChange={this.props.onValueChange}\n enableTodayLink={this.props.enableTodayLink}\n isHoliday={this.props.isHoliday}\n onCloseRequest={this.handleBlur}\n renderDay={props.renderDay}\n onMonthChange={props.onMonthChange}\n />\n );\n } else {\n picker = (\n <LocaleContext.Provider\n value={{\n locale: {\n Calendar: {\n months: this.locale.months,\n dayCellChooseDateAriaLabel: this.locale.dayCellChooseDateAriaLabel,\n selectMonthAriaLabel: this.locale.selectMonthAriaLabel,\n selectYearAriaLabel: this.locale.selectYearAriaLabel,\n selectChosenAriaLabel: this.locale.selectChosenAriaLabel,\n },\n },\n }}\n >\n <DropdownContainer\n menuPos={this.props.menuPos}\n data-tid={DatePickerDataTids.root}\n getParent={this.getParent}\n offsetY={parseInt(this.theme.datePickerMenuOffsetY)}\n align={this.props.menuAlign}\n >\n <div\n data-tid={DatePickerDataTids.pickerRoot}\n className={styles.calendarWrapper(this.theme)}\n onMouseDown={(e) => e.preventDefault()}\n >\n <Calendar\n ref={(c) => (this.calendar = c)}\n maxDate={this.parseValueToDate(maxDate)}\n minDate={this.parseValueToDate(minDate)}\n onValueChange={this.handleValueChange}\n isHoliday={this.props.isHoliday}\n value={this.parseValueToDate(this.props.value)}\n renderDay={this.props.renderDay}\n onMonthChange={this.props.onMonthChange}\n />\n {this.props.enableTodayLink && this.renderTodayLink()}{' '}\n </div>\n </DropdownContainer>\n </LocaleContext.Provider>\n );\n }\n }\n return (\n <label\n className={styles.root()}\n style={this.getRootStyle()}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n data-tid={DatePickerDataTids.label}\n >\n <DateInput\n {...filterProps(props, INPUT_PASS_PROPS)}\n ref={this.getInputRef}\n value={this.props.value || ''}\n width=\"100%\"\n withIcon\n minDate={minDate}\n maxDate={maxDate}\n onBlur={isMobile ? undefined : this.handleBlur}\n onFocus={this.handleFocus}\n onValueChange={this.props.onValueChange}\n data-tid={DatePickerDataTids.input}\n />\n {this.state.canUseMobileNativeDatePicker ? (\n <NativeDateInput\n onValueChange={this.props.onValueChange}\n value={this.props.value || ''}\n minDate={minDate}\n maxDate={maxDate}\n disabled={this.props.disabled}\n />\n ) : (\n picker\n )}\n </label>\n );\n };\n private parseValueToDate(value?: Nullable<string>): string | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n const date = new InternalDate({ value });\n if (date.validate({ checks: [InternalDateValidateCheck.NotNull, InternalDateValidateCheck.Native] })) {\n return date.toString({ withPad: true });\n }\n\n return undefined;\n }\n\n private renderTodayLink() {\n const { order, separator } = this.locale;\n const today = new InternalDate({ order, separator })\n .setComponents(InternalDateGetter.getTodayComponents())\n .toString({ withPad: true, withSeparator: true });\n\n if (isTheme2022(this.theme)) {\n return (\n <div style={{ margin: 8 }}>\n <Button\n aria-label={this.locale.todayAriaLabel}\n data-tid={DatePickerDataTids.pickerTodayWrapper}\n width=\"100%\"\n onClick={this.handleSelectToday(today)}\n icon={<ArrowAUpIcon16Light />}\n >\n {this.locale.today}\n </Button>\n </div>\n );\n }\n\n return (\n <button\n aria-label={this.locale.todayAriaLabel}\n data-tid={DatePickerDataTids.pickerTodayWrapper}\n className={cx({\n [styles.todayLinkWrapper(this.theme)]: true,\n })}\n onClick={this.handleSelectToday(today)}\n tabIndex={-1}\n >\n {`${this.locale.today} ${today}`}\n </button>\n );\n }\n\n private handleSelectToday = (today: string) => () => {\n this.handleSelect(today);\n\n if (this.calendar) {\n const { month, year } = this.state.today;\n this.calendar.scrollToMonth(month, year);\n }\n };\n\n public getParent = () => {\n return getRootNode(this);\n };\n\n private getRootStyle = () => {\n const { width } = this.props;\n return isNonNullable(width) ? { width } : { minWidth: MIN_WIDTH };\n };\n\n private getInputRef = (ref: DateInput | null) => {\n this.input = ref;\n };\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n\n this.focused = true;\n\n this.setState({ opened: true });\n\n if (this.props.onFocus) {\n this.props.onFocus();\n }\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n return;\n }\n\n this.focused = false;\n this.close();\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handleValueChange = (value: string) => {\n this.handleSelect(value);\n this.blur();\n };\n\n private handleSelect = (value: string | null) => {\n if (!value) {\n return null;\n }\n\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["DatePicker.tsx"],"names":["INPUT_PASS_PROPS","autoFocus","disabled","warning","error","size","onKeyDown","MIN_WIDTH","DatePickerDataTids","root","input","label","pickerRoot","pickerTodayWrapper","DatePicker","DatePickerLocaleHelper","responsiveLayout","rootNode","getProps","defaultProps","calendar","state","opened","canUseMobileNativeDatePicker","today","focused","renderMain","props","picker","minDate","maxDate","isMobile","isMobileLayout","value","parseValueToDate","onValueChange","enableTodayLink","isHoliday","handleBlur","renderDay","onMonthChange","locale","Calendar","months","dayCellChooseDateAriaLabel","selectMonthAriaLabel","selectYearAriaLabel","selectChosenAriaLabel","menuPos","getParent","parseInt","theme","datePickerMenuOffsetY","menuAlign","styles","calendarWrapper","e","preventDefault","c","handleValueChange","renderTodayLink","getRootStyle","onMouseEnter","onMouseLeave","onMouseOver","id","getInputRef","undefined","handleFocus","handleSelectToday","handleSelect","month","year","scrollToMonth","width","minWidth","ref","setState","onFocus","close","onBlur","blur","componentDidMount","useMobileNativeDatePicker","focus","componentDidUpdate","render","ThemeFactory","create","calendarBottomSeparatorBorder","setRootNode","date","InternalDate","validate","checks","InternalDateValidateCheck","NotNull","Native","toString","withPad","order","separator","setComponents","InternalDateGetter","getTodayComponents","withSeparator","margin","todayAriaLabel","todayLinkWrapper","React","PureComponent","__KONTUR_REACT_UI__","displayName","propTypes","PropTypes","bool","string","isRequired","oneOf","oneOfType","number","func","MIN_FULLDATE","MAX_FULLDATE","range","internalDate","InternalDateOrder","DMY","InternalDateSeparator","Dot","setRangeStart","setRangeEnd","parseValue","Number","Limits","Range"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React, { HTMLAttributes } from 'react';\n\nimport { LocaleContext } from '../../lib/locale';\nimport { locale } from '../../lib/locale/decorators';\nimport { InternalDateGetter } from '../../lib/date/InternalDateGetter';\nimport { ArrowAUpIcon16Light } from '../../internal/icons2022/ArrowAUpIcon/ArrowAUp16Light';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { cx } from '../../lib/theming/Emotion';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateOrder, InternalDateSeparator, InternalDateValidateCheck } from '../../lib/date/types';\nimport { Nullable } from '../../typings/utility-types';\nimport { DateInput } from '../DateInput';\nimport { DropdownContainer, DropdownContainerProps } from '../../internal/DropdownContainer';\nimport { filterProps } from '../../lib/filterProps';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { isMobile } from '../../lib/client';\nimport { NativeDateInput } from '../../internal/NativeDateInput';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isNonNullable } from '../../lib/utils';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Calendar, CalendarDateShape, CalendarProps } from '../Calendar';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { Button } from '../Button';\nimport { getTodayDate } from '../Calendar/CalendarUtils';\nimport { SizeProp } from '../../lib/types/props';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\n\nimport { styles } from './DatePicker.styles';\nimport { DatePickerLocale, DatePickerLocaleHelper } from './locale';\nimport { MobilePicker } from './MobilePicker';\n\nconst INPUT_PASS_PROPS = {\n autoFocus: true,\n disabled: true,\n warning: true,\n error: true,\n size: true,\n onKeyDown: true,\n};\n\nexport const MIN_WIDTH = 120;\n\nexport interface DatePickerProps\n extends Pick<DropdownContainerProps, 'menuPos'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Pick<CalendarProps, 'isHoliday' | 'minDate' | 'maxDate' | 'renderDay' | 'onMonthChange'>,\n CommonProps {\n autoFocus?: boolean;\n disabled?: boolean;\n /**\n * Отвечает за отображение кнопки \"Сегодня\".\n */\n enableTodayLink?: boolean;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n menuAlign?: 'left' | 'right';\n size?: SizeProp;\n value?: string | null;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: number | string;\n onBlur?: () => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange: (value: string) => void;\n onFocus?: () => void;\n onKeyDown?: (e: React.KeyboardEvent<any>) => void;\n onMouseEnter?: (e: React.MouseEvent<any>) => void;\n onMouseLeave?: (e: React.MouseEvent<any>) => void;\n onMouseOver?: (e: React.MouseEvent<any>) => void;\n /**\n * Использовать на мобильных устройствах нативный календарь для выбора дат.\n *\n * - На iOS нативный календарь не умеет работать с minDate и maxDate\n */\n useMobileNativeDatePicker?: boolean;\n}\n\nexport interface DatePickerState {\n opened: boolean;\n canUseMobileNativeDatePicker: boolean;\n today: CalendarDateShape;\n}\n\nexport const DatePickerDataTids = {\n root: 'DatePicker__root',\n input: 'DatePicker__input',\n label: 'DatePicker__label',\n pickerRoot: 'Picker__root',\n pickerTodayWrapper: 'Picker__todayWrapper',\n} as const;\n\ntype DefaultProps = Required<Pick<DatePickerProps, 'minDate' | 'maxDate'>>;\n\n@responsiveLayout\n@rootNode\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DatePicker extends React.PureComponent<DatePickerProps, DatePickerState> {\n public static __KONTUR_REACT_UI__ = 'DatePicker';\n public static displayName = 'DatePicker';\n\n public static propTypes = {\n autoFocus: PropTypes.bool,\n\n disabled: PropTypes.bool,\n\n /**\n * Включает кнопку сегодня в календаре\n */\n enableTodayLink: PropTypes.bool,\n\n error: PropTypes.bool,\n\n /**\n * Максимальная дата в календаре.\n */\n maxDate: PropTypes.string.isRequired,\n\n menuAlign: PropTypes.oneOf(['left', 'right']),\n\n /**\n * Минимальная дата в календаре.\n */\n minDate: PropTypes.string.isRequired,\n\n /**\n * Строка формата `dd.mm.yyyy`\n */\n value: PropTypes.string,\n\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n onBlur: PropTypes.func,\n\n onValueChange: PropTypes.func.isRequired,\n\n onFocus: PropTypes.func,\n\n onKeyDown: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n isHoliday: PropTypes.func,\n\n renderDay: PropTypes.func,\n\n onMonthChange: PropTypes.func,\n };\n\n public static defaultProps: DefaultProps = {\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n };\n\n private getProps = createPropsGetter(DatePicker.defaultProps);\n private theme!: Theme;\n private calendar: Calendar | null = null;\n private readonly locale!: DatePickerLocale;\n\n public static validate = (value: Nullable<string>, range: { minDate?: string; maxDate?: string } = {}) => {\n if (!value) {\n return false;\n }\n\n const { minDate = MIN_FULLDATE, maxDate = MAX_FULLDATE } = range;\n const internalDate = new InternalDate({\n order: InternalDateOrder.DMY,\n separator: InternalDateSeparator.Dot,\n })\n .setRangeStart(new InternalDate({ value: minDate }))\n .setRangeEnd(new InternalDate({ value: maxDate }))\n .parseValue(value);\n\n return internalDate.validate({\n checks: [\n InternalDateValidateCheck.NotNull,\n InternalDateValidateCheck.Number,\n InternalDateValidateCheck.Native,\n InternalDateValidateCheck.Limits,\n InternalDateValidateCheck.Range,\n ],\n });\n };\n\n public state: DatePickerState = { opened: false, canUseMobileNativeDatePicker: false, today: getTodayDate() };\n\n private input: DateInput | null = null;\n private focused = false;\n private setRootNode!: TSetRootNode;\n private isMobileLayout!: boolean;\n\n public componentDidMount() {\n if (this.props.useMobileNativeDatePicker && isMobile) {\n this.setState({\n canUseMobileNativeDatePicker: true,\n });\n }\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate() {\n const { disabled } = this.props;\n const { opened } = this.state;\n if (disabled && opened) {\n this.close();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.input) {\n this.input.blur();\n }\n this.handleBlur();\n }\n\n /**\n * @public\n */\n public focus() {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.focus();\n }\n this.handleFocus();\n }\n\n /**\n * Закрывает выпадашку выбора дня\n * @public\n */\n public close() {\n this.setState({ opened: false });\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ calendarBottomSeparatorBorder: 'none' }, theme)}>\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<DatePickerProps>) => {\n let picker = null;\n\n const { minDate, maxDate } = this.getProps();\n\n const isMobile = this.isMobileLayout;\n\n if (this.state.opened) {\n if (isMobile) {\n picker = (\n <MobilePicker\n value={this.props.value}\n minDate={this.parseValueToDate(minDate)}\n maxDate={this.parseValueToDate(maxDate)}\n onValueChange={this.props.onValueChange}\n enableTodayLink={this.props.enableTodayLink}\n isHoliday={this.props.isHoliday}\n onCloseRequest={this.handleBlur}\n renderDay={props.renderDay}\n onMonthChange={props.onMonthChange}\n />\n );\n } else {\n picker = (\n <LocaleContext.Provider\n value={{\n locale: {\n Calendar: {\n months: this.locale.months,\n dayCellChooseDateAriaLabel: this.locale.dayCellChooseDateAriaLabel,\n selectMonthAriaLabel: this.locale.selectMonthAriaLabel,\n selectYearAriaLabel: this.locale.selectYearAriaLabel,\n selectChosenAriaLabel: this.locale.selectChosenAriaLabel,\n },\n },\n }}\n >\n <DropdownContainer\n menuPos={this.props.menuPos}\n data-tid={DatePickerDataTids.root}\n getParent={this.getParent}\n offsetY={parseInt(this.theme.datePickerMenuOffsetY)}\n align={this.props.menuAlign}\n >\n <div\n data-tid={DatePickerDataTids.pickerRoot}\n className={styles.calendarWrapper(this.theme)}\n onMouseDown={(e) => e.preventDefault()}\n >\n <Calendar\n ref={(c) => (this.calendar = c)}\n maxDate={this.parseValueToDate(maxDate)}\n minDate={this.parseValueToDate(minDate)}\n onValueChange={this.handleValueChange}\n isHoliday={this.props.isHoliday}\n value={this.parseValueToDate(this.props.value)}\n renderDay={this.props.renderDay}\n onMonthChange={this.props.onMonthChange}\n />\n {this.props.enableTodayLink && this.renderTodayLink()}{' '}\n </div>\n </DropdownContainer>\n </LocaleContext.Provider>\n );\n }\n }\n return (\n <label\n className={styles.root()}\n style={this.getRootStyle()}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n data-tid={DatePickerDataTids.label}\n >\n <DateInput\n id={this.props.id}\n {...filterProps(props, INPUT_PASS_PROPS)}\n ref={this.getInputRef}\n value={this.props.value || ''}\n width=\"100%\"\n withIcon\n minDate={minDate}\n maxDate={maxDate}\n onBlur={isMobile ? undefined : this.handleBlur}\n onFocus={this.handleFocus}\n onValueChange={this.props.onValueChange}\n data-tid={DatePickerDataTids.input}\n />\n {this.state.canUseMobileNativeDatePicker ? (\n <NativeDateInput\n onValueChange={this.props.onValueChange}\n value={this.props.value || ''}\n minDate={minDate}\n maxDate={maxDate}\n disabled={this.props.disabled}\n />\n ) : (\n picker\n )}\n </label>\n );\n };\n private parseValueToDate(value?: Nullable<string>): string | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n const date = new InternalDate({ value });\n if (date.validate({ checks: [InternalDateValidateCheck.NotNull, InternalDateValidateCheck.Native] })) {\n return date.toString({ withPad: true });\n }\n\n return undefined;\n }\n\n private renderTodayLink() {\n const { order, separator } = this.locale;\n const today = new InternalDate({ order, separator })\n .setComponents(InternalDateGetter.getTodayComponents())\n .toString({ withPad: true, withSeparator: true });\n\n if (isTheme2022(this.theme)) {\n return (\n <div style={{ margin: 8 }}>\n <Button\n aria-label={this.locale.todayAriaLabel}\n data-tid={DatePickerDataTids.pickerTodayWrapper}\n width=\"100%\"\n onClick={this.handleSelectToday(today)}\n icon={<ArrowAUpIcon16Light />}\n >\n {this.locale.today}\n </Button>\n </div>\n );\n }\n\n return (\n <button\n aria-label={this.locale.todayAriaLabel}\n data-tid={DatePickerDataTids.pickerTodayWrapper}\n className={cx({\n [styles.todayLinkWrapper(this.theme)]: true,\n })}\n onClick={this.handleSelectToday(today)}\n tabIndex={-1}\n >\n {`${this.locale.today} ${today}`}\n </button>\n );\n }\n\n private handleSelectToday = (today: string) => () => {\n this.handleSelect(today);\n\n if (this.calendar) {\n const { month, year } = this.state.today;\n this.calendar.scrollToMonth(month, year);\n }\n };\n\n public getParent = () => {\n return getRootNode(this);\n };\n\n private getRootStyle = () => {\n const { width } = this.props;\n return isNonNullable(width) ? { width } : { minWidth: MIN_WIDTH };\n };\n\n private getInputRef = (ref: DateInput | null) => {\n this.input = ref;\n };\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n\n this.focused = true;\n\n this.setState({ opened: true });\n\n if (this.props.onFocus) {\n this.props.onFocus();\n }\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n return;\n }\n\n this.focused = false;\n this.close();\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handleValueChange = (value: string) => {\n this.handleSelect(value);\n this.blur();\n };\n\n private handleSelect = (value: string | null) => {\n if (!value) {\n return null;\n }\n\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import React, { AriaAttributes } from 'react';
1
+ import React, { AriaAttributes, HTMLAttributes } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { MenuHeader } from '../MenuHeader';
4
4
  import { MenuItem } from '../MenuItem';
@@ -7,7 +7,7 @@ import { ButtonUse } from '../Button';
7
7
  import { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';
8
8
  import { DropdownContainerProps } from '../../internal/DropdownContainer';
9
9
  import { SizeProp } from '../../lib/types/props';
10
- export interface DropdownProps extends Pick<AriaAttributes, 'aria-label' | 'aria-describedby'>, CommonProps, Pick<DropdownContainerProps, 'menuPos'> {
10
+ export interface DropdownProps extends Pick<AriaAttributes, 'aria-label' | 'aria-describedby'>, Pick<HTMLAttributes<HTMLElement>, 'id'>, CommonProps, Pick<DropdownContainerProps, 'menuPos'> {
11
11
  /**
12
12
  * Подпись на кнопке.
13
13
  */
@@ -35,6 +35,7 @@ var PASS_PROPS = {
35
35
  onMouseLeave: true,
36
36
  onMouseOver: true,
37
37
  menuPos: true,
38
+ id: true,
38
39
  'aria-describedby': true };
39
40
 
40
41
 
@@ -96,6 +97,7 @@ var PASS_PROPS = {
96
97
 
97
98
 
98
99
 
100
+
99
101
 
100
102
 
101
103
  var DropdownDataTids = {
@@ -1 +1 @@
1
- {"version":3,"sources":["Dropdown.tsx"],"names":["PASS_PROPS","_renderButton","error","disabled","disablePortal","menuAlign","menuWidth","maxMenuHeight","use","size","warning","width","onOpen","onClose","onMouseEnter","onMouseLeave","onMouseOver","menuPos","DropdownDataTids","root","Dropdown","rootNode","renderMain","caption","icon","props","items","React","Children","map","children","item","setRootNode","_refSelect","renderValue","element","_select","render","theme","open","close","Component","__KONTUR_REACT_UI__","displayName","Header","MenuHeader","MenuItem","Separator","MenuSeparator","propTypes","PropTypes","node","isRequired","bool","number","oneOf","oneOfType","string","any","func","value"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { filterProps } from '../../lib/filterProps';\nimport { MenuHeader } from '../MenuHeader';\nimport { MenuItem } from '../MenuItem';\nimport { MenuSeparator } from '../MenuSeparator';\nimport { Select } from '../Select';\nimport { Nullable } from '../../typings/utility-types';\nimport { ButtonUse } from '../Button';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { DropdownContainerProps } from '../../internal/DropdownContainer';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { getDropdownTheme } from './getDropdownTheme';\n\nconst PASS_PROPS = {\n _renderButton: true,\n error: true,\n disabled: true,\n disablePortal: true,\n menuAlign: true,\n menuWidth: true,\n maxMenuHeight: true,\n use: true,\n size: true,\n warning: true,\n width: true,\n onOpen: true,\n onClose: true,\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n menuPos: true,\n 'aria-describedby': true,\n};\n\nexport interface DropdownProps\n extends Pick<AriaAttributes, 'aria-label' | 'aria-describedby'>,\n CommonProps,\n Pick<DropdownContainerProps, 'menuPos'> {\n /**\n * Подпись на кнопке.\n */\n caption: React.ReactNode;\n /**\n * Иконка слева от текста кнопки\n */\n icon?: React.ReactElement<any>;\n width?: React.CSSProperties['width'];\n\n /** @ignore */\n _renderButton?: (params: any) => JSX.Element;\n\n /**\n * Отключает использование портала\n */\n disablePortal?: boolean;\n\n /**\n * Визуально отключает Dropdown\n */\n disabled?: boolean;\n\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n maxMenuHeight?: number;\n menuAlign?: 'left' | 'right';\n menuWidth?: number | string;\n size?: SizeProp;\n\n /**\n * Смотри Button.\n */\n use?: ButtonUse;\n\n /**\n * Вызывается при закрытии меню.\n */\n onClose?: () => void;\n /**\n * Вызывается при открытии меню.\n */\n onOpen?: () => void;\n onMouseEnter?: (event: React.MouseEvent<HTMLElement>) => void;\n onMouseLeave?: (event: React.MouseEvent<HTMLElement>) => void;\n onMouseOver?: (event: React.MouseEvent<HTMLElement>) => void;\n}\n\ntype DropdownSelectType = Select<React.ReactNode, React.ReactNode>;\n\nexport const DropdownDataTids = {\n root: 'Dropdown__root',\n} as const;\n\n/**\n * Выпадающее меню.\n *\n */\n@rootNode\nexport class Dropdown extends React.Component<DropdownProps> {\n public static __KONTUR_REACT_UI__ = 'Dropdown';\n public static displayName = 'Dropdown';\n\n public static Header = MenuHeader;\n public static MenuItem = MenuItem;\n public static Separator = MenuSeparator;\n\n public static propTypes = {\n /**\n * Подпись на кнопке.\n */\n caption: PropTypes.node.isRequired,\n\n /**\n * Отключает использование портала\n */\n disablePortal: PropTypes.bool,\n\n /**\n * Визуально отключает Dropdown\n */\n disabled: PropTypes.bool,\n\n /**\n * Визуально показать наличие ошибки.\n */\n error: PropTypes.bool,\n\n /**\n * Иконка слева от текста кнопки\n */\n icon: PropTypes.node,\n\n maxMenuHeight: PropTypes.number,\n\n menuAlign: PropTypes.oneOf(['left', 'right']),\n\n menuWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n\n /**\n * Смотри Button.\n */\n use: PropTypes.any,\n\n /**\n * Визуально показать наличие предупреждения.\n */\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * Вызывается при закрытии меню.\n */\n onClose: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n /**\n * Вызывается при открытии меню.\n */\n onOpen: PropTypes.func,\n };\n\n private _select: Nullable<DropdownSelectType>;\n private setRootNode!: TSetRootNode;\n private theme!: Theme;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getDropdownTheme(theme);\n return <ThemeContext.Provider value={this.theme}>{this.renderMain(this.props)}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain = ({ caption, icon, ...props }: CommonWrapperRestProps<DropdownProps>) => {\n const items = React.Children.map(this.props.children, (item) => item) || [];\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Select<React.ReactNode, React.ReactNode>\n data-tid={DropdownDataTids.root}\n ref={this._refSelect}\n {...filterProps(props, PASS_PROPS)}\n value={caption}\n items={items}\n _icon={icon}\n renderValue={renderValue}\n size={this.props.size}\n aria-label={this.props['aria-label']}\n />\n </CommonWrapper>\n );\n };\n\n /**\n * @public\n */\n public open() {\n if (this._select) {\n this._select.open();\n }\n }\n\n /**\n * @public\n */\n public close() {\n if (this._select) {\n this._select.close();\n }\n }\n\n private _refSelect = (element: DropdownSelectType): void => {\n this._select = element;\n };\n}\n\nfunction renderValue(value: any) {\n return value;\n}\n"]}
1
+ {"version":3,"sources":["Dropdown.tsx"],"names":["PASS_PROPS","_renderButton","error","disabled","disablePortal","menuAlign","menuWidth","maxMenuHeight","use","size","warning","width","onOpen","onClose","onMouseEnter","onMouseLeave","onMouseOver","menuPos","id","DropdownDataTids","root","Dropdown","rootNode","renderMain","caption","icon","props","items","React","Children","map","children","item","setRootNode","_refSelect","renderValue","element","_select","render","theme","open","close","Component","__KONTUR_REACT_UI__","displayName","Header","MenuHeader","MenuItem","Separator","MenuSeparator","propTypes","PropTypes","node","isRequired","bool","number","oneOf","oneOfType","string","any","func","value"],"mappings":"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","sourcesContent":["import React, { AriaAttributes, HTMLAttributes } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { filterProps } from '../../lib/filterProps';\nimport { MenuHeader } from '../MenuHeader';\nimport { MenuItem } from '../MenuItem';\nimport { MenuSeparator } from '../MenuSeparator';\nimport { Select } from '../Select';\nimport { Nullable } from '../../typings/utility-types';\nimport { ButtonUse } from '../Button';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { DropdownContainerProps } from '../../internal/DropdownContainer';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { getDropdownTheme } from './getDropdownTheme';\n\nconst PASS_PROPS = {\n _renderButton: true,\n error: true,\n disabled: true,\n disablePortal: true,\n menuAlign: true,\n menuWidth: true,\n maxMenuHeight: true,\n use: true,\n size: true,\n warning: true,\n width: true,\n onOpen: true,\n onClose: true,\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n menuPos: true,\n id: true,\n 'aria-describedby': true,\n};\n\nexport interface DropdownProps\n extends Pick<AriaAttributes, 'aria-label' | 'aria-describedby'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n CommonProps,\n Pick<DropdownContainerProps, 'menuPos'> {\n /**\n * Подпись на кнопке.\n */\n caption: React.ReactNode;\n /**\n * Иконка слева от текста кнопки\n */\n icon?: React.ReactElement<any>;\n width?: React.CSSProperties['width'];\n\n /** @ignore */\n _renderButton?: (params: any) => JSX.Element;\n\n /**\n * Отключает использование портала\n */\n disablePortal?: boolean;\n\n /**\n * Визуально отключает Dropdown\n */\n disabled?: boolean;\n\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n maxMenuHeight?: number;\n menuAlign?: 'left' | 'right';\n menuWidth?: number | string;\n size?: SizeProp;\n\n /**\n * Смотри Button.\n */\n use?: ButtonUse;\n\n /**\n * Вызывается при закрытии меню.\n */\n onClose?: () => void;\n /**\n * Вызывается при открытии меню.\n */\n onOpen?: () => void;\n onMouseEnter?: (event: React.MouseEvent<HTMLElement>) => void;\n onMouseLeave?: (event: React.MouseEvent<HTMLElement>) => void;\n onMouseOver?: (event: React.MouseEvent<HTMLElement>) => void;\n}\n\ntype DropdownSelectType = Select<React.ReactNode, React.ReactNode>;\n\nexport const DropdownDataTids = {\n root: 'Dropdown__root',\n} as const;\n\n/**\n * Выпадающее меню.\n *\n */\n@rootNode\nexport class Dropdown extends React.Component<DropdownProps> {\n public static __KONTUR_REACT_UI__ = 'Dropdown';\n public static displayName = 'Dropdown';\n\n public static Header = MenuHeader;\n public static MenuItem = MenuItem;\n public static Separator = MenuSeparator;\n\n public static propTypes = {\n /**\n * Подпись на кнопке.\n */\n caption: PropTypes.node.isRequired,\n\n /**\n * Отключает использование портала\n */\n disablePortal: PropTypes.bool,\n\n /**\n * Визуально отключает Dropdown\n */\n disabled: PropTypes.bool,\n\n /**\n * Визуально показать наличие ошибки.\n */\n error: PropTypes.bool,\n\n /**\n * Иконка слева от текста кнопки\n */\n icon: PropTypes.node,\n\n maxMenuHeight: PropTypes.number,\n\n menuAlign: PropTypes.oneOf(['left', 'right']),\n\n menuWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n\n /**\n * Смотри Button.\n */\n use: PropTypes.any,\n\n /**\n * Визуально показать наличие предупреждения.\n */\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * Вызывается при закрытии меню.\n */\n onClose: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n /**\n * Вызывается при открытии меню.\n */\n onOpen: PropTypes.func,\n };\n\n private _select: Nullable<DropdownSelectType>;\n private setRootNode!: TSetRootNode;\n private theme!: Theme;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getDropdownTheme(theme);\n return <ThemeContext.Provider value={this.theme}>{this.renderMain(this.props)}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain = ({ caption, icon, ...props }: CommonWrapperRestProps<DropdownProps>) => {\n const items = React.Children.map(this.props.children, (item) => item) || [];\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Select<React.ReactNode, React.ReactNode>\n data-tid={DropdownDataTids.root}\n ref={this._refSelect}\n {...filterProps(props, PASS_PROPS)}\n value={caption}\n items={items}\n _icon={icon}\n renderValue={renderValue}\n size={this.props.size}\n aria-label={this.props['aria-label']}\n />\n </CommonWrapper>\n );\n };\n\n /**\n * @public\n */\n public open() {\n if (this._select) {\n this._select.open();\n }\n }\n\n /**\n * @public\n */\n public close() {\n if (this._select) {\n this._select.close();\n }\n }\n\n private _refSelect = (element: DropdownSelectType): void => {\n this._select = element;\n };\n}\n\nfunction renderValue(value: any) {\n return value;\n}\n"]}
@@ -1,8 +1,8 @@
1
- import React, { AriaAttributes } from 'react';
1
+ import React, { AriaAttributes, HTMLAttributes } from 'react';
2
2
  import { PopupMenuProps } from '../../internal/PopupMenu';
3
3
  import { PopupPositionsType } from '../../internal/Popup';
4
4
  import { CommonProps } from '../../internal/CommonWrapper';
5
- export interface DropdownMenuProps extends Pick<AriaAttributes, 'aria-label'>, Pick<PopupMenuProps, 'onOpen' | 'onClose' | 'popupMenuId' | 'preventIconsOffset'>, CommonProps {
5
+ export interface DropdownMenuProps extends Pick<AriaAttributes, 'aria-label'>, Pick<HTMLAttributes<HTMLElement>, 'id'>, Pick<PopupMenuProps, 'onOpen' | 'onClose' | 'popupMenuId' | 'preventIconsOffset'>, CommonProps {
6
6
  /** Максимальная высота меню */
7
7
  menuMaxHeight?: React.CSSProperties['maxWidth'];
8
8
  /** Ширина меню */
@@ -58,6 +58,7 @@ var _getDropdownMenuTheme = require("./getDropdownMenuTheme");var _class, _class
58
58
 
59
59
 
60
60
 
61
+
61
62
 
62
63
 
63
64
  /**
@@ -124,6 +125,7 @@ DropdownMenu = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/
124
125
 
125
126
 
126
127
 
128
+
127
129
 
128
130
 
129
131
  open = function () {
@@ -138,4 +140,4 @@ DropdownMenu = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/
138
140
  }
139
141
  };_this.
140
142
 
141
- refPopupMenu = function (ref) {return _this.popupMenu = ref;};if (!props.caption && !_currentEnvironment.isProductionEnv) {throw new Error('Prop "caption" is required!!!');}return _this;}var _proto = DropdownMenu.prototype;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: (0, _getDropdownMenuTheme.getDropdownMenuTheme)(theme) }, _this2.renderMain());});};_proto.renderMain = function renderMain() {if (!this.props.caption) {return null;}var _this$getProps = this.getProps(),positions = _this$getProps.positions,disableAnimations = _this$getProps.disableAnimations;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement(_PopupMenu.PopupMenu, { "aria-label": this.props['aria-label'], ref: this.refPopupMenu, caption: this.props.caption, menuMaxHeight: this.props.menuMaxHeight, menuWidth: this.props.menuWidth, preventIconsOffset: this.props.preventIconsOffset, popupHasPin: false, positions: positions, disableAnimations: disableAnimations, header: this.props.header, footer: this.props.footer, width: this.props.width, onClose: this.props.onClose, onOpen: this.props.onOpen, popupMenuId: this.props.popupMenuId }, this.props.children));};return DropdownMenu;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'DropdownMenu', _class2.displayName = 'DropdownMenu', _class2.defaultProps = { disableAnimations: _currentEnvironment.isTestEnv, positions: ['bottom left', 'bottom right', 'top left', 'top right'] }, _temp)) || _class;exports.DropdownMenu = DropdownMenu;
143
+ refPopupMenu = function (ref) {return _this.popupMenu = ref;};if (!props.caption && !_currentEnvironment.isProductionEnv) {throw new Error('Prop "caption" is required!!!');}return _this;}var _proto = DropdownMenu.prototype;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: (0, _getDropdownMenuTheme.getDropdownMenuTheme)(theme) }, _this2.renderMain());});};_proto.renderMain = function renderMain() {if (!this.props.caption) {return null;}var _this$getProps = this.getProps(),positions = _this$getProps.positions,disableAnimations = _this$getProps.disableAnimations;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement(_PopupMenu.PopupMenu, { id: this.props.id, "aria-label": this.props['aria-label'], ref: this.refPopupMenu, caption: this.props.caption, menuMaxHeight: this.props.menuMaxHeight, menuWidth: this.props.menuWidth, preventIconsOffset: this.props.preventIconsOffset, popupHasPin: false, positions: positions, disableAnimations: disableAnimations, header: this.props.header, footer: this.props.footer, width: this.props.width, onClose: this.props.onClose, onOpen: this.props.onOpen, popupMenuId: this.props.popupMenuId }, this.props.children));};return DropdownMenu;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'DropdownMenu', _class2.displayName = 'DropdownMenu', _class2.defaultProps = { disableAnimations: _currentEnvironment.isTestEnv, positions: ['bottom left', 'bottom right', 'top left', 'top right'] }, _temp)) || _class;exports.DropdownMenu = DropdownMenu;
@@ -1 +1 @@
1
- {"version":3,"sources":["DropdownMenu.tsx"],"names":["DropdownMenu","rootNode","props","getProps","defaultProps","popupMenu","open","close","refPopupMenu","ref","caption","isProductionEnv","Error","render","theme","renderMain","positions","disableAnimations","setRootNode","menuMaxHeight","menuWidth","preventIconsOffset","header","footer","width","onClose","onOpen","popupMenuId","children","React","Component","__KONTUR_REACT_UI__","displayName","isTestEnv"],"mappings":"kVAAA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,8D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDA;AACA;AACA,G;;AAEaA,Y,OADZC,kB;;;;;;;;;;;;;;AAeC,wBAAYC,KAAZ,EAAsC;AACpC,wCAAMA,KAAN,UADoC,MAL9BC,QAK8B,GALnB,0CAAkBH,YAAY,CAACI,YAA/B,CAKmB,OAH9BC,SAG8B,GAHG,IAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgD/BC,IAAAA,IAhD+B,GAgDxB,YAAY;AACxB,UAAI,MAAKD,SAAT,EAAoB;AAClB,cAAKA,SAAL,CAAeC,IAAf;AACD;AACF,KApDqC;;AAsD/BC,IAAAA,KAtD+B,GAsDvB,YAAY;AACzB,UAAI,MAAKF,SAAT,EAAoB;AAClB,cAAKA,SAAL,CAAeE,KAAf;AACD;AACF,KA1DqC;;AA4D9BC,IAAAA,YA5D8B,GA4Df,UAACC,GAAD,UAA+B,MAAKJ,SAAL,GAAiBI,GAAhD,EA5De,CAGpC,IAAI,CAACP,KAAK,CAACQ,OAAP,IAAkB,CAACC,mCAAvB,EAAwC,CACtC,MAAM,IAAIC,KAAJ,CAAU,+BAAV,CAAN,CACD,CALmC,aAMrC,C,2CAEMC,M,GAAP,kBAAgB,mBACd,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAACC,KAAD,EAAW,CACV,oBAAO,6BAAC,0BAAD,CAAc,QAAd,IAAuB,KAAK,EAAE,gDAAqBA,KAArB,CAA9B,IAA4D,MAAI,CAACC,UAAL,EAA5D,CAAP,CACD,CAHH,CADF,CAOD,C,QAEMA,U,GAAP,sBAAoB,CAClB,IAAI,CAAC,KAAKb,KAAL,CAAWQ,OAAhB,EAAyB,CACvB,OAAO,IAAP,CACD,CACD,qBAAyC,KAAKP,QAAL,EAAzC,CAAQa,SAAR,kBAAQA,SAAR,CAAmBC,iBAAnB,kBAAmBA,iBAAnB,CACA,oBACE,6BAAC,4BAAD,2BAAe,WAAW,EAAE,KAAKC,WAAjC,IAAkD,KAAKhB,KAAvD,gBACE,6BAAC,oBAAD,IACE,cAAY,KAAKA,KAAL,CAAW,YAAX,CADd,EAEE,GAAG,EAAE,KAAKM,YAFZ,EAGE,OAAO,EAAE,KAAKN,KAAL,CAAWQ,OAHtB,EAIE,aAAa,EAAE,KAAKR,KAAL,CAAWiB,aAJ5B,EAKE,SAAS,EAAE,KAAKjB,KAAL,CAAWkB,SALxB,EAME,kBAAkB,EAAE,KAAKlB,KAAL,CAAWmB,kBANjC,EAOE,WAAW,EAAE,KAPf,EAQE,SAAS,EAAEL,SARb,EASE,iBAAiB,EAAEC,iBATrB,EAUE,MAAM,EAAE,KAAKf,KAAL,CAAWoB,MAVrB,EAWE,MAAM,EAAE,KAAKpB,KAAL,CAAWqB,MAXrB,EAYE,KAAK,EAAE,KAAKrB,KAAL,CAAWsB,KAZpB,EAaE,OAAO,EAAE,KAAKtB,KAAL,CAAWuB,OAbtB,EAcE,MAAM,EAAE,KAAKvB,KAAL,CAAWwB,MAdrB,EAeE,WAAW,EAAE,KAAKxB,KAAL,CAAWyB,WAf1B,IAiBG,KAAKzB,KAAL,CAAW0B,QAjBd,CADF,CADF,CAuBD,C,uBA5D+BC,eAAMC,S,WACxBC,mB,GAAsB,c,UACtBC,W,GAAc,c,UAEd5B,Y,GAA6B,EACzCa,iBAAiB,EAAEgB,6BADsB,EAEzCjB,SAAS,EAAE,CAAC,aAAD,EAAgB,cAAhB,EAAgC,UAAhC,EAA4C,WAA5C,CAF8B,E","sourcesContent":["import React, { AriaAttributes } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Nullable } from '../../typings/utility-types';\nimport { PopupMenu, PopupMenuProps } from '../../internal/PopupMenu';\nimport { isProductionEnv, isTestEnv } from '../../lib/currentEnvironment';\nimport { PopupPositionsType } from '../../internal/Popup';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { getDropdownMenuTheme } from './getDropdownMenuTheme';\n\nexport interface DropdownMenuProps\n extends Pick<AriaAttributes, 'aria-label'>,\n Pick<PopupMenuProps, 'onOpen' | 'onClose' | 'popupMenuId' | 'preventIconsOffset'>,\n CommonProps {\n /** Максимальная высота меню */\n menuMaxHeight?: React.CSSProperties['maxWidth'];\n /** Ширина меню */\n menuWidth?: React.CSSProperties['width'];\n /** Ширина caption */\n width?: React.CSSProperties['width'];\n\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо `caption`,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: PopupMenuProps['caption'];\n\n /**\n * Произвольный элемент, который будет отрендерен в шапке меню.\n *\n * _Примечание_: контрол [MenuHeader](#/Components/MenuHeader) передаётся только в `children` меню-контролов. Не стоит передавать `MenuHeader` в `header`.\n */\n header?: React.ReactNode;\n /**\n * Произвольный элемент, который будет отрендерен в подвале меню.\n *\n * Перед элементом переданным в `footer` будет отрендерен [MenuSeparator](#/Components/MenuSeparator).\n */\n footer?: React.ReactNode;\n /**\n * Список позиций доступных для расположения выпадашки относительно `caption`.\n *\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.\n *\n * **Возможные значения**: `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 * @default ['bottom left', 'bottom right', 'top left', 'top right']\n */\n positions?: PopupPositionsType[];\n\n /**\n * Не показывать анимацию\n */\n disableAnimations?: boolean;\n}\n\ntype DefaultProps = Required<Pick<DropdownMenuProps, 'disableAnimations' | 'positions'>>;\n\n/**\n * Меню, раскрывающееся по клику на переданный в `caption` элемент\n */\n@rootNode\nexport class DropdownMenu extends React.Component<DropdownMenuProps> {\n public static __KONTUR_REACT_UI__ = 'DropdownMenu';\n public static displayName = 'DropdownMenu';\n\n public static defaultProps: DefaultProps = {\n disableAnimations: isTestEnv,\n positions: ['bottom left', 'bottom right', 'top left', 'top right'],\n };\n\n private getProps = createPropsGetter(DropdownMenu.defaultProps);\n\n private popupMenu: Nullable<PopupMenu> = null;\n private setRootNode!: TSetRootNode;\n\n constructor(props: DropdownMenuProps) {\n super(props);\n\n if (!props.caption && !isProductionEnv) {\n throw new Error('Prop \"caption\" is required!!!');\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return <ThemeContext.Provider value={getDropdownMenuTheme(theme)}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n if (!this.props.caption) {\n return null;\n }\n const { positions, disableAnimations } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <PopupMenu\n aria-label={this.props['aria-label']}\n ref={this.refPopupMenu}\n caption={this.props.caption}\n menuMaxHeight={this.props.menuMaxHeight}\n menuWidth={this.props.menuWidth}\n preventIconsOffset={this.props.preventIconsOffset}\n popupHasPin={false}\n positions={positions}\n disableAnimations={disableAnimations}\n header={this.props.header}\n footer={this.props.footer}\n width={this.props.width}\n onClose={this.props.onClose}\n onOpen={this.props.onOpen}\n popupMenuId={this.props.popupMenuId}\n >\n {this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n\n public open = (): void => {\n if (this.popupMenu) {\n this.popupMenu.open();\n }\n };\n\n public close = (): void => {\n if (this.popupMenu) {\n this.popupMenu.close();\n }\n };\n\n private refPopupMenu = (ref: Nullable<PopupMenu>) => (this.popupMenu = ref);\n}\n"]}
1
+ {"version":3,"sources":["DropdownMenu.tsx"],"names":["DropdownMenu","rootNode","props","getProps","defaultProps","popupMenu","open","close","refPopupMenu","ref","caption","isProductionEnv","Error","render","theme","renderMain","positions","disableAnimations","setRootNode","id","menuMaxHeight","menuWidth","preventIconsOffset","header","footer","width","onClose","onOpen","popupMenuId","children","React","Component","__KONTUR_REACT_UI__","displayName","isTestEnv"],"mappings":"kVAAA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,8D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDA;AACA;AACA,G;;AAEaA,Y,OADZC,kB;;;;;;;;;;;;;;AAeC,wBAAYC,KAAZ,EAAsC;AACpC,wCAAMA,KAAN,UADoC,MAL9BC,QAK8B,GALnB,0CAAkBH,YAAY,CAACI,YAA/B,CAKmB,OAH9BC,SAG8B,GAHG,IAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiD/BC,IAAAA,IAjD+B,GAiDxB,YAAY;AACxB,UAAI,MAAKD,SAAT,EAAoB;AAClB,cAAKA,SAAL,CAAeC,IAAf;AACD;AACF,KArDqC;;AAuD/BC,IAAAA,KAvD+B,GAuDvB,YAAY;AACzB,UAAI,MAAKF,SAAT,EAAoB;AAClB,cAAKA,SAAL,CAAeE,KAAf;AACD;AACF,KA3DqC;;AA6D9BC,IAAAA,YA7D8B,GA6Df,UAACC,GAAD,UAA+B,MAAKJ,SAAL,GAAiBI,GAAhD,EA7De,CAGpC,IAAI,CAACP,KAAK,CAACQ,OAAP,IAAkB,CAACC,mCAAvB,EAAwC,CACtC,MAAM,IAAIC,KAAJ,CAAU,+BAAV,CAAN,CACD,CALmC,aAMrC,C,2CAEMC,M,GAAP,kBAAgB,mBACd,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAACC,KAAD,EAAW,CACV,oBAAO,6BAAC,0BAAD,CAAc,QAAd,IAAuB,KAAK,EAAE,gDAAqBA,KAArB,CAA9B,IAA4D,MAAI,CAACC,UAAL,EAA5D,CAAP,CACD,CAHH,CADF,CAOD,C,QAEMA,U,GAAP,sBAAoB,CAClB,IAAI,CAAC,KAAKb,KAAL,CAAWQ,OAAhB,EAAyB,CACvB,OAAO,IAAP,CACD,CACD,qBAAyC,KAAKP,QAAL,EAAzC,CAAQa,SAAR,kBAAQA,SAAR,CAAmBC,iBAAnB,kBAAmBA,iBAAnB,CACA,oBACE,6BAAC,4BAAD,2BAAe,WAAW,EAAE,KAAKC,WAAjC,IAAkD,KAAKhB,KAAvD,gBACE,6BAAC,oBAAD,IACE,EAAE,EAAE,KAAKA,KAAL,CAAWiB,EADjB,EAEE,cAAY,KAAKjB,KAAL,CAAW,YAAX,CAFd,EAGE,GAAG,EAAE,KAAKM,YAHZ,EAIE,OAAO,EAAE,KAAKN,KAAL,CAAWQ,OAJtB,EAKE,aAAa,EAAE,KAAKR,KAAL,CAAWkB,aAL5B,EAME,SAAS,EAAE,KAAKlB,KAAL,CAAWmB,SANxB,EAOE,kBAAkB,EAAE,KAAKnB,KAAL,CAAWoB,kBAPjC,EAQE,WAAW,EAAE,KARf,EASE,SAAS,EAAEN,SATb,EAUE,iBAAiB,EAAEC,iBAVrB,EAWE,MAAM,EAAE,KAAKf,KAAL,CAAWqB,MAXrB,EAYE,MAAM,EAAE,KAAKrB,KAAL,CAAWsB,MAZrB,EAaE,KAAK,EAAE,KAAKtB,KAAL,CAAWuB,KAbpB,EAcE,OAAO,EAAE,KAAKvB,KAAL,CAAWwB,OAdtB,EAeE,MAAM,EAAE,KAAKxB,KAAL,CAAWyB,MAfrB,EAgBE,WAAW,EAAE,KAAKzB,KAAL,CAAW0B,WAhB1B,IAkBG,KAAK1B,KAAL,CAAW2B,QAlBd,CADF,CADF,CAwBD,C,uBA7D+BC,eAAMC,S,WACxBC,mB,GAAsB,c,UACtBC,W,GAAc,c,UAEd7B,Y,GAA6B,EACzCa,iBAAiB,EAAEiB,6BADsB,EAEzClB,SAAS,EAAE,CAAC,aAAD,EAAgB,cAAhB,EAAgC,UAAhC,EAA4C,WAA5C,CAF8B,E","sourcesContent":["import React, { AriaAttributes, HTMLAttributes } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Nullable } from '../../typings/utility-types';\nimport { PopupMenu, PopupMenuProps } from '../../internal/PopupMenu';\nimport { isProductionEnv, isTestEnv } from '../../lib/currentEnvironment';\nimport { PopupPositionsType } from '../../internal/Popup';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { getDropdownMenuTheme } from './getDropdownMenuTheme';\n\nexport interface DropdownMenuProps\n extends Pick<AriaAttributes, 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Pick<PopupMenuProps, 'onOpen' | 'onClose' | 'popupMenuId' | 'preventIconsOffset'>,\n CommonProps {\n /** Максимальная высота меню */\n menuMaxHeight?: React.CSSProperties['maxWidth'];\n /** Ширина меню */\n menuWidth?: React.CSSProperties['width'];\n /** Ширина caption */\n width?: React.CSSProperties['width'];\n\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо `caption`,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: PopupMenuProps['caption'];\n\n /**\n * Произвольный элемент, который будет отрендерен в шапке меню.\n *\n * _Примечание_: контрол [MenuHeader](#/Components/MenuHeader) передаётся только в `children` меню-контролов. Не стоит передавать `MenuHeader` в `header`.\n */\n header?: React.ReactNode;\n /**\n * Произвольный элемент, который будет отрендерен в подвале меню.\n *\n * Перед элементом переданным в `footer` будет отрендерен [MenuSeparator](#/Components/MenuSeparator).\n */\n footer?: React.ReactNode;\n /**\n * Список позиций доступных для расположения выпадашки относительно `caption`.\n *\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.\n *\n * **Возможные значения**: `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 * @default ['bottom left', 'bottom right', 'top left', 'top right']\n */\n positions?: PopupPositionsType[];\n\n /**\n * Не показывать анимацию\n */\n disableAnimations?: boolean;\n}\n\ntype DefaultProps = Required<Pick<DropdownMenuProps, 'disableAnimations' | 'positions'>>;\n\n/**\n * Меню, раскрывающееся по клику на переданный в `caption` элемент\n */\n@rootNode\nexport class DropdownMenu extends React.Component<DropdownMenuProps> {\n public static __KONTUR_REACT_UI__ = 'DropdownMenu';\n public static displayName = 'DropdownMenu';\n\n public static defaultProps: DefaultProps = {\n disableAnimations: isTestEnv,\n positions: ['bottom left', 'bottom right', 'top left', 'top right'],\n };\n\n private getProps = createPropsGetter(DropdownMenu.defaultProps);\n\n private popupMenu: Nullable<PopupMenu> = null;\n private setRootNode!: TSetRootNode;\n\n constructor(props: DropdownMenuProps) {\n super(props);\n\n if (!props.caption && !isProductionEnv) {\n throw new Error('Prop \"caption\" is required!!!');\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return <ThemeContext.Provider value={getDropdownMenuTheme(theme)}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n if (!this.props.caption) {\n return null;\n }\n const { positions, disableAnimations } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <PopupMenu\n id={this.props.id}\n aria-label={this.props['aria-label']}\n ref={this.refPopupMenu}\n caption={this.props.caption}\n menuMaxHeight={this.props.menuMaxHeight}\n menuWidth={this.props.menuWidth}\n preventIconsOffset={this.props.preventIconsOffset}\n popupHasPin={false}\n positions={positions}\n disableAnimations={disableAnimations}\n header={this.props.header}\n footer={this.props.footer}\n width={this.props.width}\n onClose={this.props.onClose}\n onOpen={this.props.onOpen}\n popupMenuId={this.props.popupMenuId}\n >\n {this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n\n public open = (): void => {\n if (this.popupMenu) {\n this.popupMenu.open();\n }\n };\n\n public close = (): void => {\n if (this.popupMenu) {\n this.popupMenu.close();\n }\n };\n\n private refPopupMenu = (ref: Nullable<PopupMenu>) => (this.popupMenu = ref);\n}\n"]}
@@ -1,10 +1,10 @@
1
- import React, { AriaAttributes } from 'react';
1
+ import React, { AriaAttributes, HTMLAttributes } from 'react';
2
2
  import { PopupMenuProps } from '../../internal/PopupMenu';
3
3
  import { Nullable } from '../../typings/utility-types';
4
4
  import { PopupPositionsType } from '../../internal/Popup';
5
5
  import { CommonProps } from '../../internal/CommonWrapper';
6
6
  import { SizeProp } from '../../lib/types/props';
7
- export interface KebabProps extends Pick<AriaAttributes, 'aria-label'>, Pick<PopupMenuProps, 'onOpen' | 'onClose' | 'popupMenuId' | 'preventIconsOffset'>, CommonProps {
7
+ export interface KebabProps extends Pick<AriaAttributes, 'aria-label'>, Pick<HTMLAttributes<HTMLElement>, 'id'>, Pick<PopupMenuProps, 'onOpen' | 'onClose' | 'popupMenuId' | 'preventIconsOffset'>, CommonProps {
8
8
  disabled?: boolean;
9
9
  size?: SizeProp;
10
10
  /**
@@ -55,6 +55,7 @@ var _KebabIcon = require("./KebabIcon");var _class, _class2, _temp;
55
55
 
56
56
 
57
57
 
58
+
58
59
 
59
60
 
60
61
  var KebabDataTids = {
@@ -166,6 +167,7 @@ Kebab = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functio
166
167
 
167
168
 
168
169
 
170
+
169
171
 
170
172
 
171
173
  renderCaption = function (captionProps) {
@@ -240,7 +242,7 @@ Kebab = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functio
240
242
  _this.setState({
241
243
  focusedByTab: false });
242
244
 
243
- };return _this;}var _proto = Kebab.prototype;_proto.componentDidMount = function componentDidMount() {/** addListener'у нужен колбэк в аргумент */this.listener = LayoutEvents.addListener(function () {return undefined;});};_proto.componentWillUnmount = function componentWillUnmount() {this.listener.remove();};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: _ThemeFactory.ThemeFactory.create({ popupPinOffset: theme.kebabPinOffset, popupMargin: theme.kebabMargin, popupPinSize: theme.kebabPinSize, menuScrollContainerContentWrapperPaddingY: theme.menuLegacyPaddingY }, theme) }, _this2.renderMain());});};_proto.renderMain = function renderMain() {var _this3 = this;var disabled = this.props.disabled;var _this$getProps2 = this.getProps(),positions = _this$getProps2.positions,disableAnimations = _this$getProps2.disableAnimations,onOpen = _this$getProps2.onOpen,onClose = _this$getProps2.onClose;return /*#__PURE__*/_react.default.createElement(_featureFlagsContext.ReactUIFeatureFlagsContext.Consumer, null, function (flags) {var hasPin = !(0, _featureFlagsContext.getFullReactUIFlagsContext)(flags).kebabHintRemovePin || !(0, _ThemeHelpers.isTheme2022)(_this3.theme);return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: _this3.setRootNode }, _this3.props, (0, _getVisualStateDataAttributes.getVisualStateDataAttributes)({ disabled: disabled })), /*#__PURE__*/_react.default.createElement(_PopupMenu.PopupMenu, { popupHasPin: hasPin, preventIconsOffset: _this3.props.preventIconsOffset, positions: positions, onChangeMenuState: _this3.handleChangeMenuState, caption: _this3.renderCaption, disableAnimations: disableAnimations, menuMaxHeight: _this3.props.menuMaxHeight, onOpen: onOpen, onClose: onClose, popupMenuId: _this3.props.popupMenuId, "aria-label": _this3.props['aria-label'] }, !disabled && _this3.props.children));});};_proto.
245
+ };return _this;}var _proto = Kebab.prototype;_proto.componentDidMount = function componentDidMount() {/** addListener'у нужен колбэк в аргумент */this.listener = LayoutEvents.addListener(function () {return undefined;});};_proto.componentWillUnmount = function componentWillUnmount() {this.listener.remove();};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: _ThemeFactory.ThemeFactory.create({ popupPinOffset: theme.kebabPinOffset, popupMargin: theme.kebabMargin, popupPinSize: theme.kebabPinSize, menuScrollContainerContentWrapperPaddingY: theme.menuLegacyPaddingY }, theme) }, _this2.renderMain());});};_proto.renderMain = function renderMain() {var _this3 = this;var disabled = this.props.disabled;var _this$getProps2 = this.getProps(),positions = _this$getProps2.positions,disableAnimations = _this$getProps2.disableAnimations,onOpen = _this$getProps2.onOpen,onClose = _this$getProps2.onClose;return /*#__PURE__*/_react.default.createElement(_featureFlagsContext.ReactUIFeatureFlagsContext.Consumer, null, function (flags) {var hasPin = !(0, _featureFlagsContext.getFullReactUIFlagsContext)(flags).kebabHintRemovePin || !(0, _ThemeHelpers.isTheme2022)(_this3.theme);return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: _this3.setRootNode }, _this3.props, (0, _getVisualStateDataAttributes.getVisualStateDataAttributes)({ disabled: disabled })), /*#__PURE__*/_react.default.createElement(_PopupMenu.PopupMenu, { id: _this3.props.id, popupHasPin: hasPin, preventIconsOffset: _this3.props.preventIconsOffset, positions: positions, onChangeMenuState: _this3.handleChangeMenuState, caption: _this3.renderCaption, disableAnimations: disableAnimations, menuMaxHeight: _this3.props.menuMaxHeight, onOpen: onOpen, onClose: onClose, popupMenuId: _this3.props.popupMenuId, "aria-label": _this3.props['aria-label'] }, !disabled && _this3.props.children));});};_proto.
244
246
 
245
247
  renderIcon = function renderIcon() {var _cx;
246
248
  var _this$getProps3 = this.getProps(),size = _this$getProps3.size,_this$getProps3$icon = _this$getProps3.icon,icon = _this$getProps3$icon === void 0 ? /*#__PURE__*/_react.default.createElement(_px.MenuKebabIcon, null) : _this$getProps3$icon;