mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2025-11-21 04:48:13 +00:00
fix: board ui bugs (#6194)
* fix: date reminder indicator on board/calendar cards * fix: stop restricting max lines of card title to two lines * fix: don't allow multiline row titles * fix: oops
This commit is contained in:
parent
0fd0483302
commit
1c6e709c82
@ -1,7 +1,9 @@
|
|||||||
|
import 'package:appflowy/generated/flowy_svgs.g.dart';
|
||||||
import 'package:appflowy/plugins/database/application/cell/cell_controller.dart';
|
import 'package:appflowy/plugins/database/application/cell/cell_controller.dart';
|
||||||
import 'package:appflowy/plugins/database/application/cell/cell_controller_builder.dart';
|
import 'package:appflowy/plugins/database/application/cell/cell_controller_builder.dart';
|
||||||
import 'package:appflowy/plugins/database/application/database_controller.dart';
|
import 'package:appflowy/plugins/database/application/database_controller.dart';
|
||||||
import 'package:appflowy/plugins/database/application/cell/bloc/date_cell_bloc.dart';
|
import 'package:appflowy/plugins/database/application/cell/bloc/date_cell_bloc.dart';
|
||||||
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
@ -44,7 +46,9 @@ class _DateCellState extends State<DateCardCell> {
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
child: BlocBuilder<DateCellBloc, DateCellState>(
|
child: BlocBuilder<DateCellBloc, DateCellState>(
|
||||||
buildWhen: (previous, current) => previous.dateStr != current.dateStr,
|
buildWhen: (previous, current) =>
|
||||||
|
previous.dateStr != current.dateStr ||
|
||||||
|
previous.data != current.data,
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
if (state.dateStr.isEmpty) {
|
if (state.dateStr.isEmpty) {
|
||||||
return const SizedBox.shrink();
|
return const SizedBox.shrink();
|
||||||
@ -53,9 +57,20 @@ class _DateCellState extends State<DateCardCell> {
|
|||||||
return Container(
|
return Container(
|
||||||
alignment: Alignment.centerLeft,
|
alignment: Alignment.centerLeft,
|
||||||
padding: widget.style.padding,
|
padding: widget.style.padding,
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Flexible(
|
||||||
child: Text(
|
child: Text(
|
||||||
state.dateStr,
|
state.dateStr,
|
||||||
style: widget.style.textStyle,
|
style: widget.style.textStyle,
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
if (state.data?.reminderId.isNotEmpty ?? false) ...[
|
||||||
|
const HSpace(4),
|
||||||
|
const FlowySvg(FlowySvgs.clock_alarm_s),
|
||||||
|
],
|
||||||
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
|
||||||
@ -12,7 +13,6 @@ import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
|||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
import '../editable_cell_builder.dart';
|
import '../editable_cell_builder.dart';
|
||||||
|
|
||||||
import 'card_cell.dart';
|
import 'card_cell.dart';
|
||||||
|
|
||||||
class TextCardCellStyle extends CardCellStyle {
|
class TextCardCellStyle extends CardCellStyle {
|
||||||
@ -209,12 +209,15 @@ class _TextCellState extends State<TextCardCell> {
|
|||||||
bindings: {
|
bindings: {
|
||||||
const SingleActivator(LogicalKeyboardKey.escape): () =>
|
const SingleActivator(LogicalKeyboardKey.escape): () =>
|
||||||
focusNode.unfocus(),
|
focusNode.unfocus(),
|
||||||
|
const SimpleActivator(LogicalKeyboardKey.enter): () =>
|
||||||
|
focusNode.unfocus(),
|
||||||
},
|
},
|
||||||
child: TextField(
|
child: TextField(
|
||||||
controller: _textEditingController,
|
controller: _textEditingController,
|
||||||
focusNode: focusNode,
|
focusNode: focusNode,
|
||||||
onEditingComplete: () => focusNode.unfocus(),
|
onEditingComplete: () => focusNode.unfocus(),
|
||||||
maxLines: isEditing ? null : 2,
|
onSubmitted: (_) => focusNode.unfocus(),
|
||||||
|
maxLines: null,
|
||||||
minLines: 1,
|
minLines: 1,
|
||||||
textInputAction: TextInputAction.done,
|
textInputAction: TextInputAction.done,
|
||||||
readOnly: !isEditing,
|
readOnly: !isEditing,
|
||||||
@ -240,3 +243,27 @@ class _TextCellState extends State<TextCardCell> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class SimpleActivator with Diagnosticable implements ShortcutActivator {
|
||||||
|
const SimpleActivator(
|
||||||
|
this.trigger, {
|
||||||
|
this.includeRepeats = true,
|
||||||
|
});
|
||||||
|
|
||||||
|
final LogicalKeyboardKey trigger;
|
||||||
|
final bool includeRepeats;
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool accepts(KeyEvent event, HardwareKeyboard state) {
|
||||||
|
return (event is KeyDownEvent ||
|
||||||
|
(includeRepeats && event is KeyRepeatEvent)) &&
|
||||||
|
trigger == event.logicalKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
String debugDescribeKeys() =>
|
||||||
|
kDebugMode ? trigger.debugName ?? trigger.toStringShort() : '';
|
||||||
|
|
||||||
|
@override
|
||||||
|
Iterable<LogicalKeyboardKey>? get triggers => <LogicalKeyboardKey>[trigger];
|
||||||
|
}
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
|
|
||||||
import 'package:appflowy/generated/flowy_svgs.g.dart';
|
import 'package:appflowy/generated/flowy_svgs.g.dart';
|
||||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
@ -7,6 +9,7 @@ import 'package:appflowy/plugins/database/application/cell/cell_controller.dart'
|
|||||||
import 'package:appflowy/plugins/database/application/database_controller.dart';
|
import 'package:appflowy/plugins/database/application/database_controller.dart';
|
||||||
import 'package:appflowy/plugins/database/application/row/row_banner_bloc.dart';
|
import 'package:appflowy/plugins/database/application/row/row_banner_bloc.dart';
|
||||||
import 'package:appflowy/plugins/database/application/row/row_controller.dart';
|
import 'package:appflowy/plugins/database/application/row/row_controller.dart';
|
||||||
|
import 'package:appflowy/plugins/database/widgets/cell/card_cell_skeleton/text_card_cell.dart';
|
||||||
import 'package:appflowy/plugins/database/widgets/cell/editable_cell_builder.dart';
|
import 'package:appflowy/plugins/database/widgets/cell/editable_cell_builder.dart';
|
||||||
import 'package:appflowy/plugins/database/widgets/cell/editable_cell_skeleton/text.dart';
|
import 'package:appflowy/plugins/database/widgets/cell/editable_cell_skeleton/text.dart';
|
||||||
import 'package:appflowy/plugins/database/widgets/row/cells/cell_container.dart';
|
import 'package:appflowy/plugins/database/widgets/row/cells/cell_container.dart';
|
||||||
@ -14,7 +17,6 @@ import 'package:appflowy/plugins/database/widgets/row/row_action.dart';
|
|||||||
import 'package:appflowy/workspace/presentation/settings/widgets/emoji_picker/emoji_picker.dart';
|
import 'package:appflowy/workspace/presentation/settings/widgets/emoji_picker/emoji_picker.dart';
|
||||||
import 'package:appflowy_popover/appflowy_popover.dart';
|
import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
const _kBannerActionHeight = 40.0;
|
const _kBannerActionHeight = 40.0;
|
||||||
@ -287,11 +289,19 @@ class _TitleSkin extends IEditableTextCellSkin {
|
|||||||
FocusNode focusNode,
|
FocusNode focusNode,
|
||||||
TextEditingController textEditingController,
|
TextEditingController textEditingController,
|
||||||
) {
|
) {
|
||||||
return TextField(
|
return CallbackShortcuts(
|
||||||
|
bindings: {
|
||||||
|
const SingleActivator(LogicalKeyboardKey.escape): () =>
|
||||||
|
focusNode.unfocus(),
|
||||||
|
const SimpleActivator(LogicalKeyboardKey.enter): () =>
|
||||||
|
focusNode.unfocus(),
|
||||||
|
},
|
||||||
|
child: TextField(
|
||||||
controller: textEditingController,
|
controller: textEditingController,
|
||||||
focusNode: focusNode,
|
focusNode: focusNode,
|
||||||
autofocus: true,
|
autofocus: true,
|
||||||
style: Theme.of(context).textTheme.bodyMedium?.copyWith(fontSize: 28),
|
style: Theme.of(context).textTheme.bodyMedium?.copyWith(fontSize: 28),
|
||||||
|
maxLines: null,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
contentPadding: EdgeInsets.zero,
|
contentPadding: EdgeInsets.zero,
|
||||||
border: InputBorder.none,
|
border: InputBorder.none,
|
||||||
@ -308,6 +318,7 @@ class _TitleSkin extends IEditableTextCellSkin {
|
|||||||
bloc.add(TextCellEvent.updateText(text));
|
bloc.add(TextCellEvent.updateText(text));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user