@telus-uds/components-base 1.70.0 → 1.71.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 CHANGED
@@ -1,12 +1,23 @@
1
1
  # Change Log - @telus-uds/components-base
2
2
 
3
- This log was last generated on Mon, 27 Nov 2023 21:13:27 GMT and should not be manually modified.
3
+ This log was last generated on Fri, 01 Dec 2023 20:57:37 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## 1.71.0
8
+
9
+ Fri, 01 Dec 2023 20:57:37 GMT
10
+
11
+ ### Minor changes
12
+
13
+ - `Card`: Add interactive section (shahzaibkhalidmalik@outlook.com)
14
+ - changes in handleClose method in autocomplete to fix the selection of suggestions in mobile browsers (35577399+JoshHC@users.noreply.github.com)
15
+ - add logic to linkbase to allow items to be center aligned (evander.owusu@telus.com)
16
+ - Bump @telus-uds/system-theme-tokens to v2.47.0
17
+
7
18
  ## 1.70.0
8
19
 
9
- Mon, 27 Nov 2023 21:13:27 GMT
20
+ Mon, 27 Nov 2023 21:20:44 GMT
10
21
 
11
22
  ### Minor changes
12
23
 
package/jest.setup.js ADDED
@@ -0,0 +1,7 @@
1
+ import { Dimensions } from 'react-native'
2
+
3
+ function setWindowWidth(width) {
4
+ Dimensions.set({ window: { width } })
5
+ }
6
+
7
+ global.setWindowWidth = setWindowWidth
@@ -273,21 +273,11 @@ const Autocomplete = /*#__PURE__*/(0, _react.forwardRef)((_ref2, ref) => {
273
273
  }, [nestedSelectedValue, items]);
274
274
  const handleClose = event => {
275
275
  var _openOverlayRef$curre, _openOverlayRef$curre2;
276
- if (event.type === 'keydown') {
277
- if (event.key === 'Escape' || event.key === 27) {
278
- setIsExpanded(false);
279
- setNestedSelectedValue(null);
280
- } else if (event.key === 'ArrowDown' && isExpanded && !isLoading && targetRef !== null && targetRef !== void 0 && targetRef.current) {
281
- targetRef.current.focus();
282
- }
283
- } else if (event.type === 'click' && openOverlayRef !== null && openOverlayRef !== void 0 && openOverlayRef.current && event.target && !(openOverlayRef !== null && openOverlayRef !== void 0 && (_openOverlayRef$curre = openOverlayRef.current) !== null && _openOverlayRef$curre !== void 0 && _openOverlayRef$curre.contains(event.target))) {
284
- setIsExpanded(false);
285
- } else if (event.type === 'touchstart' && openOverlayRef !== null && openOverlayRef !== void 0 && openOverlayRef.current && event.touches[0].target && !(openOverlayRef !== null && openOverlayRef !== void 0 && (_openOverlayRef$curre2 = openOverlayRef.current) !== null && _openOverlayRef$curre2 !== void 0 && _openOverlayRef$curre2.contains(event.touches[0].target))) {
286
- setIsExpanded(false);
287
- } else if (_Platform.default.OS === 'web') {
288
- // needed for dropdown to be collapsed when clicking outside on web
276
+ if (event.type === 'keydown' && (event.key === 'Escape' || event.key === '27') || event.type === 'click' && !(openOverlayRef !== null && openOverlayRef !== void 0 && (_openOverlayRef$curre = openOverlayRef.current) !== null && _openOverlayRef$curre !== void 0 && _openOverlayRef$curre.contains(event.target)) || event.type === 'touchstart' && openOverlayRef !== null && openOverlayRef !== void 0 && openOverlayRef.current && event.touches[0].target && !(openOverlayRef !== null && openOverlayRef !== void 0 && (_openOverlayRef$curre2 = openOverlayRef.current) !== null && _openOverlayRef$curre2 !== void 0 && _openOverlayRef$curre2.contains(event.touches[0].target))) {
289
277
  setIsExpanded(false);
290
278
  setNestedSelectedValue(null);
279
+ } else if (event.type === 'keydown' && event.key === 'ArrowDown' && isExpanded && !isLoading && targetRef !== null && targetRef !== void 0 && targetRef.current) {
280
+ targetRef.current.focus();
291
281
  }
292
282
  };
293
283
  const itemsToShow = currentValue ? itemsToSuggest(highlight(isControlled ? items : currentItems, currentValue, resultsTextColor)) : [];
package/lib/Card/Card.js CHANGED
@@ -6,11 +6,13 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
9
10
  var _ThemeProvider = require("../ThemeProvider");
10
11
  var _utils = require("../utils");
11
12
  var _ViewportProvider = require("../ViewportProvider");
12
13
  var _props = require("../utils/props");
13
14
  var _CardBase = _interopRequireDefault(require("./CardBase"));
15
+ var _PressableCardBase = _interopRequireDefault(require("./PressableCardBase"));
14
16
  var _jsxRuntime = require("react/jsx-runtime");
15
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
18
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -71,26 +73,85 @@ const Card = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
71
73
  tokens,
72
74
  variant,
73
75
  dataSet,
76
+ onPress,
77
+ interactiveCard,
74
78
  ...rest
75
79
  } = _ref;
