mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
feat: sidebar UI Revamp on mobile (#5418)
* chore: replace settings icon and expand icon * feat: use tabbar view to control the spaces * feat: improve space UI design on mobile * feat: improve recent space UI design on mobile * feat: improve recent space UI design on mobile * feat: improve favorite space UI design on mobile * feat: improve header UI design on mobile * feat: expand header height * feat: update BottomNavigationBarItem icon * fix: recent views and favorite views doesn't reload after switching workspace * feat: improve recent view UI design on mobile * feat: improve recent/favorite view UI design on mobile * feat: add empty placeholder for recent/favorite space * feat: long press on recent card to show bottom sheet * feat: support removing page from recent * feat: add trash button * chore: remove recent top padding * feat: support user avatar * feat: support ... and + in space page * chore: disable user avatar * feat: optimize title display on mobile * feat: support ... menu on Space page * chore: add tab padding * chore: cache image * chore: optimize the mobile card view height * feat: reoder tab on mobile * fix: some emojis may not display correctly on Android devices * fix: ignore the last edit time on test
This commit is contained in:
@ -101,9 +101,13 @@ Map<String, BlockComponentBuilder> getEditorBuilderMap({
|
||||
|
||||
return const EdgeInsets.only(top: 12.0, bottom: 4.0);
|
||||
},
|
||||
placeholderText: (node) => LocaleKeys.blockPlaceholders_heading.tr(
|
||||
args: [node.attributes[HeadingBlockKeys.level].toString()],
|
||||
),
|
||||
placeholderText: (node) {
|
||||
int level = node.attributes[HeadingBlockKeys.level] ?? 6;
|
||||
level = level.clamp(1, 6);
|
||||
return LocaleKeys.blockPlaceholders_heading.tr(
|
||||
args: [level.toString()],
|
||||
);
|
||||
},
|
||||
),
|
||||
textStyleBuilder: (level) => styleCustomizer.headingStyleBuilder(level),
|
||||
),
|
||||
|
@ -16,6 +16,7 @@ import 'package:appflowy/workspace/application/view/view_bloc.dart';
|
||||
import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart';
|
||||
import 'package:appflowy_backend/protobuf/flowy-user/protobuf.dart';
|
||||
import 'package:appflowy_editor/appflowy_editor.dart';
|
||||
import 'package:auto_size_text_field/auto_size_text_field.dart';
|
||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||
import 'package:flowy_infra_ui/widget/ignore_parent_gesture.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@ -133,9 +134,11 @@ class _DocumentImmersiveCoverState extends State<DocumentImmersiveCover> {
|
||||
if (documentFontFamily != null && fontFamily != documentFontFamily) {
|
||||
fontFamily = getGoogleFontSafely(documentFontFamily).fontFamily;
|
||||
}
|
||||
return TextField(
|
||||
|
||||
return AutoSizeTextField(
|
||||
controller: textEditingController,
|
||||
focusNode: focusNode,
|
||||
minFontSize: 18.0,
|
||||
decoration: const InputDecoration(
|
||||
border: InputBorder.none,
|
||||
enabledBorder: InputBorder.none,
|
||||
@ -151,6 +154,7 @@ class _DocumentImmersiveCoverState extends State<DocumentImmersiveCover> {
|
||||
fontFamily: fontFamily,
|
||||
color:
|
||||
state.cover.isNone || state.cover.isPresets ? null : Colors.white,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
),
|
||||
onChanged: _rename,
|
||||
onSubmitted: _rename,
|
||||
|
@ -1,7 +1,5 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||
import 'package:appflowy/plugins/base/emoji/emoji_text.dart';
|
||||
import 'package:appflowy/plugins/document/presentation/editor_plugins/base/insert_page_command.dart';
|
||||
@ -20,6 +18,7 @@ import 'package:appflowy_editor/appflowy_editor.dart';
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flowy_infra_ui/widget/dialog/styled_dialogs.dart';
|
||||
import 'package:flowy_infra_ui/widget/error_page.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
// const _channel = "InlinePageReference";
|
||||
|
||||
@ -65,8 +64,11 @@ class InlinePageReferenceService extends InlineActionsDelegate {
|
||||
|
||||
_recentViewsInitialized = true;
|
||||
|
||||
final views =
|
||||
(await _recentService.recentViews()).reversed.toSet().toList();
|
||||
final views = (await _recentService.recentViews())
|
||||
.reversed
|
||||
.map((e) => e.item)
|
||||
.toSet()
|
||||
.toList();
|
||||
|
||||
// Filter by viewLayout
|
||||
views.retainWhere(
|
||||
|
Reference in New Issue
Block a user