oolib 2.225.2 → 2.225.4

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.
@@ -192,7 +192,7 @@ function DropdownMulti(_a) {
192
192
  ? !showOptions && handleShowOptions() //if tagsStyle, then click always shows options
193
193
  : showOptions ? handleHideOptions() : handleShowOptions(); //if dropdowns, then click toggles show/hide
194
194
  } }, isTagsStyle ? genSelectTagsInput() : (react_1.default.createElement(SelectDropdown_1.SelectDropdown, { value: value, placeholder: placeholder, selectClassName: selectClassName, selectStyleOverride: selectStyleOverride, showOptions: showOptions, genCustomSelectComp: genCustomSelectComp, disableSelectTextUpdate: disableSelectTextUpdate, selectConfig: selectConfig, S: S, disabled: disabled, variant: variant }))),
195
- react_1.default.createElement(OptionsMulti_1.OptionsMulti, { id: id, value: value, relativeToRef: selectRef, showOptions: showOptions, handleSelect: handleSelect, handleHideOptions: handleHideOptions, optionsClassName: optionsClassName, options: options, optionsFn: optionsFn, label: label, optionsModalLabel: optionsModalLabel, isTagsStyle: isTagsStyle, genCreateTagButton: genCreateTagButton, lightboxHeight: lightboxHeight, lightboxStyle: lightboxStyle, optionsAnchor: optionsAnchor, SelectComp: isTagsStyle && genSelectTagsInput({ style: { position: 'sticky', top: 0, zIndex: 1000 } }), setFocusSelectTagsInput: setFocusSelectTagsInput, popOutOfOverflowHiddenParent: popOutOfOverflowHiddenParent, S: S, alignDropdown: alignDropdown, matchSelectInputWidth: matchSelectInputWidth, searchbarPlaceholder: searchbarPlaceholder, isSearchable: isTagsStyle ? false : isSearchable, searchString: searchString, setSearchString: setSearchString })));
195
+ react_1.default.createElement(OptionsMulti_1.OptionsMulti, { parentOnChange: parentOnChange, id: id, value: value, relativeToRef: selectRef, showOptions: showOptions, handleSelect: handleSelect, handleHideOptions: handleHideOptions, optionsClassName: optionsClassName, options: options, optionsFn: optionsFn, label: label, optionsModalLabel: optionsModalLabel, isTagsStyle: isTagsStyle, genCreateTagButton: genCreateTagButton, lightboxHeight: lightboxHeight, lightboxStyle: lightboxStyle, optionsAnchor: optionsAnchor, SelectComp: isTagsStyle && genSelectTagsInput({ style: { position: 'sticky', top: 0, zIndex: 1000 } }), setFocusSelectTagsInput: setFocusSelectTagsInput, popOutOfOverflowHiddenParent: popOutOfOverflowHiddenParent, S: S, alignDropdown: alignDropdown, matchSelectInputWidth: matchSelectInputWidth, searchbarPlaceholder: searchbarPlaceholder, isSearchable: isTagsStyle ? false : isSearchable, searchString: searchString, setSearchString: setSearchString })));
196
196
  };