76
80
  const viewport = (0, _ViewportProvider.useViewport)();
77
81
  const themeTokens = (0, _ThemeProvider.useThemeTokens)('Card', tokens, variant, {
78
82
  viewport
79
83
  });
80
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_CardBase.default, {
81
- ref: ref,
82
- tokens: themeTokens,
83
- dataSet: dataSet,
84
- ...selectProps(rest),
85
- children: children
84
+ const getThemeTokens = (0, _ThemeProvider.useThemeTokensCallback)('Card', interactiveCard === null || interactiveCard === void 0 ? void 0 : interactiveCard.tokens, {
85
+ interactive: true,
86
+ ...((interactiveCard === null || interactiveCard === void 0 ? void 0 : interactiveCard.variant) || {})
87
+ });
88
+ // When interactive area is present, spacing tokens should only be applied
89
+ // to individual Card sections, not Card as a whole
90
+ const {
91
+ paddingTop,
92
+ paddingBottom,
93
+ paddingLeft,
94
+ paddingRight,
95
+ ...restOfTokens
96
+ } = themeTokens;
97
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
98
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_CardBase.default, {
99
+ ref: ref,
100
+ tokens: interactiveCard !== null && interactiveCard !== void 0 && interactiveCard.body ? restOfTokens : themeTokens,
101
+ dataSet: dataSet,
102
+ ...selectProps(rest),
103
+ children: interactiveCard !== null && interactiveCard !== void 0 && interactiveCard.body ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
104
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_PressableCardBase.default, {
105
+ ref: ref,
106
+ tokens: getThemeTokens,
107
+ dataSet: dataSet,
108
+ onPress: onPress,
109
+ ...selectProps(rest),
110
+ children: interactiveCard === null || interactiveCard === void 0 ? void 0 : interactiveCard.body
111
+ }), children ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
112
+ style: {
113
+ paddingTop,
114
+ paddingBottom,
115
+ paddingLeft,
116
+ paddingRight
117
+ },
118
+ children: children
119
+ }) : null]
120
+ }) : children
121
+ })
86
122
  });
87
123
  });
88
124
  Card.displayName = 'Card';
89
125
  Card.propTypes = {
90
126
  ...selectedSystemPropTypes,
127
+ /**
128
+ * Card content.
129
+ */
91
130
  children: _propTypes.default.node,
131
+ /**
132
+ * Card tokens.
133
+ */
92
134
  tokens: (0, _utils.getTokensPropType)('Card'),
93
- variant: _utils.variantProp.propType
135
+ /**
136
+ * Card variant.
137
+ */
138
+ variant: _utils.variantProp.propType,
139
+ /**
140
+ * Function to call on pressing the card.
141
+ * Note: This is only available when `interactiveCard` prop is used.
142
+ */
143
+ onPress: _propTypes.default.func,
144
+ /**
145
+ * Object to set interactive card's properties
146
+ * - body: The body of the interactive card, can be any renderable node
147
+ * - tokens: The tokens to be used for the interactive card
148
+ * - variant: The variant to be used for the interactive card
149
+ */
150
+ interactiveCard: _propTypes.default.shape({
151
+ body: _propTypes.default.node,
152
+ tokens: (0, _utils.getTokensPropType)('Card'),
153
+ variant: _utils.variantProp.propType
154
+ })
94
155
  };
95
156
  var _default = Card;
