Skip to content

Commit 5f51773

Browse files
committed
chore: update _OptionList cell UI
1 parent 4840d23 commit 5f51773

File tree

3 files changed

+57
-28
lines changed

3 files changed

+57
-28
lines changed

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

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
import 'package:flowy_infra/image.dart';
12
import 'package:flowy_infra/theme.dart';
3+
import 'package:flowy_infra_ui/style_widget/hover.dart';
24
import 'package:flowy_infra_ui/style_widget/text.dart';
5+
import 'package:flowy_infra_ui/widget/spacing.dart';
36
import 'package:flowy_sdk/protobuf/flowy-grid/selection_type_option.pb.dart';
47
import 'package:flutter/material.dart';
58
import 'package:easy_localization/easy_localization.dart';
@@ -106,3 +109,39 @@ class SelectOptionTag extends StatelessWidget {
106109
// );
107110
}
108111
}
112+
113+
class SelectOptionTagCell extends StatelessWidget {
114+
final List<Widget> children;
115+
final void Function(SelectOption) onSelected;
116+
final SelectOption option;
117+
const SelectOptionTagCell({
118+
required this.option,
119+
required this.onSelected,
120+
this.children = const [],
121+
Key? key,
122+
}) : super(key: key);
123+
124+
@override
125+
Widget build(BuildContext context) {
126+
final theme = context.watch<AppTheme>();
127+
return Stack(
128+
fit: StackFit.expand,
129+
children: [
130+
FlowyHover(
131+
style: HoverStyle(hoverColor: theme.hover),
132+
child: InkWell(
133+
child: Padding(
134+
padding: const EdgeInsets.symmetric(horizontal: 3),
135+
child: Row(children: [
136+
SelectOptionTag.fromSelectOption(context: context, option: option),
137+
const Spacer(),
138+
...children,
139+
]),
140+
),
141+
onTap: () => onSelected(option),
142+
),
143+
),
144+
],
145+
);
146+
}
147+
}

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

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -239,30 +239,13 @@ class _SelectOptionCell extends StatelessWidget {
239239
}
240240

241241
Widget _body(AppTheme theme, BuildContext context) {
242-
return Stack(
243-
fit: StackFit.expand,
242+
return SelectOptionTagCell(
243+
option: option,
244+
onSelected: (option) {
245+
context.read<SelectOptionCellEditorBloc>().add(SelectOptionEditorEvent.selectOption(option.id));
246+
},
244247
children: [
245-
FlowyHover(
246-
style: HoverStyle(hoverColor: theme.hover),
247-
builder: (_, onHover) {
248-
return InkWell(
249-
child: Row(children: [
250-
const HSpace(6),
251-
SelectOptionTag(
252-
name: option.name,
253-
color: option.color.make(context),
254-
isSelected: isSelected,
255-
),
256-
const Spacer(),
257-
if (isSelected) svgWidget("grid/checkmark"),
258-
const HSpace(6),
259-
]),
260-
onTap: () {
261-
context.read<SelectOptionCellEditorBloc>().add(SelectOptionEditorEvent.selectOption(option.id));
262-
},
263-
);
264-
},
265-
),
248+
if (isSelected) svgWidget("grid/checkmark"),
266249
],
267250
);
268251
}

frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/header/type_option/select_option.dart

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import 'package:app_flowy/workspace/application/grid/field/type_option/select_option_type_option_bloc.dart';
22
import 'package:app_flowy/workspace/presentation/plugins/grid/src/layout/sizes.dart';
3+
import 'package:app_flowy/workspace/presentation/plugins/grid/src/widgets/cell/select_option_cell/extension.dart';
34
import 'package:app_flowy/workspace/presentation/plugins/grid/src/widgets/common/text_field.dart';
45
import 'package:app_flowy/workspace/presentation/plugins/grid/src/widgets/header/field_editor_pannel.dart';
56
import 'package:flowy_infra/image.dart';
67
import 'package:flowy_infra/theme.dart';
78
import 'package:flowy_infra_ui/style_widget/button.dart';
9+
import 'package:flowy_infra_ui/style_widget/hover.dart';
810
import 'package:flowy_infra_ui/style_widget/text.dart';
911
import 'package:flowy_infra_ui/widget/spacing.dart';
1012
import 'package:flowy_sdk/protobuf/flowy-grid/selection_type_option.pb.dart';
@@ -183,13 +185,18 @@ class _OptionCell extends StatelessWidget {
183185
@override
184186
Widget build(BuildContext context) {
185187
final theme = context.watch<AppTheme>();
188+
186189
return SizedBox(
187190
height: GridSize.typeOptionItemHeight,
188-
child: FlowyButton(
189-
text: FlowyText.medium(option.name, fontSize: 12),
190-
hoverColor: theme.hover,
191-
onTap: () => onSelected(option),
192-
rightIcon: svgWidget("grid/details", color: theme.iconColor),
191+
child: SelectOptionTagCell(
192+
option: option,
193+
onSelected: onSelected,
194+
children: [
195+
svgWidget(
196+
"grid/details",
197+
color: theme.iconColor,
198+
),
199+
],
193200
),
194201
);
195202
}

0 commit comments

Comments
 (0)