@telefonica/mistica 10.5.1 → 10.9.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.
Files changed (80) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/button-group.d.ts +9 -0
  3. package/dist/button-group.js +67 -0
  4. package/dist/button-group.js.flow +11 -0
  5. package/dist/button.d.ts +1 -1
  6. package/dist/button.js +1 -1
  7. package/dist/button.js.flow +1 -1
  8. package/dist/callout.d.ts +2 -1
  9. package/dist/callout.js +15 -21
  10. package/dist/callout.js.flow +2 -3
  11. package/dist/card.d.ts +1 -1
  12. package/dist/card.js +41 -48
  13. package/dist/date-field.js +8 -0
  14. package/dist/date-time-field.js +8 -0
  15. package/dist/date-time-picker.d.ts +1 -0
  16. package/dist/date-time-picker.js +55 -20
  17. package/dist/date-time-picker.js.flow +1 -0
  18. package/dist/decimal-field.d.ts +1 -0
  19. package/dist/decimal-field.js.flow +1 -0
  20. package/dist/empty-state-card.d.ts +4 -3
  21. package/dist/empty-state-card.js +18 -24
  22. package/dist/empty-state-card.js.flow +2 -3
  23. package/dist/empty-state.d.ts +2 -2
  24. package/dist/empty-state.js +51 -9
  25. package/dist/feedback.d.ts +2 -7
  26. package/dist/feedback.js +38 -60
  27. package/dist/feedback.js.flow +2 -6
  28. package/dist/header.js +37 -67
  29. package/dist/index.d.ts +4 -1
  30. package/dist/index.js +28 -0
  31. package/dist/index.js.flow +4 -0
  32. package/dist/month-field.d.ts +9 -0
  33. package/dist/month-field.js +192 -0
  34. package/dist/month-field.js.flow +13 -0
  35. package/dist/navigation-bar.js +102 -72
  36. package/dist/progress-bar.d.ts +1 -0
  37. package/dist/progress-bar.js +11 -6
  38. package/dist/progress-bar.js.flow +4 -1
  39. package/dist/skins/blau.d.ts +37 -0
  40. package/dist/skins/blau.js +238 -0
  41. package/dist/skins/blau.js.flow +39 -0
  42. package/dist/skins/constants.d.ts +1 -0
  43. package/dist/skins/constants.js +4 -2
  44. package/dist/skins/constants.js.flow +1 -0
  45. package/dist/skins/telefonica.js +1 -1
  46. package/dist/skins/types.d.ts +1 -1
  47. package/dist/skins/types.js.flow +7 -1
  48. package/dist/skins/utils.js +5 -0
  49. package/dist/stepper.js +1 -1
  50. package/dist/text-field-base.js +8 -1
  51. package/dist/theme.d.ts +1 -0
  52. package/dist/theme.js +8 -4
  53. package/dist/theme.js.flow +1 -0
  54. package/dist/utils/time.d.ts +1 -0
  55. package/dist/utils/time.js +9 -1
  56. package/dist/utils/time.js.flow +1 -0
  57. package/dist-es/button-group.js +54 -0
  58. package/dist-es/button.js +1 -1
  59. package/dist-es/callout.js +15 -21
  60. package/dist-es/card.js +40 -47
  61. package/dist-es/date-field.js +7 -0
  62. package/dist-es/date-time-field.js +7 -0
  63. package/dist-es/date-time-picker.js +56 -22
  64. package/dist-es/empty-state-card.js +17 -23
  65. package/dist-es/empty-state.js +16 -9
  66. package/dist-es/feedback.js +37 -60
  67. package/dist-es/header.js +37 -67
  68. package/dist-es/index.js +4 -1
  69. package/dist-es/month-field.js +120 -0
  70. package/dist-es/navigation-bar.js +102 -72
  71. package/dist-es/progress-bar.js +11 -6
  72. package/dist-es/skins/blau.js +225 -0
  73. package/dist-es/skins/constants.js +2 -1
  74. package/dist-es/skins/telefonica.js +1 -1
  75. package/dist-es/skins/utils.js +5 -1
  76. package/dist-es/stepper.js +1 -1
  77. package/dist-es/text-field-base.js +8 -1
  78. package/dist-es/theme.js +8 -4
  79. package/dist-es/utils/time.js +5 -0
  80. package/package.json +1 -1
