From 49ac633f532a285458b8f59ff6ac4f2309f564c4 Mon Sep 17 00:00:00 2001 From: Ellet Date: Sat, 9 Dec 2023 15:04:32 +0300 Subject: [PATCH] Add QuillToolbarSelectAlignmentButton --- lib/flutter_quill.dart | 2 +- lib/src/widgets/toolbar/base_toolbar.dart | 2 +- .../alignment/select_alignment_button.dart | 37 +++++++++++++++++++ .../select_alignment_buttons.dart | 8 ++-- .../select_header_style_button.dart | 8 ++-- .../select_header_style_buttons.dart | 16 ++++---- .../buttons/select_alignment_button.dart | 10 ----- lib/src/widgets/toolbar/simple_toolbar.dart | 4 +- 8 files changed, 57 insertions(+), 30 deletions(-) create mode 100644 lib/src/widgets/toolbar/buttons/alignment/select_alignment_button.dart rename lib/src/widgets/toolbar/buttons/{ => alignment}/select_alignment_buttons.dart (85%) rename lib/src/widgets/toolbar/buttons/{ => hearder_style}/select_header_style_button.dart (94%) rename lib/src/widgets/toolbar/buttons/{ => hearder_style}/select_header_style_buttons.dart (94%) delete mode 100644 lib/src/widgets/toolbar/buttons/select_alignment_button.dart diff --git a/lib/flutter_quill.dart b/lib/flutter_quill.dart index 5a32fb71..791a371c 100644 --- a/lib/flutter_quill.dart +++ b/lib/flutter_quill.dart @@ -32,6 +32,6 @@ export 'src/widgets/raw_editor/raw_editor.dart'; export 'src/widgets/raw_editor/raw_editor_state.dart'; export 'src/widgets/style_widgets/style_widgets.dart'; export 'src/widgets/toolbar/base_toolbar.dart'; -export 'src/widgets/toolbar/buttons/select_header_style_button.dart'; +export 'src/widgets/toolbar/buttons/hearder_style/select_header_style_button.dart'; export 'src/widgets/toolbar/simple_toolbar.dart'; export 'src/widgets/utils/provider.dart'; diff --git a/lib/src/widgets/toolbar/base_toolbar.dart b/lib/src/widgets/toolbar/base_toolbar.dart index c849eda7..48085540 100644 --- a/lib/src/widgets/toolbar/base_toolbar.dart +++ b/lib/src/widgets/toolbar/base_toolbar.dart @@ -20,7 +20,7 @@ export 'buttons/link_style2_button.dart'; export 'buttons/link_style_button.dart'; export 'buttons/quill_icon_button.dart'; export 'buttons/search/search_button.dart'; -export 'buttons/select_header_style_buttons.dart'; +export 'buttons/hearder_style/select_header_style_buttons.dart'; export 'buttons/toggle_check_list_button.dart'; export 'buttons/toggle_style_button.dart'; diff --git a/lib/src/widgets/toolbar/buttons/alignment/select_alignment_button.dart b/lib/src/widgets/toolbar/buttons/alignment/select_alignment_button.dart new file mode 100644 index 00000000..6161cb18 --- /dev/null +++ b/lib/src/widgets/toolbar/buttons/alignment/select_alignment_button.dart @@ -0,0 +1,37 @@ +import 'package:flutter/material.dart'; + +import '../../../../models/documents/attribute.dart'; +import '../../../quill/quill_controller.dart'; + +enum _AlignmentOptions { + left(attribute: Attribute.leftAlignment), + center(attribute: Attribute.centerAlignment), + right(attribute: Attribute.rightAlignment), + justifyMinWidth(attribute: Attribute.justifyAlignment); + + const _AlignmentOptions({required this.attribute}); + + final Attribute attribute; +} + +class QuillToolbarSelectAlignmentButton extends StatelessWidget { + const QuillToolbarSelectAlignmentButton( + {required this.controller, super.key}); + final QuillController controller; + + @override + Widget build(BuildContext context) { + return MenuAnchor( + menuChildren: _AlignmentOptions.values + .map( + (e) => MenuItemButton( + child: Text(e.name), + onPressed: () { + controller.formatSelection(e.attribute); + }, + ), + ) + .toList(), + ); + } +} diff --git a/lib/src/widgets/toolbar/buttons/select_alignment_buttons.dart b/lib/src/widgets/toolbar/buttons/alignment/select_alignment_buttons.dart similarity index 85% rename from lib/src/widgets/toolbar/buttons/select_alignment_buttons.dart rename to lib/src/widgets/toolbar/buttons/alignment/select_alignment_buttons.dart index 7259a2c5..651af856 100644 --- a/lib/src/widgets/toolbar/buttons/select_alignment_buttons.dart +++ b/lib/src/widgets/toolbar/buttons/alignment/select_alignment_buttons.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; -import '../../../models/config/toolbar/buttons/select_alignment_configurations.dart'; -import '../../../models/documents/attribute.dart'; -import '../../quill/quill_controller.dart'; -import 'toggle_style_button.dart'; +import '../../../../models/config/toolbar/buttons/select_alignment_configurations.dart'; +import '../../../../models/documents/attribute.dart'; +import '../../../quill/quill_controller.dart'; +import '../toggle_style_button.dart'; enum _AlignmentOptions { left(attribute: Attribute.leftAlignment), diff --git a/lib/src/widgets/toolbar/buttons/select_header_style_button.dart b/lib/src/widgets/toolbar/buttons/hearder_style/select_header_style_button.dart similarity index 94% rename from lib/src/widgets/toolbar/buttons/select_header_style_button.dart rename to lib/src/widgets/toolbar/buttons/hearder_style/select_header_style_button.dart index 17728e3e..27a51319 100644 --- a/lib/src/widgets/toolbar/buttons/select_header_style_button.dart +++ b/lib/src/widgets/toolbar/buttons/hearder_style/select_header_style_button.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; -import '../../../../translations.dart'; -import '../../../models/config/toolbar/buttons/select_header_style_configurations.dart'; -import '../../../models/documents/attribute.dart'; -import '../../quill/quill_controller.dart'; +import '../../../../../translations.dart'; +import '../../../../models/config/toolbar/buttons/select_header_style_configurations.dart'; +import '../../../../models/documents/attribute.dart'; +import '../../../quill/quill_controller.dart'; enum _HeaderStyleOptions { normal, diff --git a/lib/src/widgets/toolbar/buttons/select_header_style_buttons.dart b/lib/src/widgets/toolbar/buttons/hearder_style/select_header_style_buttons.dart similarity index 94% rename from lib/src/widgets/toolbar/buttons/select_header_style_buttons.dart rename to lib/src/widgets/toolbar/buttons/hearder_style/select_header_style_buttons.dart index a4915186..9f762aa0 100644 --- a/lib/src/widgets/toolbar/buttons/select_header_style_buttons.dart +++ b/lib/src/widgets/toolbar/buttons/hearder_style/select_header_style_buttons.dart @@ -1,14 +1,14 @@ import 'package:flutter/foundation.dart' show kIsWeb; import 'package:flutter/material.dart'; -import '../../../../extensions.dart'; -import '../../../extensions/quill_configurations_ext.dart'; -import '../../../l10n/extensions/localizations.dart'; -import '../../../models/documents/attribute.dart'; -import '../../../models/documents/style.dart'; -import '../../../models/themes/quill_icon_theme.dart'; -import '../../quill/quill_controller.dart'; -import '../base_toolbar.dart'; +import '../../../../../extensions.dart'; +import '../../../../extensions/quill_configurations_ext.dart'; +import '../../../../l10n/extensions/localizations.dart'; +import '../../../../models/documents/attribute.dart'; +import '../../../../models/documents/style.dart'; +import '../../../../models/themes/quill_icon_theme.dart'; +import '../../../quill/quill_controller.dart'; +import '../../base_toolbar.dart'; class QuillToolbarSelectHeaderStyleButtons extends StatefulWidget { const QuillToolbarSelectHeaderStyleButtons({ diff --git a/lib/src/widgets/toolbar/buttons/select_alignment_button.dart b/lib/src/widgets/toolbar/buttons/select_alignment_button.dart deleted file mode 100644 index 7dcf9802..00000000 --- a/lib/src/widgets/toolbar/buttons/select_alignment_button.dart +++ /dev/null @@ -1,10 +0,0 @@ -import 'package:flutter/material.dart'; - -class MyWidget extends StatelessWidget { - const MyWidget({super.key}); - - @override - Widget build(BuildContext context) { - return const Placeholder(); - } -} diff --git a/lib/src/widgets/toolbar/simple_toolbar.dart b/lib/src/widgets/toolbar/simple_toolbar.dart index 4f91cb34..94916898 100644 --- a/lib/src/widgets/toolbar/simple_toolbar.dart +++ b/lib/src/widgets/toolbar/simple_toolbar.dart @@ -7,8 +7,8 @@ import '../../models/documents/attribute.dart'; import '../utils/provider.dart'; import 'base_toolbar.dart'; import 'buttons/arrow_indicated_list_button.dart'; -import 'buttons/select_alignment_buttons.dart'; -import 'buttons/select_header_style_button.dart'; +import 'buttons/alignment/select_alignment_buttons.dart'; +import 'buttons/hearder_style/select_header_style_button.dart'; class QuillSimpleToolbar extends StatelessWidget implements PreferredSizeWidget {