@lumx/react 2.1.9-alpha.0 → 2.1.9

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 (110) hide show
  1. package/esm/_internal/AlertDialog.js +2 -1
  2. package/esm/_internal/AlertDialog.js.map +1 -1
  3. package/esm/_internal/AutocompleteMultiple.js +2 -1
  4. package/esm/_internal/AutocompleteMultiple.js.map +1 -1
  5. package/esm/_internal/Avatar2.js +1 -5
  6. package/esm/_internal/Avatar2.js.map +1 -1
  7. package/esm/_internal/Button2.js +1 -1
  8. package/esm/_internal/Checkbox2.js +2 -1
  9. package/esm/_internal/Checkbox2.js.map +1 -1
  10. package/esm/_internal/DatePickerField.js +1 -1
  11. package/esm/_internal/DragHandle.js +2 -1
  12. package/esm/_internal/DragHandle.js.map +1 -1
  13. package/esm/_internal/ExpansionPanel.js +1 -1
  14. package/esm/_internal/Icon2.js +3 -23
  15. package/esm/_internal/Icon2.js.map +1 -1
  16. package/esm/_internal/IconButton.js +1 -1
  17. package/esm/_internal/Lightbox2.js +1 -1
  18. package/esm/_internal/Link2.js +1 -1
  19. package/esm/_internal/LinkPreview.js +1 -1
  20. package/esm/_internal/LinkPreview.js.map +1 -1
  21. package/esm/_internal/List2.js.map +1 -1
  22. package/esm/_internal/Message2.js +3 -3
  23. package/esm/_internal/Message2.js.map +1 -1
  24. package/esm/_internal/Notification2.js +2 -1
  25. package/esm/_internal/Notification2.js.map +1 -1
  26. package/esm/_internal/ProgressTrackerStepPanel.js +2 -1
  27. package/esm/_internal/ProgressTrackerStepPanel.js.map +1 -1
  28. package/esm/_internal/SelectMultiple.js +2 -1
  29. package/esm/_internal/SelectMultiple.js.map +1 -1
  30. package/esm/_internal/SideNavigationItem.js +2 -1
  31. package/esm/_internal/SideNavigationItem.js.map +1 -1
  32. package/esm/_internal/SlideshowControls.js +1 -1
  33. package/esm/_internal/TabPanel.js +1 -1
  34. package/esm/_internal/TableRow.js +2 -1
  35. package/esm/_internal/TableRow.js.map +1 -1
  36. package/esm/_internal/TextField.js +2 -1
  37. package/esm/_internal/TextField.js.map +1 -1
  38. package/esm/_internal/Thumbnail2.js +36 -30
  39. package/esm/_internal/Thumbnail2.js.map +1 -1
  40. package/esm/_internal/UserBlock.js +14 -45
  41. package/esm/_internal/UserBlock.js.map +1 -1
  42. package/esm/_internal/alert-dialog.js +2 -1
  43. package/esm/_internal/alert-dialog.js.map +1 -1
  44. package/esm/_internal/autocomplete.js +2 -1
  45. package/esm/_internal/autocomplete.js.map +1 -1
  46. package/esm/_internal/avatar.js +2 -1
  47. package/esm/_internal/avatar.js.map +1 -1
  48. package/esm/_internal/button.js +1 -1
  49. package/esm/_internal/checkbox.js +2 -1
  50. package/esm/_internal/checkbox.js.map +1 -1
  51. package/esm/_internal/comment-block.js +2 -1
  52. package/esm/_internal/comment-block.js.map +1 -1
  53. package/esm/_internal/date-picker.js +2 -1
  54. package/esm/_internal/date-picker.js.map +1 -1
  55. package/esm/_internal/drag-handle.js +2 -1
  56. package/esm/_internal/drag-handle.js.map +1 -1
  57. package/esm/_internal/expansion-panel.js +2 -1
  58. package/esm/_internal/expansion-panel.js.map +1 -1
  59. package/esm/_internal/flag.js +1 -1
  60. package/esm/_internal/icon.js +1 -1
  61. package/esm/_internal/image-block.js +2 -1
  62. package/esm/_internal/image-block.js.map +1 -1
  63. package/esm/_internal/lightbox.js +2 -1
  64. package/esm/_internal/lightbox.js.map +1 -1
  65. package/esm/_internal/link-preview.js +2 -1
  66. package/esm/_internal/link-preview.js.map +1 -1
  67. package/esm/_internal/link.js +1 -1
  68. package/esm/_internal/mdi.js +22 -0
  69. package/esm/_internal/mdi.js.map +1 -0
  70. package/esm/_internal/message.js +2 -1
  71. package/esm/_internal/message.js.map +1 -1
  72. package/esm/_internal/mosaic.js +2 -1
  73. package/esm/_internal/mosaic.js.map +1 -1
  74. package/esm/_internal/notification.js +2 -1
  75. package/esm/_internal/notification.js.map +1 -1
  76. package/esm/_internal/post-block.js +2 -1
  77. package/esm/_internal/post-block.js.map +1 -1
  78. package/esm/_internal/progress-tracker.js +2 -1
  79. package/esm/_internal/progress-tracker.js.map +1 -1
  80. package/esm/_internal/select.js +2 -1
  81. package/esm/_internal/select.js.map +1 -1
  82. package/esm/_internal/side-navigation.js +2 -1
  83. package/esm/_internal/side-navigation.js.map +1 -1
  84. package/esm/_internal/slideshow.js +2 -1
  85. package/esm/_internal/slideshow.js.map +1 -1
  86. package/esm/_internal/table.js +2 -1
  87. package/esm/_internal/table.js.map +1 -1
  88. package/esm/_internal/tabs.js +1 -1
  89. package/esm/_internal/text-field.js +2 -1
  90. package/esm/_internal/text-field.js.map +1 -1
  91. package/esm/_internal/thumbnail.js +2 -1
  92. package/esm/_internal/thumbnail.js.map +1 -1
  93. package/esm/_internal/uploader.js +1 -1
  94. package/esm/_internal/user-block.js +2 -2
  95. package/esm/index.js +2 -1
  96. package/esm/index.js.map +1 -1
  97. package/package.json +4 -4
  98. package/src/components/avatar/Avatar.tsx +0 -8
  99. package/src/components/icon/Icon.tsx +0 -5
  100. package/src/components/link-preview/LinkPreview.tsx +1 -1
  101. package/src/components/link-preview/__snapshots__/LinkPreview.test.tsx.snap +2 -2
  102. package/src/components/message/Message.tsx +1 -3
  103. package/src/components/thumbnail/Thumbnail.stories.tsx +0 -21
  104. package/src/components/thumbnail/Thumbnail.test.tsx +2 -20
  105. package/src/components/thumbnail/Thumbnail.tsx +15 -40
  106. package/src/components/thumbnail/__snapshots__/Thumbnail.test.tsx.snap +6 -53
  107. package/src/components/user-block/UserBlock.stories.tsx +4 -30
  108. package/src/components/user-block/UserBlock.tsx +16 -41
  109. package/src/components/user-block/__snapshots__/UserBlock.test.tsx.snap +145 -244
  110. package/types.d.ts +0 -12
