@skbkontur/react-ui 3.7.2 → 3.8.3

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 (161) hide show
  1. package/CHANGELOG.md +60 -2
  2. package/README.md +1 -1
  3. package/cjs/components/Checkbox/Checkbox.styles.js +1 -2
  4. package/cjs/components/Checkbox/Checkbox.styles.js.map +1 -1
  5. package/cjs/components/CurrencyLabel/CurrencyLabel.js +5 -14
  6. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  7. package/cjs/components/DateInput/DateInput.js +2 -1
  8. package/cjs/components/DateInput/DateInput.js.map +1 -1
  9. package/cjs/components/DatePicker/DatePicker.d.ts +3 -2
  10. package/cjs/components/DatePicker/DatePicker.js +12 -5
  11. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  12. package/cjs/components/Dropdown/Dropdown.d.ts +1 -0
  13. package/cjs/components/Dropdown/Dropdown.js +1 -0
  14. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  15. package/cjs/components/Dropdown/Dropdown.md +0 -1
  16. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +17 -3
  17. package/cjs/components/DropdownMenu/DropdownMenu.js +15 -1
  18. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  19. package/cjs/components/DropdownMenu/DropdownMenu.md +87 -6
  20. package/cjs/components/Kebab/Kebab.d.ts +5 -2
  21. package/cjs/components/Kebab/Kebab.js +5 -1
  22. package/cjs/components/Kebab/Kebab.js.map +1 -1
  23. package/cjs/components/Kebab/Kebab.md +249 -3
  24. package/cjs/components/MenuHeader/MenuHeader.d.ts +5 -1
  25. package/cjs/components/MenuHeader/MenuHeader.js +5 -1
  26. package/cjs/components/MenuHeader/MenuHeader.js.map +1 -1
  27. package/cjs/components/MenuHeader/MenuHeader.md +23 -0
  28. package/cjs/components/MenuItem/MenuItem.d.ts +10 -1
  29. package/cjs/components/MenuItem/MenuItem.js +11 -1
  30. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  31. package/cjs/components/MenuItem/MenuItem.md +106 -4
  32. package/cjs/components/MenuSeparator/MenuSeparator.d.ts +3 -1
  33. package/cjs/components/MenuSeparator/MenuSeparator.js +3 -1
  34. package/cjs/components/MenuSeparator/MenuSeparator.js.map +1 -1
  35. package/cjs/components/MenuSeparator/MenuSeparator.md +14 -0
  36. package/cjs/components/Modal/Modal.styles.d.ts +1 -0
  37. package/cjs/components/Modal/Modal.styles.js +22 -20
  38. package/cjs/components/Modal/Modal.styles.js.map +1 -1
  39. package/cjs/components/Modal/ModalClose.js +23 -3
  40. package/cjs/components/Modal/ModalClose.js.map +1 -1
  41. package/cjs/components/Textarea/Textarea.d.ts +0 -2
  42. package/cjs/components/Textarea/Textarea.js +6 -3
  43. package/cjs/components/Textarea/Textarea.js.map +1 -1
  44. package/cjs/components/Toggle/Toggle.d.ts +47 -1
  45. package/cjs/components/Toggle/Toggle.js +52 -2
  46. package/cjs/components/Toggle/Toggle.js.map +1 -1
  47. package/cjs/components/Toggle/Toggle.md +83 -9
  48. package/cjs/components/Toggle/Toggle.styles.d.ts +3 -0
  49. package/cjs/components/Toggle/Toggle.styles.js +36 -23
  50. package/cjs/components/Toggle/Toggle.styles.js.map +1 -1
  51. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +26 -8
  52. package/cjs/components/TooltipMenu/TooltipMenu.js +24 -6
  53. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  54. package/cjs/components/TooltipMenu/TooltipMenu.md +76 -8
  55. package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +9 -1
  56. package/cjs/internal/CommonWrapper/CommonWrapper.js +8 -0
  57. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  58. package/cjs/internal/CustomComboBox/ComboBoxView.js +2 -1
  59. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  60. package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js +3 -2
  61. package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js.map +1 -1
  62. package/cjs/internal/InputLikeText/InputLikeText.d.ts +1 -0
  63. package/cjs/internal/InputLikeText/InputLikeText.js +8 -3
  64. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  65. package/cjs/internal/InputLikeText/InputLikeText.styles.d.ts +1 -1
  66. package/cjs/internal/InputLikeText/InputLikeText.styles.js +1 -1
  67. package/cjs/internal/InputLikeText/InputLikeText.styles.js.map +1 -1
  68. package/cjs/internal/RenderContainer/RenderContainer.js +2 -1
  69. package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
  70. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  71. package/cjs/internal/themes/DefaultTheme.d.ts +3 -0
  72. package/cjs/internal/themes/DefaultTheme.js +11 -2
  73. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  74. package/cjs/lib/Upgrades.d.ts +2 -0
  75. package/cjs/lib/Upgrades.js +14 -0
  76. package/cjs/lib/Upgrades.js.map +1 -1
  77. package/cjs/lib/theming/Emotion.js +1 -1
  78. package/cjs/lib/theming/Emotion.js.map +1 -1
  79. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js +1 -1
  80. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js.map +1 -1
  81. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +5 -11
  82. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  83. package/components/DateInput/DateInput/DateInput.js +2 -1
  84. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  85. package/components/DatePicker/DatePicker/DatePicker.js +12 -4
  86. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  87. package/components/DatePicker/DatePicker.d.ts +3 -2
  88. package/components/Dropdown/Dropdown/Dropdown.js +1 -0
  89. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  90. package/components/Dropdown/Dropdown.d.ts +1 -0
  91. package/components/Dropdown/Dropdown.md +0 -1
  92. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +1 -1
  93. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  94. package/components/DropdownMenu/DropdownMenu.d.ts +17 -3
  95. package/components/DropdownMenu/DropdownMenu.md +87 -6
  96. package/components/Kebab/Kebab/Kebab.js +2 -1
  97. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  98. package/components/Kebab/Kebab.d.ts +5 -2
  99. package/components/Kebab/Kebab.md +249 -3
  100. package/components/MenuHeader/MenuHeader/MenuHeader.js +5 -1
  101. package/components/MenuHeader/MenuHeader/MenuHeader.js.map +1 -1
  102. package/components/MenuHeader/MenuHeader.d.ts +5 -1
  103. package/components/MenuHeader/MenuHeader.md +23 -0
  104. package/components/MenuItem/MenuItem/MenuItem.js +4 -1
  105. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  106. package/components/MenuItem/MenuItem.d.ts +10 -1
  107. package/components/MenuItem/MenuItem.md +106 -4
  108. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js +3 -1
  109. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js.map +1 -1
  110. package/components/MenuSeparator/MenuSeparator.d.ts +3 -1
  111. package/components/MenuSeparator/MenuSeparator.md +14 -0
  112. package/components/Modal/Modal.styles/Modal.styles.js +18 -15
  113. package/components/Modal/Modal.styles/Modal.styles.js.map +1 -1
  114. package/components/Modal/Modal.styles.d.ts +1 -0
  115. package/components/Modal/ModalClose/ModalClose.js +25 -2
  116. package/components/Modal/ModalClose/ModalClose.js.map +1 -1
  117. package/components/Textarea/Textarea/Textarea.js +1 -2
  118. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  119. package/components/Textarea/Textarea.d.ts +0 -2
  120. package/components/Toggle/Toggle/Toggle.js +11 -5
  121. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  122. package/components/Toggle/Toggle.d.ts +47 -1
  123. package/components/Toggle/Toggle.md +83 -9
  124. package/components/Toggle/Toggle.styles/Toggle.styles.js +21 -15
  125. package/components/Toggle/Toggle.styles/Toggle.styles.js.map +1 -1
  126. package/components/Toggle/Toggle.styles.d.ts +3 -0
  127. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +9 -6
  128. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  129. package/components/TooltipMenu/TooltipMenu.d.ts +26 -8
  130. package/components/TooltipMenu/TooltipMenu.md +76 -8
  131. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  132. package/internal/CommonWrapper/CommonWrapper.d.ts +9 -1
  133. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +2 -1
  134. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  135. package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js +3 -2
  136. package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js.map +1 -1
  137. package/internal/InputLikeText/InputLikeText/InputLikeText.js +6 -3
  138. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  139. package/internal/InputLikeText/InputLikeText.d.ts +1 -0
  140. package/internal/InputLikeText/InputLikeText.styles/InputLikeText.styles.js +1 -1
  141. package/internal/InputLikeText/InputLikeText.styles/InputLikeText.styles.js.map +1 -1
  142. package/internal/InputLikeText/InputLikeText.styles.d.ts +1 -1
  143. package/internal/RenderContainer/RenderContainer/RenderContainer.js +2 -1
  144. package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
  145. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  146. package/internal/themes/DefaultTheme/DefaultTheme.js +16 -1
  147. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  148. package/internal/themes/DefaultTheme.d.ts +3 -0
  149. package/lib/Upgrades/Upgrades.js +13 -0
  150. package/lib/Upgrades/Upgrades.js.map +1 -1
  151. package/lib/Upgrades.d.ts +2 -0
  152. package/lib/theming/Emotion/Emotion.js +1 -1
  153. package/lib/theming/Emotion/Emotion.js.map +1 -1
  154. package/package.json +2 -2
  155. package/cjs/components/CurrencyLabel/CurrencyLabel.styles.d.ts +0 -4
  156. package/cjs/components/CurrencyLabel/CurrencyLabel.styles.js +0 -9
  157. package/cjs/components/CurrencyLabel/CurrencyLabel.styles.js.map +0 -1
  158. package/components/CurrencyLabel/CurrencyLabel.styles/CurrencyLabel.styles.js +0 -10
  159. package/components/CurrencyLabel/CurrencyLabel.styles/CurrencyLabel.styles.js.map +0 -1
  160. package/components/CurrencyLabel/CurrencyLabel.styles/package.json +0 -6
  161. package/components/CurrencyLabel/CurrencyLabel.styles.d.ts +0 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["Toggle.styles.ts"],"names":["css","memoizeStyle","prefix","globalClasses","handle","container","containerDisabled","containerLoading","background","styles","root","t","handleWidthWithBorders","toggleHeight","handleActiveWidth","toggleBorderWidth","toggleHandleActiveWidthIncrement","toggleBgHover","toggleWidth","handleSize","toggleBg","toggleHandleBorderRadius","handleDisabled","toggleDisabledHandleBg","input","toggleBgChecked","toggleBorderColor","toggleBgDisabled","toggleBorderRadius","focused","outlineColorFocus","toggleOutlineWidth","toggleFocusShadowColor","activeBackground","activeBackgroundLoading","toggleBgActive","isWarning","toggleShadowColorWarning","isError","toggleShadowColorError","outline","toggleBaseBg","wrapper","disabled","rootLeft","caption","toggleTextColor","toggleCaptionGap","captionLeft"],"mappings":"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","sourcesContent":["import { css, memoizeStyle, prefix } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const globalClasses = prefix('toggle')({\n handle: 'handle',\n container: 'container',\n containerDisabled: 'container-disabled',\n containerLoading: 'container-loading',\n background: 'background',\n});\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n const handleWidthWithBorders = t.toggleHeight;\n const handleActiveWidth = `calc(${handleWidthWithBorders} - 2 * ${t.toggleBorderWidth} + ${t.toggleHandleActiveWidthIncrement})`;\n return css`\n display: inline-flex;\n cursor: pointer;\n\n &:hover .${globalClasses.handle} {\n background: ${t.toggleBgHover};\n }\n &:active .${globalClasses.handle} {\n width: ${handleActiveWidth};\n }\n &:active input:checked ~ .${globalClasses.handle} {\n transform: translateX(${t.toggleWidth}) translateX(-${handleWidthWithBorders})\n translateX(-${t.toggleHandleActiveWidthIncrement});\n }\n `;\n },\n\n handle(t: Theme) {\n const handleSize = `calc(${t.toggleHeight} - 2 * ${t.toggleBorderWidth})`;\n return css`\n background: ${t.toggleBg};\n border-radius: ${t.toggleHandleBorderRadius};\n bottom: ${t.toggleBorderWidth};\n box-shadow: 0 ${t.toggleBorderWidth} 0 0 rgba(0, 0, 0, 0.15), 0 0 0 ${t.toggleBorderWidth} rgba(0, 0, 0, 0.15);\n height: ${handleSize};\n left: ${t.toggleBorderWidth};\n position: absolute;\n top: ${t.toggleBorderWidth};\n transition: 0.2s ease-in;\n width: ${handleSize};\n `;\n },\n\n handleDisabled(t: Theme) {\n const handleSize = `calc(${t.toggleHeight} - 2 * ${t.toggleBorderWidth})`;\n return css`\n background: ${t.toggleDisabledHandleBg} !important; // override root hover/active styles\n width: ${handleSize} !important; // override root active styles\n `;\n },\n\n input(t: Theme) {\n const handleWidthWithBorders = t.toggleHeight;\n return css`\n position: absolute;\n opacity: 0;\n\n &:focus {\n outline: none;\n }\n &:checked ~ .${globalClasses.container} {\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBgChecked};\n background: ${t.toggleBgChecked};\n transition: background 0s 0.2s;\n }\n &:checked ~ .${globalClasses.containerDisabled} {\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBorderColor};\n background: ${t.toggleBgDisabled};\n transition: background 0s 0.2s;\n }\n &:checked ~ .${globalClasses.containerLoading} {\n background: ${t.toggleBorderColor};\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBorderColor};\n }\n &:checked ~ .${globalClasses.container} .${globalClasses.background} {\n width: 70%;\n background: ${t.toggleBgChecked};\n }\n &:checked ~ .${globalClasses.containerDisabled} .${globalClasses.background} {\n width: 70%;\n background: ${t.toggleBgDisabled};\n border-radius: calc(${t.toggleHeight} * 0.5) 0 0 calc(${t.toggleHeight} * 0.5);\n box-shadow: inset 0 0 0 1px ${t.toggleBorderColor};\n }\n &:checked ~ .${globalClasses.handle} {\n transform: translateX(${t.toggleWidth}) translateX(-${handleWidthWithBorders});\n }\n `;\n },\n\n container(t: Theme) {\n return css`\n border-radius: ${t.toggleBorderRadius};\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBorderColor};\n height: 100%;\n overflow: hidden;\n position: absolute;\n width: 100%;\n /* fixes overflow issue in Safari: https://bugs.webkit.org/show_bug.cgi?id=98538 */\n z-index: 0;\n `;\n },\n\n containerDisabled(t: Theme) {\n return css`\n background: ${t.toggleBgDisabled};\n `;\n },\n\n focused(t: Theme) {\n return css`\n box-shadow: 0 0 0 1px ${t.outlineColorFocus}, 0 0 0 ${t.toggleOutlineWidth} ${t.toggleFocusShadowColor};\n `;\n },\n\n activeBackground() {\n return css`\n background: inherit;\n bottom: 0;\n left: 0;\n position: absolute;\n top: 0;\n transition: 0.2s ease-in;\n width: 10px;\n `;\n },\n\n activeBackgroundLoading(t: Theme) {\n return css`\n background: ${t.toggleBgActive};\n `;\n },\n\n isWarning(t: Theme) {\n return css`\n box-shadow: 0 0 0 1px ${t.outlineColorFocus}, 0 0 0 ${t.toggleOutlineWidth} ${t.toggleShadowColorWarning};\n `;\n },\n\n isError(t: Theme) {\n return css`\n box-shadow: 0 0 0 1px ${t.outlineColorFocus}, 0 0 0 ${t.toggleOutlineWidth} ${t.toggleShadowColorError};\n `;\n },\n\n outline(t: Theme) {\n return css`\n background: ${t.toggleBaseBg};\n border-radius: ${t.toggleBorderRadius};\n `;\n },\n\n wrapper(t: Theme) {\n return css`\n display: inline-block;\n height: ${t.toggleHeight};\n position: relative;\n width: ${t.toggleWidth};\n flex: 1 0 ${t.toggleWidth};\n\n &::after {\n content: '';\n display: inline-block;\n }\n `;\n },\n\n disabled() {\n return css`\n cursor: default;\n `;\n },\n\n rootLeft() {\n return css`\n flex-direction: row-reverse;\n `;\n },\n\n caption(t: Theme) {\n return css`\n color: ${t.toggleTextColor};\n padding: 0 0 0 ${t.toggleCaptionGap};\n `;\n },\n\n captionLeft(t: Theme) {\n return css`\n color: ${t.toggleTextColor};\n padding: 0 ${t.toggleCaptionGap} 0 0;\n `;\n },\n});\n"]}