96
157
  exports.default = _default;
@@ -38,6 +38,7 @@ const PressableCardBase = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
38
38
  inactive,
39
39
  href,
40
40
  hrefAttrs,
41
+ dataSet,
41
42
  accessibilityRole = href ? 'link' : undefined,
42
43
  ...rawRest
43
44
  } = _ref;
@@ -97,6 +98,7 @@ const PressableCardBase = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
97
98
  onKeyDown: handleKeyDown,
98
99
  hrefAttrs: hrefAttrs,
99
100
  style: getOuterBorderStyle,
101
+ dataSet: dataSet,
100
102
  ...selectProps({
101
103
  ...rest,
102
104
  accessibilityRole
@@ -7,10 +7,7 @@ exports.default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
10
- var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
11
- var _systemConstants = require("@telus-uds/system-constants");
12
10
  var _GutterContext = _interopRequireDefault(require("../providers/GutterContext"));
13
- var _ViewportProvider = require("../../ViewportProvider");
14
11
  var _helpers = _interopRequireDefault(require("../helpers"));
15
12
  var _utils = require("../../utils");
16
13
  var _jsxRuntime = require("react/jsx-runtime");
@@ -35,7 +32,6 @@ const Col = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
35
32
  ...viewProps
36
33
  } = _ref;
37
34
  const gutter = (0, _react.useContext)(_GutterContext.default);
38
- const viewPort = (0, _ViewportProvider.useViewport)();
39
35
  const hiddenLevels = (0, _helpers.default)([xs, sm, md, lg, xl]);
40
36
  const getHorizontalAlignLevel = () => {
41
37
  if (typeof horizontalAlign === 'object') {
@@ -76,60 +72,11 @@ const Col = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
76
72
  }
77
73
  return {};
78
74
  };
79
- const sizeStyles = sizes => {
80
- const currViewport = Object.keys(sizes).find(key => key.startsWith(viewPort));
81
- const currSize = sizes[currViewport];
82
- return {
83
- ...calculateWidth(currSize)
84
- };
85
- };
86
- const offsetStyles = offsets => {
87
- const currViewport = Object.keys(offsets).find(key => key.startsWith(viewPort));
88
- const currOffset = offsets[currViewport];
89
- return {
90
- ...calculateOffset(currOffset)
91
- };
92
- };
93
- const gutterPadding = {
94
- paddingLeft: gutter ? 16 : 0,
95
- paddingRight: gutter ? 16 : 0
96
- };
97
- let hidingStyles = {};
98
75
 
99
76
  // TODO: consider setting this to always 'flex' in a major release.
100
77
  // `display: block` is invalid in native apps.
101
78
  // See https://telusdigital.atlassian.net/browse/UDS1-92
102
79
  const shown = !flex && _Platform.default.OS === 'web' ? 'block' : 'flex';
103
- if (viewPort === _systemConstants.viewports.xs) {
104
- hidingStyles = {
105
- display: hiddenLevels[0] === 0 ? 'none' : shown,
106
- textAlign: horizontalAlignLevel[0]
107
- };
108
- }
109
- if (viewPort === _systemConstants.viewports.sm) {
110
- hidingStyles = {
111
- display: hiddenLevels[1] === 0 ? 'none' : shown,
112
- textAlign: horizontalAlignLevel[1]
113
- };
114
- }
115
- if (viewPort === _systemConstants.viewports.md) {
116
- hidingStyles = {
117
- display: hiddenLevels[2] === 0 ? 'none' : shown,
118
- textAlign: horizontalAlignLevel[2]
119
- };
120
- }
121
- if (viewPort === _systemConstants.viewports.lg) {
122
- hidingStyles = {
123
- display: hiddenLevels[3] === 0 ? 'none' : shown,
124
- textAlign: horizontalAlignLevel[3]
125
- };
126
- }
127
- if (viewPort === _systemConstants.viewports.xl) {
128
- hidingStyles = {
129
- display: hiddenLevels[4] === 0 ? 'none' : shown,
130
- textAlign: horizontalAlignLevel[4]
131
- };
132
- }
133
80
  const sizesArray = [xs, sm, md, lg, xl];
134
81
  const offSetsArray = [xsOffset, smOffset, mdOffset, lgOffset, xlOffset];
135
82
  const sizesWithIheritance = (0, _helpers.default)(sizesArray);
@@ -148,24 +95,63 @@ const Col = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
148
95
  lg: offsetsWithIheritance[3],
149
96
  xl: offsetsWithIheritance[4]
150
97
  };
