@@ -444,6 +444,16 @@ class ReactionButtons extends StatelessWidget {
444
444
: zulipLocalizations.errorReactionAddingFailedTitle);
445
445
}
446
446
447
+ void _handleTapMore () {
448
+ // TODO(design): have emoji picker slide in from right and push
449
+ // action sheet off to the left
450
+
451
+ // Dismiss current action sheet before opening emoji picker sheet.
452
+ Navigator .of (pageContext).pop ();
453
+
454
+ showEmojiPickerSheet (pageContext: pageContext, message: message);
455
+ }
456
+
447
457
Widget _buildButton ({
448
458
required BuildContext context,
449
459
required EmojiCandidate emoji,
@@ -479,6 +489,7 @@ class ReactionButtons extends StatelessWidget {
479
489
assert (EmojiStore .popularEmojiCandidates.every (
480
490
(emoji) => emoji.emojiType == ReactionType .unicodeEmoji));
481
491
492
+ final zulipLocalizations = ZulipLocalizations .of (context);
482
493
final store = PerAccountStoreWidget .of (pageContext);
483
494
final designVariables = DesignVariables .of (context);
484
495
@@ -493,13 +504,38 @@ class ReactionButtons extends StatelessWidget {
493
504
return Container (
494
505
decoration: BoxDecoration (
495
506
color: designVariables.contextMenuItemBg.withFadedAlpha (0.12 )),
496
- child: Row (spacing: 1 , children: List .unmodifiable (
497
- EmojiStore .popularEmojiCandidates.mapIndexed ((index, emoji) =>
498
- _buildButton (
499
- context: context,
500
- emoji: emoji,
501
- isSelfVoted: hasSelfVote (emoji),
502
- isFirst: index == 0 )))));
507
+ child: Row (children: [
508
+ Flexible (child: Row (spacing: 1 , children: List .unmodifiable (
509
+ EmojiStore .popularEmojiCandidates.mapIndexed ((index, emoji) =>
510
+ _buildButton (
511
+ context: context,
512
+ emoji: emoji,
513
+ isSelfVoted: hasSelfVote (emoji),
514
+ isFirst: index == 0 ))))),
515
+ InkWell (
516
+ onTap: _handleTapMore,
517
+ splashFactory: NoSplash .splashFactory,
518
+ borderRadius: const BorderRadius .only (topRight: Radius .circular (7 )),
519
+ overlayColor: WidgetStateColor .resolveWith ((states) =>
520
+ states.any ((e) => e == WidgetState .pressed)
521
+ ? designVariables.contextMenuItemBg.withFadedAlpha (0.20 )
522
+ : Colors .transparent),
523
+ child: Padding (
524
+ padding: const EdgeInsetsDirectional .fromSTEB (12 , 12 , 4 , 12 ),
525
+ child: Row (children: [
526
+ Text (zulipLocalizations.emojiReactionsMore,
527
+ textAlign: TextAlign .end,
528
+ style: TextStyle (
529
+ color: designVariables.contextMenuItemText,
530
+ fontSize: 14 ,
531
+ ).merge (weightVariableTextStyle (context, wght: 600 ))),
532
+ Icon (ZulipIcons .chevron_right,
533
+ color: designVariables.contextMenuItemText,
534
+ size: 24 ),
535
+ ]),
536
+ )),
537
+ ]),
538
+ );
503
539
}
504
540
}
505
541
0 commit comments