package/dist-es/card.js CHANGED
@@ -5,15 +5,11 @@ import { useTheme } from './hooks';
5
5
  import Box from './box';
6
6
  import { Text1, Text2, Text4 } from './text';
7
7
  import { createUseStyles } from './jss';
8
- import Inline from './inline';
9
8
  import { Boxed } from './boxed';
9
+ import ButtonGroup from './button-group';
10
10
  var useCardContentStyles = createUseStyles(function () {
11
11
  return {
12
12
  actions: {
13
- marginLeft: function marginLeft(_ref) {
14
- var needsButtonLinkAlignment = _ref.needsButtonLinkAlignment;
15
- return needsButtonLinkAlignment ? -6 : 0;
16
- },
17
13
  flex: 1,
18
14
  display: 'flex',
19
15
  alignItems: 'flex-end',
@@ -22,20 +18,17 @@ var useCardContentStyles = createUseStyles(function () {
22
18
  };
23
19
  });
24
20
 
25
- var CardContent = function CardContent(_ref2) {
26
- var headline = _ref2.headline,
27
- pretitle = _ref2.pretitle,
28
- title = _ref2.title,
29
- subtitle = _ref2.subtitle,
30
- description = _ref2.description,
31
- extra = _ref2.extra,
32
- button = _ref2.button,
33
- buttonLink = _ref2.buttonLink;
21
+ var CardContent = function CardContent(_ref) {
22
+ var headline = _ref.headline,
23
+ pretitle = _ref.pretitle,
24
+ title = _ref.title,
25
+ subtitle = _ref.subtitle,
26
+ description = _ref.description,
27
+ extra = _ref.extra,
28
+ button = _ref.button,
29
+ buttonLink = _ref.buttonLink;
34
30
  var theme = useTheme();
35
- var needsButtonLinkAlignment = buttonLink && !button;
36
- var classes = useCardContentStyles({
37
- needsButtonLinkAlignment: needsButtonLinkAlignment
38
- });
31
+ var classes = useCardContentStyles();
39
32
 
40
33
  var renderHeadline = function renderHeadline() {
41
34
  if (!headline) {
@@ -73,10 +66,10 @@ var CardContent = function CardContent(_ref2) {
73
66
  color: theme.colors.textSecondary
74
67
  }, description)), extra && /*#__PURE__*/React.createElement("div", null, extra)), (button || buttonLink) && /*#__PURE__*/React.createElement("div", {
75
68
  className: classes.actions
76
- }, /*#__PURE__*/React.createElement(Inline, {
77
- space: 16,
78
- alignItems: "center"
79
- }, button, buttonLink)));
69
+ }, /*#__PURE__*/React.createElement(ButtonGroup, {
70
+ primaryButton: button,
71
+ link: buttonLink
72
+ })));
80
73
  };
81
74
 