98
+ const mediaQueryStyles = (0, _utils.createMediaQueryStyles)({
99
+ xs: {
100
+ display: hiddenLevels[0] === 0 ? 'none' : shown,
101
+ textAlign: horizontalAlignLevel[0],
102
+ ...calculateWidth(sizes.xs),
103
+ ...calculateOffset(offsets.xs)
104
+ },
105
+ sm: {
106
+ display: hiddenLevels[1] === 0 ? 'none' : shown,
107
+ textAlign: horizontalAlignLevel[1],
108
+ ...calculateWidth(sizes.sm),
109
+ ...calculateOffset(offsets.sm)
110
+ },
111
+ md: {
112
+ display: hiddenLevels[2] === 0 ? 'none' : shown,
113
+ textAlign: horizontalAlignLevel[2],
114
+ ...calculateWidth(sizes.md),
115
+ ...calculateOffset(offsets.md)
116
+ },
117
+ lg: {
118
+ display: hiddenLevels[3] === 0 ? 'none' : shown,
119
+ textAlign: horizontalAlignLevel[3],
120
+ ...calculateWidth(sizes.lg),
121
+ ...calculateOffset(offsets.lg)
122
+ },
123
+ xl: {
124
+ display: hiddenLevels[4] === 0 ? 'none' : shown,
125
+ textAlign: horizontalAlignLevel[4],
126
+ ...calculateWidth(sizes.xl),
127
+ ...calculateOffset(offsets.xl)
128
+ }
129
+ });
130
+ const {
131
+ ids,
132
+ styles
133
+ } = _utils.StyleSheet.create({
134
+ col: {
135
+ flexGrow: 1,
136
+ flexShrink: 0,
137
+ flexBasis: 'auto',
138
+ maxWidth: '100%',
139
+ paddingLeft: gutter ? 16 : 0,
140
+ paddingRight: gutter ? 16 : 0,
141
+ ...mediaQueryStyles
142
+ }
143
+ });
151
144
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_utils.BaseView, {
152
145
  ref: ref,
153
146
  ...viewProps,
154
- style: [styles.col, gutterPadding, offsetStyles(offsets), sizeStyles(sizes), {
155
- ...hidingStyles
156
- }],
147
+ style: [styles.col],
148
+ dataSet: {
149
+ media: ids.col
150
+ },
157
151
  children: children
158
152
  });
159
153
  });
160
154
  Col.displayName = 'Col';
161
- const styles = _StyleSheet.default.create({
162
- col: {
163
- flexGrow: 1,
164
- flexShrink: 0,
165
- flexBasis: 'auto',
166
- maxWidth: '100%'
167
- }
168
- });
169
155
 
