@atlaskit/smart-card 17.3.0 → 17.3.1

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,5 +1,11 @@
1
1
  # @atlaskit/smart-card
2
2
 
3
+ ## 17.3.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`66dc86e0331`](https://bitbucket.org/atlassian/atlassian-frontend/commits/66dc86e0331) - Flexible UI: Check for null element
8
+
3
9
  ## 17.3.0
4
10
 
5
11
  ### Minor Changes
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "17.3.0",
3
+ "version": "17.3.1",
4
4
  "sideEffects": false
5
5
  }
@@ -9,10 +9,10 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports.renderElementItems = exports.renderChildren = exports.renderActionItems = exports.getGapSize = exports.getBaseStyles = void 0;
11
11
 
12
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
-
14
12
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
13
 
14
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
15
+
16
16
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
17
 
18
18
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
@@ -82,6 +82,10 @@ var isActionGroup = function isActionGroup(node) {
82
82
  return /*#__PURE__*/_react.default.isValidElement(node) && node.type === _actionGroup.default;
83
83
  };
84
84
 
85
+ var isElementNull = function isElementNull(children) {
86
+ return Boolean(children.type() === null);
87
+ };
88
+
85
89
  var isElementOrElementGroup = function isElementOrElementGroup(node) {
86
90
  return /*#__PURE__*/_react.default.isValidElement(node) && ((0, _flexible.isFlexibleUiElement)(node) || node.type === _elementGroup.default);
87
91
  };
