@linktr.ee/messaging-react 4.3.1 → 4.3.2-rc-1787593676

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@linktr.ee/messaging-react",
3
- "version": "4.3.1",
3
+ "version": "4.3.2-rc-1787593676",
4
4
  "description": "React messaging components built on messaging-core for web applications",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -50,8 +50,8 @@
50
50
  "chromatic:local": "yarn storybook:build && chromatic"
51
51
  },
52
52
  "dependencies": {
53
- "@linktr.ee/messaging-core": "^2.5.0",
54
- "@linktr.ee/messaging-taxonomy": "^0.11.0",
53
+ "@linktr.ee/messaging-core": "2.6.0-rc-1787593676",
54
+ "@linktr.ee/messaging-taxonomy": "0.11.0-rc-1787593676",
55
55
  "@phosphor-icons/react": "^2.1.10"
56
56
  },
57
57
  "devDependencies": {
@@ -47,6 +47,34 @@ describe('MediaStackGrid', () => {
47
47
  })
48
48
  })
49
49
 
50
+ it.each([
51
+ [2, '+3', 'tile 2'],
52
+ [3, '+2', 'tile 3'],
53
+ ])(
54
+ 'shows overflow on the last visible tile when maxVisible is %s',
55
+ (maxVisible, badge, lastTile) => {
56
+ const { container } = renderWithProviders(
57
+ <MediaStackGrid tiles={tiles(5)} maxVisible={maxVisible} />
58
+ )
59
+ expect(container.querySelectorAll('span')).toHaveLength(maxVisible)
60
+ expect(screen.getByText(badge)).toBeInTheDocument()
61
+ expect(screen.getByText(badge).parentElement).toHaveTextContent(lastTile)
62
+ }
63
+ )
64
+
65
+ it('shows overflow on the single visible tile', () => {
66
+ const { container } = renderWithProviders(
67
+ <MediaStackGrid tiles={tiles(3)} maxVisible={1} />
68
+ )
69
+ expect(container.querySelectorAll('span')).toHaveLength(1)
70
+ expect(screen.getByText('+2').parentElement).toHaveTextContent('tile 1')
71
+ })
72
+
73
+ it('does not show overflow when all tiles are visible', () => {
74
+ renderWithProviders(<MediaStackGrid tiles={tiles(3)} maxVisible={3} />)
75
+ expect(screen.queryByText(/^\+/)).toBeNull()
76
+ })
77
+
50
78
  it('renders activatable buttons with labels and indexes', () => {
51
79
  const onActivate = vi.fn()
52
80
  renderWithProviders(
@@ -118,6 +118,12 @@ const MediaStackGrid: React.FC<MediaStackGridProps> = ({
118
118
 
119
119
  const visible = tiles.slice(0, Math.min(total, maxVisible))
120
120
  const overflow = total - visible.length
121
+ const overflowBadge =
122
+ overflow > 0 ? (
123
+ <div className="absolute inset-0 flex items-center justify-center bg-black/55 text-2xl font-semibold text-white">
124
+ +{overflow}
125
+ </div>
126
+ ) : null
121
127
 
122
128
  const renderTile = (
123
129
  tile: MediaStackTile,
@@ -174,7 +180,7 @@ const MediaStackGrid: React.FC<MediaStackGridProps> = ({
174
180
  )}
175
181
  style={singleTileStyle}
176
182
  >
177
- {renderTile(visible[0], 0)}
183
+ {renderTile(visible[0], 0, overflowBadge)}
178
184
  </div>
179
185
  )
180
186
  }
@@ -187,7 +193,13 @@ const MediaStackGrid: React.FC<MediaStackGridProps> = ({
187
193
  className
188
194
  )}
189
195
  >
190
- {visible.map((tile, index) => renderTile(tile, index))}
196
+ {visible.map((tile, index) =>
197
+ renderTile(
198
+ tile,
199
+ index,
200
+ index === visible.length - 1 ? overflowBadge : null
201
+ )
202
+ )}
191
203
  </div>
192
204
  )
193
205
  }
@@ -202,7 +214,7 @@ const MediaStackGrid: React.FC<MediaStackGridProps> = ({
202
214
  >
203
215
  <div className="row-span-2">{renderTile(visible[0], 0)}</div>
204
216
  {renderTile(visible[1], 1)}
205
- {renderTile(visible[2], 2)}
217
+ {renderTile(visible[2], 2, overflowBadge)}
206
218
  </div>
207
219
  )
208
220
  }
@@ -227,11 +239,7 @@ const MediaStackGrid: React.FC<MediaStackGridProps> = ({
227
239
  return renderTile(
228
240
  tile,
229
241
  index,
230
- isLastWithOverflow ? (
231
- <div className="absolute inset-0 flex items-center justify-center bg-black/55 text-2xl font-semibold text-white">
232
- +{overflow}
233
- </div>
234
- ) : null
242
+ isLastWithOverflow ? overflowBadge : null
235
243
  )
236
244
  })}
237
245
  </div>