Skip to content

Commit 1ca602f

Browse files
authored
Merge pull request #505 from AppFlowy-IO/fix_0.0.4_bugs_2
Fix some UI bugs
2 parents ef0d59f + 8c7b0bd commit 1ca602f

File tree

33 files changed

+755
-528
lines changed

33 files changed

+755
-528
lines changed

frontend/app_flowy/assets/translations/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@
168168
"dateFormatLocal": "Month/Month/Day",
169169
"dateFormatUS": "Month/Month/Day",
170170
"timeFormat": " Time format",
171+
"invalidTimeFormat": "Invalid format",
171172
"timeFormatTwelveHour": "12 hour",
172173
"timeFormatTwentyFourHour": "24 hour",
173174
"addSelectOption": "Add an option",

frontend/app_flowy/lib/workspace/application/grid/cell/date_cal_bloc.dart

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
import 'package:app_flowy/generated/locale_keys.g.dart';
12
import 'package:app_flowy/workspace/application/grid/field/field_service.dart';
3+
import 'package:easy_localization/easy_localization.dart' show StringTranslateExtension;
24
import 'package:flowy_sdk/log.dart';
35
import 'package:flowy_sdk/protobuf/flowy-error-code/code.pb.dart';
6+
import 'package:flowy_sdk/protobuf/flowy-error/errors.pb.dart';
47
import 'package:flowy_sdk/protobuf/flowy-grid/date_type_option.pb.dart';
58
import 'package:flutter_bloc/flutter_bloc.dart';
69
import 'package:freezed_annotation/freezed_annotation.dart';
@@ -91,7 +94,7 @@ class DateCalBloc extends Bloc<DateCalEvent, DateCalState> {
9194
case ErrorCode.InvalidDateTimeFormat:
9295
emit(state.copyWith(
9396
dateData: Some(newDateData),
94-
timeFormatError: Some(err.toString()),
97+
timeFormatError: Some(timeFormatPrompt(err)),
9598
));
9699
break;
97100
default:
@@ -101,6 +104,21 @@ class DateCalBloc extends Bloc<DateCalEvent, DateCalState> {
101104
);
102105
}
103106