1
+ {"version":3,"sources":["Toggle.styles.ts"],"names":["css","memoizeStyle","prefix","globalClasses","handle","container","disabled","containerDisabled","containerLoading","background","styles","root","t","handleWidthWithBorders","toggleHeight","handleActiveWidth","toggleBorderWidth","toggleHandleActiveWidthIncrement","toggleBgHover","toggleWidth","handleSize","toggleBg","toggleHandleBorderRadius","handleDisabled","toggleDisabledHandleBg","input","toggleBgChecked","toggleBorderColorDisabledChecked","toggleBgDisabledChecked","toggleBorderColor","toggleBorderRadius","toggleBgDisabled","toggleBorderColorDisabled","focused","outlineColorFocus","toggleOutlineWidth","toggleFocusShadowColor","activeBackground","disabledBackground","activeBackgroundLoading","toggleBgActive","isWarning","toggleShadowColorWarning","isError","toggleShadowColorError","outline","toggleBaseBg","wrapper","rootLeft","caption","toggleTextColor","toggleCaptionGap","disabledCaption","textColorDisabled","captionLeft"],"mappings":"kcAAA,SAASA,GAAT,EAAcC,YAAd,EAA4BC,MAA5B,QAA0C,2BAA1C;;;AAGA,OAAO,IAAMC,aAAa,GAAGD,MAAM,CAAC,QAAD,CAAN,CAAiB;AAC5CE,EAAAA,MAAM,EAAE,QADoC;AAE5CC,EAAAA,SAAS,EAAE,WAFiC;AAG5CC,EAAAA,QAAQ,EAAE,UAHkC;AAI5CC,EAAAA,iBAAiB,EAAE,oBAJyB;AAK5CC,EAAAA,gBAAgB,EAAE,mBAL0B;AAM5CC,EAAAA,UAAU,EAAE,YANgC,EAAjB,CAAtB;;;AASP,OAAO,IAAMC,MAAM,GAAGT,YAAY,CAAC;AACjCU,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,QAAMC,sBAAsB,GAAGD,CAAC,CAACE,YAAjC;AACA,QAAMC,iBAAiB,aAAWF,sBAAX,eAA2CD,CAAC,CAACI,iBAA7C,WAAoEJ,CAAC,CAACK,gCAAtE,MAAvB;AACA,WAAOjB,GAAP;;;;AAIaG,IAAAA,aAAa,CAACC,MAJ3B;AAKkBQ,IAAAA,CAAC,CAACM,aALpB;;AAOkBf,IAAAA,aAAa,CAACG,QAPhC,EAO8CH,aAAa,CAACC,MAP5D;AAQaW,IAAAA,iBARb;;AAUkBZ,IAAAA,aAAa,CAACG,QAVhC,EAU8DH,aAAa,CAACC,MAV5E;AAW4BQ,IAAAA,CAAC,CAACO,WAX9B,EAW0DN,sBAX1D;AAYoBD,IAAAA,CAAC,CAACK,gCAZtB;;;AAeD,GAnBgC;;AAqBjCb,EAAAA,MArBiC,kBAqB1BQ,CArB0B,EAqBhB;AACf,QAAMQ,UAAU,aAAWR,CAAC,CAACE,YAAb,eAAmCF,CAAC,CAACI,iBAArC,MAAhB;AACA,WAAOhB,GAAP;AACgBY,IAAAA,CAAC,CAACS,QADlB;AAEmBT,IAAAA,CAAC,CAACU,wBAFrB;AAGYV,IAAAA,CAAC,CAACI,iBAHd;AAIkBJ,IAAAA,CAAC,CAACI,iBAJpB,EAIwEJ,CAAC,CAACI,iBAJ1E;AAKYI,IAAAA,UALZ;AAMUR,IAAAA,CAAC,CAACI,iBANZ;;AAQSJ,IAAAA,CAAC,CAACI,iBARX;;AAUWI,IAAAA,UAVX;;AAYD,GAnCgC;;AAqCjCG,EAAAA,cArCiC,0BAqClBX,CArCkB,EAqCR;AACvB,WAAOZ,GAAP;AACgBY,IAAAA,CAAC,CAACY,sBADlB;;AAGD,GAzCgC;;AA2CjCC,EAAAA,KA3CiC,iBA2C3Bb,CA3C2B,EA2CjB;AACd,QAAMC,sBAAsB,GAAGD,CAAC,CAACE,YAAjC;AACA,WAAOd,GAAP;;;;;;;AAOiBG,IAAAA,aAAa,CAACE,SAP/B;AAQ8BO,IAAAA,CAAC,CAACI,iBARhC,EAQqDJ,CAAC,CAACc,eARvD;AASkBd,IAAAA,CAAC,CAACc,eATpB;;;AAYiBvB,IAAAA,aAAa,CAACI,iBAZ/B;AAa8BK,IAAAA,CAAC,CAACI,iBAbhC,EAaqDJ,CAAC,CAACe,gCAbvD;AAckBf,IAAAA,CAAC,CAACgB,uBAdpB;;;AAiBiBzB,IAAAA,aAAa,CAACK,gBAjB/B;AAkBkBI,IAAAA,CAAC,CAACiB,iBAlBpB;AAmB8BjB,IAAAA,CAAC,CAACI,iBAnBhC,EAmBqDJ,CAAC,CAACiB,iBAnBvD;;AAqBiB1B,IAAAA,aAAa,CAACE,SArB/B,EAqB6CF,aAAa,CAACM,UArB3D;;AAuBkBG,IAAAA,CAAC,CAACc,eAvBpB;;AAyBiBvB,IAAAA,aAAa,CAACI,iBAzB/B,EAyBqDJ,aAAa,CAACM,UAzBnE;;AA2BkBG,IAAAA,CAAC,CAACgB,uBA3BpB;AA4B0BhB,IAAAA,CAAC,CAACE,YA5B5B,EA4B4DF,CAAC,CAACE,YA5B9D;AA6BkCF,IAAAA,CAAC,CAACe,gCA7BpC;;AA+BiBxB,IAAAA,aAAa,CAACC,MA/B/B;AAgC4BQ,IAAAA,CAAC,CAACO,WAhC9B,EAgC0DN,sBAhC1D;;;AAmCD,GAhFgC;;AAkFjCR,EAAAA,SAlFiC,qBAkFvBO,CAlFuB,EAkFb;AAClB,WAAOZ,GAAP;AACmBY,IAAAA,CAAC,CAACkB,kBADrB;AAE4BlB,IAAAA,CAAC,CAACI,iBAF9B,EAEmDJ,CAAC,CAACiB,iBAFrD;;;;;;;;AAUD,GA7FgC;;AA+FjCtB,EAAAA,iBA/FiC,6BA+FfK,CA/Fe,EA+FL;AAC1B,WAAOZ,GAAP;AACgBY,IAAAA,CAAC,CAACmB,gBADlB;AAEgCnB,IAAAA,CAAC,CAACoB,yBAFlC;;AAID,GApGgC;;AAsGjCC,EAAAA,OAtGiC,mBAsGzBrB,CAtGyB,EAsGf;AAChB,WAAOZ,GAAP;AAC0BY,IAAAA,CAAC,CAACsB,iBAD5B,EACwDtB,CAAC,CAACuB,kBAD1D,EACgFvB,CAAC,CAACwB,sBADlF;;AAGD,GA1GgC;;AA4GjCC,EAAAA,gBA5GiC,8BA4Gd;AACjB,WAAOrC,GAAP;;;;;;;;;AASD,GAtHgC;;AAwHjCsC,EAAAA,kBAxHiC,8BAwHd1B,CAxHc,EAwHJ;AAC3B,WAAOZ,GAAP;AACgCY,IAAAA,CAAC,CAACoB,yBADlC;;;AAID,GA7HgC;;AA+HjCO,EAAAA,uBA/HiC,mCA+HT3B,CA/HS,EA+HC;AAChC,WAAOZ,GAAP;AACgBY,IAAAA,CAAC,CAAC4B,cADlB;;AAGD,GAnIgC;;AAqIjCC,EAAAA,SArIiC,qBAqIvB7B,CArIuB,EAqIb;AAClB,WAAOZ,GAAP;AAC0BY,IAAAA,CAAC,CAACsB,iBAD5B,EACwDtB,CAAC,CAACuB,kBAD1D,EACgFvB,CAAC,CAAC8B,wBADlF;;AAGD,GAzIgC;;AA2IjCC,EAAAA,OA3IiC,mBA2IzB/B,CA3IyB,EA2If;AAChB,WAAOZ,GAAP;AAC0BY,IAAAA,CAAC,CAACsB,iBAD5B,EACwDtB,CAAC,CAACuB,kBAD1D,EACgFvB,CAAC,CAACgC,sBADlF;;AAGD,GA/IgC;;AAiJjCC,EAAAA,OAjJiC,mBAiJzBjC,CAjJyB,EAiJf;AAChB,WAAOZ,GAAP;AACgBY,IAAAA,CAAC,CAACkC,YADlB;AAEmBlC,IAAAA,CAAC,CAACkB,kBAFrB;;AAID,GAtJgC;;AAwJjCiB,EAAAA,OAxJiC,mBAwJzBnC,CAxJyB,EAwJf;AAChB,WAAOZ,GAAP;;AAEYY,IAAAA,CAAC,CAACE,YAFd;;AAIWF,IAAAA,CAAC,CAACO,WAJb;AAKcP,IAAAA,CAAC,CAACO,WALhB;;;;;;;AAYD,GArKgC;;AAuKjCb,EAAAA,QAvKiC,sBAuKtB;AACT,WAAON,GAAP;;;AAGD,GA3KgC;;AA6KjCgD,EAAAA,QA7KiC,sBA6KtB;AACT,WAAOhD,GAAP;;;AAGD,GAjLgC;;AAmLjCiD,EAAAA,OAnLiC,mBAmLzBrC,CAnLyB,EAmLf;AAChB,WAAOZ,GAAP;AACWY,IAAAA,CAAC,CAACsC,eADb;AAEmBtC,IAAAA,CAAC,CAACuC,gBAFrB;;AAID,GAxLgC;;AA0LjCC,EAAAA,eA1LiC,2BA0LjBxC,CA1LiB,EA0LP;AACxB,WAAOZ,GAAP;AACWY,IAAAA,CAAC,CAACyC,iBADb;;AAGD,GA9LgC;;AAgMjCC,EAAAA,WAhMiC,uBAgMrB1C,CAhMqB,EAgMX;AACpB,WAAOZ,GAAP;AACWY,IAAAA,CAAC,CAACsC,eADb;AAEetC,IAAAA,CAAC,CAACuC,gBAFjB;;AAID,GArMgC,EAAD,CAA3B","sourcesContent":["import { css, memoizeStyle, prefix } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const globalClasses = prefix('toggle')({\n handle: 'handle',\n container: 'container',\n disabled: 'disabled',\n containerDisabled: 'container-disabled',\n containerLoading: 'container-loading',\n background: 'background',\n});\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n const handleWidthWithBorders = t.toggleHeight;\n const handleActiveWidth = `calc(${handleWidthWithBorders} - 2 * ${t.toggleBorderWidth} + ${t.toggleHandleActiveWidthIncrement})`;\n return css`\n display: inline-flex;\n cursor: pointer;\n\n &:hover .${globalClasses.handle} {\n background: ${t.toggleBgHover};\n }\n &:active:not(.${globalClasses.disabled}) .${globalClasses.handle} {\n width: ${handleActiveWidth};\n }\n &:active:not(.${globalClasses.disabled}) input:checked ~ .${globalClasses.handle} {\n transform: translateX(${t.toggleWidth}) translateX(-${handleWidthWithBorders})\n translateX(-${t.toggleHandleActiveWidthIncrement});\n }\n `;\n },\n\n handle(t: Theme) {\n const handleSize = `calc(${t.toggleHeight} - 2 * ${t.toggleBorderWidth})`;\n return css`\n background: ${t.toggleBg};\n border-radius: ${t.toggleHandleBorderRadius};\n bottom: ${t.toggleBorderWidth};\n box-shadow: 0 ${t.toggleBorderWidth} 0 0 rgba(0, 0, 0, 0.15), 0 0 0 ${t.toggleBorderWidth} rgba(0, 0, 0, 0.15);\n height: ${handleSize};\n left: ${t.toggleBorderWidth};\n position: absolute;\n top: ${t.toggleBorderWidth};\n transition: 0.2s ease-in;\n width: ${handleSize};\n `;\n },\n\n handleDisabled(t: Theme) {\n return css`\n background: ${t.toggleDisabledHandleBg} !important; // override root hover/active styles\n `;\n },\n\n input(t: Theme) {\n const handleWidthWithBorders = t.toggleHeight;\n return css`\n position: absolute;\n opacity: 0;\n\n &:focus {\n outline: none;\n }\n &:checked ~ .${globalClasses.container} {\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBgChecked};\n background: ${t.toggleBgChecked};\n transition: background 0s 0.2s;\n }\n &:checked ~ .${globalClasses.containerDisabled} {\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBorderColorDisabledChecked};\n background: ${t.toggleBgDisabledChecked};\n transition: background 0s 0.2s;\n }\n &:checked ~ .${globalClasses.containerLoading} {\n background: ${t.toggleBorderColor};\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBorderColor};\n }\n &:checked ~ .${globalClasses.container} .${globalClasses.background} {\n width: 70%;\n background: ${t.toggleBgChecked};\n }\n &:checked ~ .${globalClasses.containerDisabled} .${globalClasses.background} {\n width: 70%;\n background: ${t.toggleBgDisabledChecked};\n border-radius: calc(${t.toggleHeight} * 0.5) 0 0 calc(${t.toggleHeight} * 0.5);\n box-shadow: inset 0 0 0 1px ${t.toggleBorderColorDisabledChecked};\n }\n &:checked ~ .${globalClasses.handle} {\n transform: translateX(${t.toggleWidth}) translateX(-${handleWidthWithBorders});\n }\n `;\n },\n\n container(t: Theme) {\n return css`\n border-radius: ${t.toggleBorderRadius};\n box-shadow: inset 0 0 0 ${t.toggleBorderWidth} ${t.toggleBorderColor};\n height: 100%;\n overflow: hidden;\n position: absolute;\n width: 100%;\n /* fixes overflow issue in Safari: https://bugs.webkit.org/show_bug.cgi?id=98538 */\n z-index: 0;\n `;\n },\n\n containerDisabled(t: Theme) {\n return css`\n background: ${t.toggleBgDisabled};\n box-shadow: inset 0 0 0 1px ${t.toggleBorderColorDisabled};\n `;\n },\n\n focused(t: Theme) {\n return css`\n box-shadow: 0 0 0 1px ${t.outlineColorFocus}, 0 0 0 ${t.toggleOutlineWidth} ${t.toggleFocusShadowColor};\n `;\n },\n\n activeBackground() {\n return css`\n background: inherit;\n bottom: 0;\n left: 0;\n position: absolute;\n top: 0;\n transition: 0.2s ease-in;\n width: 10px;\n `;\n },\n\n disabledBackground(t: Theme) {\n return css`\n box-shadow: inset 0 0 0 1px ${t.toggleBorderColorDisabled};\n width: 0;\n `;\n },\n\n activeBackgroundLoading(t: Theme) {\n return css`\n background: ${t.toggleBgActive};\n `;\n },\n\n isWarning(t: Theme) {\n return css`\n box-shadow: 0 0 0 1px ${t.outlineColorFocus}, 0 0 0 ${t.toggleOutlineWidth} ${t.toggleShadowColorWarning};\n `;\n },\n\n isError(t: Theme) {\n return css`\n box-shadow: 0 0 0 1px ${t.outlineColorFocus}, 0 0 0 ${t.toggleOutlineWidth} ${t.toggleShadowColorError};\n `;\n },\n\n outline(t: Theme) {\n return css`\n background: ${t.toggleBaseBg};\n border-radius: ${t.toggleBorderRadius};\n `;\n },\n\n wrapper(t: Theme) {\n return css`\n display: inline-block;\n height: ${t.toggleHeight};\n position: relative;\n width: ${t.toggleWidth};\n flex: 1 0 ${t.toggleWidth};\n\n &::after {\n content: '';\n display: inline-block;\n }\n `;\n },\n\n disabled() {\n return css`\n cursor: default;\n `;\n },\n\n rootLeft() {\n return css`\n flex-direction: row-reverse;\n `;\n },\n\n caption(t: Theme) {\n return css`\n color: ${t.toggleTextColor};\n padding: 0 0 0 ${t.toggleCaptionGap};\n `;\n },\n\n disabledCaption(t: Theme) {\n return css`\n color: ${t.textColorDisabled};\n `;\n },\n\n captionLeft(t: Theme) {\n return css`\n color: ${t.toggleTextColor};\n padding: 0 ${t.toggleCaptionGap} 0 0;\n `;\n },\n});\n"]}
@@ -2,6 +2,7 @@ import { Theme } from '../../lib/theming/Theme';
2
2
  export declare const globalClasses: {
3
3
  handle: string;
4
4
  container: string;
5
+ disabled: string;
5
6
  containerDisabled: string;
6
7
  containerLoading: string;
7
8
  background: string;
@@ -15,6 +16,7 @@ export declare const styles: {
15
16
  containerDisabled(t: Theme): string;
16
17
  focused(t: Theme): string;
17
18
  activeBackground(): string;
19
+ disabledBackground(t: Theme): string;
18
20
  activeBackgroundLoading(t: Theme): string;
19
21
  isWarning(t: Theme): string;
20
22
  isError(t: Theme): string;
@@ -23,5 +25,6 @@ export declare const styles: {
23
25
  disabled(): string;
24
26
  rootLeft(): string;
25
27
  caption(t: Theme): string;
28
+ disabledCaption(t: Theme): string;
26
29
  captionLeft(t: Theme): string;
27
30
  };
@@ -6,12 +6,15 @@ import { PopupMenu } from "../../../internal/PopupMenu";
6
6
  import { isProductionEnv, isTestEnv } from "../../../lib/currentEnvironment";
7
7
  import { CommonWrapper } from "../../../internal/CommonWrapper";
8
8
  /**
9
- * Меню, раскрывающееся по клику на переданный в ```caption``` элемент.
10
- * Положение зависит от переданного массива ```positions``` и работает так:
11
- * первое значаение в массиве - дефолтная позиция, меню раскрывается так, если ничего не мешает ему раскрыться,
12
- * если раскрыться в данной позиции не получается - берется следующие значение, и так далее.
13
- * Если меню должно раскрываться только в одну сторону - передаем в ```positions``` массив с одним элементом.
14
- * Если ```positions``` передан или передан пустой массив, используются все возможные положения.
9
+ * Меню, раскрывающееся по клику на переданный в `caption` элемент.
10
+ *
11
+ * Положение меню задаётся с помощью массива `positions` и работает так:
12
+ * первое значение в массиве - дефолтная позиция, меню раскроется на этой позиции, если оно не будет выходить за пределы `viewport`,
13
+ * если раскрыться в дефолтной позиции не получится - будет использована следующая позиция, и так далее, пока не будет достигнут конец массива. Если все положения из списка будут выходить за пределы `viewport`, в качестве положения будет использовано первое значение в массиве.
14
+ *
15
+ * Если меню должно раскрываться только в одну сторону - массив `positions` должен содержать только один элемент: сторону, в которую должно открываться меню.
16
+ *
17
+ * Если массив `positions` не передан (или передан пустой массив), будут использованы всевозможные значения.
15
18
  */
16
19
 
17
20
  export var TooltipMenu = /*#__PURE__*/function (_React$Component) {
@@ -1 +1 @@
1
- {"version":3,"sources":["TooltipMenu.tsx"],"names":["React","ThemeFactory","ThemeContext","PopupMenu","isProductionEnv","isTestEnv","CommonWrapper","TooltipMenu","props","caption","Error","render","theme","create","popupPinOffset","tooltipMenuPinOffset","popupMargin","tooltipMenuMargin","popupPinSize","tooltipMenuPinSize","renderMain","menuMaxHeight","menuWidth","header","footer","positions","disableAnimations","children","Component","__KONTUR_REACT_UI__","defaultProps"],"mappings":"sEAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,SAAT,QAA0C,0BAA1C;;AAEA,SAASC,eAAT,EAA0BC,SAA1B,QAA2C,8BAA3C;;;AAGA,SAAsBC,aAAtB,QAA2C,8BAA3C;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAaC,WAAb;;;;;;AAME,uBAAYC,KAAZ,EAAqC;AACnC,wCAAMA,KAAN;;AAEA,QAAI,CAACA,KAAK,CAACC,OAAP,IAAkB,CAACL,eAAvB,EAAwC;AACtC,YAAM,IAAIM,KAAJ,CAAU,+BAAV,CAAN;AACD,KALkC;AAMpC,GAZH;;AAcSC,EAAAA,MAdT,GAcE,kBAAgB;AACd;AACE,0BAAC,YAAD,CAAc,QAAd;AACG,gBAACC,KAAD,EAAW;AACV;AACE,8BAAC,YAAD,CAAc,QAAd;AACE,YAAA,KAAK,EAAEX,YAAY,CAACY,MAAb;AACL;AACEC,cAAAA,cAAc,EAAEF,KAAK,CAACG,oBADxB;AAEEC,cAAAA,WAAW,EAAEJ,KAAK,CAACK,iBAFrB;AAGEC,cAAAA,YAAY,EAAEN,KAAK,CAACO,kBAHtB,EADK;;AAMLP,YAAAA,KANK,CADT;;;AAUG,UAAA,MAAI,CAACQ,UAAL,EAVH,CADF;;;AAcD,OAhBH,CADF;;;AAoBD,GAnCH;;AAqCSA,EAAAA,UArCT,GAqCE,sBAAoB;AAClB,QAAI,CAAC,KAAKZ,KAAL,CAAWC,OAAhB,EAAyB;AACvB,aAAO,IAAP;AACD;;AAED;AACE,0BAAC,aAAD,EAAmB,KAAKD,KAAxB;AACE,0BAAC,SAAD;AACE,QAAA,aAAa,EAAE,KAAKA,KAAL,CAAWa,aAD5B;AAEE,QAAA,SAAS,EAAE,KAAKb,KAAL,CAAWc,SAFxB;AAGE,QAAA,OAAO,EAAE,KAAKd,KAAL,CAAWC,OAHtB;AAIE,QAAA,MAAM,EAAE,KAAKD,KAAL,CAAWe,MAJrB;AAKE,QAAA,MAAM,EAAE,KAAKf,KAAL,CAAWgB,MALrB;AAME,QAAA,SAAS,EAAE,KAAKhB,KAAL,CAAWiB,SANxB;AAOE,QAAA,WAAW,EAAE,IAPf;AAQE,QAAA,iBAAiB,EAAE,KAAKjB,KAAL,CAAWkB,iBARhC;;AAUG,WAAKlB,KAAL,CAAWmB,QAVd,CADF,CADF;;;;AAgBD,GA1DH,sBAAiC3B,KAAK,CAAC4B,SAAvC,EAAarB,W,CACGsB,mB,GAAsB,a,CADzBtB,W,CAGGuB,Y,GAAe,EAC3BJ,iBAAiB,EAAErB,SADQ,E","sourcesContent":["import React from 'react';\n\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { PopupMenu, PopupMenuProps } from '../../internal/PopupMenu';\nimport { MenuItemProps } from '../MenuItem';\nimport { isProductionEnv, isTestEnv } from '../../lib/currentEnvironment';\nimport { MenuHeaderProps } from '../MenuHeader';\nimport { PopupPosition } from '../../internal/Popup';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\n\nexport type TooltipMenuChildType = React.ReactElement<MenuItemProps | {} | MenuHeaderProps>;\n\nexport interface TooltipMenuProps extends CommonProps {\n children?: TooltipMenuChildType | TooltipMenuChildType[];\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо ```caption```,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: PopupMenuProps['caption'];\n header?: React.ReactNode;\n footer?: React.ReactNode;\n /** Массив разрешенных положений меню относительно caption'а. */\n positions?: PopupPosition[];\n /**\n * Не показывать анимацию\n */\n disableAnimations: boolean;\n}\n\n/**\n * Меню, раскрывающееся по клику на переданный в ```caption``` элемент.\n * Положение зависит от переданного массива ```positions``` и работает так:\n * первое значаение в массиве - дефолтная позиция, меню раскрывается так, если ничего не мешает ему раскрыться,\n * если раскрыться в данной позиции не получается - берется следующие значение, и так далее.\n * Если меню должно раскрываться только в одну сторону - передаем в ```positions``` массив с одним элементом.\n * Если ```positions``` передан или передан пустой массив, используются все возможные положения.\n */\nexport class TooltipMenu extends React.Component<TooltipMenuProps> {\n public static __KONTUR_REACT_UI__ = 'TooltipMenu';\n\n public static defaultProps = {\n disableAnimations: isTestEnv,\n };\n constructor(props: TooltipMenuProps) {\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 (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.tooltipMenuPinOffset,\n popupMargin: theme.tooltipMenuMargin,\n popupPinSize: theme.tooltipMenuPinSize,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n if (!this.props.caption) {\n return null;\n }\n\n return (\n <CommonWrapper {...this.props}>\n <PopupMenu\n menuMaxHeight={this.props.menuMaxHeight}\n menuWidth={this.props.menuWidth}\n caption={this.props.caption}\n header={this.props.header}\n footer={this.props.footer}\n positions={this.props.positions}\n popupHasPin={true}\n disableAnimations={this.props.disableAnimations}\n >\n {this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["TooltipMenu.tsx"],"names":["React","ThemeFactory","ThemeContext","PopupMenu","isProductionEnv","isTestEnv","CommonWrapper","TooltipMenu","props","caption","Error","render","theme","create","popupPinOffset","tooltipMenuPinOffset","popupMargin","tooltipMenuMargin","popupPinSize","tooltipMenuPinSize","renderMain","menuMaxHeight","menuWidth","header","footer","positions","disableAnimations","children","Component","__KONTUR_REACT_UI__","defaultProps"],"mappings":"sEAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,SAAT,QAA0C,0BAA1C;;AAEA,SAASC,eAAT,EAA0BC,SAA1B,QAA2C,8BAA3C;;;AAGA,SAAsBC,aAAtB,QAA2C,8BAA3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAaC,WAAb;;;;;;AAME,uBAAYC,KAAZ,EAAqC;AACnC,wCAAMA,KAAN;;AAEA,QAAI,CAACA,KAAK,CAACC,OAAP,IAAkB,CAACL,eAAvB,EAAwC;AACtC,YAAM,IAAIM,KAAJ,CAAU,+BAAV,CAAN;AACD,KALkC;AAMpC,GAZH;;AAcSC,EAAAA,MAdT,GAcE,kBAAgB;AACd;AACE,0BAAC,YAAD,CAAc,QAAd;AACG,gBAACC,KAAD,EAAW;AACV;AACE,8BAAC,YAAD,CAAc,QAAd;AACE,YAAA,KAAK,EAAEX,YAAY,CAACY,MAAb;AACL;AACEC,cAAAA,cAAc,EAAEF,KAAK,CAACG,oBADxB;AAEEC,cAAAA,WAAW,EAAEJ,KAAK,CAACK,iBAFrB;AAGEC,cAAAA,YAAY,EAAEN,KAAK,CAACO,kBAHtB,EADK;;AAMLP,YAAAA,KANK,CADT;;;AAUG,UAAA,MAAI,CAACQ,UAAL,EAVH,CADF;;;AAcD,OAhBH,CADF;;;AAoBD,GAnCH;;AAqCSA,EAAAA,UArCT,GAqCE,sBAAoB;AAClB,QAAI,CAAC,KAAKZ,KAAL,CAAWC,OAAhB,EAAyB;AACvB,aAAO,IAAP;AACD;;AAED;AACE,0BAAC,aAAD,EAAmB,KAAKD,KAAxB;AACE,0BAAC,SAAD;AACE,QAAA,aAAa,EAAE,KAAKA,KAAL,CAAWa,aAD5B;AAEE,QAAA,SAAS,EAAE,KAAKb,KAAL,CAAWc,SAFxB;AAGE,QAAA,OAAO,EAAE,KAAKd,KAAL,CAAWC,OAHtB;AAIE,QAAA,MAAM,EAAE,KAAKD,KAAL,CAAWe,MAJrB;AAKE,QAAA,MAAM,EAAE,KAAKf,KAAL,CAAWgB,MALrB;AAME,QAAA,SAAS,EAAE,KAAKhB,KAAL,CAAWiB,SANxB;AAOE,QAAA,WAAW,EAAE,IAPf;AAQE,QAAA,iBAAiB,EAAE,KAAKjB,KAAL,CAAWkB,iBARhC;;AAUG,WAAKlB,KAAL,CAAWmB,QAVd,CADF,CADF;;;;AAgBD,GA1DH,sBAAiC3B,KAAK,CAAC4B,SAAvC,EAAarB,W,CACGsB,mB,GAAsB,a,CADzBtB,W,CAGGuB,Y,GAAe,EAC3BJ,iBAAiB,EAAErB,SADQ,E","sourcesContent":["import React from 'react';\n\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { PopupMenu, PopupMenuProps } from '../../internal/PopupMenu';\nimport { MenuItemProps } from '../MenuItem';\nimport { isProductionEnv, isTestEnv } from '../../lib/currentEnvironment';\nimport { MenuHeaderProps } from '../MenuHeader';\nimport { PopupPosition } from '../../internal/Popup';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\n\nexport type TooltipMenuChildType = React.ReactElement<MenuItemProps | {} | MenuHeaderProps>;\n\nexport interface TooltipMenuProps extends CommonProps {\n children?: TooltipMenuChildType | TooltipMenuChildType[];\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо `caption`,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: PopupMenuProps['caption'];\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 /** Список позиций доступных для расположения выпадашки относительно `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 */\n positions?: PopupPosition[];\n /**\n * Не показывать анимацию\n */\n disableAnimations: boolean;\n}\n\n/**\n * Меню, раскрывающееся по клику на переданный в `caption` элемент.\n *\n * Положение меню задаётся с помощью массива `positions` и работает так:\n * первое значение в массиве - дефолтная позиция, меню раскроется на этой позиции, если оно не будет выходить за пределы `viewport`,\n * если раскрыться в дефолтной позиции не получится - будет использована следующая позиция, и так далее, пока не будет достигнут конец массива. Если все положения из списка будут выходить за пределы `viewport`, в качестве положения будет использовано первое значение в массиве.\n *\n * Если меню должно раскрываться только в одну сторону - массив `positions` должен содержать только один элемент: сторону, в которую должно открываться меню.\n *\n * Если массив `positions` не передан (или передан пустой массив), будут использованы всевозможные значения.\n */\nexport class TooltipMenu extends React.Component<TooltipMenuProps> {\n public static __KONTUR_REACT_UI__ = 'TooltipMenu';\n\n public static defaultProps = {\n disableAnimations: isTestEnv,\n };\n constructor(props: TooltipMenuProps) {\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 (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.tooltipMenuPinOffset,\n popupMargin: theme.tooltipMenuMargin,\n popupPinSize: theme.tooltipMenuPinSize,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n if (!this.props.caption) {\n return null;\n }\n\n return (\n <CommonWrapper {...this.props}>\n <PopupMenu\n menuMaxHeight={this.props.menuMaxHeight}\n menuWidth={this.props.menuWidth}\n caption={this.props.caption}\n header={this.props.header}\n footer={this.props.footer}\n positions={this.props.positions}\n popupHasPin={true}\n disableAnimations={this.props.disableAnimations}\n >\n {this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n}\n"]}
@@ -13,14 +13,29 @@ export interface TooltipMenuProps extends CommonProps {
13
13
  menuWidth?: number | string;
14
14
  /**
15
15
  * Элемент или функция возвращающая элемент,
16
- * если передана, используется вместо ```caption```,
16
+ * если передана, используется вместо `caption`,
17
17
  * в таком случае управлять открытием и закрытием меню
18
18
  * придется в этой функции
19
19
  */
20
20
  caption: PopupMenuProps['caption'];
21
+ /**
22
+ * Произвольный элемент, который будет отрендерен в шапке меню.
23
+ *
24
+ * _Примечание_: контрол [`MenuHeader`](#/Components/MenuHeader) передаётся только в `children` меню-контролов. Не стоит передавать `MenuHeader` в `header`.
25
+ */
21
26
  header?: React.ReactNode;
27
+ /**
28
+ * Произвольный элемент, который будет отрендерен в подвале меню.
29
+ *
30
+ * Перед элементом переданным в `footer` будет отрендерен [`MenuSeparator`](#/Components/MenuSeparator).
31
+ */
22
32
  footer?: React.ReactNode;
23
- /** Массив разрешенных положений меню относительно caption'а. */
33
+ /** Список позиций доступных для расположения выпадашки относительно `caption`.
34
+ *
35
+ * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.
36
+ *
37
+ * **Возможные значения**: `top left`, `top center`, `top right`, `right top`, `right middle`, `right bottom`, `bottom left`, `bottom center`, `bottom right`, `left top`, `left middle`, `left bottom`
38
+ */
24
39
  positions?: PopupPosition[];
25
40
  /**
26
41
  * Не показывать анимацию
@@ -28,12 +43,15 @@ export interface TooltipMenuProps extends CommonProps {
28
43
  disableAnimations: boolean;
29
44
  }
30
45
  /**
31
- * Меню, раскрывающееся по клику на переданный в ```caption``` элемент.
32
- * Положение зависит от переданного массива ```positions``` и работает так:
33
- * первое значаение в массиве - дефолтная позиция, меню раскрывается так, если ничего не мешает ему раскрыться,
34
- * если раскрыться в данной позиции не получается - берется следующие значение, и так далее.
35
- * Если меню должно раскрываться только в одну сторону - передаем в ```positions``` массив с одним элементом.
36
- * Если ```positions``` передан или передан пустой массив, используются все возможные положения.
46
+ * Меню, раскрывающееся по клику на переданный в `caption` элемент.
47
+ *
48
+ * Положение меню задаётся с помощью массива `positions` и работает так:
49
+ * первое значение в массиве - дефолтная позиция, меню раскроется на этой позиции, если оно не будет выходить за пределы `viewport`,
50
+ * если раскрыться в дефолтной позиции не получится - будет использована следующая позиция, и так далее, пока не будет достигнут конец массива. Если все положения из списка будут выходить за пределы `viewport`, в качестве положения будет использовано первое значение в массиве.
51
+ *
52
+ * Если меню должно раскрываться только в одну сторону - массив `positions` должен содержать только один элемент: сторону, в которую должно открываться меню.
53
+ *
54
+ * Если массив `positions` не передан (или передан пустой массив), будут использованы всевозможные значения.
37
55
  */
38
56
  export declare class TooltipMenu extends React.Component<TooltipMenuProps> {
39
57
  static __KONTUR_REACT_UI__: string;
@@ -1,4 +1,4 @@
1
- Простой пример
1
+ Базовый пример тултип-меню.
2
2
 
3
3
  ```jsx harmony
4
4
  import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui';
@@ -16,12 +16,15 @@ import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui
16
16
  </TooltipMenu>;
17
17
  ```
18
18
 
19
- С указанием ширины меню
19
+ Тултип-меню с заданной шириной.
20
20
 
21
21
  ```jsx harmony
22
22
  import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui';
23
23
 
24
- <TooltipMenu caption={<Button use="primary">Открыть меню</Button>} menuWidth={350}>
24
+ <TooltipMenu
25
+ caption={<Button use="primary">Открыть меню с заданной шириной</Button>}
26
+ menuWidth={350}
27
+ >
25
28
  <MenuHeader>Заголовок меню</MenuHeader>
26
29
  <MenuSeparator />
27
30
  <MenuItem>Раз</MenuItem>
@@ -34,12 +37,15 @@ import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui
34
37
  </TooltipMenu>;
35
38
  ```
36
39
 
37
- С указанием максимальной высоты меню
40
+ Тултип-меню с заданной максимальной высотой.
38
41
 
39
42
  ```jsx harmony
40
43
  import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui';
41
44
 
42
- <TooltipMenu caption={<Button use="primary">Открыть меню</Button>} menuMaxHeight={150}>
45
+ <TooltipMenu
46
+ caption={<Button use="primary">Открыть меню с заданной высотой</Button>}
47
+ menuMaxHeight={150}
48
+ >
43
49
  <MenuHeader>Заголовок меню</MenuHeader>
44
50
  <MenuSeparator />
45
51
  <MenuItem>Раз</MenuItem>
@@ -52,7 +58,24 @@ import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui
52
58
  </TooltipMenu>;
53
59
  ```
54
60
 
55
- В `caption` можно передать любой элемент
61
+ Тултип-меню с отключенной анимацией.
62
+
63
+ ```jsx harmony
64
+ import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui';
65
+
66
+ <TooltipMenu
67
+ disableAnimations
68
+ caption={<Button use="primary">Открыть меню без анимации</Button>}
69
+ >
70
+ <MenuHeader>Заголовок меню</MenuHeader>
71
+ <MenuSeparator />
72
+ <MenuItem>Раз</MenuItem>
73
+ <MenuItem>Два</MenuItem>
74
+ <MenuItem>Три</MenuItem>
75
+ </TooltipMenu>;
76
+ ```
77
+
78
+ В `caption` можно передать любой элемент.
56
79
 
57
80
  ```jsx harmony
58
81
  import { MenuItem } from '@skbkontur/react-ui';
@@ -72,7 +95,7 @@ import MenuIcon from '@skbkontur/react-icons/Menu';
72
95
  </TooltipMenu>;
73
96
  ```
74
97
 
75
- Только справа
98
+ Тултип-меню всегда всплывающее справа от `caption`.
76
99
 
77
100
  ```jsx harmony
78
101
  import { MenuItem } from '@skbkontur/react-ui';
@@ -93,7 +116,7 @@ import LightbulbIcon from '@skbkontur/react-icons/Lightbulb';
93
116
  </TooltipMenu>;
94
117
  ```
95
118
 
96
- Меню только сверху выравненное по правому краю `caption`
119
+ Тултип-меню всегда всплывающее сверху от `caption` и выравненное по правому краю `caption`.
97
120
 
98
121
  ```jsx harmony
99
122
  import { MenuItem } from '@skbkontur/react-ui';
@@ -113,3 +136,48 @@ import LightbulbIcon from '@skbkontur/react-icons/Lightbulb';
113
136
  <MenuItem>Три</MenuItem>
114
137
  </TooltipMenu>;
115
138
  ```
139
+
140
+ Тултип-меню c шапкой и подвалом.
141
+
142
+ ```jsx harmony
143
+ import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui';
144
+
145
+ <TooltipMenu
146
+ header={<p>Это шапка в виде обычного текста</p>}
147
+ footer={<Button>А это подвал в виде кнопки</Button>}
148
+ caption={<Button use="primary">Открыть меню</Button>}
149
+ >
150
+ <MenuItem>Раз</MenuItem>
151
+ <MenuItem>Два</MenuItem>
152
+ <MenuItem>Три</MenuItem>
153
+ </TooltipMenu>;
154
+ ```
155
+
156
+ Условный рендер элементов тултип-меню (с сохранением поведения [`MenuItem`](#/Components/MenuItem)).
157
+
158
+ ```jsx harmony
159
+ import {Button, MenuItem, Gapped, MenuSeparator} from '@skbkontur/react-ui';
160
+
161
+ const [showItems, setShowItems] = React.useState(false);
162
+
163
+ const hiddenItems = [
164
+ <MenuSeparator />,
165
+ <MenuItem>А я скрываюсь</MenuItem>,
166
+ <MenuItem>И я</MenuItem>,
167
+ <MenuItem>Я с вами</MenuItem>,
168
+ ];
169
+
170
+
171
+ <Gapped>
172
+ <Button onClick={() => setShowItems(!showItems)}>
173
+ {showItems ? 'Спрятать' : 'Показать'} элементы
174
+ </Button>
175
+
176
+ <TooltipMenu caption={<Button use="primary">Открыть меню</Button>}>
177
+ <MenuItem>Меня видно всегда</MenuItem>
178
+ <MenuItem>Меня тоже</MenuItem>
179
+ <MenuItem>Ага, и меня!</MenuItem>
180
+ {showItems && hiddenItems}
181
+ </TooltipMenu>
182
+ </Gapped>
183
+ ```
@@ -1 +1 @@
1
- {"version":3,"sources":["CommonWrapper.tsx"],"names":["React","isFunction","cx","CommonWrapper","render","extractCommonProps","props","className","style","dataProps","children","rest","child","isValidElement","cloneElement","Component","common","key","isCommonProp","name","indexOf"],"mappings":"oOAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,UAAT,QAA2B,iBAA3B;AACA,SAASC,EAAT,QAAmB,2BAAnB;;;;;;;;;;;;;;;;AAgBA,WAAaC,aAAb;AACEC,EAAAA,MADF,GACE,kBAAS;AAC6DC,IAAAA,kBAAkB,CAAC,KAAKC,KAAN,CAD/E,+CACEC,SADF,wBACEA,SADF,CACaC,KADb,wBACaA,KADb,CACuBC,SADvB,8HACsCC,QADtC,yBACsCA,QADtC,CACmDC,IADnD;AAEP,QAAMC,KAAK,GAAGX,UAAU,CAACS,QAAD,CAAV,GAAuBA,QAAQ,CAACC,IAAD,CAA/B,GAAwCD,QAAtD;;AAEA,WAAO,aAAAV,KAAK,CAACa,cAAN,CAAkCD,KAAlC;AACHZ,IAAAA,KAAK,CAACc,YAAN,CAAmBF,KAAnB;AACEL,MAAAA,SAAS,EAAEL,EAAE,CAACU,KAAK,CAACN,KAAN,CAAYC,SAAb,EAAwBA,SAAxB,CADf;AAEEC,MAAAA,KAAK;AACAI,MAAAA,KAAK,CAACN,KAAN,CAAYE,KADZ;AAEAA,MAAAA,KAFA,CAFP;;AAMKC,IAAAA,SANL,EADG;;AASHG,IAAAA,KATJ;AAUD,GAfH,wBAA0DZ,KAAK,CAACe,SAAhE;;;AAkBA,IAAMV,kBAAkB,GAAG,SAArBA,kBAAqB,CAAwBC,KAAxB,EAAuE;AAChG,MAAMU,MAAM,GAAG,EAAf;AACA,MAAML,IAAI,GAAG,EAAb;;AAEA,OAAK,IAAMM,GAAX,IAAkBX,KAAlB,EAAyB;AACvB,QAAIY,YAAY,CAACD,GAAD,CAAhB,EAAuB;AACrB;AACAD,MAAAA,MAAM,CAACC,GAAD,CAAN,GAAcX,KAAK,CAACW,GAAD,CAAnB;AACD,KAHD,MAGO;AACL;AACAN,MAAAA,IAAI,CAACM,GAAD,CAAJ,GAAYX,KAAK,CAACW,GAAD,CAAjB;AACD;AACF;;AAED,SAAO,CAACD,MAAD,EAASL,IAAT,CAAP;AACD,CAfD;;AAiBA,IAAMO,YAAY,GAAG,SAAfA,YAAe,CAACC,IAAD,EAAkB;AACrC,UAAQ,IAAR;AACE,SAAKA,IAAI,IAAI,WAAb;AACA,SAAKA,IAAI,IAAI,OAAb;AACA,SAAKA,IAAI,CAACC,OAAL,CAAa,OAAb,MAA0B,CAA/B,EAAkC;AAChC,aAAO,IAAP;AACF;AACE,aAAO,KAAP,CANJ;;AAQD,CATD","sourcesContent":["import React from 'react';\n\nimport { isFunction } from '../../lib/utils';\nimport { cx } from '../../lib/theming/Emotion';\n\nexport interface CommonProps {\n className?: React.HTMLAttributes<HTMLElement>['className'];\n style?: React.HTMLAttributes<HTMLElement>['style'];\n /** На равне с data-tid транслируются любые data-атрибуты. Они попадают на корневой элемент. */\n 'data-tid'?: string;\n}\n\nexport type NotCommonProps<P> = Omit<P, keyof CommonProps>;\n\nexport type CommonWrapperProps<P> = P & {\n children: React.ReactNode | ((rest: CommonWrapperRestProps<P>) => React.ReactNode);\n};\nexport type CommonWrapperRestProps<P> = Omit<NotCommonProps<P>, 'children'>;\n\nexport class CommonWrapper<P extends CommonProps> extends React.Component<CommonWrapperProps<P>> {\n render() {\n const [{ className, style, ...dataProps }, { children, ...rest }] = extractCommonProps(this.props);\n const child = isFunction(children) ? children(rest) : children;\n\n return React.isValidElement<CommonProps>(child)\n ? React.cloneElement(child, {\n className: cx(child.props.className, className),\n style: {\n ...child.props.style,\n ...style,\n },\n ...dataProps,\n })\n : child;\n }\n}\n\nconst extractCommonProps = <P extends CommonProps>(props: P): [CommonProps, NotCommonProps<P>] => {\n const common = {} as CommonProps;\n const rest = {} as NotCommonProps<P>;\n\n for (const key in props) {\n if (isCommonProp(key)) {\n // @ts-ignore\n common[key] = props[key];\n } else {\n // @ts-ignore\n rest[key] = props[key];\n }\n }\n\n return [common, rest];\n};\n\nconst isCommonProp = (name: string) => {\n switch (true) {\n case name == 'className':\n case name == 'style':\n case name.indexOf('data-') === 0: // все data-атрибуты\n return true;\n default:\n return false;\n }\n};\n"]}
1
+ {"version":3,"sources":["CommonWrapper.tsx"],"names":["React","isFunction","cx","CommonWrapper","render","extractCommonProps","props","className","style","dataProps","children","rest","child","isValidElement","cloneElement","Component","common","key","isCommonProp","name","indexOf"],"mappings":"oOAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,UAAT,QAA2B,iBAA3B;AACA,SAASC,EAAT,QAAmB,2BAAnB;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,WAAaC,aAAb;AACEC,EAAAA,MADF,GACE,kBAAS;AAC6DC,IAAAA,kBAAkB,CAAC,KAAKC,KAAN,CAD/E,+CACEC,SADF,wBACEA,SADF,CACaC,KADb,wBACaA,KADb,CACuBC,SADvB,8HACsCC,QADtC,yBACsCA,QADtC,CACmDC,IADnD;AAEP,QAAMC,KAAK,GAAGX,UAAU,CAACS,QAAD,CAAV,GAAuBA,QAAQ,CAACC,IAAD,CAA/B,GAAwCD,QAAtD;;AAEA,WAAO,aAAAV,KAAK,CAACa,cAAN,CAAkCD,KAAlC;AACHZ,IAAAA,KAAK,CAACc,YAAN,CAAmBF,KAAnB;AACEL,MAAAA,SAAS,EAAEL,EAAE,CAACU,KAAK,CAACN,KAAN,CAAYC,SAAb,EAAwBA,SAAxB,CADf;AAEEC,MAAAA,KAAK;AACAI,MAAAA,KAAK,CAACN,KAAN,CAAYE,KADZ;AAEAA,MAAAA,KAFA,CAFP;;AAMKC,IAAAA,SANL,EADG;;AASHG,IAAAA,KATJ;AAUD,GAfH,wBAA0DZ,KAAK,CAACe,SAAhE;;;AAkBA,IAAMV,kBAAkB,GAAG,SAArBA,kBAAqB,CAAwBC,KAAxB,EAAuE;AAChG,MAAMU,MAAM,GAAG,EAAf;AACA,MAAML,IAAI,GAAG,EAAb;;AAEA,OAAK,IAAMM,GAAX,IAAkBX,KAAlB,EAAyB;AACvB,QAAIY,YAAY,CAACD,GAAD,CAAhB,EAAuB;AACrB;AACAD,MAAAA,MAAM,CAACC,GAAD,CAAN,GAAcX,KAAK,CAACW,GAAD,CAAnB;AACD,KAHD,MAGO;AACL;AACAN,MAAAA,IAAI,CAACM,GAAD,CAAJ,GAAYX,KAAK,CAACW,GAAD,CAAjB;AACD;AACF;;AAED,SAAO,CAACD,MAAD,EAASL,IAAT,CAAP;AACD,CAfD;;AAiBA,IAAMO,YAAY,GAAG,SAAfA,YAAe,CAACC,IAAD,EAAkB;AACrC,UAAQ,IAAR;AACE,SAAKA,IAAI,IAAI,WAAb;AACA,SAAKA,IAAI,IAAI,OAAb;AACA,SAAKA,IAAI,CAACC,OAAL,CAAa,OAAb,MAA0B,CAA/B,EAAkC;AAChC,aAAO,IAAP;AACF;AACE,aAAO,KAAP,CANJ;;AAQD,CATD","sourcesContent":["import React from 'react';\n\nimport { isFunction } from '../../lib/utils';\nimport { cx } from '../../lib/theming/Emotion';\n\nexport interface CommonProps {\n /**\n * HTML-атрибут `class`.\n */\n className?: React.HTMLAttributes<HTMLElement>['className'];\n /**\n * HTML-атрибут `style`.\n */\n style?: React.HTMLAttributes<HTMLElement>['style'];\n /**\n * На равне с data-tid транслируются любые data-атрибуты. Они попадают на корневой элемент.\n */\n 'data-tid'?: string;\n}\n\nexport type NotCommonProps<P> = Omit<P, keyof CommonProps>;\n\nexport type CommonWrapperProps<P> = P & {\n children: React.ReactNode | ((rest: CommonWrapperRestProps<P>) => React.ReactNode);\n};\nexport type CommonWrapperRestProps<P> = Omit<NotCommonProps<P>, 'children'>;\n\nexport class CommonWrapper<P extends CommonProps> extends React.Component<CommonWrapperProps<P>> {\n render() {\n const [{ className, style, ...dataProps }, { children, ...rest }] = extractCommonProps(this.props);\n const child = isFunction(children) ? children(rest) : children;\n\n return React.isValidElement<CommonProps>(child)\n ? React.cloneElement(child, {\n className: cx(child.props.className, className),\n style: {\n ...child.props.style,\n ...style,\n },\n ...dataProps,\n })\n : child;\n }\n}\n\nconst extractCommonProps = <P extends CommonProps>(props: P): [CommonProps, NotCommonProps<P>] => {\n const common = {} as CommonProps;\n const rest = {} as NotCommonProps<P>;\n\n for (const key in props) {\n if (isCommonProp(key)) {\n // @ts-ignore\n common[key] = props[key];\n } else {\n // @ts-ignore\n rest[key] = props[key];\n }\n }\n\n return [common, rest];\n};\n\nconst isCommonProp = (name: string) => {\n switch (true) {\n case name == 'className':\n case name == 'style':\n case name.indexOf('data-') === 0: // все data-атрибуты\n return true;\n default:\n return false;\n }\n};\n"]}
@@ -1,8 +1,16 @@
1
1
  import React from 'react';
2
2
  export interface CommonProps {
3
+ /**
4
+ * HTML-атрибут `class`.
5
+ */
3
6
  className?: React.HTMLAttributes<HTMLElement>['className'];
7
+ /**
8
+ * HTML-атрибут `style`.
9
+ */
4
10
  style?: React.HTMLAttributes<HTMLElement>['style'];
5
- /** На равне с data-tid транслируются любые data-атрибуты. Они попадают на корневой элемент. */
11
+ /**
12
+ * На равне с data-tid транслируются любые data-атрибуты. Они попадают на корневой элемент.
13
+ */
6
14
  'data-tid'?: string;
7
15
  }
8
16
  export declare type NotCommonProps<P> = Omit<P, keyof CommonProps>;
@@ -1,6 +1,7 @@
1
1
  import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
2
2
  import React from 'react';
3
3
  import { findDOMNode } from 'react-dom';
4
+ import { isNonNullable } from "../../../lib/utils";
4
5
  import { DropdownContainer } from "../../DropdownContainer";
5
6
  import { Input } from "../../../components/Input";
6
7
  import { InputLikeText } from "../../InputLikeText";
@@ -228,7 +229,7 @@ export var ComboBoxView = /*#__PURE__*/function (_React$Component) {
228
229
  size: size,
229
230
  width: "100%",
230
231
  ref: refInputLikeText
231
- }, value ? renderValue(value) : null);
232
+ }, isNonNullable(value) && renderValue ? renderValue(value) : null);
232
233
  };
233
234
 
234
235
  return ComboBoxView;
@@ -1 +1 @@
1
- {"version":3,"sources":["ComboBoxView.tsx"],"names":["React","findDOMNode","DropdownContainer","Input","InputLikeText","RenderLayer","Spinner","ArrowChevronDownIcon","CommonWrapper","ComboBoxMenu","ComboBoxRequestStatus","styles","ComboBoxView","input","renderAddButton","props","textValue","handleItemSelect","item","onValueChange","refInput","renderSpinner","spinnerWrapper","getRightIcon","loading","items","drawArrow","rightIcon","length","rightIconWrapper","componentDidMount","autoFocus","onFocus","componentDidUpdate","prevProps","editing","focus","render","menuAlign","onClickOutside","onFocusOutside","onMouseEnter","onMouseLeave","onMouseOver","opened","refMenu","maxMenuHeight","renderTotalCount","renderItem","renderNotFound","repeatRequest","requestStatus","totalCount","size","width","renderInput","topOffsets","spinner","arrow","root","disablePortal","align","borderless","disabled","error","onInputBlur","onInputValueChange","onInputFocus","onInputClick","onInputKeyDown","placeholder","renderValue","value","warning","refInputLikeText","leftIcon","inputMode","maxLength","Component","__KONTUR_REACT_UI__","defaultProps","undefined","Unknown"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { findDOMNode } from 'react-dom';\n\nimport { DropdownContainer } from '../DropdownContainer';\nimport { Input, InputIconType } from '../../components/Input';\nimport { InputLikeText } from '../InputLikeText';\nimport { Menu } from '../Menu';\nimport { MenuItemState } from '../../components/MenuItem';\nimport { RenderLayer } from '../RenderLayer';\nimport { Spinner } from '../../components/Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { ArrowChevronDownIcon } from '../icons/16px';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\n\nimport { ComboBoxMenu } from './ComboBoxMenu';\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { styles } from './CustomComboBox.styles';\n\ninterface ComboBoxViewProps<T> extends CommonProps {\n align?: 'left' | 'center' | 'right';\n autoFocus?: boolean;\n borderless?: boolean;\n disablePortal?: boolean;\n disabled?: boolean;\n editing?: boolean;\n error?: boolean;\n items?: Nullable<T[]>;\n loading?: boolean;\n menuAlign?: 'left' | 'right';\n opened?: boolean;\n drawArrow?: boolean;\n placeholder?: string;\n size?: 'small' | 'medium' | 'large';\n textValue?: string;\n totalCount?: number;\n value?: Nullable<T>;\n warning?: boolean;\n width?: string | number;\n maxLength?: number;\n maxMenuHeight?: number | string;\n leftIcon?: InputIconType;\n rightIcon?: InputIconType;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n\n onValueChange?: (value: T) => void;\n onClickOutside?: (e: Event) => void;\n onFocus?: () => void;\n onFocusOutside?: () => void;\n onInputBlur?: () => void;\n onInputValueChange?: (value: string) => void;\n onInputFocus?: () => void;\n onInputClick?: () => void;\n onInputKeyDown?: (e: React.KeyboardEvent) => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderValue?: (item: T) => React.ReactNode;\n renderAddButton: (query?: string) => React.ReactNode;\n repeatRequest?: () => void;\n requestStatus?: ComboBoxRequestStatus;\n refInput?: (input: Nullable<Input>) => void;\n refMenu?: (menu: Nullable<Menu>) => void;\n refInputLikeText?: (inputLikeText: Nullable<InputLikeText>) => void;\n}\n\nexport class ComboBoxView<T> extends React.Component<ComboBoxViewProps<T>> {\n public static __KONTUR_REACT_UI__ = 'ComboBoxView';\n\n public static defaultProps = {\n renderItem: (item: any) => item,\n renderValue: (item: any) => item,\n renderAddButton: () => null,\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n onClickOutside: () => {\n /**/\n },\n onFocusOutside: () => {\n /**/\n },\n size: 'small',\n width: 250,\n };\n\n private input: Nullable<Input>;\n\n public componentDidMount() {\n if (this.props.autoFocus && this.props.onFocus) {\n this.props.onFocus();\n }\n }\n\n public componentDidUpdate(prevProps: ComboBoxViewProps<T>) {\n const { input, props } = this;\n if (props.editing && !prevProps.editing && input) {\n input.focus();\n }\n }\n\n public render() {\n const {\n items,\n loading,\n menuAlign,\n onClickOutside,\n onFocusOutside,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n opened,\n refMenu,\n maxMenuHeight,\n renderTotalCount,\n renderItem,\n renderNotFound,\n repeatRequest,\n requestStatus,\n totalCount,\n size,\n width,\n } = this.props;\n\n const input = this.renderInput();\n\n const topOffsets = {\n spinner: 6,\n arrow: 15,\n };\n if (size === 'medium') {\n topOffsets.spinner += 4;\n topOffsets.arrow += 4;\n }\n if (size === 'large') {\n topOffsets.spinner += 6;\n topOffsets.arrow += 6;\n }\n\n return (\n <CommonWrapper {...this.props}>\n <RenderLayer onClickOutside={onClickOutside} onFocusOutside={onFocusOutside} active={opened}>\n <span\n style={{ width }}\n className={styles.root()}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseOver={onMouseOver}\n >\n {input}\n {opened && (\n <DropdownContainer\n align={menuAlign}\n getParent={() => findDOMNode(this)}\n offsetY={1}\n disablePortal={this.props.disablePortal}\n >\n <ComboBoxMenu\n items={items}\n loading={loading}\n maxMenuHeight={maxMenuHeight}\n onValueChange={this.handleItemSelect}\n opened={opened}\n refMenu={refMenu}\n renderTotalCount={renderTotalCount}\n renderItem={renderItem!}\n renderNotFound={renderNotFound}\n renderAddButton={this.renderAddButton}\n repeatRequest={repeatRequest}\n requestStatus={requestStatus}\n totalCount={totalCount}\n />\n </DropdownContainer>\n )}\n </span>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n private renderAddButton = (): React.ReactNode => {\n return this.props.renderAddButton(this.props.textValue);\n };\n\n private renderInput(): React.ReactNode {\n const {\n align,\n borderless,\n disabled,\n editing,\n error,\n onFocus,\n onInputBlur,\n onInputValueChange,\n onInputFocus,\n onInputClick,\n onInputKeyDown,\n placeholder,\n renderValue,\n size,\n textValue,\n value,\n warning,\n refInputLikeText,\n leftIcon,\n inputMode,\n } = this.props;\n\n const rightIcon = this.getRightIcon();\n\n if (editing) {\n return (\n <Input\n align={align}\n borderless={borderless}\n disabled={disabled}\n error={error}\n maxLength={this.props.maxLength}\n onBlur={onInputBlur}\n onValueChange={onInputValueChange}\n onFocus={onInputFocus}\n onClick={onInputClick}\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n value={textValue || ''}\n onKeyDown={onInputKeyDown}\n placeholder={placeholder}\n width=\"100%\"\n size={size}\n ref={this.refInput}\n warning={warning}\n inputMode={inputMode}\n />\n );\n }\n\n return (\n <InputLikeText\n align={align}\n borderless={borderless}\n error={error}\n onFocus={onFocus}\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n disabled={disabled}\n warning={warning}\n placeholder={placeholder}\n size={size}\n width=\"100%\"\n ref={refInputLikeText}\n >\n {value ? renderValue!(value) : null}\n </InputLikeText>\n );\n }\n\n private handleItemSelect = (item: T) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(item);\n }\n };\n\n private refInput = (input: Nullable<Input>) => {\n if (this.props.refInput) {\n this.props.refInput(input);\n }\n this.input = input;\n };\n\n private renderSpinner = () => (\n <span className={styles.spinnerWrapper()}>\n <Spinner type=\"mini\" caption=\"\" dimmed />\n </span>\n );\n\n private getRightIcon = () => {\n const { loading, items, drawArrow, rightIcon } = this.props;\n\n if (loading && items && !!items.length) {\n return this.renderSpinner();\n }\n\n if (rightIcon || drawArrow) {\n return <span className={styles.rightIconWrapper()}>{rightIcon ?? <ArrowChevronDownIcon />}</span>;\n }\n\n return null;\n };\n}\n"]}
1
+ {"version":3,"sources":["ComboBoxView.tsx"],"names":["React","findDOMNode","isNonNullable","DropdownContainer","Input","InputLikeText","RenderLayer","Spinner","ArrowChevronDownIcon","CommonWrapper","ComboBoxMenu","ComboBoxRequestStatus","styles","ComboBoxView","input","renderAddButton","props","textValue","handleItemSelect","item","onValueChange","refInput","renderSpinner","spinnerWrapper","getRightIcon","loading","items","drawArrow","rightIcon","length","rightIconWrapper","componentDidMount","autoFocus","onFocus","componentDidUpdate","prevProps","editing","focus","render","menuAlign","onClickOutside","onFocusOutside","onMouseEnter","onMouseLeave","onMouseOver","opened","refMenu","maxMenuHeight","renderTotalCount","renderItem","renderNotFound","repeatRequest","requestStatus","totalCount","size","width","renderInput","topOffsets","spinner","arrow","root","disablePortal","align","borderless","disabled","error","onInputBlur","onInputValueChange","onInputFocus","onInputClick","onInputKeyDown","placeholder","renderValue","value","warning","refInputLikeText","leftIcon","inputMode","maxLength","Component","__KONTUR_REACT_UI__","defaultProps","undefined","Unknown"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { findDOMNode } from 'react-dom';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { DropdownContainer } from '../DropdownContainer';\nimport { Input, InputIconType } from '../../components/Input';\nimport { InputLikeText } from '../InputLikeText';\nimport { Menu } from '../Menu';\nimport { MenuItemState } from '../../components/MenuItem';\nimport { RenderLayer } from '../RenderLayer';\nimport { Spinner } from '../../components/Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { ArrowChevronDownIcon } from '../icons/16px';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\n\nimport { ComboBoxMenu } from './ComboBoxMenu';\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { styles } from './CustomComboBox.styles';\n\ninterface ComboBoxViewProps<T> extends CommonProps {\n align?: 'left' | 'center' | 'right';\n autoFocus?: boolean;\n borderless?: boolean;\n disablePortal?: boolean;\n disabled?: boolean;\n editing?: boolean;\n error?: boolean;\n items?: Nullable<T[]>;\n loading?: boolean;\n menuAlign?: 'left' | 'right';\n opened?: boolean;\n drawArrow?: boolean;\n placeholder?: string;\n size?: 'small' | 'medium' | 'large';\n textValue?: string;\n totalCount?: number;\n value?: Nullable<T>;\n warning?: boolean;\n width?: string | number;\n maxLength?: number;\n maxMenuHeight?: number | string;\n leftIcon?: InputIconType;\n rightIcon?: InputIconType;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n\n onValueChange?: (value: T) => void;\n onClickOutside?: (e: Event) => void;\n onFocus?: () => void;\n onFocusOutside?: () => void;\n onInputBlur?: () => void;\n onInputValueChange?: (value: string) => void;\n onInputFocus?: () => void;\n onInputClick?: () => void;\n onInputKeyDown?: (e: React.KeyboardEvent) => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderValue?: (item: T) => React.ReactNode;\n renderAddButton: (query?: string) => React.ReactNode;\n repeatRequest?: () => void;\n requestStatus?: ComboBoxRequestStatus;\n refInput?: (input: Nullable<Input>) => void;\n refMenu?: (menu: Nullable<Menu>) => void;\n refInputLikeText?: (inputLikeText: Nullable<InputLikeText>) => void;\n}\n\nexport class ComboBoxView<T> extends React.Component<ComboBoxViewProps<T>> {\n public static __KONTUR_REACT_UI__ = 'ComboBoxView';\n\n public static defaultProps = {\n renderItem: (item: any) => item,\n renderValue: (item: any) => item,\n renderAddButton: () => null,\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n onClickOutside: () => {\n /**/\n },\n onFocusOutside: () => {\n /**/\n },\n size: 'small',\n width: 250,\n };\n\n private input: Nullable<Input>;\n\n public componentDidMount() {\n if (this.props.autoFocus && this.props.onFocus) {\n this.props.onFocus();\n }\n }\n\n public componentDidUpdate(prevProps: ComboBoxViewProps<T>) {\n const { input, props } = this;\n if (props.editing && !prevProps.editing && input) {\n input.focus();\n }\n }\n\n public render() {\n const {\n items,\n loading,\n menuAlign,\n onClickOutside,\n onFocusOutside,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n opened,\n refMenu,\n maxMenuHeight,\n renderTotalCount,\n renderItem,\n renderNotFound,\n repeatRequest,\n requestStatus,\n totalCount,\n size,\n width,\n } = this.props;\n\n const input = this.renderInput();\n\n const topOffsets = {\n spinner: 6,\n arrow: 15,\n };\n if (size === 'medium') {\n topOffsets.spinner += 4;\n topOffsets.arrow += 4;\n }\n if (size === 'large') {\n topOffsets.spinner += 6;\n topOffsets.arrow += 6;\n }\n\n return (\n <CommonWrapper {...this.props}>\n <RenderLayer onClickOutside={onClickOutside} onFocusOutside={onFocusOutside} active={opened}>\n <span\n style={{ width }}\n className={styles.root()}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseOver={onMouseOver}\n >\n {input}\n {opened && (\n <DropdownContainer\n align={menuAlign}\n getParent={() => findDOMNode(this)}\n offsetY={1}\n disablePortal={this.props.disablePortal}\n >\n <ComboBoxMenu\n items={items}\n loading={loading}\n maxMenuHeight={maxMenuHeight}\n onValueChange={this.handleItemSelect}\n opened={opened}\n refMenu={refMenu}\n renderTotalCount={renderTotalCount}\n renderItem={renderItem!}\n renderNotFound={renderNotFound}\n renderAddButton={this.renderAddButton}\n repeatRequest={repeatRequest}\n requestStatus={requestStatus}\n totalCount={totalCount}\n />\n </DropdownContainer>\n )}\n </span>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n private renderAddButton = (): React.ReactNode => {\n return this.props.renderAddButton(this.props.textValue);\n };\n\n private renderInput(): React.ReactNode {\n const {\n align,\n borderless,\n disabled,\n editing,\n error,\n onFocus,\n onInputBlur,\n onInputValueChange,\n onInputFocus,\n onInputClick,\n onInputKeyDown,\n placeholder,\n renderValue,\n size,\n textValue,\n value,\n warning,\n refInputLikeText,\n leftIcon,\n inputMode,\n } = this.props;\n\n const rightIcon = this.getRightIcon();\n\n if (editing) {\n return (\n <Input\n align={align}\n borderless={borderless}\n disabled={disabled}\n error={error}\n maxLength={this.props.maxLength}\n onBlur={onInputBlur}\n onValueChange={onInputValueChange}\n onFocus={onInputFocus}\n onClick={onInputClick}\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n value={textValue || ''}\n onKeyDown={onInputKeyDown}\n placeholder={placeholder}\n width=\"100%\"\n size={size}\n ref={this.refInput}\n warning={warning}\n inputMode={inputMode}\n />\n );\n }\n\n return (\n <InputLikeText\n align={align}\n borderless={borderless}\n error={error}\n onFocus={onFocus}\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n disabled={disabled}\n warning={warning}\n placeholder={placeholder}\n size={size}\n width=\"100%\"\n ref={refInputLikeText}\n >\n {isNonNullable(value) && renderValue ? renderValue(value) : null}\n </InputLikeText>\n );\n }\n\n private handleItemSelect = (item: T) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(item);\n }\n };\n\n private refInput = (input: Nullable<Input>) => {\n if (this.props.refInput) {\n this.props.refInput(input);\n }\n this.input = input;\n };\n\n private renderSpinner = () => (\n <span className={styles.spinnerWrapper()}>\n <Spinner type=\"mini\" caption=\"\" dimmed />\n </span>\n );\n\n private getRightIcon = () => {\n const { loading, items, drawArrow, rightIcon } = this.props;\n\n if (loading && items && !!items.length) {\n return this.renderSpinner();\n }\n\n if (rightIcon || drawArrow) {\n return <span className={styles.rightIconWrapper()}>{rightIcon ?? <ArrowChevronDownIcon />}</span>;\n }\n\n return null;\n };\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import debounce from 'lodash.debounce';
3
3
  import isEqual from 'lodash.isequal';
4
+ import { isNonNullable } from "../../../lib/utils";
4
5
  import { isKeyArrowUp, isKeyArrowVertical, isKeyEnter, isKeyEscape } from "../../../lib/events/keyboard/identifiers";
5
6
  import * as LayoutEvents from "../../../lib/LayoutEvents";
6
7
  import { DefaultState } from "../CustomComboBox";
@@ -8,7 +9,7 @@ import { ComboBoxRequestStatus } from "../CustomComboBoxTypes";
8
9
  var DEBOUNCE_DELAY = 300;
9
10
 
10
11
  var getValueString = function getValueString(value, valueToString) {
11
- return value ? valueToString(value) : '';
12
+ return isNonNullable(value) ? valueToString(value) : '';
12
13
  };
13
14
 
14
15
  export var Effect = {
@@ -139,7 +140,7 @@ export var Effect = {
139
140
 
140
141
  var index = -1;
141
142
 
142
- if (items && items.length && value) {
143
+ if (items && items.length && isNonNullable(value)) {
143
144
  index = items.findIndex(function (x) {
144
145
  return itemToValue(x) === itemToValue(value);
145
146
  });