@skbkontur/react-ui 4.2.2 → 4.3.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.
- package/CHANGELOG.md +17 -0
- package/cjs/components/Autocomplete/Autocomplete.d.ts +9 -17
- package/cjs/components/Autocomplete/Autocomplete.js +10 -6
- package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
- package/cjs/components/Button/Button.d.ts +4 -5
- package/cjs/components/Button/Button.js +8 -3
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/Button/Button.mixins.js +1 -1
- package/cjs/components/Button/Button.mixins.js.map +1 -1
- package/cjs/components/Button/Button.styles.js +18 -18
- package/cjs/components/Button/Button.styles.js.map +1 -1
- package/cjs/components/Center/Center.d.ts +4 -3
- package/cjs/components/Center/Center.js +9 -3
- package/cjs/components/Center/Center.js.map +1 -1
- package/cjs/components/ComboBox/ComboBox.d.ts +8 -13
- package/cjs/components/ComboBox/ComboBox.js +12 -2
- package/cjs/components/ComboBox/ComboBox.js.map +1 -1
- package/cjs/components/CurrencyInput/CurrencyInput.d.ts +6 -9
- package/cjs/components/CurrencyInput/CurrencyInput.js +15 -6
- package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
- package/cjs/components/CurrencyLabel/CurrencyLabel.d.ts +3 -9
- package/cjs/components/CurrencyLabel/CurrencyLabel.js +15 -15
- package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/cjs/components/DateInput/DateInput.d.ts +8 -11
- package/cjs/components/DateInput/DateInput.js +11 -3
- package/cjs/components/DateInput/DateInput.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.d.ts +6 -8
- package/cjs/components/DatePicker/DatePicker.js +12 -6
- package/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.d.ts +5 -5
- package/cjs/components/DropdownMenu/DropdownMenu.js +9 -3
- package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/cjs/components/FxInput/FxInput.d.ts +6 -6
- package/cjs/components/FxInput/FxInput.js +13 -10
- package/cjs/components/FxInput/FxInput.js.map +1 -1
- package/cjs/components/Gapped/Gapped.d.ts +7 -8
- package/cjs/components/Gapped/Gapped.js +12 -6
- package/cjs/components/Gapped/Gapped.js.map +1 -1
- package/cjs/components/GlobalLoader/GlobalLoader.d.ts +7 -14
- package/cjs/components/GlobalLoader/GlobalLoader.js +13 -9
- package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
- package/cjs/components/Hint/Hint.d.ts +7 -11
- package/cjs/components/Hint/Hint.js +15 -5
- package/cjs/components/Hint/Hint.js.map +1 -1
- package/cjs/components/Input/Input.d.ts +4 -3
- package/cjs/components/Input/Input.js +7 -4
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Kebab/Kebab.d.ts +7 -11
- package/cjs/components/Kebab/Kebab.js +14 -5
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/Link/Link.d.ts +4 -4
- package/cjs/components/Link/Link.js +11 -4
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/Loader/Loader.d.ts +7 -4
- package/cjs/components/Loader/Loader.js +14 -4
- package/cjs/components/Loader/Loader.js.map +1 -1
- package/cjs/components/Modal/Modal.d.ts +4 -3
- package/cjs/components/Modal/Modal.js +8 -3
- package/cjs/components/Modal/Modal.js.map +1 -1
- package/cjs/components/Paging/Paging.d.ts +6 -9
- package/cjs/components/Paging/Paging.js +15 -5
- package/cjs/components/Paging/Paging.js.map +1 -1
- package/cjs/components/Paging/PagingDefaultComponent.d.ts +1 -1
- package/cjs/components/Paging/PagingDefaultComponent.js.map +1 -1
- package/cjs/components/PasswordInput/PasswordInput.d.ts +4 -3
- package/cjs/components/PasswordInput/PasswordInput.js +8 -3
- package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
- package/cjs/components/Radio/Radio.d.ts +4 -3
- package/cjs/components/Radio/Radio.js +8 -3
- package/cjs/components/Radio/Radio.js.map +1 -1
- package/cjs/components/RadioGroup/RadioGroup.d.ts +2 -4
- package/cjs/components/RadioGroup/RadioGroup.js +4 -2
- package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.d.ts +6 -7
- package/cjs/components/ScrollContainer/ScrollContainer.js +11 -5
- package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
- package/cjs/components/Select/Select.d.ts +3 -12
- package/cjs/components/Select/Select.js +6 -1
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/Select/Select.styles.js +4 -4
- package/cjs/components/Select/Select.styles.js.map +1 -1
- package/cjs/components/SidePage/SidePage.d.ts +5 -6
- package/cjs/components/SidePage/SidePage.js +8 -1
- package/cjs/components/SidePage/SidePage.js.map +1 -1
- package/cjs/components/Spinner/Spinner.d.ts +4 -2
- package/cjs/components/Spinner/Spinner.js +9 -3
- package/cjs/components/Spinner/Spinner.js.map +1 -1
- package/cjs/components/Sticky/Sticky.d.ts +5 -4
- package/cjs/components/Sticky/Sticky.js +9 -2
- package/cjs/components/Sticky/Sticky.js.map +1 -1
- package/cjs/components/Tabs/Tab.d.ts +4 -4
- package/cjs/components/Tabs/Tab.js +11 -13
- package/cjs/components/Tabs/Tab.js.map +1 -1
- package/cjs/components/Tabs/Tabs.d.ts +4 -4
- package/cjs/components/Tabs/Tabs.js +12 -3
- package/cjs/components/Tabs/Tabs.js.map +1 -1
- package/cjs/components/Textarea/Textarea.d.ts +8 -10
- package/cjs/components/Textarea/Textarea.js +10 -6
- package/cjs/components/Textarea/Textarea.js.map +1 -1
- package/cjs/components/Toggle/Toggle.d.ts +5 -6
- package/cjs/components/Toggle/Toggle.js +10 -4
- package/cjs/components/Toggle/Toggle.js.map +1 -1
- package/cjs/components/TokenInput/TokenInput.d.ts +19 -16
- package/cjs/components/TokenInput/TokenInput.js +75 -57
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.d.ts +10 -14
- package/cjs/components/Tooltip/Tooltip.js +23 -12
- package/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/cjs/components/TooltipMenu/TooltipMenu.d.ts +5 -4
- package/cjs/components/TooltipMenu/TooltipMenu.js +11 -5
- package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
- package/cjs/internal/BGRuler.d.ts +13 -15
- package/cjs/internal/BGRuler.js +16 -8
- package/cjs/internal/BGRuler.js.map +1 -1
- package/cjs/internal/Calendar/Calendar.d.ts +4 -13
- package/cjs/internal/Calendar/Calendar.js +10 -5
- package/cjs/internal/Calendar/Calendar.js.map +1 -1
- package/cjs/internal/Calendar/DayCellView.styles.js +1 -1
- package/cjs/internal/Calendar/DayCellView.styles.js.map +1 -1
- package/cjs/internal/Calendar/Month.js +16 -11
- package/cjs/internal/Calendar/Month.js.map +1 -1
- package/cjs/internal/ComponentCombinator.d.ts +6 -8
- package/cjs/internal/ComponentCombinator.js +6 -2
- package/cjs/internal/ComponentCombinator.js.map +1 -1
- package/cjs/internal/ComponentTable.d.ts +5 -6
- package/cjs/internal/ComponentTable.js +11 -2
- package/cjs/internal/ComponentTable.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxMenu.d.ts +4 -4
- package/cjs/internal/CustomComboBox/ComboBoxMenu.js +7 -1
- package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +4 -12
- package/cjs/internal/CustomComboBox/ComboBoxView.js +18 -10
- package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/cjs/internal/DateSelect/DateSelect.d.ts +4 -6
- package/cjs/internal/DateSelect/DateSelect.js +15 -9
- package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
- package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +3 -6
- package/cjs/internal/DropdownContainer/DropdownContainer.js +8 -5
- package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.d.ts +4 -3
- package/cjs/internal/InputLikeText/InputLikeText.js +7 -2
- package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/cjs/internal/InternalMenu/InternalMenu.d.ts +3 -9
- package/cjs/internal/InternalMenu/InternalMenu.js +16 -6
- package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
- package/cjs/internal/MaskedInput/MaskedInput.d.ts +4 -2
- package/cjs/internal/MaskedInput/MaskedInput.js +7 -2
- package/cjs/internal/MaskedInput/MaskedInput.js.map +1 -1
- package/cjs/internal/Menu/Menu.d.ts +4 -7
- package/cjs/internal/Menu/Menu.js +7 -1
- package/cjs/internal/Menu/Menu.js.map +1 -1
- package/cjs/internal/Popup/Popup.d.ts +10 -16
- package/cjs/internal/Popup/Popup.js +21 -7
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.d.ts +8 -11
- package/cjs/internal/PopupMenu/PopupMenu.js +8 -1
- package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/cjs/internal/RenderLayer/RenderLayer.d.ts +4 -3
- package/cjs/internal/RenderLayer/RenderLayer.js +8 -2
- package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
- package/cjs/internal/ThemePlayground/VariableValue.d.ts +5 -4
- package/cjs/internal/ThemePlayground/VariableValue.js +6 -1
- package/cjs/internal/ThemePlayground/VariableValue.js.map +1 -1
- package/cjs/internal/ZIndex/ZIndex.d.ts +7 -11
- package/cjs/internal/ZIndex/ZIndex.js +10 -3
- package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
- package/cjs/lib/createPropsGetter.d.ts +2 -1
- package/cjs/lib/createPropsGetter.js +2 -0
- package/cjs/lib/createPropsGetter.js.map +1 -1
- package/components/Autocomplete/Autocomplete/Autocomplete.js +22 -12
- package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
- package/components/Autocomplete/Autocomplete.d.ts +9 -17
- package/components/Button/Button/Button.js +11 -5
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +4 -5
- package/components/Button/Button.mixins/Button.mixins.js +1 -1
- package/components/Button/Button.mixins/Button.mixins.js.map +1 -1
- package/components/Button/Button.styles/Button.styles.js +18 -18
- package/components/Button/Button.styles/Button.styles.js.map +1 -1
- package/components/Center/Center/Center.js +7 -5
- package/components/Center/Center/Center.js.map +1 -1
- package/components/Center/Center.d.ts +4 -3
- package/components/ComboBox/ComboBox/ComboBox.js +3 -1
- package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
- package/components/ComboBox/ComboBox.d.ts +8 -13
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +21 -18
- package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
- package/components/CurrencyInput/CurrencyInput.d.ts +6 -9
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +21 -15
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/components/CurrencyLabel/CurrencyLabel.d.ts +3 -9
- package/components/DateInput/DateInput/DateInput.js +17 -4
- package/components/DateInput/DateInput/DateInput.js.map +1 -1
- package/components/DateInput/DateInput.d.ts +8 -11
- package/components/DatePicker/DatePicker/DatePicker.js +12 -9
- package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +6 -8
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +8 -2
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
- package/components/DropdownMenu/DropdownMenu.d.ts +5 -5
- package/components/FxInput/FxInput/FxInput.js +11 -9
- package/components/FxInput/FxInput/FxInput.js.map +1 -1
- package/components/FxInput/FxInput.d.ts +6 -6
- package/components/Gapped/Gapped/Gapped.js +17 -8
- package/components/Gapped/Gapped/Gapped.js.map +1 -1
- package/components/Gapped/Gapped.d.ts +7 -8
- package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +35 -16
- package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
- package/components/GlobalLoader/GlobalLoader.d.ts +7 -14
- package/components/Hint/Hint/Hint.js +30 -18
- package/components/Hint/Hint/Hint.js.map +1 -1
- package/components/Hint/Hint.d.ts +7 -11
- package/components/Input/Input/Input.js +9 -7
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.d.ts +4 -3
- package/components/Kebab/Kebab/Kebab.js +19 -8
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Kebab/Kebab.d.ts +7 -11
- package/components/Link/Link/Link.js +9 -6
- package/components/Link/Link/Link.js.map +1 -1
- package/components/Link/Link.d.ts +4 -4
- package/components/Loader/Loader/Loader.js +22 -17
- package/components/Loader/Loader/Loader.js.map +1 -1
- package/components/Loader/Loader.d.ts +7 -4
- package/components/Modal/Modal/Modal.js +3 -1
- package/components/Modal/Modal/Modal.js.map +1 -1
- package/components/Modal/Modal.d.ts +4 -3
- package/components/Paging/Paging/Paging.js +24 -14
- package/components/Paging/Paging/Paging.js.map +1 -1
- package/components/Paging/Paging.d.ts +6 -9
- package/components/Paging/PagingDefaultComponent/PagingDefaultComponent.js.map +1 -1
- package/components/Paging/PagingDefaultComponent.d.ts +1 -1
- package/components/PasswordInput/PasswordInput/PasswordInput.js +7 -5
- package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
- package/components/PasswordInput/PasswordInput.d.ts +4 -3
- package/components/Radio/Radio/Radio.js +7 -5
- package/components/Radio/Radio/Radio.js.map +1 -1
- package/components/Radio/Radio.d.ts +4 -3
- package/components/RadioGroup/RadioGroup/RadioGroup.js +10 -10
- package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
- package/components/RadioGroup/RadioGroup.d.ts +2 -4
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +10 -6
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.d.ts +6 -7
- package/components/Select/Select/Select.js +4 -3
- package/components/Select/Select/Select.js.map +1 -1
- package/components/Select/Select.d.ts +3 -12
- package/components/Select/Select.styles/Select.styles.js +4 -4
- package/components/Select/Select.styles/Select.styles.js.map +1 -1
- package/components/SidePage/SidePage/SidePage.js +14 -9
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePage.d.ts +5 -6
- package/components/Spinner/Spinner/Spinner.js +7 -5
- package/components/Spinner/Spinner/Spinner.js.map +1 -1
- package/components/Spinner/Spinner.d.ts +4 -2
- package/components/Sticky/Sticky/Sticky.js +7 -4
- package/components/Sticky/Sticky/Sticky.js.map +1 -1
- package/components/Sticky/Sticky.d.ts +5 -4
- package/components/Tabs/Tab/Tab.js +15 -7
- package/components/Tabs/Tab/Tab.js.map +1 -1
- package/components/Tabs/Tab.d.ts +4 -4
- package/components/Tabs/Tabs/Tabs.js +10 -8
- package/components/Tabs/Tabs/Tabs.js.map +1 -1
- package/components/Tabs/Tabs.d.ts +4 -4
- package/components/Textarea/Textarea/Textarea.js +19 -14
- package/components/Textarea/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.d.ts +8 -10
- package/components/Toggle/Toggle/Toggle.js +12 -7
- package/components/Toggle/Toggle/Toggle.js.map +1 -1
- package/components/Toggle/Toggle.d.ts +5 -6
- package/components/TokenInput/TokenInput/TokenInput.js +107 -77
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInput.d.ts +19 -16
- package/components/Tooltip/Tooltip/Tooltip.js +51 -30
- package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +10 -14
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +15 -13
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
- package/components/TooltipMenu/TooltipMenu.d.ts +5 -4
- package/internal/BGRuler/BGRuler.js +11 -6
- package/internal/BGRuler/BGRuler.js.map +1 -1
- package/internal/BGRuler.d.ts +13 -15
- package/internal/Calendar/Calendar/Calendar.js +11 -5
- package/internal/Calendar/Calendar/Calendar.js.map +1 -1
- package/internal/Calendar/Calendar.d.ts +4 -13
- package/internal/Calendar/DayCellView.styles/DayCellView.styles.js +1 -1
- package/internal/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
- package/internal/Calendar/Month/Month.js +20 -11
- package/internal/Calendar/Month/Month.js.map +1 -1
- package/internal/ComponentCombinator/ComponentCombinator.js +8 -5
- package/internal/ComponentCombinator/ComponentCombinator.js.map +1 -1
- package/internal/ComponentCombinator.d.ts +6 -8
- package/internal/ComponentTable/ComponentTable.js +16 -4
- package/internal/ComponentTable/ComponentTable.js.map +1 -1
- package/internal/ComponentTable.d.ts +5 -6
- package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +4 -2
- package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxMenu.d.ts +4 -4
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +21 -10
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView.d.ts +4 -12
- package/internal/DateSelect/DateSelect/DateSelect.js +14 -11
- package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
- package/internal/DateSelect/DateSelect.d.ts +4 -6
- package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +6 -10
- package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
- package/internal/DropdownContainer/DropdownContainer.d.ts +3 -6
- package/internal/InputLikeText/InputLikeText/InputLikeText.js +4 -2
- package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/InputLikeText/InputLikeText.d.ts +4 -3
- package/internal/InternalMenu/InternalMenu/InternalMenu.js +21 -10
- package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
- package/internal/InternalMenu/InternalMenu.d.ts +3 -9
- package/internal/MaskedInput/MaskedInput/MaskedInput.js +3 -1
- package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
- package/internal/MaskedInput/MaskedInput.d.ts +4 -2
- package/internal/Menu/Menu/Menu.js +10 -3
- package/internal/Menu/Menu/Menu.js.map +1 -1
- package/internal/Menu/Menu.d.ts +4 -7
- package/internal/Popup/Popup/Popup.js +32 -23
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/Popup/Popup.d.ts +10 -16
- package/internal/PopupMenu/PopupMenu/PopupMenu.js +12 -4
- package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/PopupMenu/PopupMenu.d.ts +8 -11
- package/internal/RenderLayer/RenderLayer/RenderLayer.js +8 -4
- package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
- package/internal/RenderLayer/RenderLayer.d.ts +4 -3
- package/internal/ThemePlayground/VariableValue/VariableValue.js +4 -2
- package/internal/ThemePlayground/VariableValue/VariableValue.js.map +1 -1
- package/internal/ThemePlayground/VariableValue.d.ts +5 -4
- package/internal/ZIndex/ZIndex/ZIndex.js +15 -13
- package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
- package/internal/ZIndex/ZIndex.d.ts +7 -11
- package/lib/createPropsGetter/createPropsGetter.js.map +1 -1
- package/lib/createPropsGetter.d.ts +2 -1
- package/package.json +2 -2
|
@@ -17,6 +17,7 @@ import { isTestEnv } from "../../../lib/currentEnvironment";
|
|
|
17
17
|
import { CommonWrapper } from "../../../internal/CommonWrapper";
|
|
18
18
|
import { responsiveLayout } from "../../ResponsiveLayout/decorator";
|
|
19
19
|
import { rootNode } from "../../../lib/rootNode";
|
|
20
|
+
import { createPropsGetter } from "../../../lib/createPropsGetter";
|
|
20
21
|
import { styles } from "../Tooltip.styles";
|
|
21
22
|
export var TooltipDataTids = {
|
|
22
23
|
root: 'Tooltip__root',
|
|
@@ -34,6 +35,7 @@ export var Tooltip = rootNode(_class = responsiveLayout(_class = (_temp = _class
|
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
_this = _React$PureComponent.call.apply(_React$PureComponent, [this].concat(args)) || this;
|
|
38
|
+
_this.getProps = createPropsGetter(Tooltip.defaultProps);
|
|
37
39
|
_this.state = {
|
|
38
40
|
opened: false,
|
|
39
41
|
focused: false
|
|
@@ -65,7 +67,9 @@ export var Tooltip = rootNode(_class = responsiveLayout(_class = (_temp = _class
|
|
|
65
67
|
};
|
|
66
68
|
|
|
67
69
|
_this.mobileCloseHandler = function () {
|
|
68
|
-
|
|
70
|
+
var trigger = _this.getProps().trigger;
|
|
71
|
+
|
|
72
|
+
if (trigger === 'manual' || trigger === 'closed' || trigger === 'opened') {
|
|
69
73
|
return;
|
|
70
74
|
}
|
|
71
75
|
|
|
@@ -89,7 +93,7 @@ export var Tooltip = rootNode(_class = responsiveLayout(_class = (_temp = _class
|
|
|
89
93
|
};
|
|
90
94
|
|
|
91
95
|
_this.handleMouseEnter = function (event) {
|
|
92
|
-
var isHoverAnchor = _this.
|
|
96
|
+
var isHoverAnchor = _this.getProps().trigger === 'hoverAnchor';
|
|
93
97
|
|
|
94
98
|
if (isHoverAnchor && event.target === _this.contentElement) {
|
|
95
99
|
return;
|
|
@@ -105,13 +109,15 @@ export var Tooltip = rootNode(_class = responsiveLayout(_class = (_temp = _class
|
|
|
105
109
|
return;
|
|
106
110
|
}
|
|
107
111
|
|
|
108
|
-
|
|
112
|
+
var trigger = _this.getProps().trigger;
|
|
113
|
+
|
|
114
|
+
if (trigger === 'hover&focus' && _this.state.focused || trigger === 'hover' && event.relatedTarget === _this.contentElement) {
|
|
109
115
|
return;
|
|
110
116
|
}
|
|
111
117
|
|
|
112
118
|
_this.clearHoverTimeout();
|
|
113
119
|
|
|
114
|
-
if (
|
|
120
|
+
if (trigger === 'hoverAnchor') {
|
|
115
121
|
_this.close();
|
|
116
122
|
} else {
|
|
117
123
|
_this.hoverTimeout = window.setTimeout(_this.close, Tooltip.delay);
|
|
@@ -143,11 +149,13 @@ export var Tooltip = rootNode(_class = responsiveLayout(_class = (_temp = _class
|
|
|
143
149
|
};
|
|
144
150
|
|
|
145
151
|
_this.handleBlur = function () {
|
|
146
|
-
|
|
152
|
+
var trigger = _this.getProps().trigger;
|
|
153
|
+
|
|
154
|
+
if (trigger === 'hover&focus' && _this.clickedOutside) {
|
|
147
155
|
_this.close();
|
|
148
156
|
}
|
|
149
157
|
|
|
150
|
-
if (
|
|
158
|
+
if (trigger === 'focus') {
|
|
151
159
|
_this.close();
|
|
152
160
|
}
|
|
153
161
|
|
|
@@ -182,13 +190,15 @@ export var Tooltip = rootNode(_class = responsiveLayout(_class = (_temp = _class
|
|
|
182
190
|
var _proto = Tooltip.prototype;
|
|
183
191
|
|
|
184
192
|
_proto.componentDidUpdate = function componentDidUpdate(prevProps) {
|
|
185
|
-
|
|
193
|
+
var _this$getProps = this.getProps(),
|
|
194
|
+
trigger = _this$getProps.trigger,
|
|
195
|
+
allowedPositions = _this$getProps.allowedPositions,
|
|
196
|
+
pos = _this$getProps.pos;
|
|
197
|
+
|
|
198
|
+
if (trigger === 'closed' && this.state.opened) {
|
|
186
199
|
this.close();
|
|
187
200
|
}
|
|
188
201
|
|
|
189
|
-
var _this$props = this.props,
|
|
190
|
-
allowedPositions = _this$props.allowedPositions,
|
|
191
|
-
pos = _this$props.pos;
|
|
192
202
|
var posChanged = prevProps.pos !== pos;
|
|
193
203
|
var allowedChanged = !isEqual(prevProps.allowedPositions, allowedPositions);
|
|
194
204
|
|
|
@@ -221,7 +231,7 @@ export var Tooltip = rootNode(_class = responsiveLayout(_class = (_temp = _class
|
|
|
221
231
|
};
|
|
222
232
|
|
|
223
233
|
_proto.renderCloseButton = function renderCloseButton() {
|
|
224
|
-
var hasCross = this.props.closeButton === undefined ? !Tooltip.triggersWithoutCloseButton.includes(this.
|
|
234
|
+
var hasCross = this.props.closeButton === undefined ? !Tooltip.triggersWithoutCloseButton.includes(this.getProps().trigger) : this.props.closeButton;
|
|
225
235
|
|
|
226
236
|
if (!hasCross || this.isMobileLayout) {
|
|
227
237
|
return null;
|
|
@@ -244,8 +254,10 @@ export var Tooltip = rootNode(_class = responsiveLayout(_class = (_temp = _class
|
|
|
244
254
|
return;
|
|
245
255
|
}
|
|
246
256
|
|
|
247
|
-
|
|
248
|
-
|
|
257
|
+
var trigger = this.getProps().trigger;
|
|
258
|
+
|
|
259
|
+
if (trigger === 'opened' || trigger === 'closed') {
|
|
260
|
+
warning(true, "Function 'show' is not supported with trigger specified '" + trigger + "'");
|
|
249
261
|
return;
|
|
250
262
|
}
|
|
251
263
|
|
|
@@ -259,8 +271,10 @@ export var Tooltip = rootNode(_class = responsiveLayout(_class = (_temp = _class
|
|
|
259
271
|
;
|
|
260
272
|
|
|
261
273
|
_proto.hide = function hide() {
|
|
262
|
-
|
|
263
|
-
|
|
274
|
+
var trigger = this.getProps().trigger;
|
|
275
|
+
|
|
276
|
+
if (trigger === 'opened' || trigger === 'closed') {
|
|
277
|
+
warning(true, "Function 'hide' is not supported with trigger specified '" + trigger + "'");
|
|
264
278
|
return;
|
|
265
279
|
}
|
|
266
280
|
|
|
@@ -271,12 +285,12 @@ export var Tooltip = rootNode(_class = responsiveLayout(_class = (_temp = _class
|
|
|
271
285
|
var props = this.props;
|
|
272
286
|
var content = this.renderContent();
|
|
273
287
|
|
|
274
|
-
var _this$
|
|
275
|
-
popupProps = _this$
|
|
276
|
-
_this$
|
|
277
|
-
layerProps = _this$
|
|
288
|
+
var _this$getPopupAndLaye = this.getPopupAndLayerProps(),
|
|
289
|
+
popupProps = _this$getPopupAndLaye.popupProps,
|
|
290
|
+
_this$getPopupAndLaye2 = _this$getPopupAndLaye.layerProps,
|
|
291
|
+
layerProps = _this$getPopupAndLaye2 === void 0 ? {
|
|
278
292
|
active: false
|
|
279
|
-
} : _this$
|
|
293
|
+
} : _this$getPopupAndLaye2;
|
|
280
294
|
|
|
281
295
|
var anchorElement = props.children || props.anchorElement;
|
|
282
296
|
var popup = this.renderPopup(anchorElement, popupProps, content);
|
|
@@ -291,6 +305,10 @@ export var Tooltip = rootNode(_class = responsiveLayout(_class = (_temp = _class
|
|
|
291
305
|
};
|
|
292
306
|
|
|
293
307
|
_proto.renderPopup = function renderPopup(anchorElement, popupProps, content) {
|
|
308
|
+
var _this$getProps2 = this.getProps(),
|
|
309
|
+
disableAnimations = _this$getProps2.disableAnimations,
|
|
310
|
+
trigger = _this$getProps2.trigger;
|
|
311
|
+
|
|
294
312
|
return /*#__PURE__*/React.createElement(CommonWrapper, _extends({
|
|
295
313
|
rootNodeRef: this.setRootNode
|
|
296
314
|
}, this.props), /*#__PURE__*/React.createElement(Popup, _extends({
|
|
@@ -300,9 +318,9 @@ export var Tooltip = rootNode(_class = responsiveLayout(_class = (_temp = _class
|
|
|
300
318
|
hasShadow: true,
|
|
301
319
|
maxWidth: "none",
|
|
302
320
|
opened: this.state.opened,
|
|
303
|
-
disableAnimations:
|
|
321
|
+
disableAnimations: disableAnimations,
|
|
304
322
|
positions: this.getPositions(),
|
|
305
|
-
ignoreHover:
|
|
323
|
+
ignoreHover: trigger === 'hoverAnchor',
|
|
306
324
|
onOpen: this.props.onOpen,
|
|
307
325
|
onClose: this.props.onClose,
|
|
308
326
|
mobileOnCloseRequest: this.mobileCloseHandler,
|
|
@@ -313,8 +331,11 @@ export var Tooltip = rootNode(_class = responsiveLayout(_class = (_temp = _class
|
|
|
313
331
|
|
|
314
332
|
_proto.getPositions = function getPositions() {
|
|
315
333
|
if (!this.positions) {
|
|
316
|
-
var
|
|
317
|
-
|
|
334
|
+
var _this$getProps3 = this.getProps(),
|
|
335
|
+
allowedPositions = _this$getProps3.allowedPositions,
|
|
336
|
+
pos = _this$getProps3.pos;
|
|
337
|
+
|
|
338
|
+
var index = allowedPositions.indexOf(pos);
|
|
318
339
|
|
|
319
340
|
if (index === -1) {
|
|
320
341
|
throw new Error('Unexpected position passed to Tooltip. Expected one of: ' + allowedPositions.join(', '));
|
|
@@ -326,11 +347,12 @@ export var Tooltip = rootNode(_class = responsiveLayout(_class = (_temp = _class
|
|
|
326
347
|
return this.positions;
|
|
327
348
|
};
|
|
328
349
|
|
|
329
|
-
_proto.
|
|
350
|
+
_proto.getPopupAndLayerProps = function getPopupAndLayerProps() {
|
|
330
351
|
var props = this.props;
|
|
331
|
-
var useWrapper = !!props.children &&
|
|
352
|
+
var useWrapper = !!props.children && this.getProps().useWrapper;
|
|
353
|
+
var trigger = this.getProps().trigger;
|
|
332
354
|
|
|
333
|
-
switch (
|
|
355
|
+
switch (trigger) {
|
|
334
356
|
case 'opened':
|
|
335
357
|
return {
|
|
336
358
|
layerProps: {
|
|
@@ -405,7 +427,7 @@ export var Tooltip = rootNode(_class = responsiveLayout(_class = (_temp = _class
|
|
|
405
427
|
};
|
|
406
428
|
|
|
407
429
|
default:
|
|
408
|
-
throw new Error('Unknown trigger specified: ' +
|
|
430
|
+
throw new Error('Unknown trigger specified: ' + trigger);
|
|
409
431
|
}
|
|
410
432
|
};
|
|
411
433
|
|
|
@@ -436,6 +458,5 @@ export var Tooltip = rootNode(_class = responsiveLayout(_class = (_temp = _class
|
|
|
436
458
|
trigger: 'hover',
|
|
437
459
|
allowedPositions: Positions,
|
|
438
460
|
disableAnimations: isTestEnv,
|
|
439
|
-
useWrapper: false
|
|
440
|
-
closeOnChildrenMouseLeave: false
|
|
461
|
+
useWrapper: false
|
|
441
462
|
}, _class2.delay = 100, _class2.triggersWithoutCloseButton = ['hover', 'hoverAnchor', 'focus', 'hover&focus'], _temp)) || _class) || _class;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Tooltip.tsx"],"names":["React","warning","isEqual","isNullable","ThemeFactory","DefaultPosition","Popup","RenderLayer","CrossIcon","containsTargetOrRenderContainer","ThemeContext","isTestEnv","CommonWrapper","responsiveLayout","rootNode","styles","TooltipDataTids","root","content","Positions","Tooltip","state","opened","focused","hoverTimeout","contentElement","positions","clickedOutside","popupRef","createRef","renderContent","props","render","refContent","tooltipContent","theme","renderCloseButton","getAnchorElement","current","anchorElement","mobileCloseHandler","trigger","close","node","open","setState","handleMouseEnter","event","isHoverAnchor","target","clearHoverTimeout","window","setTimeout","delay","handleMouseLeave","isMobileLayout","relatedTarget","handleClick","handleClickOutsideAnchor","isClickOutsideContent","onCloseRequest","handleFocus","handleBlur","handleCloseButtonClick","stopPropagation","onCloseClick","defaultPrevented","componentDidUpdate","prevProps","allowedPositions","pos","posChanged","allowedChanged","componentWillUnmount","create","popupPinOffset","tooltipPinOffset","popupMargin","tooltipMargin","popupBorder","tooltipBorder","popupBorderRadius","tooltipBorderRadius","popupPinSize","tooltipPinSize","popupPinOffsetX","tooltipPinOffsetX","popupPinOffsetY","tooltipPinOffsetY","renderMain","hasCross","closeButton","undefined","triggersWithoutCloseButton","includes","cross","show","hide","getProps","popupProps","layerProps","active","children","popup","renderPopup","setRootNode","disableAnimations","getPositions","onOpen","onClose","index","indexOf","Error","join","slice","useWrapper","onClickOutside","onMouseEnter","onMouseLeave","onClick","onFocus","onBlur","clearTimeout","Element","PureComponent","__KONTUR_REACT_UI__","propTypes","propName","componentName","Array","isArray","defaultProps","closeOnChildrenMouseLeave"],"mappings":"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","sourcesContent":["import React from 'react';\nimport warning from 'warning';\nimport isEqual from 'lodash.isequal';\n\nimport { isNullable } from '../../lib/utils';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { DefaultPosition, Popup, PopupProps, PopupPositionsType } from '../../internal/Popup';\nimport { RenderLayer, RenderLayerProps } from '../../internal/RenderLayer';\nimport { CrossIcon } from '../../internal/icons/CrossIcon';\nimport { Nullable } from '../../typings/utility-types';\nimport { MouseEventType } from '../../typings/event-types';\nimport { containsTargetOrRenderContainer } from '../../lib/listenFocusOutside';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\n\nimport { styles } from './Tooltip.styles';\n\nexport type TooltipTrigger =\n /** Наведение на children и на тултип */\n | 'hover'\n /** Клик на children */\n | 'click'\n /** Фокус на children */\n | 'focus'\n /** Наведение на children и на тултип и фокус на children */\n | 'hover&focus'\n /** Просто открыт */\n | 'opened'\n /** Просто закрыт */\n | 'closed'\n /** Наведение ТОЛЬКО на children, а не на тултип */\n | 'hoverAnchor'\n /** Управление через публичные функции show и hide */\n | 'manual';\n\nexport interface TooltipProps extends CommonProps {\n /**\n * Относительно какого элемента позиционировать тултип\n */\n anchorElement?: HTMLElement;\n\n /**\n * Если не указан `anchorElement` то тултип будет позиционироваться\n * относительно дочерних элементов\n */\n children?: React.ReactNode;\n\n className?: string;\n\n /**\n * Показывать крестик для закрытия тултипа. По-умолчанию крестик\n * показывается если проп *trigger* не `hover` и не `focus`.\n */\n closeButton?: boolean;\n\n /**\n * Функция, которая возвращает содержимое тултипа.\n *\n * Если эта функция вернула `null`, то тултип не показывается.\n */\n render?: Nullable<() => React.ReactNode>;\n\n /**\n * Значение по умолчанию: `\"top left\"`.\n */\n pos: PopupPositionsType;\n\n /**\n * Триггер открытия тултипа\n * ```ts\n * type TooltipTrigger =\n * | 'hover'\n * | 'click'\n * | 'focus'\n * | 'hover&focus'\n * | 'opened'\n * | 'closed'\n * | 'hoverAnchor'\n * | 'manual';\n * ```\n */\n trigger: TooltipTrigger;\n\n /**\n * Хэндлер, вызываемый при клике по крестику\n */\n onCloseClick?: React.MouseEventHandler<HTMLElement>;\n\n /**\n * Хэндлер, вызываемый при клике по крестику или\n * снаружи тултипа\n */\n onCloseRequest?: () => void;\n\n /**\n * Хэндлер, вызываемый при закрытии тултипа\n */\n onClose?: () => void;\n\n /**\n * Хэндлер, вызываемый при открытии тултипа\n */\n onOpen?: () => void;\n\n /**\n * Список позиций, которые тултип будет занимать.\n * Если положение тултипа в определенной позиции\n * будет выходить за край экрана, то будет выбрана\n * следующая позиция. Обязательно должен включать\n * позицию указанную в `pos`\n */\n allowedPositions: PopupPositionsType[];\n\n /**\n * Флаг отключения анимации.\n * @default false\n */\n disableAnimations: boolean;\n\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper: boolean;\n}\n\nexport interface TooltipState {\n opened: boolean;\n focused: boolean;\n}\n\nexport const TooltipDataTids = {\n root: 'Tooltip__root',\n content: 'Tooltip__content',\n} as const;\n\nconst Positions: PopupPositionsType[] = [\n 'right bottom',\n 'right middle',\n 'right top',\n 'top right',\n 'top center',\n 'top left',\n 'left top',\n 'left middle',\n 'left bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n];\n\n@rootNode\n@responsiveLayout\nexport class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Tooltip';\n\n private isMobileLayout!: boolean;\n\n public static propTypes = {\n children(props: TooltipProps, propName: keyof TooltipProps, componentName: string) {\n const children = props[propName];\n warning(\n children || props.anchorElement,\n `[${componentName}]: you must provide either 'children' or 'anchorElement' prop for ${componentName} to work properly`,\n );\n warning(\n !(Array.isArray(children) && props.useWrapper === false),\n `[${componentName}]: you provided multiple children, but useWrapper={false} - forcing wrapper <span/> for positioning to work correctly`,\n );\n },\n };\n\n public static defaultProps = {\n pos: DefaultPosition,\n trigger: 'hover',\n allowedPositions: Positions,\n disableAnimations: isTestEnv,\n useWrapper: false,\n closeOnChildrenMouseLeave: false,\n };\n\n public static delay = 100;\n private static triggersWithoutCloseButton: TooltipTrigger[] = ['hover', 'hoverAnchor', 'focus', 'hover&focus'];\n\n public state: TooltipState = { opened: false, focused: false };\n private theme!: Theme;\n private hoverTimeout: Nullable<number> = null;\n private contentElement: Nullable<HTMLElement> = null;\n private positions: Nullable<PopupPositionsType[]> = null;\n private clickedOutside = true;\n private setRootNode!: TSetRootNode;\n\n private popupRef = React.createRef<Popup>();\n public componentDidUpdate(prevProps: TooltipProps) {\n if (this.props.trigger === 'closed' && this.state.opened) {\n this.close();\n }\n\n const { allowedPositions, pos } = this.props;\n const posChanged = prevProps.pos !== pos;\n const allowedChanged = !isEqual(prevProps.allowedPositions, allowedPositions);\n\n if (posChanged || allowedChanged) {\n this.positions = null;\n }\n }\n\n public componentWillUnmount() {\n this.clearHoverTimeout();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.tooltipPinOffset,\n popupMargin: theme.tooltipMargin,\n popupBorder: theme.tooltipBorder,\n popupBorderRadius: theme.tooltipBorderRadius,\n popupPinSize: theme.tooltipPinSize,\n popupPinOffsetX: theme.tooltipPinOffsetX,\n popupPinOffsetY: theme.tooltipPinOffsetY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderContent = () => {\n const content = this.props.render ? this.props.render() : null;\n if (isNullable(content)) {\n return null;\n }\n\n return (\n <div ref={this.refContent} className={styles.tooltipContent(this.theme)} data-tid={TooltipDataTids.content}>\n {content}\n {this.renderCloseButton()}\n </div>\n );\n };\n\n public renderCloseButton() {\n const hasCross =\n this.props.closeButton === undefined\n ? !Tooltip.triggersWithoutCloseButton.includes(this.props.trigger)\n : this.props.closeButton;\n\n if (!hasCross || this.isMobileLayout) {\n return null;\n }\n\n return (\n <div className={styles.cross(this.theme)} onClick={this.handleCloseButtonClick}>\n <CrossIcon />\n </div>\n );\n }\n\n public getAnchorElement = (): Nullable<HTMLElement> => {\n return this.popupRef.current?.anchorElement;\n };\n\n /**\n * Программно открывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public show() {\n if (this.state.opened) {\n return;\n }\n if (this.props.trigger === 'opened' || this.props.trigger === 'closed') {\n warning(true, `Function 'show' is not supported with trigger specified '${this.props.trigger}'`);\n return;\n }\n this.open();\n }\n\n /**\n * Программно закрывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public hide() {\n if (this.props.trigger === 'opened' || this.props.trigger === 'closed') {\n warning(true, `Function 'hide' is not supported with trigger specified '${this.props.trigger}'`);\n return;\n }\n this.close();\n }\n\n private renderMain() {\n const props = this.props;\n const content = this.renderContent();\n const { popupProps, layerProps = { active: false } } = this.getProps();\n const anchorElement = props.children || props.anchorElement;\n const popup = this.renderPopup(anchorElement, popupProps, content);\n\n if (this.isMobileLayout) {\n return popup;\n }\n\n return (\n <RenderLayer {...layerProps} getAnchorElement={this.getAnchorElement}>\n {popup}\n </RenderLayer>\n );\n }\n\n private renderPopup(\n anchorElement: React.ReactNode | HTMLElement,\n popupProps: Partial<PopupProps>,\n content: JSX.Element | null,\n ) {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Popup\n data-tid={TooltipDataTids.root}\n anchorElement={anchorElement}\n hasPin\n hasShadow\n maxWidth=\"none\"\n opened={this.state.opened}\n disableAnimations={this.props.disableAnimations}\n positions={this.getPositions()}\n ignoreHover={this.props.trigger === 'hoverAnchor'}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n mobileOnCloseRequest={this.mobileCloseHandler}\n tryPreserveFirstRenderedPosition\n ref={this.popupRef}\n {...popupProps}\n >\n {content}\n </Popup>\n </CommonWrapper>\n );\n }\n\n private mobileCloseHandler = () => {\n if (this.props.trigger === 'manual' || this.props.trigger === 'closed' || this.props.trigger === 'opened') {\n return;\n }\n\n this.close();\n };\n\n private refContent = (node: HTMLElement | null) => {\n this.contentElement = node;\n };\n\n private getPositions() {\n if (!this.positions) {\n const allowedPositions = this.props.allowedPositions;\n const index = allowedPositions.indexOf(this.props.pos);\n if (index === -1) {\n throw new Error('Unexpected position passed to Tooltip. Expected one of: ' + allowedPositions.join(', '));\n }\n\n this.positions = [...allowedPositions.slice(index), ...allowedPositions.slice(0, index)];\n }\n\n return this.positions;\n }\n\n private getProps(): {\n layerProps?: Partial<RenderLayerProps>;\n popupProps: Partial<PopupProps>;\n } {\n const props = this.props;\n const useWrapper = !!props.children && props.useWrapper;\n\n switch (this.props.trigger) {\n case 'opened':\n return {\n layerProps: {\n active: true,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n opened: true,\n useWrapper,\n },\n };\n\n case 'closed':\n return {\n popupProps: {\n opened: false,\n useWrapper,\n },\n };\n\n case 'hoverAnchor':\n case 'hover':\n return {\n popupProps: {\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n case 'manual':\n return {\n popupProps: {\n useWrapper,\n },\n };\n case 'click':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onClick: this.handleClick,\n useWrapper,\n },\n };\n\n case 'focus':\n return {\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n useWrapper,\n },\n };\n\n case 'hover&focus':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n\n default:\n throw new Error('Unknown trigger specified: ' + props.trigger);\n }\n }\n\n private open = () => this.setState({ opened: true });\n\n private close = () => this.setState({ opened: false });\n\n private clearHoverTimeout() {\n if (this.hoverTimeout) {\n clearTimeout(this.hoverTimeout);\n this.hoverTimeout = null;\n }\n }\n\n private handleMouseEnter = (event: MouseEventType) => {\n const isHoverAnchor = this.props.trigger === 'hoverAnchor';\n if (isHoverAnchor && event.target === this.contentElement) {\n return;\n }\n\n this.clearHoverTimeout();\n\n this.hoverTimeout = window.setTimeout(this.open, Tooltip.delay);\n };\n\n private handleMouseLeave = (event: MouseEventType) => {\n if (this.isMobileLayout) {\n return;\n }\n\n if (\n (this.props.trigger === 'hover&focus' && this.state.focused) ||\n (this.props.trigger === 'hover' && event.relatedTarget === this.contentElement)\n ) {\n return;\n }\n\n this.clearHoverTimeout();\n\n if (this.props.trigger === 'hoverAnchor') {\n this.close();\n } else {\n this.hoverTimeout = window.setTimeout(this.close, Tooltip.delay);\n }\n };\n\n private handleClick = () => {\n this.open();\n };\n\n private handleClickOutsideAnchor = (event: Event) => {\n this.clickedOutside = this.isClickOutsideContent(event);\n if (this.clickedOutside) {\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest();\n }\n this.close();\n }\n };\n\n private isClickOutsideContent(event: Event) {\n if (this.contentElement && event.target instanceof Element) {\n return !containsTargetOrRenderContainer(event.target)(this.contentElement);\n }\n\n return true;\n }\n\n private handleFocus = () => {\n this.setState({ focused: true });\n this.open();\n };\n\n private handleBlur = () => {\n if (this.props.trigger === 'hover&focus' && this.clickedOutside) {\n this.close();\n }\n\n if (this.props.trigger === 'focus') {\n this.close();\n }\n\n this.clickedOutside = true;\n this.setState({ focused: false });\n };\n\n private handleCloseButtonClick = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n\n if (this.props.onCloseClick) {\n this.props.onCloseClick(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest();\n }\n\n this.close();\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Tooltip.tsx"],"names":["React","warning","isEqual","isNullable","ThemeFactory","DefaultPosition","Popup","RenderLayer","CrossIcon","containsTargetOrRenderContainer","ThemeContext","isTestEnv","CommonWrapper","responsiveLayout","rootNode","createPropsGetter","styles","TooltipDataTids","root","content","Positions","Tooltip","getProps","defaultProps","state","opened","focused","hoverTimeout","contentElement","positions","clickedOutside","popupRef","createRef","renderContent","props","render","refContent","tooltipContent","theme","renderCloseButton","getAnchorElement","current","anchorElement","mobileCloseHandler","trigger","close","node","open","setState","handleMouseEnter","event","isHoverAnchor","target","clearHoverTimeout","window","setTimeout","delay","handleMouseLeave","isMobileLayout","relatedTarget","handleClick","handleClickOutsideAnchor","isClickOutsideContent","onCloseRequest","handleFocus","handleBlur","handleCloseButtonClick","stopPropagation","onCloseClick","defaultPrevented","componentDidUpdate","prevProps","allowedPositions","pos","posChanged","allowedChanged","componentWillUnmount","create","popupPinOffset","tooltipPinOffset","popupMargin","tooltipMargin","popupBorder","tooltipBorder","popupBorderRadius","tooltipBorderRadius","popupPinSize","tooltipPinSize","popupPinOffsetX","tooltipPinOffsetX","popupPinOffsetY","tooltipPinOffsetY","renderMain","hasCross","closeButton","undefined","triggersWithoutCloseButton","includes","cross","show","hide","getPopupAndLayerProps","popupProps","layerProps","active","children","popup","renderPopup","disableAnimations","setRootNode","getPositions","onOpen","onClose","index","indexOf","Error","join","slice","useWrapper","onClickOutside","onMouseEnter","onMouseLeave","onClick","onFocus","onBlur","clearTimeout","Element","PureComponent","__KONTUR_REACT_UI__","propTypes","propName","componentName","Array","isArray"],"mappings":"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","sourcesContent":["import React from 'react';\nimport warning from 'warning';\nimport isEqual from 'lodash.isequal';\n\nimport { isNullable } from '../../lib/utils';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { DefaultPosition, Popup, PopupProps, PopupPositionsType } from '../../internal/Popup';\nimport { RenderLayer, RenderLayerProps } from '../../internal/RenderLayer';\nimport { CrossIcon } from '../../internal/icons/CrossIcon';\nimport { Nullable } from '../../typings/utility-types';\nimport { MouseEventType } from '../../typings/event-types';\nimport { containsTargetOrRenderContainer } from '../../lib/listenFocusOutside';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles } from './Tooltip.styles';\n\nexport type TooltipTrigger =\n /** Наведение на children и на тултип */\n | 'hover'\n /** Клик на children */\n | 'click'\n /** Фокус на children */\n | 'focus'\n /** Наведение на children и на тултип и фокус на children */\n | 'hover&focus'\n /** Просто открыт */\n | 'opened'\n /** Просто закрыт */\n | 'closed'\n /** Наведение ТОЛЬКО на children, а не на тултип */\n | 'hoverAnchor'\n /** Управление через публичные функции show и hide */\n | 'manual';\n\nexport interface TooltipProps extends CommonProps {\n /**\n * Относительно какого элемента позиционировать тултип\n */\n anchorElement?: HTMLElement;\n\n /**\n * Если не указан `anchorElement` то тултип будет позиционироваться\n * относительно дочерних элементов\n */\n children?: React.ReactNode;\n\n className?: string;\n\n /**\n * Показывать крестик для закрытия тултипа. По-умолчанию крестик\n * показывается если проп *trigger* не `hover` и не `focus`.\n */\n closeButton?: boolean;\n\n /**\n * Функция, которая возвращает содержимое тултипа.\n *\n * Если эта функция вернула `null`, то тултип не показывается.\n */\n render?: Nullable<() => React.ReactNode>;\n\n /**\n * Значение по умолчанию: `\"top left\"`.\n */\n pos?: PopupPositionsType;\n\n /**\n * Триггер открытия тултипа\n * ```ts\n * type TooltipTrigger =\n * | 'hover'\n * | 'click'\n * | 'focus'\n * | 'hover&focus'\n * | 'opened'\n * | 'closed'\n * | 'hoverAnchor'\n * | 'manual';\n * ```\n */\n trigger?: TooltipTrigger;\n\n /**\n * Хэндлер, вызываемый при клике по крестику\n */\n onCloseClick?: React.MouseEventHandler<HTMLElement>;\n\n /**\n * Хэндлер, вызываемый при клике по крестику или\n * снаружи тултипа\n */\n onCloseRequest?: () => void;\n\n /**\n * Хэндлер, вызываемый при закрытии тултипа\n */\n onClose?: () => void;\n\n /**\n * Хэндлер, вызываемый при открытии тултипа\n */\n onOpen?: () => void;\n\n /**\n * Список позиций, которые тултип будет занимать.\n * Если положение тултипа в определенной позиции\n * будет выходить за край экрана, то будет выбрана\n * следующая позиция. Обязательно должен включать\n * позицию указанную в `pos`\n */\n allowedPositions?: PopupPositionsType[];\n\n /**\n * Флаг отключения анимации.\n * @default false\n */\n disableAnimations?: boolean;\n\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper?: boolean;\n}\n\nexport interface TooltipState {\n opened: boolean;\n focused: boolean;\n}\n\nexport const TooltipDataTids = {\n root: 'Tooltip__root',\n content: 'Tooltip__content',\n} as const;\n\nconst Positions: PopupPositionsType[] = [\n 'right bottom',\n 'right middle',\n 'right top',\n 'top right',\n 'top center',\n 'top left',\n 'left top',\n 'left middle',\n 'left bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n];\n\ntype DefaultProps = Required<\n Pick<TooltipProps, 'pos' | 'trigger' | 'allowedPositions' | 'disableAnimations' | 'useWrapper'>\n>;\n\n@rootNode\n@responsiveLayout\nexport class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Tooltip';\n\n private isMobileLayout!: boolean;\n\n public static propTypes = {\n children(props: TooltipProps, propName: keyof TooltipProps, componentName: string) {\n const children = props[propName];\n warning(\n children || props.anchorElement,\n `[${componentName}]: you must provide either 'children' or 'anchorElement' prop for ${componentName} to work properly`,\n );\n warning(\n !(Array.isArray(children) && props.useWrapper === false),\n `[${componentName}]: you provided multiple children, but useWrapper={false} - forcing wrapper <span/> for positioning to work correctly`,\n );\n },\n };\n\n public static defaultProps: DefaultProps = {\n pos: DefaultPosition,\n trigger: 'hover',\n allowedPositions: Positions,\n disableAnimations: isTestEnv,\n useWrapper: false,\n };\n\n private getProps = createPropsGetter(Tooltip.defaultProps);\n\n public static delay = 100;\n private static triggersWithoutCloseButton: TooltipTrigger[] = ['hover', 'hoverAnchor', 'focus', 'hover&focus'];\n\n public state: TooltipState = { opened: false, focused: false };\n private theme!: Theme;\n private hoverTimeout: Nullable<number> = null;\n private contentElement: Nullable<HTMLElement> = null;\n private positions: Nullable<PopupPositionsType[]> = null;\n private clickedOutside = true;\n private setRootNode!: TSetRootNode;\n\n private popupRef = React.createRef<Popup>();\n public componentDidUpdate(prevProps: TooltipProps) {\n const { trigger, allowedPositions, pos } = this.getProps();\n if (trigger === 'closed' && this.state.opened) {\n this.close();\n }\n const posChanged = prevProps.pos !== pos;\n const allowedChanged = !isEqual(prevProps.allowedPositions, allowedPositions);\n\n if (posChanged || allowedChanged) {\n this.positions = null;\n }\n }\n\n public componentWillUnmount() {\n this.clearHoverTimeout();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.tooltipPinOffset,\n popupMargin: theme.tooltipMargin,\n popupBorder: theme.tooltipBorder,\n popupBorderRadius: theme.tooltipBorderRadius,\n popupPinSize: theme.tooltipPinSize,\n popupPinOffsetX: theme.tooltipPinOffsetX,\n popupPinOffsetY: theme.tooltipPinOffsetY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderContent = () => {\n const content = this.props.render ? this.props.render() : null;\n if (isNullable(content)) {\n return null;\n }\n\n return (\n <div ref={this.refContent} className={styles.tooltipContent(this.theme)} data-tid={TooltipDataTids.content}>\n {content}\n {this.renderCloseButton()}\n </div>\n );\n };\n\n public renderCloseButton() {\n const hasCross =\n this.props.closeButton === undefined\n ? !Tooltip.triggersWithoutCloseButton.includes(this.getProps().trigger)\n : this.props.closeButton;\n\n if (!hasCross || this.isMobileLayout) {\n return null;\n }\n\n return (\n <div className={styles.cross(this.theme)} onClick={this.handleCloseButtonClick}>\n <CrossIcon />\n </div>\n );\n }\n\n public getAnchorElement = (): Nullable<HTMLElement> => {\n return this.popupRef.current?.anchorElement;\n };\n\n /**\n * Программно открывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public show() {\n if (this.state.opened) {\n return;\n }\n const trigger = this.getProps().trigger;\n if (trigger === 'opened' || trigger === 'closed') {\n warning(true, `Function 'show' is not supported with trigger specified '${trigger}'`);\n return;\n }\n this.open();\n }\n\n /**\n * Программно закрывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public hide() {\n const trigger = this.getProps().trigger;\n if (trigger === 'opened' || trigger === 'closed') {\n warning(true, `Function 'hide' is not supported with trigger specified '${trigger}'`);\n return;\n }\n this.close();\n }\n\n private renderMain() {\n const props = this.props;\n const content = this.renderContent();\n const { popupProps, layerProps = { active: false } } = this.getPopupAndLayerProps();\n const anchorElement = props.children || props.anchorElement;\n const popup = this.renderPopup(anchorElement, popupProps, content);\n\n if (this.isMobileLayout) {\n return popup;\n }\n\n return (\n <RenderLayer {...layerProps} getAnchorElement={this.getAnchorElement}>\n {popup}\n </RenderLayer>\n );\n }\n\n private renderPopup(\n anchorElement: React.ReactNode | HTMLElement,\n popupProps: Partial<PopupProps>,\n content: JSX.Element | null,\n ) {\n const { disableAnimations, trigger } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Popup\n data-tid={TooltipDataTids.root}\n anchorElement={anchorElement}\n hasPin\n hasShadow\n maxWidth=\"none\"\n opened={this.state.opened}\n disableAnimations={disableAnimations}\n positions={this.getPositions()}\n ignoreHover={trigger === 'hoverAnchor'}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n mobileOnCloseRequest={this.mobileCloseHandler}\n tryPreserveFirstRenderedPosition\n ref={this.popupRef}\n {...popupProps}\n >\n {content}\n </Popup>\n </CommonWrapper>\n );\n }\n\n private mobileCloseHandler = () => {\n const trigger = this.getProps().trigger;\n if (trigger === 'manual' || trigger === 'closed' || trigger === 'opened') {\n return;\n }\n\n this.close();\n };\n\n private refContent = (node: HTMLElement | null) => {\n this.contentElement = node;\n };\n\n private getPositions() {\n if (!this.positions) {\n const { allowedPositions, pos } = this.getProps();\n const index = allowedPositions.indexOf(pos);\n if (index === -1) {\n throw new Error('Unexpected position passed to Tooltip. Expected one of: ' + allowedPositions.join(', '));\n }\n\n this.positions = [...allowedPositions.slice(index), ...allowedPositions.slice(0, index)];\n }\n\n return this.positions;\n }\n\n private getPopupAndLayerProps(): {\n layerProps?: Partial<RenderLayerProps>;\n popupProps: Partial<PopupProps>;\n } {\n const props = this.props;\n const useWrapper = !!props.children && this.getProps().useWrapper;\n const trigger = this.getProps().trigger;\n\n switch (trigger) {\n case 'opened':\n return {\n layerProps: {\n active: true,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n opened: true,\n useWrapper,\n },\n };\n\n case 'closed':\n return {\n popupProps: {\n opened: false,\n useWrapper,\n },\n };\n\n case 'hoverAnchor':\n case 'hover':\n return {\n popupProps: {\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n case 'manual':\n return {\n popupProps: {\n useWrapper,\n },\n };\n case 'click':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onClick: this.handleClick,\n useWrapper,\n },\n };\n\n case 'focus':\n return {\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n useWrapper,\n },\n };\n\n case 'hover&focus':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n\n default:\n throw new Error('Unknown trigger specified: ' + trigger);\n }\n }\n\n private open = () => this.setState({ opened: true });\n\n private close = () => this.setState({ opened: false });\n\n private clearHoverTimeout() {\n if (this.hoverTimeout) {\n clearTimeout(this.hoverTimeout);\n this.hoverTimeout = null;\n }\n }\n\n private handleMouseEnter = (event: MouseEventType) => {\n const isHoverAnchor = this.getProps().trigger === 'hoverAnchor';\n if (isHoverAnchor && event.target === this.contentElement) {\n return;\n }\n\n this.clearHoverTimeout();\n\n this.hoverTimeout = window.setTimeout(this.open, Tooltip.delay);\n };\n\n private handleMouseLeave = (event: MouseEventType) => {\n if (this.isMobileLayout) {\n return;\n }\n const trigger = this.getProps().trigger;\n if (\n (trigger === 'hover&focus' && this.state.focused) ||\n (trigger === 'hover' && event.relatedTarget === this.contentElement)\n ) {\n return;\n }\n\n this.clearHoverTimeout();\n\n if (trigger === 'hoverAnchor') {\n this.close();\n } else {\n this.hoverTimeout = window.setTimeout(this.close, Tooltip.delay);\n }\n };\n\n private handleClick = () => {\n this.open();\n };\n\n private handleClickOutsideAnchor = (event: Event) => {\n this.clickedOutside = this.isClickOutsideContent(event);\n if (this.clickedOutside) {\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest();\n }\n this.close();\n }\n };\n\n private isClickOutsideContent(event: Event) {\n if (this.contentElement && event.target instanceof Element) {\n return !containsTargetOrRenderContainer(event.target)(this.contentElement);\n }\n\n return true;\n }\n\n private handleFocus = () => {\n this.setState({ focused: true });\n this.open();\n };\n\n private handleBlur = () => {\n const trigger = this.getProps().trigger;\n if (trigger === 'hover&focus' && this.clickedOutside) {\n this.close();\n }\n\n if (trigger === 'focus') {\n this.close();\n }\n\n this.clickedOutside = true;\n this.setState({ focused: false });\n };\n\n private handleCloseButtonClick = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n\n if (this.props.onCloseClick) {\n this.props.onCloseClick(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest();\n }\n\n this.close();\n };\n}\n"]}
|
|
@@ -45,7 +45,7 @@ export interface TooltipProps extends CommonProps {
|
|
|
45
45
|
/**
|
|
46
46
|
* Значение по умолчанию: `"top left"`.
|
|
47
47
|
*/
|
|
48
|
-
pos
|
|
48
|
+
pos?: PopupPositionsType;
|
|
49
49
|
/**
|
|
50
50
|
* Триггер открытия тултипа
|
|
51
51
|
* ```ts
|
|
@@ -60,7 +60,7 @@ export interface TooltipProps extends CommonProps {
|
|
|
60
60
|
* | 'manual';
|
|
61
61
|
* ```
|
|
62
62
|
*/
|
|
63
|
-
trigger
|
|
63
|
+
trigger?: TooltipTrigger;
|
|
64
64
|
/**
|
|
65
65
|
* Хэндлер, вызываемый при клике по крестику
|
|
66
66
|
*/
|
|
@@ -85,18 +85,18 @@ export interface TooltipProps extends CommonProps {
|
|
|
85
85
|
* следующая позиция. Обязательно должен включать
|
|
86
86
|
* позицию указанную в `pos`
|
|
87
87
|
*/
|
|
88
|
-
allowedPositions
|
|
88
|
+
allowedPositions?: PopupPositionsType[];
|
|
89
89
|
/**
|
|
90
90
|
* Флаг отключения анимации.
|
|
91
91
|
* @default false
|
|
92
92
|
*/
|
|
93
|
-
disableAnimations
|
|
93
|
+
disableAnimations?: boolean;
|
|
94
94
|
/**
|
|
95
95
|
* Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.
|
|
96
96
|
*
|
|
97
97
|
* _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.
|
|
98
98
|
*/
|
|
99
|
-
useWrapper
|
|
99
|
+
useWrapper?: boolean;
|
|
100
100
|
}
|
|
101
101
|
export interface TooltipState {
|
|
102
102
|
opened: boolean;
|
|
@@ -106,20 +106,15 @@ export declare const TooltipDataTids: {
|
|
|
106
106
|
readonly root: "Tooltip__root";
|
|
107
107
|
readonly content: "Tooltip__content";
|
|
108
108
|
};
|
|
109
|
+
declare type DefaultProps = Required<Pick<TooltipProps, 'pos' | 'trigger' | 'allowedPositions' | 'disableAnimations' | 'useWrapper'>>;
|
|
109
110
|
export declare class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {
|
|
110
111
|
static __KONTUR_REACT_UI__: string;
|
|
111
112
|
private isMobileLayout;
|
|
112
113
|
static propTypes: {
|
|
113
114
|
children(props: TooltipProps, propName: keyof TooltipProps, componentName: string): void;
|
|
114
115
|
};
|
|
115
|
-
static defaultProps:
|
|
116
|
-
|
|
117
|
-
trigger: string;
|
|
118
|
-
allowedPositions: ("top left" | "top center" | "top right" | "right top" | "right middle" | "right bottom" | "bottom right" | "bottom center" | "bottom left" | "left bottom" | "left middle" | "left top")[];
|
|
119
|
-
disableAnimations: boolean;
|
|
120
|
-
useWrapper: boolean;
|
|
121
|
-
closeOnChildrenMouseLeave: boolean;
|
|
122
|
-
};
|
|
116
|
+
static defaultProps: DefaultProps;
|
|
117
|
+
private getProps;
|
|
123
118
|
static delay: number;
|
|
124
119
|
private static triggersWithoutCloseButton;
|
|
125
120
|
state: TooltipState;
|
|
@@ -153,7 +148,7 @@ export declare class Tooltip extends React.PureComponent<TooltipProps, TooltipSt
|
|
|
153
148
|
private mobileCloseHandler;
|
|
154
149
|
private refContent;
|
|
155
150
|
private getPositions;
|
|
156
|
-
private
|
|
151
|
+
private getPopupAndLayerProps;
|
|
157
152
|
private open;
|
|
158
153
|
private close;
|
|
159
154
|
private clearHoverTimeout;
|
|
@@ -166,3 +161,4 @@ export declare class Tooltip extends React.PureComponent<TooltipProps, TooltipSt
|
|
|
166
161
|
private handleBlur;
|
|
167
162
|
private handleCloseButtonClick;
|
|
168
163
|
}
|
|
164
|
+
export {};
|
|
@@ -10,28 +10,30 @@ import { PopupMenu } from "../../../internal/PopupMenu";
|
|
|
10
10
|
import { isProductionEnv, isTestEnv } from "../../../lib/currentEnvironment";
|
|
11
11
|
import { CommonWrapper } from "../../../internal/CommonWrapper";
|
|
12
12
|
import { rootNode } from "../../../lib/rootNode";
|
|
13
|
+
import { createPropsGetter } from "../../../lib/createPropsGetter";
|
|
13
14
|
export var TooltipMenuDataTids = {
|
|
14
15
|
root: 'TooltipMenu__root'
|
|
15
16
|
};
|
|
17
|
+
export
|
|
16
18
|
/**
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
export var TooltipMenu = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
|
|
19
|
+
* Меню, раскрывающееся по клику на переданный в `caption` элемент.
|
|
20
|
+
*
|
|
21
|
+
* Положение меню задаётся с помощью массива `positions` и работает так:
|
|
22
|
+
* первое значение в массиве - дефолтная позиция, меню раскроется на этой позиции, если оно не будет выходить за пределы `viewport`,
|
|
23
|
+
* если раскрыться в дефолтной позиции не получится - будет использована следующая позиция, и так далее, пока не будет достигнут конец массива. Если все положения из списка будут выходить за пределы `viewport`, в качестве положения будет использовано первое значение в массиве.
|
|
24
|
+
*
|
|
25
|
+
* Если меню должно раскрываться только в одну сторону - массив `positions` должен содержать только один элемент: сторону, в которую должно открываться меню.
|
|
26
|
+
*
|
|
27
|
+
* Если массив `positions` не передан (или передан пустой массив), будут использованы всевозможные значения.
|
|
28
|
+
*/
|
|
29
|
+
var TooltipMenu = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
|
|
29
30
|
_inheritsLoose(TooltipMenu, _React$Component);
|
|
30
31
|
|
|
31
32
|
function TooltipMenu(props) {
|
|
32
33
|
var _this;
|
|
33
34
|
|
|
34
35
|
_this = _React$Component.call(this, props) || this;
|
|
36
|
+
_this.getProps = createPropsGetter(TooltipMenu.defaultProps);
|
|
35
37
|
|
|
36
38
|
if (!props.caption && !isProductionEnv) {
|
|
37
39
|
throw new Error('Prop "caption" is required!!!');
|
|
@@ -74,7 +76,7 @@ export var TooltipMenu = rootNode(_class = (_temp = _class2 = /*#__PURE__*/funct
|
|
|
74
76
|
onOpen: this.props.onOpen,
|
|
75
77
|
onClose: this.props.onClose,
|
|
76
78
|
popupHasPin: true,
|
|
77
|
-
disableAnimations: this.
|
|
79
|
+
disableAnimations: this.getProps().disableAnimations
|
|
78
80
|
}, this.props.children));
|
|
79
81
|
};
|
|
80
82
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["TooltipMenu.tsx"],"names":["React","ThemeFactory","ThemeContext","PopupMenu","isProductionEnv","isTestEnv","CommonWrapper","rootNode","TooltipMenuDataTids","root","TooltipMenu","props","caption","Error","render","theme","create","popupPinOffset","tooltipMenuPinOffset","popupMargin","tooltipMenuMargin","popupPinSize","tooltipMenuPinSize","renderMain","setRootNode","menuMaxHeight","menuWidth","header","footer","positions","onOpen","onClose","disableAnimations","children","Component","__KONTUR_REACT_UI__"
|
|
1
|
+
{"version":3,"sources":["TooltipMenu.tsx"],"names":["React","ThemeFactory","ThemeContext","PopupMenu","isProductionEnv","isTestEnv","CommonWrapper","rootNode","createPropsGetter","TooltipMenuDataTids","root","TooltipMenu","props","getProps","defaultProps","caption","Error","render","theme","create","popupPinOffset","tooltipMenuPinOffset","popupMargin","tooltipMenuMargin","popupPinSize","tooltipMenuPinSize","renderMain","setRootNode","menuMaxHeight","menuWidth","header","footer","positions","onOpen","onClose","disableAnimations","children","Component","__KONTUR_REACT_UI__"],"mappings":"2JAAA,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;AACA,SAASC,QAAT,QAAuC,oBAAvC;AACA,SAASC,iBAAT,QAAkC,6BAAlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,OAAO,IAAMC,mBAAmB,GAAG;AACjCC,EAAAA,IAAI,EAAE,mBAD2B,EAA5B;;;;;;;;;;;;;;;;;AAkBP,OAZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAEA,IAAaC,WAAb,GADCJ,QACD,qHAUE,qBAAYK,KAAZ,EAAqC;AACnC,wCAAMA,KAAN,UADmC,MAF7BC,QAE6B,GAFlBL,iBAAiB,CAACG,WAAW,CAACG,YAAb,CAEC;;AAGnC,QAAI,CAACF,KAAK,CAACG,OAAP,IAAkB,CAACX,eAAvB,EAAwC;AACtC,YAAM,IAAIY,KAAJ,CAAU,+BAAV,CAAN;AACD,KALkC;AAMpC,GAhBH;;AAkBSC,EAAAA,MAlBT,GAkBE,kBAAgB;AACd;AACE,0BAAC,YAAD,CAAc,QAAd;AACG,gBAACC,KAAD,EAAW;AACV;AACE,8BAAC,YAAD,CAAc,QAAd;AACE,YAAA,KAAK,EAAEjB,YAAY,CAACkB,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,GAvCH;;AAyCSA,EAAAA,UAzCT,GAyCE,sBAAoB;AAClB,QAAI,CAAC,KAAKd,KAAL,CAAWG,OAAhB,EAAyB;AACvB,aAAO,IAAP;AACD;;AAED;AACE,0BAAC,aAAD,aAAe,WAAW,EAAE,KAAKY,WAAjC,IAAkD,KAAKf,KAAvD;AACE,0BAAC,SAAD;AACE,oBAAUH,mBAAmB,CAACC,IADhC;AAEE,QAAA,aAAa,EAAE,KAAKE,KAAL,CAAWgB,aAF5B;AAGE,QAAA,SAAS,EAAE,KAAKhB,KAAL,CAAWiB,SAHxB;AAIE,QAAA,OAAO,EAAE,KAAKjB,KAAL,CAAWG,OAJtB;AAKE,QAAA,MAAM,EAAE,KAAKH,KAAL,CAAWkB,MALrB;AAME,QAAA,MAAM,EAAE,KAAKlB,KAAL,CAAWmB,MANrB;AAOE,QAAA,SAAS,EAAE,KAAKnB,KAAL,CAAWoB,SAPxB;AAQE,QAAA,MAAM,EAAE,KAAKpB,KAAL,CAAWqB,MARrB;AASE,QAAA,OAAO,EAAE,KAAKrB,KAAL,CAAWsB,OATtB;AAUE,QAAA,WAAW,MAVb;AAWE,QAAA,iBAAiB,EAAE,KAAKrB,QAAL,GAAgBsB,iBAXrC;;AAaG,WAAKvB,KAAL,CAAWwB,QAbd,CADF,CADF;;;;AAmBD,GAjEH,sBAAiCpC,KAAK,CAACqC,SAAvC,WACgBC,mBADhB,GACsC,aADtC,UAIgBxB,YAJhB,GAI6C,EACzCqB,iBAAiB,EAAE9B,SADsB,EAJ7C","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 { PopupPositionsType } from '../../internal/Popup';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nexport type TooltipMenuChildType = React.ReactElement<MenuItemProps | {} | MenuHeaderProps>;\n\nexport interface TooltipMenuProps extends CommonProps, Pick<PopupMenuProps, 'onOpen' | 'onClose'> {\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?: PopupPositionsType[];\n /**\n * Не показывать анимацию\n */\n disableAnimations?: boolean;\n}\n\nexport const TooltipMenuDataTids = {\n root: 'TooltipMenu__root',\n} as const;\n\ntype DefaultProps = Required<Pick<TooltipMenuProps, 'disableAnimations'>>;\n\n/**\n * Меню, раскрывающееся по клику на переданный в `caption` элемент.\n *\n * Положение меню задаётся с помощью массива `positions` и работает так:\n * первое значение в массиве - дефолтная позиция, меню раскроется на этой позиции, если оно не будет выходить за пределы `viewport`,\n * если раскрыться в дефолтной позиции не получится - будет использована следующая позиция, и так далее, пока не будет достигнут конец массива. Если все положения из списка будут выходить за пределы `viewport`, в качестве положения будет использовано первое значение в массиве.\n *\n * Если меню должно раскрываться только в одну сторону - массив `positions` должен содержать только один элемент: сторону, в которую должно открываться меню.\n *\n * Если массив `positions` не передан (или передан пустой массив), будут использованы всевозможные значения.\n */\n@rootNode\nexport class TooltipMenu extends React.Component<TooltipMenuProps> {\n public static __KONTUR_REACT_UI__ = 'TooltipMenu';\n private setRootNode!: TSetRootNode;\n\n public static defaultProps: DefaultProps = {\n disableAnimations: isTestEnv,\n };\n\n private getProps = createPropsGetter(TooltipMenu.defaultProps);\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 rootNodeRef={this.setRootNode} {...this.props}>\n <PopupMenu\n data-tid={TooltipMenuDataTids.root}\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 onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n popupHasPin\n disableAnimations={this.getProps().disableAnimations}\n >\n {this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n}\n"]}
|
|
@@ -40,11 +40,12 @@ export interface TooltipMenuProps extends CommonProps, Pick<PopupMenuProps, 'onO
|
|
|
40
40
|
/**
|
|
41
41
|
* Не показывать анимацию
|
|
42
42
|
*/
|
|
43
|
-
disableAnimations
|
|
43
|
+
disableAnimations?: boolean;
|
|
44
44
|
}
|
|
45
45
|
export declare const TooltipMenuDataTids: {
|
|
46
46
|
readonly root: "TooltipMenu__root";
|
|
47
47
|
};
|
|
48
|
+
declare type DefaultProps = Required<Pick<TooltipMenuProps, 'disableAnimations'>>;
|
|
48
49
|
/**
|
|
49
50
|
* Меню, раскрывающееся по клику на переданный в `caption` элемент.
|
|
50
51
|
*
|
|
@@ -59,10 +60,10 @@ export declare const TooltipMenuDataTids: {
|
|
|
59
60
|
export declare class TooltipMenu extends React.Component<TooltipMenuProps> {
|
|
60
61
|
static __KONTUR_REACT_UI__: string;
|
|
61
62
|
private setRootNode;
|
|
62
|
-
static defaultProps:
|
|
63
|
-
|
|
64
|
-
};
|
|
63
|
+
static defaultProps: DefaultProps;
|
|
64
|
+
private getProps;
|
|
65
65
|
constructor(props: TooltipMenuProps);
|
|
66
66
|
render(): JSX.Element;
|
|
67
67
|
renderMain(): JSX.Element | null;
|
|
68
68
|
}
|
|
69
|
+
export {};
|
|
@@ -2,6 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
2
2
|
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { getDOMRect } from "../../lib/dom/getDOMRect";
|
|
5
|
+
import { createPropsGetter } from "../../lib/createPropsGetter";
|
|
5
6
|
/**
|
|
6
7
|
* Компонент рисует пиксельную линейку на заднем фоне.
|
|
7
8
|
* Помогает контролировать размеры элементов при скриншотном тестировании.
|
|
@@ -20,6 +21,7 @@ export var BGRuler = /*#__PURE__*/function (_React$Component) {
|
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
|
|
24
|
+
_this.getProps = createPropsGetter(BGRuler.defaultProps);
|
|
23
25
|
_this.iframe = null;
|
|
24
26
|
|
|
25
27
|
_this.componentDidMount = function () {
|
|
@@ -52,12 +54,15 @@ export var BGRuler = /*#__PURE__*/function (_React$Component) {
|
|
|
52
54
|
_proto.render = function render() {
|
|
53
55
|
var _this$props = this.props,
|
|
54
56
|
width = _this$props.width,
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
57
|
+
bottom = _this$props.bottom;
|
|
58
|
+
|
|
59
|
+
var _this$getProps = this.getProps(),
|
|
60
|
+
height = _this$getProps.height,
|
|
61
|
+
top = _this$getProps.top,
|
|
62
|
+
left = _this$getProps.left,
|
|
63
|
+
right = _this$getProps.right,
|
|
64
|
+
color = _this$getProps.color;
|
|
65
|
+
|
|
61
66
|
var wrapper = {
|
|
62
67
|
position: 'absolute',
|
|
63
68
|
width: width,
|