@@ -1,9 +1,12 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
3
  exports[`<Thumbnail> Snapshots and structure should render story 'Clickable' 1`] = `
4
- <button
5
- className="lumx-thumbnail lumx-thumbnail--size-xxl lumx-thumbnail--theme-light lumx-thumbnail--is-clickable"
4
+ <div
5
+ className="lumx-thumbnail lumx-thumbnail--size-xxl lumx-thumbnail--theme-light"
6
6
  onClick={[Function]}
7
+ onKeyPress={[Function]}
8
+ role="button"
9
+ tabIndex={0}
7
10
  >
8
11
  <div
9
12
  className="lumx-thumbnail__background"
@@ -22,57 +25,7 @@ exports[`<Thumbnail> Snapshots and structure should render story 'Clickable' 1`]
22
25
  style={Object {}}
23
26
  />
24
27
  </div>
25
- </button>
26
- `;
27
-
28
- exports[`<Thumbnail> Snapshots and structure should render story 'ClickableCustomLink' 1`] = `
29
- <CustomLinkComponent
30
- className="custom-class-name lumx-thumbnail lumx-thumbnail--size-xxl lumx-thumbnail--theme-light lumx-thumbnail--is-clickable"
31
- href="https://google.fr"
32
- >
33
- <div
34
- className="lumx-thumbnail__background"
35
- style={
36
- Object {
37
- "display": undefined,
38
- "visibility": "hidden",
39
- }
40
- }
41
- >
42
- <img
43
- alt="Click me"
44
- className="lumx-thumbnail__image"
45
- loading="lazy"
46
- src="/demo-assets/landscape1.jpg"
47
- style={Object {}}
48
- />
49
- </div>
50
- </CustomLinkComponent>
51
- `;
52
-
53
- exports[`<Thumbnail> Snapshots and structure should render story 'ClickableLink' 1`] = `
54
- <a
55
- className="lumx-thumbnail lumx-thumbnail--size-xxl lumx-thumbnail--theme-light lumx-thumbnail--is-clickable"
56
- href="https://google.fr"
57
- >
58
- <div
59
- className="lumx-thumbnail__background"
60
- style={
61
- Object {
62
- "display": undefined,
63
- "visibility": "hidden",
64
- }
65
- }
66
- >
67
- <img
68
- alt="Click me"
69
- className="lumx-thumbnail__image"
70
- loading="lazy"
71
- src="/demo-assets/landscape1.jpg"
72
- style={Object {}}
73
- />
74
- </div>
75
- </a>
28
+ </div>
76
29
  `;