@@ -110,9 +114,13 @@ var renderElementItems = function renderElementItems() {
110
114
  var Element = Elements[name];
111
115
 
112
116
  if (Element) {
113
- return [].concat((0, _toConsumableArray2.default)(acc), [/*#__PURE__*/_react.default.createElement(Element, (0, _extends2.default)({
117
+ var element = /*#__PURE__*/_react.default.createElement(Element, (0, _extends2.default)({
114
118
  key: idx
115
- }, props))]);
119
+ }, props));
120
+
121
+ if (!isElementNull(element)) {
122
+ return [].concat((0, _toConsumableArray2.default)(acc), [element]);
123
+ }
116
124
  }
117
125
 
118
126
  return acc;
@@ -84,17 +84,6 @@ var getContextKey = function getContextKey(name) {
84
84
  return name.length > 0 ? name.charAt(0).toLowerCase() + name.slice(1) : undefined;
85
85
  };
86
86
 
87
- var getFormattedMessage = function getFormattedMessage(descriptor, value) {
88
- return value ? {
89
- message: {
90
- descriptor: descriptor,
91
- values: {
92
- context: value
93
- }
94
- }
95
- } : undefined;
96
- };
97
-
98
87
  var getData = function getData(elementName, contextKey, context) {
99
88
  if (!context) {
100
89
  return undefined;
@@ -103,52 +92,72 @@ var getData = function getData(elementName, contextKey, context) {
103
92
  var data = context[contextKey];
104
93
 
105
94
  switch (elementName) {
95
+ case _constants.ElementName.AuthorGroup:
96
+ case _constants.ElementName.CollaboratorGroup:
97
+ return toAvatarGroupProps(data);
98
+
106
99
  case _constants.ElementName.CommentCount:
107
100
  case _constants.ElementName.ProgrammingLanguage:
108
101
  case _constants.ElementName.SubscriberCount:
109
- return {
110
- label: data
111
- };
112
-
113
- case _constants.ElementName.AuthorGroup:
114
- return {
115
- items: context.authorGroup
116
- };
117
-
118
- case _constants.ElementName.CollaboratorGroup:
119
- return {
120
- items: context.collaboratorGroup
121
- };
102
+ return toBadgeProps(data);
122
103
 
123
104
  case _constants.ElementName.CreatedBy:
124
- return getFormattedMessage(_messages.messages.created_by, context.createdBy);
105
+ return toFormattedTextProps(_messages.messages.created_by, context.createdBy);
106
+
107
+ case _constants.ElementName.CreatedOn:
108
+ return toDateTimeProps('created', context.createdOn);
125
109
 
126
110
  case _constants.ElementName.ModifiedBy:
127
- return getFormattedMessage(_messages.messages.modified_by, context.modifiedBy);
111
+ return toFormattedTextProps(_messages.messages.modified_by, context.modifiedBy);
128
112
 
129
113
  case _constants.ElementName.ModifiedOn:
130
- return context.modifiedOn ? {
131
- date: new Date(context.modifiedOn),
132
- type: 'modified'
133
- } : undefined;
134
-
135
- case _constants.ElementName.CreatedOn:
136
- return context.createdOn ? {
137
- date: new Date(context.createdOn),
138
- type: 'created'
139
- } : undefined;
114
+ return toDateTimeProps('modified', context.modifiedOn);
140
115
 
141
116
  case _constants.ElementName.Title:
142
- return {
143
- text: context.title,
144
- url: context.url
145
- };
117
+ return toLinkProps(context.title, context.url);
146
118
 
147
119
  default:
148
120
  return data;
149
121
  }
150
122
  };
151
123
 
124
+ var toAvatarGroupProps = function toAvatarGroupProps(items) {
125
+ return items ? {
126
+ items: items
127
+ } : undefined;
128
+ };
129
+
130
+ var toBadgeProps = function toBadgeProps(label) {
131
+ return label ? {
132
+ label: label
133
+ } : undefined;
134
+ };
135
+
136
+ var toDateTimeProps = function toDateTimeProps(type, dateString) {
137
+ return dateString ? {
138
+ date: new Date(dateString),
139
+ type: type
140
+ } : undefined;
141
+ };
142
+
143
+ var toFormattedTextProps = function toFormattedTextProps(descriptor, context) {
144
+ return context ? {
145
+ message: {
146
+ descriptor: descriptor,
147
+ values: {
148
+ context: context
149
+ }
150
+ }
151
+ } : undefined;
152
+ };
153
+
154
+ var toLinkProps = function toLinkProps(text, url) {
155
+ return text ? {
156
+ text: text,
157
+ url: url
158
+ } : undefined;
159
+ };
160
+
152
161
  var createElement = function createElement(name) {
153
162
  var _ref = elementMappings[name] || {},
154
163
  BaseElement = _ref.component,
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "17.3.0",
3
+ "version": "17.3.1",
4
4
  "sideEffects": false
5
5
  }
@@ -62,6 +62,10 @@ export const getBaseStyles = (direction, size) => css`
62
62
 
63
63
  const isActionGroup = node => /*#__PURE__*/React.isValidElement(node) && node.type === ActionGroup;
64
64
 
65
+ const isElementNull = children => {
66
+ return Boolean(children.type() === null);
67
+ };
68
+
65
69
  const isElementOrElementGroup = node => /*#__PURE__*/React.isValidElement(node) && (isFlexibleUiElement(node) || node.type === ElementGroup);
66
70
 
67
71
  export const renderChildren = (children, size) => React.Children.map(children, child => {
@@ -86,9 +90,13 @@ export const renderElementItems = (items = []) => {
86
90
  const Element = Elements[name];
87
91
 
88
92
  if (Element) {
89
- return [...acc, /*#__PURE__*/React.createElement(Element, _extends({
93
+ const element = /*#__PURE__*/React.createElement(Element, _extends({
90
94
  key: idx
91
- }, props))];
95
+ }, props));
96
+
97
+ if (!isElementNull(element)) {
98
+ return [...acc, element];
99
+ }
92
100
  }
93
101
 
94
102
  return acc;
@@ -67,15 +67,6 @@ const getContextKey = name => {
67
67
  return name.length > 0 ? name.charAt(0).toLowerCase() + name.slice(1) : undefined;
68
68
  };
69
69
 
70
- const getFormattedMessage = (descriptor, value) => value ? {
71
- message: {
72
- descriptor,
73
- values: {
74
- context: value
75
- }
76
- }
77
- } : undefined;
78
-
79
70
  const getData = (elementName, contextKey, context) => {
80
71
  if (!context) {
81
72
  return undefined;
@@ -84,52 +75,72 @@ const getData = (elementName, contextKey, context) => {
84
75
  const data = context[contextKey];
85
76
 
86
77
  switch (elementName) {
78
+ case ElementName.AuthorGroup:
79
+ case ElementName.CollaboratorGroup:
80
+ return toAvatarGroupProps(data);
81
+
87
82
  case ElementName.CommentCount:
88
83
  case ElementName.ProgrammingLanguage:
89
84
  case ElementName.SubscriberCount:
90
- return {
91
- label: data
92
- };
93
-
94
- case ElementName.AuthorGroup:
95
- return {
96
- items: context.authorGroup
97
- };
98
-
99
- case ElementName.CollaboratorGroup:
100
- return {
101
- items: context.collaboratorGroup
102
- };
85
+ return toBadgeProps(data);
103
86
 
104
87
  case ElementName.CreatedBy:
105
- return getFormattedMessage(messages.created_by, context.createdBy);
88
+ return toFormattedTextProps(messages.created_by, context.createdBy);
89
+
90
+ case ElementName.CreatedOn:
91
+ return toDateTimeProps('created', context.createdOn);
106
92
 
107
93
  case ElementName.ModifiedBy:
108
- return getFormattedMessage(messages.modified_by, context.modifiedBy);
94
+ return toFormattedTextProps(messages.modified_by, context.modifiedBy);
109
95
 
110
96
  case ElementName.ModifiedOn:
111
- return context.modifiedOn ? {
112
- date: new Date(context.modifiedOn),
113
- type: 'modified'
114
- } : undefined;
115
-
116
- case ElementName.CreatedOn:
117
- return context.createdOn ? {
118
- date: new Date(context.createdOn),
119
- type: 'created'
120
- } : undefined;
97
+ return toDateTimeProps('modified', context.modifiedOn);
121
98
 
122
99
  case ElementName.Title:
123
- return {
124
- text: context.title,
125
- url: context.url
126
- };
100
+ return toLinkProps(context.title, context.url);
127
101
 
128
102
  default:
129
103
  return data;
130
104
  }
131
105
  };
132
106
 
107
+ const toAvatarGroupProps = items => {
108
+ return items ? {
109
+ items
110
+ } : undefined;
111
+ };
112
+
113
+ const toBadgeProps = label => {
114
+ return label ? {
115
+ label
116
+ } : undefined;
117
+ };
118
+
119
+ const toDateTimeProps = (type, dateString) => {
120
+ return dateString ? {
121
+ date: new Date(dateString),
122
+ type
123
+ } : undefined;
124
+ };
125
+
126
+ const toFormattedTextProps = (descriptor, context) => {
127
+ return context ? {
128
+ message: {
129
+ descriptor,
130
+ values: {
131
+ context
132
+ }
133
+ }
134
+ } : undefined;
135
+ };
136
+
137
+ const toLinkProps = (text, url) => {
138
+ return text ? {
139
+ text,
140
+ url
141
+ } : undefined;
142
+ };
143
+
133
144
  export const createElement = name => {
134
145
  const {
135
146
  component: BaseElement,
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "17.3.0",
3
+ "version": "17.3.1",
4
4
  "sideEffects": false
5
5
  }
@@ -1,5 +1,5 @@
1
- import _extends from "@babel/runtime/helpers/extends";
2
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import _extends from "@babel/runtime/helpers/extends";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
4
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
5
5
  var _excluded = ["name"],
@@ -51,6 +51,10 @@ var isActionGroup = function isActionGroup(node) {
51
51
  return /*#__PURE__*/React.isValidElement(node) && node.type === ActionGroup;
52
52
  };
53
53
 
54
+ var isElementNull = function isElementNull(children) {
55
+ return Boolean(children.type() === null);
56
+ };
57
+
54
58
  var isElementOrElementGroup = function isElementOrElementGroup(node) {
55
59
  return /*#__PURE__*/React.isValidElement(node) && (isFlexibleUiElement(node) || node.type === ElementGroup);
56
60
  };
@@ -77,9 +81,13 @@ export var renderElementItems = function renderElementItems() {
77
81
  var Element = Elements[name];
78
82
 
79
83
  if (Element) {
80
- return [].concat(_toConsumableArray(acc), [/*#__PURE__*/React.createElement(Element, _extends({
84
+ var element = /*#__PURE__*/React.createElement(Element, _extends({
81
85
  key: idx
82
- }, props))]);
86
+ }, props));
87
+
88
+ if (!isElementNull(element)) {
89
+ return [].concat(_toConsumableArray(acc), [element]);
90
+ }
83
91
  }
84
92
 
85
93
  return acc;
@@ -57,17 +57,6 @@ var getContextKey = function getContextKey(name) {
57
57
  return name.length > 0 ? name.charAt(0).toLowerCase() + name.slice(1) : undefined;
58
58
  };
59
59
 
60
- var getFormattedMessage = function getFormattedMessage(descriptor, value) {
61
- return value ? {
62
- message: {
63
- descriptor: descriptor,
64
- values: {
65
- context: value
66
- }
67
- }
68
- } : undefined;
69
- };
70
-
71
60
  var getData = function getData(elementName, contextKey, context) {
72
61
  if (!context) {
73
62
  return undefined;
@@ -76,52 +65,72 @@ var getData = function getData(elementName, contextKey, context) {
76
65
  var data = context[contextKey];
77
66
 
78
67
  switch (elementName) {
68
+ case ElementName.AuthorGroup:
69
+ case ElementName.CollaboratorGroup:
70
+ return toAvatarGroupProps(data);
71
+
79
72
  case ElementName.CommentCount:
80
73
  case ElementName.ProgrammingLanguage:
81
74
  case ElementName.SubscriberCount:
82
- return {
83
- label: data
84
- };
85
-
86
- case ElementName.AuthorGroup:
87
- return {
88
- items: context.authorGroup
89
- };
90
-
91
- case ElementName.CollaboratorGroup:
92
- return {
93
- items: context.collaboratorGroup
94
- };
75
+ return toBadgeProps(data);
95
76
 
96
77
  case ElementName.CreatedBy:
97
- return getFormattedMessage(messages.created_by, context.createdBy);
78
+ return toFormattedTextProps(messages.created_by, context.createdBy);
79
+
80
+ case ElementName.CreatedOn:
81
+ return toDateTimeProps('created', context.createdOn);
98
82
 
99
83
  case ElementName.ModifiedBy:
100
- return getFormattedMessage(messages.modified_by, context.modifiedBy);
84
+ return toFormattedTextProps(messages.modified_by, context.modifiedBy);
101
85
 
102
86
  case ElementName.ModifiedOn:
103
- return context.modifiedOn ? {
104
- date: new Date(context.modifiedOn),
105
- type: 'modified'
106
- } : undefined;
107
-
108
- case ElementName.CreatedOn:
109
- return context.createdOn ? {
110
- date: new Date(context.createdOn),
111
- type: 'created'
112
- } : undefined;
87
+ return toDateTimeProps('modified', context.modifiedOn);
113
88
 
114
89
  case ElementName.Title:
115
- return {
116
- text: context.title,
117
- url: context.url
118
- };
90
+ return toLinkProps(context.title, context.url);
119
91
 
120
92
  default:
121
93
  return data;
122
94
  }
123
95
  };
124
96
 
97
+ var toAvatarGroupProps = function toAvatarGroupProps(items) {
98
+ return items ? {
99
+ items: items
100
+ } : undefined;
101
+ };
102
+
103
+ var toBadgeProps = function toBadgeProps(label) {
104
+ return label ? {
105
+ label: label
106
+ } : undefined;
107
+ };
108
+
109
+ var toDateTimeProps = function toDateTimeProps(type, dateString) {
110
+ return dateString ? {
111
+ date: new Date(dateString),
112
+ type: type
113
+ } : undefined;
114
+ };
115
+
116
+ var toFormattedTextProps = function toFormattedTextProps(descriptor, context) {
117
+ return context ? {
118
+ message: {
119
+ descriptor: descriptor,
120
+ values: {
121
+ context: context
122
+ }
123
+ }
124
+ } : undefined;
125
+ };
126
+
127
+ var toLinkProps = function toLinkProps(text, url) {
128
+ return text ? {
129
+ text: text,
130
+ url: url
131
+ } : undefined;
132
+ };
133
+
125
134
  export var createElement = function createElement(name) {
126
135
  var _ref = elementMappings[name] || {},
127
136
  BaseElement = _ref.component,
@@ -1,5 +1,5 @@
1
1
  import { ElementProps } from '../types';
2
- declare type AvatarItemProps = {
2
+ export declare type AvatarItemProps = {
3
3
  src?: string;
4
4
  name: string;
5
5
  };
@@ -7,4 +7,3 @@ export declare type AvatarGroupProps = ElementProps & {
7
7
  items?: AvatarItemProps[];
8
8
  maxCount?: number;
9
9
  };
10
- export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "17.3.0",
3
+ "version": "17.3.1",
4
4
  "description": "Smart card component",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"