82
75
  var useMediaCardStyles = createUseStyles(function () {
@@ -91,8 +84,8 @@ var useMediaCardStyles = createUseStyles(function () {
91
84
  },
92
85
  media: {
93
86
  width: '100%',
94
- paddingTop: function paddingTop(_ref3) {
95
- var media = _ref3.media;
87
+ paddingTop: function paddingTop(_ref2) {
88
+ var media = _ref2.media;
96
89
 
97
90
  if (media.height) {
98
91
  return media.height;
@@ -105,8 +98,8 @@ var useMediaCardStyles = createUseStyles(function () {
105
98
 
106
99
  return '56.25%'; // 16/9 aspect ratio
107
100
  },
108
- backgroundImage: function backgroundImage(_ref4) {
109
- var media = _ref4.media;
101
+ backgroundImage: function backgroundImage(_ref3) {
102
+ var media = _ref3.media;
110
103
  return "url(".concat(media.src, ")");
111
104
  },
112
105
  backgroundSize: 'cover',
@@ -121,16 +114,16 @@ var useMediaCardStyles = createUseStyles(function () {
121
114
  }
122
115
  };
123
116
  });
124
- export var MediaCard = function MediaCard(_ref5) {
125
- var media = _ref5.media,
126
- headline = _ref5.headline,
127
- pretitle = _ref5.pretitle,
128
- title = _ref5.title,
129
- description = _ref5.description,
130
- extra = _ref5.extra,
131
- button = _ref5.button,
132
- buttonLink = _ref5.buttonLink,
133
- ariaLabel = _ref5['aria-label'];
117
+ export var MediaCard = function MediaCard(_ref4) {
118
+ var media = _ref4.media,
119
+ headline = _ref4.headline,
120
+ pretitle = _ref4.pretitle,
121
+ title = _ref4.title,
122
+ description = _ref4.description,
123
+ extra = _ref4.extra,
124
+ button = _ref4.button,
125
+ buttonLink = _ref4.buttonLink,
126
+ ariaLabel = _ref4['aria-label'];
134
127
  var classes = useMediaCardStyles({
135
128
  media: media
136
129
  });
@@ -166,17 +159,17 @@ var useDataCardStyles = createUseStyles(function () {
166
159
  }
167
160
  };
168
161
  });
169
- export var DataCard = function DataCard(_ref6) {
170
- var icon = _ref6.icon,
171
- headline = _ref6.headline,
172
- title = _ref6.title,
173
- subtitle = _ref6.subtitle,
174
- description = _ref6.description,
175
- extra = _ref6.extra,
176
- button = _ref6.button,
177
- buttonLink = _ref6.buttonLink,
178
- dataAttributes = _ref6.dataAttributes,
179
- ariaLabel = _ref6['aria-label'];
162
+ export var DataCard = function DataCard(_ref5) {
163
+ var icon = _ref5.icon,
164
+ headline = _ref5.headline,
165
+ title = _ref5.title,
166
+ subtitle = _ref5.subtitle,
167
+ description = _ref5.description,
168
+ extra = _ref5.extra,
169
+ button = _ref5.button,
170
+ buttonLink = _ref5.buttonLink,
171
+ dataAttributes = _ref5.dataAttributes,
172
+ ariaLabel = _ref5['aria-label'];
180
173
  var classes = useDataCardStyles();
181
174
  return /*#__PURE__*/React.createElement(Boxed, {
182
175
  className: classes.boxed,
@@ -14,6 +14,7 @@ import { isServerSide } from './utils/environment';
14
14
  import IconCalendarRegular from './generated/mistica-icons/icon-calendar-regular';
15
15
  import { getLocalDateString } from './utils/time';
16
16
  import { useTheme } from './hooks';
17
+ import { isFirefox } from './utils/platform';
17
18
  var ReactDateTimePicker = /*#__PURE__*/React.lazy(function () {
18
19
  return import(
19
20
  /* webpackChunkName: "date-time-picker" */
@@ -41,6 +42,11 @@ var DateField = function DateField(_ref) {
41
42
  };
42
43
 
43
44
  var hasNativePicker = React.useMemo(function () {
45
+ if (isFirefox()) {
46
+ // disabled in firefox because it shows a close button over the icon and can't be styled
47
+ return false;
48
+ }
49
+
44
50
  return isInputTypeSupported('date');
45
51
  }, []);
46
52
 
@@ -109,6 +115,7 @@ var DateField = function DateField(_ref) {
109
115
  return /*#__PURE__*/React.createElement(React.Suspense, {
110
116
  fallback: nativePicker
111
117
  }, /*#__PURE__*/React.createElement(ReactDateTimePicker, _extends({}, rest, fieldProps, {
118
+ optional: optional,
112
119
  isValidDate: function isValidDate(currentDate) {
113
120
  return isInRange(getLocalDateString(currentDate.toDate()));
114
121
  }
@@ -13,6 +13,7 @@ import { isInputTypeSupported } from './utils/dom';
13
13
  import { isServerSide } from './utils/environment';
14
14
  import { getLocalDateTimeString } from './utils/time';
15
15
  import IconCalendarRegular from './generated/mistica-icons/icon-calendar-regular';
16
+ import { isFirefox } from './utils/platform';
16
17
  import { useTheme } from './hooks';
17
18
  var ReactDateTimePicker = /*#__PURE__*/React.lazy(function () {
18
19
  return import(
@@ -37,6 +38,11 @@ var FormDateField = function FormDateField(_ref) {
37
38
  rest = _objectWithoutProperties(_ref, _excluded);
38
39
 
39
40
  var hasNativePicker = React.useMemo(function () {
41
+ if (isFirefox()) {
42
+ // disabled for firefox because the picker has no option to select time
43
+ return false;
44
+ }
45
+
40
46
  return isInputTypeSupported('datetime-local');
41
47
  }, []);
42
48
 
@@ -111,6 +117,7 @@ var FormDateField = function FormDateField(_ref) {
111
117
  return /*#__PURE__*/React.createElement(React.Suspense, {
112
118
  fallback: nativePicker
113
119
  }, /*#__PURE__*/React.createElement(ReactDateTimePicker, _extends({}, rest, fieldProps, {
120
+ optional: optional,
114
121
  withTime: true,
115
122
  isValidDate: function isValidDate(currentDate) {
116
123
  return isInRange(getLocalDateTimeString(currentDate.toDate()));
@@ -1,4 +1,4 @@
1
- var _excluded = ["withTime", "isValidDate"];
1
+ var _excluded = ["withTime", "mode", "isValidDate", "optional"];
2
2
 
3
3
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
4
4
 
@@ -27,14 +27,15 @@ import { DEFAULT_WIDTH } from './text-field-components';
27
27
  import IconButton from './icon-button';
28
28
  import { cancelEvent, createChangeEvent } from './utils/dom';
29
29
  import { createUseStyles } from './jss';
30
- import { useElementDimensions } from './hooks';
30
+ import { useElementDimensions, useTheme } from './hooks';
31
+ import IconCloseRegular from './generated/mistica-icons/icon-close-regular';
32
+
31
33
  /**
32
34
  * Do not use this component!
33
35
  * Use DateField or FormDateTimeField
34
36
  *
35
37
  * This component is a fallback for browsers that don't support datetime-local or date inputs
36
38
  */
37
-
38
39
  var browserLocale = navigator.language.toLocaleLowerCase().split('-')[0];
39
40
  import(
40
41
  /* webpackChunkName: "moment-locale" */
@@ -223,7 +224,9 @@ var useStyles = createUseStyles(function () {
223
224
 
224
225
  var DateTimePicker = function DateTimePicker(_ref) {
225
226
  var withTime = _ref.withTime,
227
+ mode = _ref.mode,
226
228
  isValidDate = _ref.isValidDate,
229
+ optional = _ref.optional,
227
230
  rest = _objectWithoutProperties(_ref, _excluded);
228
231
 
229
232
  var _React$useState = React.useState(false),
@@ -232,20 +235,17 @@ var DateTimePicker = function DateTimePicker(_ref) {
232
235
  setShowPicker = _React$useState2[1];
233
236
 
234
237
  var classes = useStyles();
238
+
239
+ var _useTheme = useTheme(),
240
+ texts = _useTheme.texts;
241
+
235
242
  var fieldRef = React.useRef(null);
236
243
 
237
244
  var _useElementDimensions = useElementDimensions(),
238
245
  pickerContainerHeight = _useElementDimensions.height,
239
246
  pickerContainerRef = _useElementDimensions.ref;
240
247
 
241
- var onFocus = function onFocus(event) {
242
- var _rest$onFocus;
243
-
244
- setShowPicker(true);
245
- (_rest$onFocus = rest.onFocus) === null || _rest$onFocus === void 0 ? void 0 : _rest$onFocus.call(rest, event);
246
- };
247
-
248
- var getCalendarContainerStyles = function getCalendarContainerStyles() {
248
+ var getPickerContainerStyles = function getPickerContainerStyles() {
249
249
  var _fieldRef$current;
250
250
 
251
251
  var _ref2 = ((_fieldRef$current = fieldRef.current) === null || _fieldRef$current === void 0 ? void 0 : _fieldRef$current.getBoundingClientRect()) || {},
@@ -278,8 +278,20 @@ var DateTimePicker = function DateTimePicker(_ref) {
278
278
  return value ? new Date(value) : undefined;
279
279
  };
280
280
 
281
+ var formatMoment = function formatMoment(moment) {
282
+ if (withTime) {
283
+ return moment.format('yyyy-MM-DD HH:mm');
284
+ }
285
+
286
+ if (mode === 'year-month') {
287
+ return moment.format('yyyy-MM');
288
+ }
289
+
290
+ return moment.format('yyyy-MM-DD');
291
+ };
292
+
281
293
  var setValue = function setValue(moment) {
282
- var value = typeof moment === 'string' ? moment : moment.format(withTime ? 'yyyy-MM-DD HH:mm' : 'yyyy-MM-DD');
294
+ var value = typeof moment === 'string' ? moment : formatMoment(moment);
283
295
 
284
296
  if (fieldRef.current) {
285
297
  var _rest$onChange;
@@ -289,12 +301,21 @@ var DateTimePicker = function DateTimePicker(_ref) {
289
301
  }
290
302
  };
291
303
 
292
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TextFieldBase, _extends({}, rest, {
293
- type: "text",
294
- autoComplete: "off",
295
- onFocus: onFocus,
296
- shrinkLabel: !!getValue(),
297
- endIcon: /*#__PURE__*/React.createElement(IconButton, {
304
+ var renderEndIcon = function renderEndIcon() {
305
+ if (getValue() && optional) {
306
+ return /*#__PURE__*/React.createElement(IconButton, {
307
+ "aria-label": texts.clearButton,
308
+ size: 32,
309
+ onPress: function onPress(event) {
310
+ event.stopPropagation();
311
+ setValue('');
312
+ }
313
+ }, /*#__PURE__*/React.createElement(IconCloseRegular, {
314
+ size: 24
315
+ }));
316
+ }
317
+
318
+ return /*#__PURE__*/React.createElement(IconButton, {
298
319
  "aria-label": "",
299
320
  size: 32,
300
321
  onPress: function onPress() {
@@ -302,7 +323,18 @@ var DateTimePicker = function DateTimePicker(_ref) {
302
323
  }
303
324
  }, /*#__PURE__*/React.createElement(IconCalendarRegular, {
304
325
  size: 24
305
- })),
326
+ }));
327
+ };
328
+
329
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TextFieldBase, _extends({}, rest, {
330
+ style: {
331
+ cursor: 'default'
332
+ },
333
+ required: !optional,
334
+ type: "text",
335
+ autoComplete: "off",
336
+ shrinkLabel: !!getValue(),
337
+ endIcon: renderEndIcon(),
306
338
  inputRef: function inputRef(e) {
307
339
  var _rest$inputRef;
308
340
 
@@ -314,7 +346,7 @@ var DateTimePicker = function DateTimePicker(_ref) {
314
346
  return setShowPicker(true);
315
347
  },
316
348
  onClick: function onClick() {
317
- return setShowPicker(true);
349
+ setShowPicker(true);
318
350
  }
319
351
  })), showPicker && /*#__PURE__*/React.createElement(Overlay, {
320
352
  onPress: function onPress(e) {
@@ -324,11 +356,13 @@ var DateTimePicker = function DateTimePicker(_ref) {
324
356
  disableScroll: true
325
357
  }, /*#__PURE__*/React.createElement("div", {
326
358
  ref: pickerContainerRef,
327
- style: getCalendarContainerStyles(),
359
+ style: getPickerContainerStyles(),
328
360
  className: classes.reactDatePicker
329
361
  }, /*#__PURE__*/React.createElement(Datetime, {
330
- initialValue: getValue(),
362
+ initialViewMode: mode === 'year-month' ? 'months' : undefined,
363
+ dateFormat: mode === 'year-month' ? 'YYYY-MM' : undefined,
331
364
  timeFormat: withTime ? 'HH:mm' : false,
365
+ initialValue: getValue(),
332
366
  locale: browserLocale,
333
367
  input: false,
334
368
  onChange: setValue,
@@ -4,10 +4,10 @@ import * as React from 'react';
4
4
  import Box from './box';
5
5
  import { Boxed } from './boxed';
6
6
  import { useScreenSize, useTheme } from './hooks';
7
- import Inline from './inline';
8
7
  import { createUseStyles } from './jss';
9
8
  import Stack from './stack';
10
9
  import { Text2, Text4 } from './text';
10
+ import ButtonGroup from './button-group';
11
11
  var useStyles = createUseStyles(function (theme) {
12
12
  return {
13
13
  container: _defineProperty({}, theme.mq.desktopOrBigger, {
@@ -25,27 +25,22 @@ var useStyles = createUseStyles(function (theme) {
25
25
  }, theme.mq.tabletOrSmaller, {
26
26
  width: 64,
27
27
  height: 64
28
- }),
29
- actions: {
30
- marginLeft: function marginLeft(_ref) {
31
- var needsButtonLinkAlignment = _ref.needsButtonLinkAlignment;
32
- return needsButtonLinkAlignment ? -6 : 0;
33
- }
34
- }
28
+ })
35
29
  };
36
30
  });
37
31
 
38
- var EmptyStateCard = function EmptyStateCard(_ref2) {
32
+ var EmptyStateCard = function EmptyStateCard(_ref) {
39
33
  var _button$props, _image2;
40
34
 
41
- var title = _ref2.title,
42
- description = _ref2.description,
43
- button = _ref2.button,
44
- buttonLink = _ref2.buttonLink,
45
- icon = _ref2.icon,
46
- imageUrl = _ref2.imageUrl,
47
- ariaLabel = _ref2['aria-label'],
48
- dataAttributes = _ref2.dataAttributes;
35
+ var title = _ref.title,
36
+ description = _ref.description,
37
+ button = _ref.button,
38
+ secondaryButton = _ref.secondaryButton,
39
+ buttonLink = _ref.buttonLink,
40
+ icon = _ref.icon,
41
+ imageUrl = _ref.imageUrl,
42
+ ariaLabel = _ref['aria-label'],
43
+ dataAttributes = _ref.dataAttributes;
49
44
 
50
45
  var _useTheme = useTheme(),
51
46
  colors = _useTheme.colors;
@@ -91,12 +86,11 @@ var EmptyStateCard = function EmptyStateCard(_ref2) {
91
86
  }, title), /*#__PURE__*/React.createElement(Text2, {
92
87
  regular: true,
93
88
  color: colors.textSecondary
94
- }, description))), (button || buttonLink) && /*#__PURE__*/React.createElement("div", {
95
- className: classes.actions
96
- }, /*#__PURE__*/React.createElement(Inline, {
97
- space: 16,
98
- alignItems: "center"
99
- }, button, buttonLink))))));
89
+ }, description))), (button || secondaryButton || buttonLink) && /*#__PURE__*/React.createElement(ButtonGroup, {
90
+ primaryButton: button,
91
+ secondaryButton: secondaryButton,
92
+ link: buttonLink
93
+ })))));
100
94
  };
101
95
 
102
96
  export default EmptyStateCard;
@@ -1,15 +1,20 @@
1
1
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
 
3
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
4
+
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
6
+
3
7
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
8
 
5
9
  import * as React from 'react';
6
10
  import Box from './box';
7
11
  import { Boxed } from './boxed';
12
+ import { ButtonPrimary } from './button';
8
13
  import { useScreenSize, useTheme } from './hooks';
9
14
  import Stack from './stack';
10
15
  import { Text4, Text6 } from './text';
11
16
  import { createUseStyles } from './jss';
12
- import Inline from './inline';
17
+ import ButtonGroup from './button-group';
13
18
  import { getPrefixedDataAttributes } from './utils/dom';
14
19
  var useStyles = createUseStyles(function (theme) {
15
20
  return {
@@ -98,6 +103,14 @@ var EmptyState = function EmptyState(_ref2) {
98
103
  });
99
104
  }
100
105
 
106
+ var buttons = _objectSpread({}, (button === null || button === void 0 ? void 0 : button.type) === ButtonPrimary ? {
107
+ primaryButton: button
108
+ } : {
109
+ secondaryButton: button
110
+ });
111
+
112
+ buttons.link = buttonLink;
113
+
101
114
  if (isTabletOrSmaller) {
102
115
  var _ref3, _largeImage;
103
116
 
@@ -116,10 +129,7 @@ var EmptyState = function EmptyState(_ref2) {
116
129
  light: true,
117
130
  as: "p",
118
131
  color: colors.textSecondary
119
- }, description)), button && /*#__PURE__*/React.createElement(Inline, {
120
- space: 16,
121
- alignItems: "center"
122
- }, button, buttonLink)));
132
+ }, description)), button && /*#__PURE__*/React.createElement(ButtonGroup, buttons)));
123
133
  }
124
134
 
125
135
  return /*#__PURE__*/React.createElement(Boxed, {
@@ -142,10 +152,7 @@ var EmptyState = function EmptyState(_ref2) {
142
152
  light: true,
143
153
  as: "p",
144
154
  color: colors.textSecondary
145
- }, description)), button && /*#__PURE__*/React.createElement(Inline, {
146
- space: 16,
147
- alignItems: "center"
148
- }, button, buttonLink)))), largeImageUrl && /*#__PURE__*/React.createElement("div", {
155
+ }, description)), button && /*#__PURE__*/React.createElement(ButtonGroup, buttons)))), largeImageUrl && /*#__PURE__*/React.createElement("div", {
149
156
  className: classes.desktopImage
150
157
  })));
151
158
  };
@@ -33,6 +33,7 @@ import { Boxed } from './boxed';
33
33
  import ResponsiveLayout from './responsive-layout';
34
34
  import Stack from './stack';
35
35
  import classnames from 'classnames';
36
+ import ButtonGroup from './button-group';
36
37
 
37
38
  var areAnimationsSupported = function areAnimationsSupported(platformOverrides) {
38
39
  return !isOldChrome(platformOverrides) && !isRunningAcceptanceTest(platformOverrides);
@@ -44,7 +45,6 @@ var checkHasButtons = function checkHasButtons(_ref) {
44
45
  return !!primaryButton || !!secondaryButton;
45
46
  };
46
47
 
47
- var buttonLayoutSpacing = 16;
48
48
  var useStyles = createUseStyles(function (theme) {
49
49
  return {
50
50
  background: {
@@ -129,18 +129,6 @@ var useStyles = createUseStyles(function (theme) {
129
129
  transitionDelay: '0.6s',
130
130
  opacity: 1,
131
131
  transform: 'translate(0, 0)'
132
- },
133
- buttonsContainer: {
134
- display: 'flex',
135
- justifyContent: 'flex-start',
136
- flexWrap: 'wrap',
137
- margin: -buttonLayoutSpacing / 2,
138
- '& > *': {
139
- margin: buttonLayoutSpacing / 2
140
- }
141
- },
142
- link: {
143
- width: '100%'
144
132
  }
145
133
  };
146
134
  });
@@ -221,30 +209,19 @@ var renderFeedbackBody = function renderFeedbackBody(_ref9, animateText, appear,
221
209
  }, normalizedDescription), children));
222
210
  };
223
211
 
224
- var renderInlineFeedbackBody = function renderInlineFeedbackBody(feedbackBody, _ref10, classes) {
225
- var primaryButton = _ref10.primaryButton,
226
- secondaryButton = _ref10.secondaryButton,
227
- link = _ref10.link;
228
- var hasButtons = checkHasButtons({
229
- primaryButton: primaryButton,
230
- secondaryButton: secondaryButton,
231
- link: link
232
- });
212
+ var renderInlineFeedbackBody = function renderInlineFeedbackBody(feedbackBody, buttons) {
213
+ var hasButtons = checkHasButtons(buttons);
233
214
  return /*#__PURE__*/React.createElement(Stack, {
234
215
  space: 24
235
- }, feedbackBody, hasButtons && /*#__PURE__*/React.createElement("div", {
236
- className: classes.buttonsContainer
237
- }, primaryButton, secondaryButton, link && /*#__PURE__*/React.createElement("div", {
238
- className: classes.link
239
- }, link)));
216
+ }, feedbackBody, hasButtons && /*#__PURE__*/React.createElement(ButtonGroup, buttons));
240
217
  };
241
218
 
242
- var renderFeedbackInDesktop = function renderFeedbackInDesktop(_ref11) {
243
- var isInverse = _ref11.isInverse,
244
- inlineFeedbackBody = _ref11.inlineFeedbackBody,
245
- classes = _ref11.classes,
246
- imageUrl = _ref11.imageUrl,
247
- dataAttributes = _ref11.dataAttributes;
219
+ var renderFeedbackInDesktop = function renderFeedbackInDesktop(_ref10) {
220
+ var isInverse = _ref10.isInverse,
221
+ inlineFeedbackBody = _ref10.inlineFeedbackBody,
222
+ classes = _ref10.classes,
223
+ imageUrl = _ref10.imageUrl,
224
+ dataAttributes = _ref10.dataAttributes;
248
225
  return /*#__PURE__*/React.createElement(Boxed, {
249
226
  isInverse: isInverse,
250
227
  dataAttributes: dataAttributes
@@ -259,21 +236,21 @@ var renderFeedbackInDesktop = function renderFeedbackInDesktop(_ref11) {
259
236
  })));
260
237
  };
261
238
 
262
- export var FeedbackScreen = function FeedbackScreen(_ref12) {
263
- var title = _ref12.title,
264
- description = _ref12.description,
265
- children = _ref12.children,
266
- primaryButton = _ref12.primaryButton,
267
- secondaryButton = _ref12.secondaryButton,
268
- link = _ref12.link,
269
- hapticFeedback = _ref12.hapticFeedback,
270
- icon = _ref12.icon,
271
- _ref12$animateText = _ref12.animateText,
272
- animateText = _ref12$animateText === void 0 ? false : _ref12$animateText,
273
- unstable_inlineInDesktop = _ref12.unstable_inlineInDesktop,
274
- imageUrl = _ref12.imageUrl,
275
- imageFit = _ref12.imageFit,
276
- dataAttributes = _ref12.dataAttributes;
239
+ export var FeedbackScreen = function FeedbackScreen(_ref11) {
240
+ var title = _ref11.title,
241
+ description = _ref11.description,
242
+ children = _ref11.children,
243
+ primaryButton = _ref11.primaryButton,
244
+ secondaryButton = _ref11.secondaryButton,
245
+ link = _ref11.link,
246
+ hapticFeedback = _ref11.hapticFeedback,
247
+ icon = _ref11.icon,
248
+ _ref11$animateText = _ref11.animateText,
249
+ animateText = _ref11$animateText === void 0 ? false : _ref11$animateText,
250
+ unstable_inlineInDesktop = _ref11.unstable_inlineInDesktop,
251
+ imageUrl = _ref11.imageUrl,
252
+ imageFit = _ref11.imageFit,
253
+ dataAttributes = _ref11.dataAttributes;
277
254
  useHapticFeedback(hapticFeedback);
278
255
  var isInverse = useIsInverseVariant();
279
256
 
@@ -329,7 +306,7 @@ export var FeedbackScreen = function FeedbackScreen(_ref12) {
329
306
  primaryButton: primaryButton,
330
307
  secondaryButton: secondaryButton,
331
308
  link: link
332
- }, classes);
309
+ });
333
310
 
334
311
  if (!isTabletOrSmaller && unstable_inlineInDesktop) {
335
312
  return inlineFeedbackBody;
@@ -401,16 +378,16 @@ export var InfoFeedbackScreen = function InfoFeedbackScreen(props) {
401
378
  icon: hasIcon ? /*#__PURE__*/React.createElement(IcnInfo, null) : undefined
402
379
  }));
403
380
  };
404
- export var SuccessFeedback = function SuccessFeedback(_ref13) {
405
- var title = _ref13.title,
406
- description = _ref13.description,
407
- children = _ref13.children,
408
- primaryButton = _ref13.primaryButton,
409
- secondaryButton = _ref13.secondaryButton,
410
- link = _ref13.link,
411
- imageUrl = _ref13.imageUrl,
412
- imageFit = _ref13.imageFit,
413
- dataAttributes = _ref13.dataAttributes;
381
+ export var SuccessFeedback = function SuccessFeedback(_ref12) {
382
+ var title = _ref12.title,
383
+ description = _ref12.description,
384
+ children = _ref12.children,
385
+ primaryButton = _ref12.primaryButton,
386
+ secondaryButton = _ref12.secondaryButton,
387
+ link = _ref12.link,
388
+ imageUrl = _ref12.imageUrl,
389
+ imageFit = _ref12.imageFit,
390
+ dataAttributes = _ref12.dataAttributes;
414
391
  useHapticFeedback('success');
415
392
 
416
393
  var _useScreenSize3 = useScreenSize(),
@@ -446,7 +423,7 @@ export var SuccessFeedback = function SuccessFeedback(_ref13) {
446
423
  primaryButton: primaryButton,
447
424
  secondaryButton: secondaryButton,
448
425
  link: link
449
- }, classes);
426
+ });
450
427
  return /*#__PURE__*/React.createElement(ThemeVariant, {
451
428
  isInverse: true
452
429
  }, isTabletOrSmaller ? /*#__PURE__*/React.createElement(ResponsiveLayout, {