Matched design of duplicate space dialog, with the design language of the system.

This commit is contained in:
Faris Armoush
2025-07-24 16:40:03 +03:00
parent 0f9cbd22a2
commit f1cf8d88d3
3 changed files with 27 additions and 13 deletions

View File

@ -31,6 +31,7 @@ class DuplicateSpaceDialog extends StatelessWidget {
child: BlocListener<DuplicateSpaceBloc, DuplicateSpaceState>(
listener: _listener,
child: DuplicateSpaceDialogForm(
initialNameSuffix: '(1)',
initialName: initialName,
selectedSpaceUuid: selectedSpaceUuid,
selectedCommunityUuid: selectedCommunityUuid,

View File

@ -3,18 +3,22 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_web/pages/space_management_v2/modules/duplicate_space/domain/params/duplicate_space_param.dart';
import 'package:syncrow_web/pages/space_management_v2/modules/duplicate_space/presentation/bloc/duplicate_space_bloc.dart';
import 'package:syncrow_web/pages/space_management_v2/modules/duplicate_space/presentation/widgets/duplicate_space_text_field.dart';
import 'package:syncrow_web/pages/space_management_v2/modules/space_details/presentation/widgets/space_details_action_buttons.dart';
import 'package:syncrow_web/utils/color_manager.dart';
class DuplicateSpaceDialogForm extends StatefulWidget {
const DuplicateSpaceDialogForm({
required this.initialName,
required this.selectedSpaceUuid,
required this.selectedCommunityUuid,
required this.initialNameSuffix,
super.key,
});
final String initialName;
final String selectedSpaceUuid;
final String selectedCommunityUuid;
final String initialNameSuffix;
@override
State<DuplicateSpaceDialogForm> createState() => _DuplicateSpaceDialogFormState();
@ -27,7 +31,9 @@ class _DuplicateSpaceDialogFormState extends State<DuplicateSpaceDialogForm> {
@override
void initState() {
super.initState();
_nameController = TextEditingController(text: '${widget.initialName}(1)');
_nameController = TextEditingController(
text: '${widget.initialName}${widget.initialNameSuffix}',
);
_nameController.addListener(_validateName);
}
@ -44,9 +50,17 @@ class _DuplicateSpaceDialogFormState extends State<DuplicateSpaceDialogForm> {
@override
Widget build(BuildContext context) {
return AlertDialog(
title: const SelectableText('Duplicate Space'),
title: const SelectableText(
'Duplicate Space',
style: TextStyle(
fontSize: 30,
fontWeight: FontWeight.w400,
color: ColorsManager.blackColor,
),
),
content: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
spacing: 16,
children: [
const SelectableText('Enter a new name for the duplicated space:'),
@ -58,13 +72,11 @@ class _DuplicateSpaceDialogFormState extends State<DuplicateSpaceDialogForm> {
],
),
actions: [
TextButton(
onPressed: Navigator.of(context).pop,
child: const Text('Cancel'),
),
TextButton(
onPressed: _isNameValid ? () => _submit(context) : null,
child: const Text('Duplicate'),
SpaceDetailsActionButtons(
spacerFlex: 2,
onSave: _isNameValid ? () => _submit(context) : null,
onCancel: Navigator.of(context).pop,
saveButtonLabel: 'Duplicate',
),
],
);

View File

@ -24,9 +24,10 @@ class DuplicateSpaceTextField extends StatelessWidget {
color: ColorsManager.blackColor,
),
decoration: InputDecoration(
label: const Text('Space Name'),
border: _border(),
enabledBorder: _border(),
filled: true,
fillColor: ColorsManager.boxColor,
border: _border(ColorsManager.transparentColor),
enabledBorder: _border(ColorsManager.transparentColor),
focusedBorder: _border(ColorsManager.primaryColor),
errorBorder: _border(context.theme.colorScheme.error),
focusedErrorBorder: _border(context.theme.colorScheme.error),
@ -41,7 +42,7 @@ class DuplicateSpaceTextField extends StatelessWidget {
OutlineInputBorder _border([Color? color]) {
return OutlineInputBorder(
borderRadius: BorderRadius.circular(16),
borderRadius: BorderRadius.circular(8),
borderSide: BorderSide(
color: color ?? ColorsManager.blackColor,
width: 0.5,