107+
String timeFormatPrompt(FlowyError error) {
108+
String msg = LocaleKeys.grid_field_invalidTimeFormat.tr() + ". ";
109+
switch (state.dateTypeOption.timeFormat) {
110+
case TimeFormat.TwelveHour:
111+
msg = msg + "e.g. 01: 00 AM";
112+
break;
113+
case TimeFormat.TwentyFourHour:
114+
msg = msg + "e.g. 13: 00";
115+
break;
116+
default:
117+
break;
118+
}
119+
return msg;
120+
}
121+
104122
@override
105123
Future<void> close() async {
106124
if (_onCellChangedFn != null) {

frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/cell_builder.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,11 @@ class BlankCell extends StatelessWidget {
4747
}
4848
}
4949

50-
abstract class GridCellWidget extends HoverWidget {
50+
abstract class GridCellWidget implements FlowyHoverWidget {
5151
@override
5252
final ValueNotifier<bool> onFocus = ValueNotifier<bool>(false);
5353

5454
final GridCellRequestFocusNotifier requestFocus = GridCellRequestFocusNotifier();
55-
56-
GridCellWidget({Key? key}) : super(key: key);
5755
}
5856

5957
class GridCellRequestFocusNotifier extends ChangeNotifier {

frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/checkbox_cell.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import 'package:flutter/widgets.dart';
66
import 'package:flutter_bloc/flutter_bloc.dart';
77
import 'cell_builder.dart';
88

9-
class CheckboxCell extends GridCellWidget {
9+
class CheckboxCell extends StatefulWidget with GridCellWidget {
1010
final GridCellContextBuilder cellContextBuilder;
1111
CheckboxCell({
1212
required this.cellContextBuilder,
@@ -41,7 +41,7 @@ class _CheckboxCellState extends State<CheckboxCell> {
4141
onPressed: () => context.read<CheckboxCellBloc>().add(const CheckboxCellEvent.select()),
4242
iconPadding: EdgeInsets.zero,
4343
icon: icon,
44-
width: 23,
44+
width: 20,
4545
),
4646
);
4747
},

frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/date_cell/date_cell.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ abstract class GridCellDelegate {
1818
GridCellDelegate get delegate;
1919
}
2020

21-
class DateCell extends GridCellWidget {
21+
class DateCell extends StatefulWidget with GridCellWidget {
2222
final GridCellContextBuilder cellContextBuilder;
2323
late final DateCellStyle? cellStyle;
2424

frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/number_cell.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
77

88
import 'cell_builder.dart';
99

10-
class NumberCell extends GridCellWidget {
10+
class NumberCell extends StatefulWidget with GridCellWidget {
1111
final GridCellContextBuilder cellContextBuilder;
1212

1313
NumberCell({

frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/select_option_cell/extension.dart

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ class SelectOptionTag extends StatelessWidget {
8787
Widget build(BuildContext context) {
8888
return ChoiceChip(
8989
pressElevation: 1,
90-
label: FlowyText.medium(name, fontSize: 12),
90+
label: FlowyText.medium(name, fontSize: 12, overflow: TextOverflow.ellipsis),
9191
selectedColor: color,
9292
backgroundColor: color,
9393
labelPadding: const EdgeInsets.symmetric(horizontal: 6),
@@ -130,11 +130,18 @@ class SelectOptionTagCell extends StatelessWidget {
130130
child: InkWell(
131131
child: Padding(
132132
padding: const EdgeInsets.symmetric(horizontal: 3),
133-
child: Row(children: [
134-
SelectOptionTag.fromSelectOption(context: context, option: option),
135-
const Spacer(),
136-
...children,
137-
]),
133+
child: Row(
134+
mainAxisAlignment: MainAxisAlignment.spaceBetween,
135+
children: [
136+
Flexible(
137+
fit: FlexFit.loose,
138+
flex: 2,
139+
child: SelectOptionTag.fromSelectOption(context: context, option: option),
140+
),
141+
const Spacer(),
142+
...children,
143+
],
144+
),
138145
),
139146
onTap: () => onSelected(option),
140147
),

frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/select_option_cell/select_option_cell.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class SelectOptionCellStyle extends GridCellStyle {
2020
});
2121
}
2222

23-
class SingleSelectCell extends GridCellWidget {
23+
class SingleSelectCell extends StatefulWidget with GridCellWidget {
2424
final GridCellContextBuilder cellContextBuilder;
2525
late final SelectOptionCellStyle? cellStyle;
2626

@@ -74,7 +74,7 @@ class _SingleSelectCellState extends State<SingleSelectCell> {
7474
}
7575

7676
//----------------------------------------------------------------
77-
class MultiSelectCell extends GridCellWidget {
77+
class MultiSelectCell extends StatefulWidget with GridCellWidget {
7878
final GridCellContextBuilder cellContextBuilder;
7979
late final SelectOptionCellStyle? cellStyle;
8080

@@ -160,7 +160,7 @@ class _SelectOptionCell extends StatelessWidget {
160160
.toList();
161161
child = Align(
162162
alignment: Alignment.centerLeft,
163-
child: Wrap(children: tags, spacing: 4, runSpacing: 4),
163+
child: Wrap(children: tags, spacing: 4, runSpacing: 2),
164164
);
165165
}
166166

frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/select_option_cell/select_option_editor.dart

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,18 @@ class _SelectOptionCell extends StatelessWidget {
225225
height: GridSize.typeOptionItemHeight,
226226
child: Row(
227227
children: [
228-
Expanded(child: _body(theme, context)),
228+
Flexible(
229+
fit: FlexFit.loose,
230+
child: SelectOptionTagCell(
231+
option: option,
232+
onSelected: (option) {
233+
context.read<SelectOptionCellEditorBloc>().add(SelectOptionEditorEvent.selectOption(option.id));
234+
},
235+
children: [
236+
if (isSelected) svgWidget("grid/checkmark"),
237+
],
238+
),
239+
),
229240
FlowyIconButton(
230241
width: 30,
231242
onPressed: () => _showEditPannel(context),
@@ -237,18 +248,6 @@ class _SelectOptionCell extends StatelessWidget {
237248
);
238249
}
239250

240-
Widget _body(AppTheme theme, BuildContext context) {
241-
return SelectOptionTagCell(
242-
option: option,
243-
onSelected: (option) {
244-
context.read<SelectOptionCellEditorBloc>().add(SelectOptionEditorEvent.selectOption(option.id));
245-
},
246-
children: [
247-
if (isSelected) svgWidget("grid/checkmark"),
248-
],
249-
);
250-
}
251-
252251
void _showEditPannel(BuildContext context) {
253252
final pannel = SelectOptionTypeOptionEditor(
254253
option: option,

frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/text_cell.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class GridTextCellStyle extends GridCellStyle {
1313
});
1414
}
1515

16-
class GridTextCell extends GridCellWidget {
16+
class GridTextCell extends StatefulWidget with GridCellWidget {
1717
final GridCellContextBuilder cellContextBuilder;
1818
late final GridTextCellStyle? cellStyle;
1919
GridTextCell({

0 commit comments

Comments
 (0)