@telefonica/mistica 11.10.0 → 11.11.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.
@@ -2,19 +2,25 @@
2
2
 
3
3
  import * as React from "react";
4
4
  import { ButtonLink } from "./button";
5
- import type { RendersNullableElement, TrackingEvent } from "./utils/types";
5
+ import type {
6
+ DataAttributes,
7
+ RendersNullableElement,
8
+ TrackingEvent,
9
+ } from "./utils/types";
6
10
  import type { NullableButtonElement } from "./button";
7
11
  declare type CommonProps = {
8
12
  title: string,
13
+ titleLinesMax?: number,
9
14
  description: string,
15
+ descriptionLinesMax?: number,
10
16
  imageUrl?: string,
11
17
  imageFit?: "fit" | "fill",
12
- backgroundImageUrl?: string,
13
18
  onClose?: () => void,
14
19
  trackingEvent?: TrackingEvent | $ReadOnlyArray<TrackingEvent>,
15
20
  isInverse?: boolean,
16
21
  "aria-label"?: string,
17
22
  width?: string | number,
23
+ dataAttributes?: DataAttributes,
18
24
  };
19
25
  declare type BasicProps = { ...$Exact<CommonProps> };
20
26
  declare type ButtonProps = {
package/dist/index.d.ts CHANGED
@@ -49,7 +49,7 @@ export { default as Inline } from './inline';
49
49
  export { default as HighlightedCard } from './highlighted-card';
50
50
  export { default as Stepper } from './stepper';
51
51
  export { default as ProgressBar } from './progress-bar';
52
- export { MediaCard, DataCard } from './card';
52
+ export { MediaCard, DataCard, SnapCard } from './card';
53
53
  export { default as Divider } from './divider';
54
54
  export { default as Menu } from './menu';
55
55
  export { default as EmptyState } from './empty-state';
package/dist/index.js CHANGED
@@ -488,6 +488,12 @@ Object.defineProperty(exports, "DataCard", {
488
488
  return _card.DataCard;
489
489
  }
490
490
  });
