@@ -222,6 +222,16 @@ class ReactionButtons extends StatelessWidget {
222
222
: zulipLocalizations.errorReactionAddingFailedTitle);
223
223
}
224
224
225
+ void _handleTapMore () {
226
+ // TODO(design): have emoji picker slide in from right and push
227
+ // action sheet off to the left
228
+
229
+ // Dismiss current action sheet before opening emoji picker sheet.
230
+ Navigator .of (pageContext).pop ();
231
+
232
+ showEmojiPickerSheet (pageContext: pageContext, message: message);
233
+ }
234
+
225
235
Widget _buildButton ({
226
236
required BuildContext context,
227
237
required EmojiCandidate emoji,
@@ -257,6 +267,7 @@ class ReactionButtons extends StatelessWidget {
257
267
assert (EmojiStore .popularEmojiCandidates.every (
258
268
(emoji) => emoji.emojiType == ReactionType .unicodeEmoji));
259
269
270
+ final zulipLocalizations = ZulipLocalizations .of (context);
260
271
final store = PerAccountStoreWidget .of (pageContext);
261
272
final designVariables = DesignVariables .of (context);
262
273
@@ -271,13 +282,38 @@ class ReactionButtons extends StatelessWidget {
271
282
return Container (
272
283
decoration: BoxDecoration (
273
284
color: designVariables.contextMenuItemBg.withFadedAlpha (0.12 )),
274
- child: Row (spacing: 1 , children: List .unmodifiable (
275
- EmojiStore .popularEmojiCandidates.mapIndexed ((index, emoji) =>
276
- _buildButton (
277
- context: context,
278
- emoji: emoji,
279
- isSelfVoted: hasSelfVote (emoji),
280
- isFirst: index == 0 )))));
285
+ child: Row (children: [
286
+ Flexible (child: Row (spacing: 1 , children: List .unmodifiable (
287
+ EmojiStore .popularEmojiCandidates.mapIndexed ((index, emoji) =>
288
+ _buildButton (
289
+ context: context,
290
+ emoji: emoji,
291
+ isSelfVoted: hasSelfVote (emoji),
292
+ isFirst: index == 0 ))))),
293
+ InkWell (
294
+ onTap: _handleTapMore,
295
+ splashFactory: NoSplash .splashFactory,
296
+ borderRadius: const BorderRadius .only (topRight: Radius .circular (7 )),
297
+ overlayColor: WidgetStateColor .resolveWith ((states) =>
298
+ states.any ((e) => e == WidgetState .pressed)
299
+ ? designVariables.contextMenuItemBg.withFadedAlpha (0.20 )
300
+ : Colors .transparent),
301
+ child: Padding (
302
+ padding: const EdgeInsetsDirectional .fromSTEB (12 , 12 , 4 , 12 ),
303
+ child: Row (children: [
304
+ Text (zulipLocalizations.emojiReactionsMore,
305
+ textAlign: TextAlign .end,
306
+ style: TextStyle (
307
+ color: designVariables.contextMenuItemText,
308
+ fontSize: 14 ,
309
+ ).merge (weightVariableTextStyle (context, wght: 600 ))),
310
+ Icon (ZulipIcons .chevron_right,
311
+ color: designVariables.contextMenuItemText,
312
+ size: 24 ),
313
+ ]),
314
+ )),
315
+ ]),
316
+ );
281
317
}
282
318
}
283
319
0 commit comments