170
156
  /*
171
157
  * We're disabling default props since passing undefined props to
@@ -6,12 +6,10 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
- var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
10
9
  var _systemConstants = require("@telus-uds/system-constants");
11
10
  var _utils = require("../utils");
12
11
  var _Row = _interopRequireDefault(require("./Row"));
13
12
  var _Col = _interopRequireDefault(require("./Col"));
14
- var _ViewportProvider = require("../ViewportProvider");
15
13
  var _GutterContext = _interopRequireDefault(require("./providers/GutterContext"));
16
14
  var _helpers = _interopRequireDefault(require("./helpers"));
17
15
  var _jsxRuntime = require("react/jsx-runtime");
@@ -39,33 +37,40 @@ const FlexGrid = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
39
37
  children,
40
38
  ...rest
41
39
  } = _ref;
42
- const viewPort = (0, _ViewportProvider.useViewport)();
43
40
  const reverseLevel = (0, _helpers.default)([xsReverse, smReverse, mdReverse, lgReverse, xlReverse]);
44
- const marginVertical = 0;
45
- const marginHorizontal = outsideGutter ? 'auto' : -16;
46
- const width = outsideGutter ? '100%' : 'auto';
47
- let flexDirection;
48
- let maxWidth;
49
- if (viewPort === _systemConstants.viewports.xs) {
50
- // no maxWidth for xs
51
- flexDirection = reverseLevel[0] ? 'column-reverse' : 'column';
52
- }
53
- if (viewPort === _systemConstants.viewports.sm) {
54
- maxWidth = limitWidth && _systemConstants.viewports.map.get(_systemConstants.viewports.sm);
55
- flexDirection = reverseLevel[1] ? 'column-reverse' : 'column';
56
- }
57
- if (viewPort === _systemConstants.viewports.md) {
58
- maxWidth = limitWidth && _systemConstants.viewports.map.get(_systemConstants.viewports.md);
59
- flexDirection = reverseLevel[2] ? 'column-reverse' : 'column';
60
- }
61
- if (viewPort === _systemConstants.viewports.lg) {
62
- maxWidth = limitWidth && _systemConstants.viewports.map.get(_systemConstants.viewports.lg);
63
- flexDirection = reverseLevel[3] ? 'column-reverse' : 'column';
64
- }
65
- if (viewPort === _systemConstants.viewports.xl) {
66
- maxWidth = limitWidth && _systemConstants.viewports.map.get(_systemConstants.viewports.xl);
67
- flexDirection = reverseLevel[4] ? 'column-reverse' : 'column';
68
- }
41
+ const mediaQueryStyles = (0, _utils.createMediaQueryStyles)({
42
+ xs: {
43
+ flexDirection: reverseLevel[0] ? 'column-reverse' : 'column'
44
+ },
45
+ sm: {
46
+ maxWidth: limitWidth && _systemConstants.viewports.map.get('sm'),
47
+ flexDirection: reverseLevel[1] ? 'column-reverse' : 'column'
48
+ },
49
+ md: {
50
+ maxWidth: limitWidth && _systemConstants.viewports.map.get('md'),
51
+ flexDirection: reverseLevel[2] ? 'column-reverse' : 'column'
52
+ },
53
+ lg: {
54
+ maxWidth: limitWidth && _systemConstants.viewports.map.get('lg'),
55
+ flexDirection: reverseLevel[3] ? 'column-reverse' : 'column'
56
+ },
57
+ xl: {
58
+ maxWidth: limitWidth && _systemConstants.viewports.map.get('xl'),
59
+ flexDirection: reverseLevel[4] ? 'column-reverse' : 'column'
60
+ }
61
+ });
62
+ const {
63
+ ids,
64
+ styles
65
+ } = _utils.StyleSheet.create({
66
+ flexgrid: {
67
+ flexWrap: 'wrap',
68
+ width: outsideGutter ? '100%' : 'auto',
69
+ marginVertical: 0,
70
+ marginHorizontal: outsideGutter ? 'auto' : -16,
71
+ ...mediaQueryStyles
72
+ }
73
+ });
69
74
  const props = {
70
75
  accessibilityRole,
71
76
  ...(0, _utils.getA11yPropsFromHtmlTag)(tag, accessibilityRole),
@@ -76,23 +81,15 @@ const FlexGrid = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
76
81
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_utils.BaseView, {
77
82
  ref: ref,
78
83
  ...props,
79
- style: [styles.grid, {
80
- marginHorizontal,
81
- marginVertical,
82
- width,
83
- flexDirection,
84
- maxWidth
85
- }],
84
+ style: [styles.flexgrid],
85
+ dataSet: {
86
+ media: ids.flexgrid
87
+ },
86
88
  children: children
87
89
  })
88
90
  });
89
91
  });
90
92
  FlexGrid.displayName = 'FlexGrid';
91
- const styles = _StyleSheet.default.create({
92
- grid: {
93
- flexWrap: 'wrap'
94
- }
95
- });
96
93
  FlexGrid.propTypes = {
97
94
  ...selectedSystemPropTypes,
98
95
  /**
@@ -6,9 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
- var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
10
- var _systemConstants = require("@telus-uds/system-constants");
11
- var _ViewportProvider = require("../../ViewportProvider");
12
9
  var _helpers = _interopRequireDefault(require("../helpers"));
13
10
  var _utils = require("../../utils");
14
11
  var _jsxRuntime = require("react/jsx-runtime");
@@ -81,55 +78,57 @@ const Row = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
81
78
  children,
82
79
  ...rest
83
80
  } = _ref;
84
- const viewPort = (0, _ViewportProvider.useViewport)();
85
81
  const reverseLevel = (0, _helpers.default)([xsReverse, smReverse, mdReverse, lgReverse, xlReverse]);
86
- let flexDirection = '';
87
- let flexWrap = '';
88
- if (viewPort === _systemConstants.viewports.xs) {
89
- flexDirection = reverseLevel[0] ? 'row-reverse' : 'row';
90
- flexWrap = reverseLevel[0] ? 'wrap-reverse' : 'wrap';
91
- }
92
- if (viewPort === _systemConstants.viewports.sm) {
93
- flexDirection = reverseLevel[1] ? 'row-reverse' : 'row';
94
- flexWrap = reverseLevel[1] ? 'wrap-reverse' : 'wrap';
95
- }
96
- if (viewPort === _systemConstants.viewports.md) {
97
- flexDirection = reverseLevel[2] ? 'row-reverse' : 'row';
98
- flexWrap = reverseLevel[2] ? 'wrap-reverse' : 'wrap';
99
- }
100
- if (viewPort === _systemConstants.viewports.lg) {
101
- flexDirection = reverseLevel[3] ? 'row-reverse' : 'row';
102
- flexWrap = reverseLevel[3] ? 'wrap-reverse' : 'wrap';
103
- }
104
- if (viewPort === _systemConstants.viewports.xl) {
105
- flexDirection = reverseLevel[4] ? 'row-reverse' : 'row';
106
- flexWrap = reverseLevel[4] ? 'wrap-reverse' : 'wrap';
107
- }
82
+ const mediaQueryStyles = (0, _utils.createMediaQueryStyles)({
83
+ xs: {
84
+ flexDirection: reverseLevel[0] ? 'row-reverse' : 'row',
85
+ flexWrap: reverseLevel[0] ? 'wrap-reverse' : 'wrap'
86
+ },
87
+ sm: {
88
+ flexDirection: reverseLevel[1] ? 'row-reverse' : 'row',
89
+ flexWrap: reverseLevel[1] ? 'wrap-reverse' : 'wrap'
90
+ },
91
+ md: {
92
+ flexDirection: reverseLevel[2] ? 'row-reverse' : 'row',
93
+ flexWrap: reverseLevel[2] ? 'wrap-reverse' : 'wrap'
94
+ },
95
+ lg: {
96
+ flexDirection: reverseLevel[3] ? 'row-reverse' : 'row',
97
+ flexWrap: reverseLevel[3] ? 'wrap-reverse' : 'wrap'
98
+ },
99
+ xl: {
100
+ flexDirection: reverseLevel[4] ? 'row-reverse' : 'row',
101
+ flexWrap: reverseLevel[4] ? 'wrap-reverse' : 'wrap'
102
+ }
103
+ });
104
+ const {
105
+ ids,
106
+ styles
107
+ } = _utils.StyleSheet.create({
108
+ row: {
109
+ width: '100%',
110
+ marginVertical: 0,
111
+ marginHorizontal: 'auto',
112
+ flexGrow: 0,
113
+ flexShrink: 1,
114
+ flexBasis: 'auto',
115
+ ...horizontalAlignStyles(horizontalAlign),
116
+ ...verticalAlignStyles(verticalAlign),
117
+ ...distributeStyles(distribute),
118
+ ...mediaQueryStyles
119
+ }
120
+ });
108
121
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_utils.BaseView, {
109
122
  ref: ref,
110
123
  ...rest,
111
- style: [styles.row, {
112
- flexDirection,
113
- flexWrap,
114
- ...horizontalAlignStyles(horizontalAlign),
115
- ...verticalAlignStyles(verticalAlign),
116
- ...distributeStyles(distribute)
117
- }],
124
+ style: [styles.row],
125
+ dataSet: {
126
+ media: ids.row
127
+ },
118
128
  children: children
119
129
  });
120
130
  });
121
131
  Row.displayName = 'Row';
122
- const styles = _StyleSheet.default.create({
123
- row: {
124
- width: '100%',
125
- marginVertical: 0,
126
- marginHorizontal: 'auto',
127
- flexGrow: 0,
128
- flexShrink: 1,
129
- flexBasis: 'auto',
130
- flexDirection: 'row'
131
- }
132
- });
133
132
  Row.propTypes = {
134
133
  /**
135
134
  * Align columns horizontally within their row.
@@ -23,7 +23,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
23
23
  * - inline within a <Text> element
24
24
  * - within a container with `flexDirection: 'row'`
25
25
  */const IconText = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