491
+ Object.defineProperty(exports, "SnapCard", {
492
+ enumerable: true,
493
+ get: function() {
494
+ return _card.SnapCard;
495
+ }
496
+ });
491
497
  Object.defineProperty(exports, "Divider", {
492
498
  enumerable: true,
493
499
  get: function() {
@@ -85,7 +85,7 @@ declare export { default as Inline } from "./inline";
85
85
  declare export { default as HighlightedCard } from "./highlighted-card";
86
86
  declare export { default as Stepper } from "./stepper";
87
87
  declare export { default as ProgressBar } from "./progress-bar";
88
- declare export { MediaCard, DataCard } from "./card";
88
+ declare export { MediaCard, DataCard, SnapCard } from "./card";
89
89
  declare export { default as Divider } from "./divider";
90
90
  declare export { default as Menu } from "./menu";
91
91
  declare export { default as EmptyState } from "./empty-state";
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ export declare const useIsDismissable: () => boolean;
3
+ declare type MaybeDismissableProps = {
4
+ children: React.ReactNode;
5
+ onClose?: () => void;
6
+ width?: string | number;
7
+ 'aria-label'?: string;
8
+ };
9
+ declare const MaybeDismissable: ({ children, width, onClose, "aria-label": ariaLabel, }: MaybeDismissableProps) => JSX.Element;
10
+ export default MaybeDismissable;
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.default = exports.useIsDismissable = void 0;
6
+ var _jsxRuntime = require("react/jsx-runtime");
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _jss = require("./jss");
9
+ var _iconCloseRegular = _interopRequireDefault(require("./generated/mistica-icons/icon-close-regular"));
10
+ var _hooks = require("./hooks");
11
+ var _iconButton = _interopRequireDefault(require("./icon-button"));
12
+ var _themeVariantContext = require("./theme-variant-context");
13
+ var _color = require("./utils/color");
14
+ function _interopRequireDefault(obj) {
15
+ return obj && obj.__esModule ? obj : {
16
+ default: obj
17
+ };
18
+ }
19
+ function _interopRequireWildcard(obj) {
20
+ if (obj && obj.__esModule) {
21
+ return obj;
22
+ } else {
23
+ var newObj = {};
24
+ if (obj != null) {
25
+ for(var key in obj){
26
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
27
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
28
+ if (desc.get || desc.set) {
29
+ Object.defineProperty(newObj, key, desc);
30
+ } else {
31
+ newObj[key] = obj[key];
32
+ }
33
+ }
34
+ }
35
+ }
36
+ newObj.default = obj;
37
+ return newObj;
38
+ }
39
+ }
40
+ var DismissableContext = /*#__PURE__*/ React.createContext(false);
41
+ var useIsDismissable = function useIsDismissable() {
42
+ return React.useContext(DismissableContext);
43
+ };
44
+ exports.useIsDismissable = useIsDismissable;
45
+ var useStyles = (0, _jss).createUseStyles(function(theme) {
46
+ return {
47
+ dismissableContainer: {
48
+ position: "relative",
49
+ display: "flex",
50
+ flexShrink: 0,
51
+ width: function width(param) {
52
+ var width1 = param.width;
53
+ return width1 || "100%";
54
+ }
55
+ },
56
+ dismissableButton: {
57
+ position: "absolute",
58
+ top: 0,
59
+ right: 0,
60
+ width: 48,
61
+ height: 48,
62
+ display: "flex",
63
+ alignItems: "center",
64
+ justifyContent: "center"
65
+ },
66
+ dismissableCircleContainer: {
67
+ display: "flex",
68
+ alignItems: "center",
69
+ justifyContent: "center",
70
+ width: 24,
71
+ height: 24,
72
+ margin: "0 0 8px 8px",
73
+ borderRadius: "50%",
74
+ backgroundColor: (0, _color).applyAlpha(theme.colors.background, 0.7)
75
+ }
76
+ };
77
+ });
78
+ var MaybeDismissable = function MaybeDismissable(param) {
79
+ var children = param.children, width = param.width, onClose = param.onClose, ariaLabel = param["aria-label"];
80
+ var isInverse = (0, _themeVariantContext).useIsInverseVariant();
81
+ var classes = useStyles({
82
+ isInverse: isInverse,
83
+ width: width
84
+ });
85
+ var ref = (0, _hooks).useTheme(), colors = ref.colors, texts = ref.texts;
86
+ if (!onClose) {
87
+ return /*#__PURE__*/ (0, _jsxRuntime).jsx(_jsxRuntime.Fragment, {
88
+ children: children
89
+ });
90
+ }
91
+ return /*#__PURE__*/ (0, _jsxRuntime).jsxs("section", {
92
+ className: classes.dismissableContainer,
93
+ "aria-label": ariaLabel,
94
+ children: [
95
+ /*#__PURE__*/ (0, _jsxRuntime).jsx(DismissableContext.Provider, {
96
+ value: true,
97
+ children: children
98
+ }),
99
+ /*#__PURE__*/ (0, _jsxRuntime).jsx(_iconButton.default, {
100
+ className: classes.dismissableButton,
101
+ onPress: onClose,
102
+ "aria-label": texts.closeButtonLabel,
103
+ style: {
104
+ display: "flex",
105
+ width: 48,
106
+ height: 48
107
+ },
108
+ children: /*#__PURE__*/ (0, _jsxRuntime).jsx("div", {
109
+ className: classes.dismissableCircleContainer,
110
+ children: /*#__PURE__*/ (0, _jsxRuntime).jsx(_iconCloseRegular.default, {
111
+ color: colors.neutralHigh
112
+ })
113
+ })
114
+ })
115
+ ]
116
+ });
117
+ };
118
+ var _default = MaybeDismissable;
119
+ exports.default = _default;
@@ -0,0 +1,12 @@
1
+ // @flow
2
+
3
+ import * as React from "react";
4
+ declare export var useIsDismissable: () => boolean;
5
+ declare type MaybeDismissableProps = {
6
+ children: React.Node,
7
+ onClose?: () => void,
8
+ width?: string | number,
9
+ "aria-label"?: string,
10
+ };
11
+ declare var MaybeDismissable: (x: MaybeDismissableProps) => React.Node;
12
+ declare export default typeof MaybeDismissable;
@@ -3,5 +3,5 @@ Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
5
  exports.PACKAGE_VERSION = void 0;
6
- var PACKAGE_VERSION = "11.10.0";
6
+ var PACKAGE_VERSION = "11.11.0";
7
7
  exports.PACKAGE_VERSION = PACKAGE_VERSION;
package/dist/select.js CHANGED
@@ -232,7 +232,7 @@ var useStyles = (0, _jss).createUseStyles(function(theme) {
232
232
  },
233
233
  menuItem: (_obj1 = {
234
234
  color: theme.colors.textPrimary,
235
- padding: "6px 16px",
235
+ padding: "8px 16px",
236
236
  height: 48,
237
237
  transition: "background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms"
238
238
  }, _defineProperty(_obj1, theme.mq.supportsHover, {
package/dist/text.js CHANGED
@@ -117,6 +117,12 @@ var useStyles = (0, _jss).createUseStyles(function(theme) {
117
117
  var wordBreak = param.wordBreak;
118
118
  return wordBreak ? "anywhere" : "inherit";
119
119
  },
120
+ "@supports not (overflow-wrap: anywhere)": {
121
+ wordBreak: function wordBreak(param) {
122
+ var wordBreak1 = param.wordBreak;
123
+ return wordBreak1 ? "break-all" : "inherit";
124
+ }
125
+ },
120
126
  // Needed to reset the default browser margin that adds to p, h1, h2... elements.
121
127
  margin: 0
122
128
  }, theme.mq.tabletOrSmaller, {
@@ -133,8 +139,8 @@ var useStyles = (0, _jss).createUseStyles(function(theme) {
133
139
  "-webkit-line-clamp": lineClamp,
134
140
  lineClamp: lineClamp,
135
141
  wordBreak: function wordBreak(param) {
136
- var wordBreak1 = param.wordBreak;
137
- return wordBreak1 ? "break-all" : "normal";
142
+ var wordBreak2 = param.wordBreak;
143
+ return wordBreak2 ? "break-all" : "normal";
138
144
  },
139
145
  "@supports (overflow-wrap: anywhere)": {
140
146
  wordBreak: function wordBreak(param) {
@@ -142,7 +148,7 @@ var useStyles = (0, _jss).createUseStyles(function(theme) {
142
148
  return truncate === 1 || truncate === true ? "break-all" : "normal";
143
149
  }
144
150
  },
145
- display: "box",
151
+ display: "-webkit-box",
146
152
  boxOrient: "vertical",
147
153
  overflow: "hidden"
148
154
  }
@@ -3,6 +3,13 @@ export declare const isInsideNovumNativeApp: (platformOverrides?: Theme['platfor
3
3
  export declare const isRunningAcceptanceTest: (platformOverrides?: Theme['platformOverrides']) => boolean;
4
4
  export declare const isAndroid: (platformOverrides: Theme['platformOverrides']) => boolean;
5
5
  export declare const isIos: (platformOverrides: Theme['platformOverrides']) => boolean;
6
+ /**
7
+ * Returns true if the browser is a safari browser:
8
+ * webview, mobile, desktop or a browser like Chrome for iOS which is just a safari with a skin
9
+ *
10
+ * Note that this function checks the navigator vendor. It doesn't use platformOverrides or userAgent.
11
+ */
12
+ export declare const isSafari: () => boolean;
6
13
  export declare const isFirefox: (platformOverrides?: {
7
14
  platform?: "ios" | "android" | "desktop" | undefined;
8
15
  insideNovumNativeApp?: boolean | undefined;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- exports.getPlatform = exports.getIosVersion = exports.isOldChrome = exports.isChrome = exports.isFirefox = exports.isIos = exports.isAndroid = exports.isRunningAcceptanceTest = exports.isInsideNovumNativeApp = void 0;
5
+ exports.getPlatform = exports.getIosVersion = exports.isOldChrome = exports.isChrome = exports.isFirefox = exports.isSafari = exports.isIos = exports.isAndroid = exports.isRunningAcceptanceTest = exports.isInsideNovumNativeApp = void 0;
6
6
  var _webviewBridge = require("@tef-novum/webview-bridge");
7
7
  function _arrayLikeToArray(arr, len) {
8
8
  if (len == null || len > arr.length) len = arr.length;
@@ -91,6 +91,10 @@ var isIos = function isIos(platformOverrides) {
91
91
  return false;
92
92
  };
93
93
  exports.isIos = isIos;
94
+ var isSafari = function isSafari() {
95
+ return navigator.vendor.includes("Apple");
96
+ };
97
+ exports.isSafari = isSafari;
94
98
  var isFirefox = function isFirefox(platformOverrides) {
95
99
  return !!getUserAgent(platformOverrides).match(/Firefox\/([0-9]+)\./);
96
100
  };
@@ -13,6 +13,13 @@ declare export var isAndroid: (
13
13
  declare export var isIos: (
14
14
  platformOverrides: $PropertyType<Theme, "platformOverrides">
15
15
  ) => boolean;
16
+ /**
17
+ * Returns true if the browser is a safari browser:
18
+ * webview, mobile, desktop or a browser like Chrome for iOS which is just a safari with a skin
19
+ *
20
+ * Note that this function checks the navigator vendor. It doesn't use platformOverrides or userAgent.
21
+ */
22
+ declare export var isSafari: () => boolean;
16
23
  declare export var isFirefox: (
17
24
  platformOverrides?: {
18
25
  platform?: "ios" | "android" | "desktop" | void,
package/dist/video.js CHANGED
@@ -10,6 +10,7 @@ var _jss = require("./jss");
10
10
  var _aspectRatioSupport = require("./utils/aspect-ratio-support");
11
11
  var _common = require("./utils/common");
12
12
  var _dom = require("./utils/dom");
13
+ var _platform = require("./utils/platform");
13
14
  function _interopRequireWildcard(obj) {
14
15
  if (obj && obj.__esModule) {
15
16
  return obj;
@@ -97,6 +98,7 @@ exports.RATIO = RATIO;
97
98
  var useStyles = (0, _jss).createUseStyles(function() {
98
99
  return {
99
100
  video: {
101
+ background: "transparent",
100
102
  display: "block",
101
103
  objectFit: "cover",
102
104
  maxWidth: "100%",
@@ -198,7 +200,11 @@ var Video = /*#__PURE__*/ React.forwardRef(function(_param, ref) {
198
200
  } else {
199
201
  width = props.width || "100%";
200
202
  }
201
- var needsWrapper = withCssAspectRatio && !supportsAspectRatio;
203
+ /**
204
+ * In safari, when using a video with poster, the transition from pause to play does a flicker,
205
+ * To avoid this, in Safari browsers, instead of using the poster attribute, we use a
206
+ * wrapper with the poster as background image
207
+ */ var needsWrapper = (0, _platform).isSafari() || withCssAspectRatio && !supportsAspectRatio;
202
208
  var video1 = /*#__PURE__*/ (0, _jsxRuntime).jsx("video", _objectSpread({
203
209
  ref: (0, _common).combineRefs(ref, videoRef),
204
210
  playsInline: true,
@@ -207,14 +213,14 @@ var Video = /*#__PURE__*/ React.forwardRef(function(_param, ref) {
207
213
  autoPlay: autoPlay,
208
214
  muted: muted,
209
215
  loop: loop
210
- }, !needsWrapper ? {
216
+ }, needsWrapper ? {} : {
211
217
  width: width,
212
218
  height: height
213
- } : {}, {
219
+ }, {
214
220
  className: classes.video,
215
221
  preload: preload,
216
222
  // This transparent pixel fallback avoids showing the ugly "play" image in android webviews
217
- poster: poster || TRANSPARENT_PIXEL
223
+ poster: needsWrapper ? TRANSPARENT_PIXEL : poster || TRANSPARENT_PIXEL
218
224
  }, (0, _dom).getPrefixedDataAttributes(dataAttributes), {
219
225
  children: sources.map(function(param, index) {
220
226
  var src = param.src, type = param.type;
@@ -228,7 +234,10 @@ var Video = /*#__PURE__*/ React.forwardRef(function(_param, ref) {
228
234
  return /*#__PURE__*/ (0, _jsxRuntime).jsx("div", {
229
235
  style: {
230
236
  width: width,
231
- height: height
237
+ height: height,
238
+ backgroundImage: poster ? 'url("'.concat(poster, '")') : undefined,
239
+ backgroundSize: "cover",
240
+ backgroundPosition: "50% 50%"
232
241
  },
233
242
  className: classes.wrapper,
234
243
  children: video1