77
30
 
78
31
  exports[`<Thumbnail> Snapshots and structure should render story 'CustomFallback' 1`] = `
@@ -6,12 +6,11 @@ import { UserBlock } from './UserBlock';
6
6
 
7
7
  export default { title: 'LumX components/user-block/UserBlock' };
8
8
 
9
- export const Sizes = ({ theme }: any) => {
9
+ export const Sizes = () => {
10
10
  const logAction = (action: string) => () => console.log(action);
11
11
  return [Size.s, Size.m, Size.l].map((size: any) => (
12
12
  <div className="demo-grid" key={size}>
13
13
  <UserBlock
14
- theme={theme}
15
14
  name="Emmitt O. Lum"
16
15
  fields={['Creative developer', 'Denpasar']}
17
16
  avatarProps={{ image: avatarImageKnob(), alt: 'Avatar' }}
@@ -24,34 +23,11 @@ export const Sizes = ({ theme }: any) => {
24
23
  ));
25
24
  };
26
25
 
27
- export const WithLinks = ({ theme }: any) => {
28
- const logAction = (action: string) => () => console.log(action);
29
- return [Size.s, Size.m, Size.l].map((size: any) => (
30
- <div className="demo-grid" key={size}>
31
- <UserBlock
32
- theme={theme}
33
- name="Emmitt O. Lum"
34
- linkProps={{
35
- href: 'https://www.lumapps.com',
36
- target: '_blank',
37
- }}
38
- fields={['Creative developer', 'Denpasar']}
39
- avatarProps={{ image: avatarImageKnob(), alt: 'Avatar' }}
40
- size={size}
41
- onMouseEnter={logAction('Mouse entered')}
42
- onMouseLeave={logAction('Mouse left')}
43
- onClick={logAction('UserBlock clicked')}
44
- />
45
- </div>
46
- ));
47
- };
48
-
49
- export const WithBadge = ({ theme }: any) => {
26
+ export const WithBadge = () => {
50
27
  const logAction = (action: string) => () => console.log(action);
51
28
  return (
52
29
  <div className="demo-grid">
53
30
  <UserBlock
54
- theme={theme}
55
31
  name="Emmitt O. Lum"
56
32
  fields={['Creative developer', 'Denpasar']}
57
33
  avatarProps={{
@@ -66,19 +42,19 @@ export const WithBadge = ({ theme }: any) => {
66
42
  size={Size.m}
67
43
  onMouseEnter={logAction('Mouse entered')}
68
44
  onMouseLeave={logAction('Mouse left')}
45
+ onClick={logAction('UserBlock clicked')}
69
46
  />
70
47
  </div>
71
48
  );
72
49
  };
73
50
 
74
- export const InList = ({ theme }: any) => {
51
+ export const InList = () => {
75
52
  const logAction = (action: string) => () => console.log(action);
76
53
  return (
77
54
  <div className="demo-grid">
78
55
  <List itemPadding={Size.big}>
79
56
  <ListItem className="lumx-color-background-dark-L6" size={Size.big}>
80
57
  <UserBlock
81
- theme={theme}
82
58
  name="Emmitt O. Lum"
83
59
  fields={['Creative developer', 'Denpasar']}
84
60
  avatarProps={{
@@ -98,7 +74,6 @@ export const InList = ({ theme }: any) => {
98
74
  </ListItem>
99
75
  <ListItem className="lumx-color-background-dark-L6" size={Size.big}>
100
76
  <UserBlock
101
- theme={theme}
102
77
  name="Emmitt O. Lum"
103
78
  fields={['Creative developer', 'Denpasar']}
104
79
  avatarProps={{
@@ -118,7 +93,6 @@ export const InList = ({ theme }: any) => {
118
93
  </ListItem>
119
94
  <ListItem className="lumx-color-background-dark-L6" size={Size.big}>
120
95
  <UserBlock
121
- theme={theme}
122
96
  name="Emmitt O. Lum"
123
97
  fields={['Creative developer', 'Denpasar']}
124
98
  avatarProps={{
@@ -5,8 +5,6 @@ import classNames from 'classnames';
5
5
  import { Avatar, Orientation, Size, Theme } from '@lumx/react';
6
6
 
7
7
  import { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';
8
- import { isEmpty } from 'lodash';
9
- import { renderLink } from '@lumx/react/utils/renderLink';
10
8
  import { AvatarProps } from '../avatar/Avatar';
11
9
 
12
10
  /**
@@ -20,10 +18,6 @@ export type UserBlockSize = Extract<Size, 's' | 'm' | 'l'>;
20
18
  export interface UserBlockProps extends GenericProps {
21
19
  /** Props to pass to the avatar. */
22
20
  avatarProps?: AvatarProps;
23
- /** Props to pass to the link wrapping the avatar thumbnail. */
24
- linkProps?: React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>;
25
- /** Custom react component for the link (can be used to inject react router Link). */
26
- linkAs?: 'a' | any;
27
21
  /** Simple action toolbar content. */
28
22
  simpleAction?: ReactNode;
29
23
  /** Multiple action toolbar content. */
@@ -86,8 +80,6 @@ export const UserBlock: Comp<UserBlockProps, HTMLDivElement> = forwardRef((props
86
80
  simpleAction,
87
81
  size,
88
82
  theme,
89
- linkProps,
90
- linkAs,
91
83
  ...forwardedProps
92
84
  } = props;
93
85
  let componentSize = size;
@@ -99,29 +91,12 @@ export const UserBlock: Comp<UserBlockProps, HTMLDivElement> = forwardRef((props
99
91
 
100
92
  const shouldDisplayActions: boolean = orientation === Orientation.vertical;
101
93
 
102
- const isLink = Boolean(linkProps?.href || linkAs);
103
- const isClickable = !!onClick || isLink;
104
-
105
- const nameBlock: ReactNode = React.useMemo(() => {
106
- if (isEmpty(name)) {
107
- return null;
108
- }
109
- const nameClassName = classNames(
110
- handleBasicClasses({ prefix: `${CLASSNAME}__name`, isClickable }),
111
- isLink && linkProps?.className,
112
- );
113
- if (isLink) {
114
- return renderLink({ ...linkProps, linkAs, className: nameClassName }, name);
115
- }
116
- if (onClick) {
117
- return (
118
- <button onClick={onClick} type="button" className={nameClassName}>
119
- {name}
120
- </button>
121
- );
122
- }
123
- return <span className={nameClassName}>{name}</span>;
124
- }, [isClickable, isLink, linkAs, linkProps, name, onClick]);
94
+ const nameBlock: ReactNode = name && (
95
+ // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-noninteractive-tabindex,jsx-a11y/no-static-element-interactions
96
+ <span className={`${CLASSNAME}__name`} onClick={onClick} tabIndex={onClick ? 0 : -1}>
97
+ {name}
98
+ </span>
99
+ );
125
100
 
126
101
  const fieldsBlock: ReactNode = fields && componentSize !== Size.s && (
127
102
  <div className={`${CLASSNAME}__fields`}>
@@ -139,21 +114,21 @@ export const UserBlock: Comp<UserBlockProps, HTMLDivElement> = forwardRef((props
139
114
  {...forwardedProps}
140
115
  className={classNames(
141
116
  className,
142
- handleBasicClasses({ prefix: CLASSNAME, orientation, size: componentSize, theme, isClickable }),
117
+ handleBasicClasses({ prefix: CLASSNAME, orientation, size: componentSize, theme }),
143
118
  )}
144
119
  onMouseLeave={onMouseLeave}
145
120
  onMouseEnter={onMouseEnter}
146
121
  >
147
122
  {avatarProps && (
148
- <Avatar
149
- linkAs={linkAs}
150
- linkProps={linkProps}
151
- {...avatarProps}
152
- className={classNames(`${CLASSNAME}__avatar`, avatarProps.className)}
153
- size={componentSize}
154
- onClick={onClick}
155
- theme={theme}
156
- />
123
+ <div className={`${CLASSNAME}__avatar`}>
124
+ <Avatar
125
+ {...avatarProps}
126
+ size={componentSize}
127
+ onClick={onClick}
128
+ tabIndex={onClick ? 0 : -1}
129
+ theme={theme}
130
+ />
131
+ </div>
157
132
  )}
158
133
  {(fields || name) && (
159
134
  <div className={`${CLASSNAME}__wrapper`}>