26
- var _iconProps$tokens;
26
+ var _iconProps$tokens, _iconProps$tokens2;
27
27
  let {
28
28
  space,
29
29
  iconPosition = 'left',
@@ -41,6 +41,13 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
41
41
  // Inline images on Android are always baseline-aligned which makes them look misaligned - offset it.
42
42
  // See abandoned issue https://github.com/facebook/react-native/issues/6529
43
43
  const size = (iconProps === null || iconProps === void 0 ? void 0 : (_iconProps$tokens = iconProps.tokens) === null || _iconProps$tokens === void 0 ? void 0 : _iconProps$tokens.size) ?? 0;
44
+ const valueTranslateY = iconProps === null || iconProps === void 0 ? void 0 : (_iconProps$tokens2 = iconProps.tokens) === null || _iconProps$tokens2 === void 0 ? void 0 : _iconProps$tokens2.translateY;
45
+ /**
46
+ * These calculations were carried out using a set of linear equations to calculate that the
47
+ * position of the icon "->"" is aligned to the first line of the tooltip text on IOS and Android.
48
+ * The issue was mainly on IOS, the translateY style didn't match with the old calculations.
49
+ */
50
+ const resultY = valueTranslateY ? Math.floor(-1 * (valueTranslateY - 4)) : 0;
44
51
  const iconAdjustedAndriod = /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
45
52
  style: {
46
53
  transform: [{
@@ -52,7 +59,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
52
59
  const iconAdjustedIOS = /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
53
60
  style: {
54
61
  transform: [{
55
- translateY: size * 0.01
62
+ translateY: valueTranslateY ? resultY : size * 0.01
56
63
  }]
57
64
  },
58
65
  children: iconContent
@@ -100,13 +100,20 @@ const selectIconTokens = _ref5 => {
100
100
  let {
101
101
  color,
102
102
  iconSize,
103
- iconTranslateX,
104
- iconTranslateY
103
+ blockFontSize,
104
+ iconTranslateX
105
105
  } = _ref5;
106
+ /**
107
+ * These calculations were carried out using a set of linear equations to calculate that the
108
+ * position of the icon "->"" is aligned to the first line of the tooltip text.
109
+ * The base equation is: X/4 + Y/4 - 4 - |X - Y| = Z
110
+ * where X = blockFontSize, Y = iconSize and Z = translateY
111
+ */
112
+ const translateY = blockFontSize / 4 + iconSize / 4 - 4 - Math.abs(iconSize - blockFontSize);
106
113
  return {
107
114
  color,
108
115
  translateX: iconTranslateX,
109
- translateY: iconTranslateY,
116
+ translateY: translateY < 0 ? 0 : translateY,
110
117
  size: iconSize
111
118
  };
112
119
  };
@@ -8,6 +8,16 @@ var _react = _interopRequireDefault(require("react"));
8
8
  var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
9
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
10
  const rules = {};
11
+ let styleSheet;
12
+ if (typeof window !== 'undefined' && typeof document !== 'undefined') {
13
+ styleSheet = (() => {
14
+ const style = document.createElement('style');
15
+ style.id = 'RNMQCSS';
16
+ style.appendChild(document.createTextNode(''));
17
+ document.head.appendChild(style);
18
+ return style.sheet;
19
+ })();
20
+ }
11
21
  const hasCss = (id, text) => {
12
22
  var _rules$id$text, _rules$id$text$includ;
13
23
  return !!rules[id] && !!((_rules$id$text = rules[id].text) !== null && _rules$id$text !== void 0 && (_rules$id$text$includ = _rules$id$text.includes) !== null && _rules$id$text$includ !== void 0 && _rules$id$text$includ.call(_rules$id$text, text));
@@ -18,6 +28,9 @@ const addCss = (id, text) => {
18
28
  var _rules$id;
19
29
  rules[id] = (rules === null || rules === void 0 ? void 0 : rules[id]) || {};
20
30
  rules[id].text = (((_rules$id = rules[id]) === null || _rules$id === void 0 ? void 0 : _rules$id.text) || '') + text;
31
+ if (styleSheet) {
32
+ styleSheet.insertRule(text, Object.keys(rules).length - 1);
33
+ }
21
34
  }
22
35
  };
23
36
  exports.addCss = addCss;