197
197
  return (react_1.default.createElement("div", { className: "OKE-Dropdown ".concat(className, " OKE-Dropdown--").concat(readOnly ? "displayComp" : "inputComp") },
198
198
  react_1.default.createElement(BlockLabel_1.BlockLabel, __assign({}, (0, getBlockLabelProps_1.getBlockLabelProps)(props))),
@@ -1,4 +1,4 @@
1
- export function OptionsMulti({ lightboxHeight, lightboxStyle, optionsAnchor, value, id, optionsClassName, relativeToRef, showOptions, handleHideOptions, handleSelect, options, isSearchable, label, optionsModalLabel, searchString, setSearchString, SelectComp, isTagsStyle, genCreateTagButton, setFocusSelectTagsInput, popOutOfOverflowHiddenParent, S, searchbarPlaceholder, alignDropdown, matchSelectInputWidth }: {
1
+ export function OptionsMulti({ lightboxHeight, lightboxStyle, optionsAnchor, value, id, optionsClassName, relativeToRef, showOptions, handleHideOptions, handleSelect, options, parentOnChange, isSearchable, label, optionsModalLabel, searchString, setSearchString, SelectComp, isTagsStyle, genCreateTagButton, setFocusSelectTagsInput, popOutOfOverflowHiddenParent, S, searchbarPlaceholder, alignDropdown, matchSelectInputWidth }: {
2
2
  lightboxHeight: any;
3
3
  lightboxStyle: any;
4
4
  optionsAnchor: any;
@@ -10,6 +10,7 @@ export function OptionsMulti({ lightboxHeight, lightboxStyle, optionsAnchor, val
10
10
  handleHideOptions: any;
11
11
  handleSelect: any;
12
12
  options: any;
13
+ parentOnChange: any;
13
14
  isSearchable: any;
14
15
  label: any;
15
16
  optionsModalLabel: any;
@@ -46,7 +46,7 @@ var OptionsMulti = function (_a) {
46
46
  lightboxHeight = _a.lightboxHeight, lightboxStyle = _a.lightboxStyle, optionsAnchor = _a.optionsAnchor, value = _a.value, id = _a.id, optionsClassName = _a.optionsClassName,
47
47
  //from Dropdown
48
48
  relativeToRef = _a.relativeToRef, //the element that this lightbox is being rendered against. i.e top or bottom
49
- showOptions = _a.showOptions, handleHideOptions = _a.handleHideOptions, handleSelect = _a.handleSelect, options = _a.options, isSearchable = _a.isSearchable, label = _a.label, optionsModalLabel = _a.optionsModalLabel, //label is just a fallback for optionsModalLabel. Don't know why both are needed
49
+ showOptions = _a.showOptions, handleHideOptions = _a.handleHideOptions, handleSelect = _a.handleSelect, options = _a.options, parentOnChange = _a.parentOnChange, isSearchable = _a.isSearchable, label = _a.label, optionsModalLabel = _a.optionsModalLabel, //label is just a fallback for optionsModalLabel. Don't know why both are needed
50
50
  searchString = _a.searchString, setSearchString = _a.setSearchString, SelectComp = _a.SelectComp, // for mobile
51
51
  isTagsStyle = _a.isTagsStyle, genCreateTagButton = _a.genCreateTagButton, setFocusSelectTagsInput = _a.setFocusSelectTagsInput, popOutOfOverflowHiddenParent = _a.popOutOfOverflowHiddenParent, S = _a.S, searchbarPlaceholder = _a.searchbarPlaceholder, alignDropdown = _a.alignDropdown, matchSelectInputWidth = _a.matchSelectInputWidth;
52
52
  //INIT ORIENTATION STATE AND CUSTOM HOOK
@@ -84,10 +84,20 @@ var OptionsMulti = function (_a) {
84
84
  (0, react_1.useEffect)(function () {
85
85
  setSearchBarFocus(showOptions);
86
86
  }, [showOptions]);
87
+ var handleClearAll = function () {
88
+ parentOnChange(id, []);
89
+ setSearchString('');
90
+ };
87
91
  var createSelectedOptions = function () {
88
92
  return (selectedOptions === null || selectedOptions === void 0 ? void 0 : selectedOptions.length) > 0 && (react_1.default.createElement("div", null,
89
- react_1.default.createElement("div", { style: { padding: "0.4rem 0.8rem" } },
90
- react_1.default.createElement(__1.UI_TAG, null, "Selected")),
93
+ react_1.default.createElement("div", { style: {
94
+ padding: "0 0.8rem",
95
+ display: "flex",
96
+ justifyContent: "space-between",
97
+ alignItems: "center",
98
+ } },
99
+ react_1.default.createElement(__1.UI_TAG, null, "Selected"),
100
+ react_1.default.createElement(__1.ButtonTertiaryCompact, { onClick: handleClearAll, children: "Clear all", icon: "X" })),
91
101
  react_1.default.createElement(List_1.List, { key: value, options: selectedOptions, value: value, focussedOp: focussedOp, scrollFocussedOpIntoView: scrollFocussedOpIntoView, onChange: function (id, v) {
92
102
  return handleSelect(v);
93
103
  }, setSearchString: setSearchString, optionsClassName: optionsClassName, setFocusSelectTagsInput: setFocusSelectTagsInput, S: S, isMulti: true, style: { padding: "0" }, disableShadow: true }),
@@ -96,7 +106,6 @@ var OptionsMulti = function (_a) {
96
106
  };
97
107
  return (react_1.default.createElement(OptionsShell_1.OptionsShell, { ref: optionsRef, yOrientation: yOrientation, lightboxHeight: lightboxHeight, lightboxStyle: lightboxStyle, options: options, optionsAnchor: optionsAnchor, showOptions: showOptions, handleHideOptions: handleHideOptions, SelectComp: SelectComp, label: label, optionsModalLabel: optionsModalLabel, showDoneButton: true, popOutOfOverflowHiddenParent: popOutOfOverflowHiddenParent, relativeToRef: relativeToRef, S: S, alignDropdown: alignDropdown, matchSelectInputWidth: matchSelectInputWidth },
98
108
  react_1.default.createElement(List_1.List, { options: options, value: value, focussedOp: focussedOp, scrollFocussedOpIntoView: scrollFocussedOpIntoView, onChange: function (id, v) {
99
- console.log({ id: id, v: v });
100
109
  handleSelect(v);
101
110
  }, optionsClassName: optionsClassName, S: S, isMulti: true, disableShadow: true, isSearchable: isSearchable, searchbarPlaceholder: searchbarPlaceholder, searchBarFocus: searchBarFocus, searchString: searchString, setSearchString: setSearchString, setSearchBarFocus: setSearchBarFocus, children: !isTagsStyle && createSelectedOptions(), showList: showOptions, usedIn: "dropdown" }),
102
111
  genCreateTagButton && genCreateTagButton(options)));
@@ -1,4 +1,15 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
14
  if (k2 === undefined) k2 = k;
4
15
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -48,12 +59,13 @@ var themes_1 = require("../../../themes");
48
59
  var genColor_1 = require("../../Dropdowns/utils/genColor");
49
60
  var RadioAndCheckbox_1 = require("../../RadioAndCheckbox");
50
61
  var styled_1 = require("./styled");
62
+ var Tooltip_1 = __importDefault(require("../../Tooltip"));
51
63
  var grey40 = themes_1.colors.grey40, grey80 = themes_1.colors.grey80, grey60 = themes_1.colors.grey60;
52
64
  var ListItem = function (_a) {
53
65
  var id = _a.id, option = _a.option, isSelected = _a.isSelected, isFocussed = _a.isFocussed, scrollFocussedOpIntoView = _a.scrollFocussedOpIntoView, parentOnChange = _a.onChange, setSearchString = _a.setSearchString, optionsClassName = _a.optionsClassName, S = _a.S, observerRef = _a.observerRef, isTagsStyle = _a.isTagsStyle, isMulti = _a.isMulti, value = _a.value, index = _a.index, _b = _a.alignCheckbox, alignCheckbox = _b === void 0 ? "left" : _b, iconAfter = _a.iconAfter;
54
66
  var theme = (0, styled_components_1.useTheme)();
55
67
  var TypoComp = S ? Typo2_1.UI_BODY_SM_DF : Typo2_1.UI_BODY_SM_DF;
56
- var image = option.image, display = option.display, icon = option.icon, desc = option.desc, color = option.color, loading = option.loading, disabled = option.disabled;
68
+ var image = option.image, display = option.display, icon = option.icon, desc = option.desc, color = option.color, loading = option.loading, disabled = option.disabled, tooltip = option.tooltip;
57
69
  var handleClick = function () {
58
70
  if (!loading) {
59
71
  parentOnChange(id, option);
@@ -73,7 +85,7 @@ var ListItem = function (_a) {
73
85
  }
74
86
  return null;
75
87
  };
76
- return (react_1.default.createElement(styled_1.StyledListItemWrapper, { index: index, isSelected: isSelected, isFocussed: isFocussed, className: "OKE-Dropdown__option", ref: function (el) { return isFocussed && el && scrollFocussedOpIntoView(el); }, onClick: handleClick, S: S, style: { pointerEvents: disabled && "none", cursor: !disabled && "pointer" } },
88
+ var listItemContent = (react_1.default.createElement(styled_1.StyledListItemWrapper, { index: index, isSelected: isSelected, isFocussed: isFocussed, className: "OKE-Dropdown__option", ref: function (el) { return isFocussed && el && scrollFocussedOpIntoView(el); }, onClick: handleClick, S: S, style: { pointerEvents: disabled && "none", cursor: !disabled && "pointer" } },
77
89
  react_1.default.createElement(styled_1.StyledWrapper, { ref: observerRef, style: {
78
90
  display: "flex",
79
91
  alignItems: desc ? "flex-start" : "center",
@@ -106,5 +118,10 @@ var ListItem = function (_a) {
106
118
  className: "OKE-Dropdown__optionIcon",
107
119
  disabled: disabled
108
120
  }))));
121
+ if (tooltip) {
122
+ var tooltipProps = typeof tooltip === 'string' ? { text: tooltip } : tooltip;
123
+ return (react_1.default.createElement(Tooltip_1.default, __assign({ placement: "right", wrapperDisplay: "block" }, tooltipProps), listItemContent));
124
+ }
125
+ return listItemContent;
109
126
  };
110
127
  exports.ListItem = ListItem;
@@ -1,10 +1,3 @@
1
1
  import React from 'react';
2
- interface TooltipHeadingProps {
3
- heading: string;
4
- text: string;
5
- containerStyle?: React.CSSProperties;
6
- headingStyle?: React.CSSProperties;
7
- textStyle?: React.CSSProperties;
8
- }
9
- export default function TooltipHeading({ heading, text, containerStyle, headingStyle, textStyle }: TooltipHeadingProps): React.JSX.Element;
10
- export {};
2
+ import { TooltipHeadingProps } from '../types';
3
+ export default function TooltipHeading({ heading, text, blocks, containerStyle, headingStyle, textStyle, linkStyle, }: TooltipHeadingProps): React.JSX.Element;
@@ -17,13 +17,42 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.default = TooltipHeading;
18
18
  var react_1 = __importDefault(require("react"));
19
19
  var Typo2_1 = require("../../Typo2");
20
+ var utils_1 = require("../utils");
20
21
  var defaultContainerStyle = {
21
22
  padding: '0.8rem',
22
23
  maxWidth: '30rem',
23
24
  };
25
+ var renderBlock = function (block, index, headingStyle, textStyle, linkStyle) {
26
+ var heading = block.heading, text = block.text, link = block.link;
27
+ var linkElement = link ? (0, utils_1.renderLink)(link, linkStyle) : null;
28
+ var position = (link === null || link === void 0 ? void 0 : link.position) || 'end';
29
+ var renderLine = function (content, showLink, TextComponent, style) {
30
+ if (!content && !showLink)
31
+ return null;
32
+ if (!content)
33
+ return react_1.default.createElement(TextComponent, { style: style }, linkElement);
34
+ return (react_1.default.createElement(TextComponent, { style: style },
35
+ position === 'start' && showLink && react_1.default.createElement(react_1.default.Fragment, null,
36
+ linkElement,
37
+ " "),
38
+ content,
39
+ position === 'end' && showLink && linkElement && react_1.default.createElement(react_1.default.Fragment, null,
40
+ " ",
41
+ linkElement)));
42
+ };
43
+ return (react_1.default.createElement("div", { key: index, style: { marginTop: index > 0 ? '0.6rem' : 0 } },
44
+ heading && renderLine(heading, !text, Typo2_1.UI_CAPTION_SEMIBOLD, headingStyle),
45
+ (text || (!heading && link)) && renderLine(text, true, Typo2_1.UI_CAPTION, textStyle)));
46
+ };
24
47
  function TooltipHeading(_a) {
25
- var heading = _a.heading, text = _a.text, containerStyle = _a.containerStyle, headingStyle = _a.headingStyle, textStyle = _a.textStyle;
48
+ var heading = _a.heading, text = _a.text, blocks = _a.blocks, containerStyle = _a.containerStyle, headingStyle = _a.headingStyle, textStyle = _a.textStyle, linkStyle = _a.linkStyle;
49
+ // If blocks are provided, use the new multi-block rendering
50
+ if (blocks && blocks.length > 0) {
51
+ return (react_1.default.createElement("div", { style: __assign(__assign({}, defaultContainerStyle), containerStyle) }, blocks.map(function (block, index) {
52
+ return renderBlock(block, index, headingStyle, textStyle, linkStyle);
53
+ })));
54
+ }
26
55
  return (react_1.default.createElement("div", { style: __assign(__assign({}, defaultContainerStyle), containerStyle) },
27
- react_1.default.createElement(Typo2_1.UI_CAPTION_SEMIBOLD, { style: headingStyle }, heading),
28
- react_1.default.createElement(Typo2_1.UI_CAPTION, { style: textStyle }, text)));
56
+ heading && (react_1.default.createElement(Typo2_1.UI_CAPTION_SEMIBOLD, { style: headingStyle }, heading)),
57
+ text && (react_1.default.createElement(Typo2_1.UI_CAPTION, { style: textStyle }, text))));
29
58
  }
@@ -1,8 +1,3 @@
1
1
  import React from 'react';
2
- interface TooltipTextProps {
3
- text: string;
4
- containerStyle?: React.CSSProperties;
5
- textStyle?: React.CSSProperties;
6
- }
7
- export default function TooltipText({ text, containerStyle, textStyle }: TooltipTextProps): React.JSX.Element;
8
- export {};
2
+ import { TooltipTextProps } from '../types';
3
+ export default function TooltipText({ text, link, containerStyle, textStyle, linkStyle }: TooltipTextProps): React.JSX.Element;
@@ -17,12 +17,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.default = TooltipText;
18
18
  var react_1 = __importDefault(require("react"));
19
19
  var Typo2_1 = require("../../Typo2");
20
+ var utils_1 = require("../utils");
20
21
  var defaultContainerStyle = {
21
22
  padding: '0.8rem',
22
23
  maxWidth: '30rem',
23
24
  };
24
25
  function TooltipText(_a) {
25
- var text = _a.text, containerStyle = _a.containerStyle, textStyle = _a.textStyle;
26
+ var text = _a.text, link = _a.link, containerStyle = _a.containerStyle, textStyle = _a.textStyle, linkStyle = _a.linkStyle;
27
+ var position = (link === null || link === void 0 ? void 0 : link.position) || 'end';
28
+ var linkElement = link ? (0, utils_1.renderLink)(link, linkStyle) : null;
26
29
  return (react_1.default.createElement("div", { style: __assign(__assign({}, defaultContainerStyle), containerStyle) },
27
- react_1.default.createElement(Typo2_1.UI_CAPTION, { style: textStyle }, text)));
30
+ react_1.default.createElement(Typo2_1.UI_CAPTION, { style: textStyle },
31
+ position === 'start' && linkElement,
32
+ position === 'start' && linkElement && text && ' ',
33
+ text,
34
+ position === 'end' && linkElement && text && ' ',
35
+ position === 'end' && linkElement)));
28
36
  }
@@ -1,21 +1,3 @@
1
1
  import React from 'react';
2
- import { ContentConfig } from './utils';
3
- interface TooltipProps {
4
- text?: string;
5
- heading?: string;
6
- primaryContent?: ContentConfig;
7
- secondaryContent?: ContentConfig;
8
- progressiveDelay?: number;
9
- progressiveGap?: number;
10
- children: React.ReactElement;
11
- placement?: 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'right' | 'right-start' | 'right-end';
12
- showPointer?: boolean;
13
- showDelay?: number;
14
- hideDelay?: number;
15
- animation?: 'fade' | 'none';
16
- followCursor?: boolean;
17
- cursorOffset?: number;
18
- invert?: boolean;
19
- }
20
- export default function Tooltip({ text, heading, primaryContent, secondaryContent, progressiveDelay, progressiveGap, children, placement, showPointer, showDelay, hideDelay, animation, followCursor, cursorOffset, invert, }: TooltipProps): React.JSX.Element;
21
- export {};
2
+ import { TooltipProps } from './types';
3
+ export default function Tooltip({ text, heading, primaryContent, secondaryContent, progressiveDelay, progressiveGap, children, placement, showPointer, showDelay, hideDelay, animation, followCursor, cursorOffset, invert, wrapperDisplay, trigger, }: TooltipProps): React.JSX.Element;
@@ -53,15 +53,15 @@ var utils_1 = require("./utils");
53
53
  var styled_1 = require("./styled");
54
54
  var CURSOR_HEIGHT = 20;
55
55
  function Tooltip(_a) {
56
- var text = _a.text, heading = _a.heading, primaryContent = _a.primaryContent, secondaryContent = _a.secondaryContent, _b = _a.progressiveDelay, progressiveDelay = _b === void 0 ? 1000 : _b, _c = _a.progressiveGap, progressiveGap = _c === void 0 ? 8 : _c, children = _a.children, _d = _a.placement, placement = _d === void 0 ? 'top' : _d, _e = _a.showPointer, showPointer = _e === void 0 ? true : _e, _f = _a.showDelay, showDelay = _f === void 0 ? 0 : _f, _g = _a.hideDelay, hideDelay = _g === void 0 ? 0 : _g, _h = _a.animation, animation = _h === void 0 ? 'none' : _h, _j = _a.followCursor, followCursor = _j === void 0 ? false : _j, _k = _a.cursorOffset, cursorOffset = _k === void 0 ? 10 : _k, _l = _a.invert, invert = _l === void 0 ? false : _l;
56
+ var text = _a.text, heading = _a.heading, primaryContent = _a.primaryContent, secondaryContent = _a.secondaryContent, _b = _a.progressiveDelay, progressiveDelay = _b === void 0 ? 1000 : _b, _c = _a.progressiveGap, progressiveGap = _c === void 0 ? 8 : _c, children = _a.children, _d = _a.placement, placement = _d === void 0 ? 'top' : _d, _e = _a.showPointer, showPointer = _e === void 0 ? true : _e, _f = _a.showDelay, showDelay = _f === void 0 ? 0 : _f, _g = _a.hideDelay, hideDelay = _g === void 0 ? 0 : _g, _h = _a.animation, animation = _h === void 0 ? 'none' : _h, _j = _a.followCursor, followCursor = _j === void 0 ? false : _j, _k = _a.cursorOffset, cursorOffset = _k === void 0 ? 10 : _k, _l = _a.invert, invert = _l === void 0 ? false : _l, wrapperDisplay = _a.wrapperDisplay, _m = _a.trigger, trigger = _m === void 0 ? 'hover' : _m;
57
57
  var bgColor = invert ? __1.colors2.white : __1.colors2.black;
58
58
  var textColor = invert ? __1.colors2.black : __1.colors2.white;
59
59
  var resolvedPrimaryContent = (0, utils_1.resolvePrimaryContent)(text, heading, primaryContent);
60
- var _m = (0, react_1.useState)(false), isOpen = _m[0], setIsOpen = _m[1];
61
- var _o = (0, react_1.useState)(false), showSecondary = _o[0], setShowSecondary = _o[1];
62
- var _p = (0, react_1.useState)(false), isPinned = _p[0], setIsPinned = _p[1];
63
- var _q = (0, react_1.useState)({ x: 0, y: 0 }), mousePos = _q[0], setMousePos = _q[1];
64
- var _r = (0, react_1.useState)({}), cursorTooltipStyle = _r[0], setCursorTooltipStyle = _r[1];
60
+ var _o = (0, react_1.useState)(false), isOpen = _o[0], setIsOpen = _o[1];
61
+ var _p = (0, react_1.useState)(false), showSecondary = _p[0], setShowSecondary = _p[1];
62
+ var _q = (0, react_1.useState)(false), isPinned = _q[0], setIsPinned = _q[1];
63
+ var _r = (0, react_1.useState)({ x: 0, y: 0 }), mousePos = _r[0], setMousePos = _r[1];
64
+ var _s = (0, react_1.useState)({}), cursorTooltipStyle = _s[0], setCursorTooltipStyle = _s[1];
65
65
  var progressiveTimerRef = (0, react_1.useRef)(null);
66
66
  var containerRef = (0, react_1.useRef)(null);
67
67
  var arrowRef = (0, react_1.useRef)(null);
@@ -88,11 +88,17 @@ function Tooltip(_a) {
88
88
  open: { opacity: 1 },
89
89
  close: { opacity: 0 },
90
90
  } : undefined;
91
- var _s = (0, useFloatingPosition_1.useFloatingPosition)({
91
+ var isClickTrigger = trigger === 'click';
92
+ var _t = (0, useFloatingPosition_1.useFloatingPosition)({
92
93
  open: isOpen,
93
94
  onOpenChange: function (open) {
94
95
  if (followCursor)
95
96
  return;
97
+ if (isClickTrigger) {
98
+ // For click trigger, toggle on click
99
+ setIsOpen(open);
100
+ return;
101
+ }
96
102
  if (isPinned) {
97
103
  if (!open) {
98
104
  setIsPinned(false);
@@ -108,21 +114,22 @@ function Tooltip(_a) {
108
114
  arrowPadding: utils_1.ARROW_PADDING,
109
115
  customMiddleware: followCursor ? undefined : [utils_1.autoSafeFlip],
110
116
  disableAutoUpdate: followCursor,
111
- enableDelayGroups: false,
112
- enableHover: !isPinned && !followCursor,
117
+ enableDelayGroups: !isClickTrigger,
118
+ enableTriggerOnClick: isClickTrigger,
119
+ enableHover: !isClickTrigger && !isPinned && !followCursor,
113
120
  hoverOptions: {
114
121
  delay: { open: showDelay, close: hideDelay },
115
122
  },
116
- focusOptions: { enabled: !followCursor },
123
+ focusOptions: { enabled: !followCursor && !isClickTrigger },
117
124
  dismissOptions: { enabled: !followCursor },
118
125
  roleOptions: { role: 'tooltip' },
119
126
  transitionOptions: transitionOptions,
120
127
  middlewareOptions: {
121
128
  offset: { config: followCursor ? cursorOffset : 10 },
122
129
  shift: { enabled: true, config: { padding: 8 } },
123
- flip: { enabled: followCursor, config: { fallbackPlacements: ['top-start'] } },
130
+ flip: { enabled: true, config: followCursor ? { fallbackPlacements: ['top-start'] } : { fallbackAxisSideDirection: 'start' } },
124
131
  },
125
- }), refs = _s.refs, floatingStyles = _s.floatingStyles, context = _s.context, getReferenceProps = _s.getReferenceProps, getFloatingProps = _s.getFloatingProps, isMounted = _s.isMounted, transitionStyles = _s.transitionStyles;
132
+ }), refs = _t.refs, floatingStyles = _t.floatingStyles, context = _t.context, getReferenceProps = _t.getReferenceProps, getFloatingProps = _t.getFloatingProps, isMounted = _t.isMounted, transitionStyles = _t.transitionStyles;
126
133
  var handleMouseMove = (0, react_1.useCallback)(function (e) {
127
134
  if (followCursor) {
128
135
  setMousePos({ x: e.clientX, y: e.clientY });
@@ -140,8 +147,8 @@ function Tooltip(_a) {
140
147
  }
141
148
  }, [followCursor]);
142
149
  var handleClick = function (e) {
143
- if (followCursor)
144
- return;
150
+ if (followCursor || isClickTrigger)
151
+ return; //useClick
145
152
  e.stopPropagation();
146
153
  if (isOpen) {
147
154
  setIsPinned(false);
@@ -185,7 +192,7 @@ function Tooltip(_a) {
185
192
  ? "0 0 ".concat(utils_1.BORDER_RADIUS, " ").concat(utils_1.BORDER_RADIUS)
186
193
  : utils_1.BORDER_RADIUS;
187
194
  return (react_1.default.createElement(react_1.default.Fragment, null,
188
- react_1.default.createElement(styled_1.StyledInlineWrapper, { ref: containerRef, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onMouseMove: handleMouseMove }, children),
195
+ react_1.default.createElement(styled_1.StyledInlineWrapper, { ref: containerRef, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onMouseMove: handleMouseMove, "$display": wrapperDisplay }, children),
189
196
  isOpen && (react_1.default.createElement(react_2.FloatingPortal, null,
190
197
  react_1.default.createElement(styled_1.StyledCursorTooltipWrapper, { ref: tooltipRef, style: cursorTooltipStyle, "$gap": progressiveGap },
191
198
  react_1.default.createElement(styled_1.StyledTooltipContent, { "$bgColor": bgColor, "$textColor": textColor, "$borderRadius": cursorBorderRadius }, resolvedPrimaryContent && (0, utils_1.renderContent)(resolvedPrimaryContent)),
@@ -194,7 +201,7 @@ function Tooltip(_a) {
194
201
  var isVertical = placement.startsWith('top') || placement.startsWith('bottom');
195
202
  var secondaryFirst = placement.startsWith('top') || placement.startsWith('left');
196
203
  return (react_1.default.createElement(react_1.default.Fragment, null,
197
- react_1.default.cloneElement(children, __assign({ ref: refs.setReference }, getReferenceProps({ onClick: handleClick }))),
204
+ react_1.default.createElement(styled_1.StyledInlineWrapper, __assign({ ref: refs.setReference }, getReferenceProps({ onClick: handleClick }), { "$display": wrapperDisplay }), children),
198
205
  (hasFadeAnimation ? isMounted : isOpen) && (react_1.default.createElement(react_2.FloatingPortal, null,
199
206
  react_1.default.createElement(styled_1.StyledTooltipWrapper, __assign({ ref: refs.setFloating, style: __assign(__assign({}, floatingStyles), (hasFadeAnimation ? transitionStyles : {})), "$isVertical": isVertical, "$gap": progressiveGap }, getFloatingProps()),
200
207
  react_1.default.createElement(styled_1.StyledTooltipContent, { "$bgColor": bgColor, "$textColor": textColor, "$borderRadius": (0, utils_1.getBorderRadius)({
@@ -21,4 +21,6 @@ export declare const StyledTooltipContent: import("styled-components").StyledCom
21
21
  $borderRadius?: string;
22
22
  $order?: number;
23
23
  }, never>;
24
- export declare const StyledInlineWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
24
+ export declare const StyledInlineWrapper: import("styled-components").StyledComponent<"div", any, {
25
+ $display?: "inline-block" | "block" | "contents";
26
+ }, never>;
@@ -77,5 +77,8 @@ exports.StyledTooltipContent = styled_components_1.default.div(templateObject_9
77
77
  var $order = _a.$order;
78
78
  return $order !== undefined && "order: ".concat($order, ";");
79
79
  });
80
- exports.StyledInlineWrapper = styled_components_1.default.div(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n display: inline-block;\n"], ["\n display: inline-block;\n"])));
80
+ exports.StyledInlineWrapper = styled_components_1.default.div(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n display: ", ";\n"], ["\n display: ", ";\n"])), function (_a) {
81
+ var _b = _a.$display, $display = _b === void 0 ? 'inline-block' : _b;
82
+ return $display;
83
+ });
81
84
  var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10;
@@ -0,0 +1,64 @@
1
+ import React from 'react';
2
+ export interface TooltipLink {
3
+ text: string;
4
+ href: string;
5
+ position?: 'start' | 'end';
6
+ newTab?: boolean;
7
+ }
8
+ export interface TooltipTextProps {
9
+ text?: string;
10
+ link?: TooltipLink;
11
+ containerStyle?: React.CSSProperties;
12
+ textStyle?: React.CSSProperties;
13
+ linkStyle?: React.CSSProperties;
14
+ }
15
+ export interface ContentBlock {
16
+ heading?: string;
17
+ text?: string;
18
+ link?: TooltipLink;
19
+ }
20
+ export interface TooltipHeadingProps {
21
+ heading?: string;
22
+ text?: string;
23
+ blocks?: ContentBlock[];
24
+ containerStyle?: React.CSSProperties;
25
+ headingStyle?: React.CSSProperties;
26
+ textStyle?: React.CSSProperties;
27
+ linkStyle?: React.CSSProperties;
28
+ }
29
+ export type ContentConfig = {
30
+ layout: 'TooltipText';
31
+ props: TooltipTextProps;
32
+ } | {
33
+ layout: 'TooltipHeading';
34
+ props: TooltipHeadingProps;
35
+ } | {
36
+ layout: 'custom';
37
+ render: React.ReactNode;
38
+ };
39
+ export interface TooltipProps {
40
+ text?: string;
41
+ heading?: string;
42
+ primaryContent?: ContentConfig;
43
+ secondaryContent?: ContentConfig;
44
+ progressiveDelay?: number;
45
+ progressiveGap?: number;
46
+ children: React.ReactElement;
47
+ placement?: 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'right' | 'right-start' | 'right-end';
48
+ showPointer?: boolean;
49
+ showDelay?: number;
50
+ hideDelay?: number;
51
+ animation?: 'fade' | 'none';
52
+ followCursor?: boolean;
53
+ cursorOffset?: number;
54
+ invert?: boolean;
55
+ wrapperDisplay?: 'inline-block' | 'block' | 'contents';
56
+ trigger?: 'hover' | 'click';
57
+ }
58
+ export interface GetBorderRadiusOptions {
59
+ isPrimary: boolean;
60
+ progressiveGap: number;
61
+ secondaryContent: boolean;
62
+ showSecondary: boolean;
63
+ placement: string;
64
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,26 +1,9 @@
1
1
  import React from 'react';
2
- import { TooltipText, TooltipHeading } from '../Layout';
2
+ import { ContentConfig, GetBorderRadiusOptions, TooltipLink } from '../types';
3
3
  export { autoSafeFlip, ARROW_PADDING } from './autoSafeFlip';
4
- type TooltipTextProps = React.ComponentProps<typeof TooltipText>;
5
- type TooltipHeadingProps = React.ComponentProps<typeof TooltipHeading>;
6
- export type ContentConfig = {
7
- layout: 'TooltipText';
8
- props: TooltipTextProps;
9
- } | {
10
- layout: 'TooltipHeading';
11
- props: TooltipHeadingProps;
12
- } | {
13
- layout: 'custom';
14
- render: React.ReactNode;
15
- };
4
+ export type { ContentConfig } from '../types';
16
5
  export declare const renderContent: (config: ContentConfig) => React.ReactNode;
17
6
  export declare const resolvePrimaryContent: (text?: string, heading?: string, primaryContent?: ContentConfig) => ContentConfig | null;
18
7
  export declare const BORDER_RADIUS = "0.8rem";
19
- interface GetBorderRadiusOptions {
20
- isPrimary: boolean;
21
- progressiveGap: number;
22
- secondaryContent: boolean;
23
- showSecondary: boolean;
24
- placement: string;
25
- }
26
8
  export declare const getBorderRadius: ({ isPrimary, progressiveGap, secondaryContent, showSecondary, placement, }: GetBorderRadiusOptions) => string;
9
+ export declare const renderLink: (link: TooltipLink, linkStyle?: React.CSSProperties) => React.JSX.Element;
@@ -3,9 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getBorderRadius = exports.BORDER_RADIUS = exports.resolvePrimaryContent = exports.renderContent = exports.ARROW_PADDING = exports.autoSafeFlip = void 0;
6
+ exports.renderLink = exports.getBorderRadius = exports.BORDER_RADIUS = exports.resolvePrimaryContent = exports.renderContent = exports.ARROW_PADDING = exports.autoSafeFlip = void 0;
7
7
  var react_1 = __importDefault(require("react"));
8
8
  var Layout_1 = require("../Layout");
9
+ var OKELink_1 = require("../../OKELink");
9
10
  var autoSafeFlip_1 = require("./autoSafeFlip");
10
11
  Object.defineProperty(exports, "autoSafeFlip", { enumerable: true, get: function () { return autoSafeFlip_1.autoSafeFlip; } });
11
12
  Object.defineProperty(exports, "ARROW_PADDING", { enumerable: true, get: function () { return autoSafeFlip_1.ARROW_PADDING; } });
@@ -64,3 +65,8 @@ var getBorderRadius = function (_a) {
64
65
  : "0 ".concat(exports.BORDER_RADIUS, " ").concat(exports.BORDER_RADIUS, " 0");
65
66
  };
66
67
  exports.getBorderRadius = getBorderRadius;
68
+ var renderLink = function (link, linkStyle) {
69
+ var invertUnderline = (linkStyle === null || linkStyle === void 0 ? void 0 : linkStyle.textDecoration) === 'none';
70
+ return (react_1.default.createElement(OKELink_1.OKELink, { link: link.href, text: link.text, color: "white", invertUnderline: invertUnderline, style: linkStyle }));
71
+ };
72
+ exports.renderLink = renderLink;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oolib",
3
- "version": "2.225.2",
3
+ "version": "2.225.4",
4
4
  "description": " OKE Component Library",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",