mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-08-25 14:19:40 +00:00
Matched design of duplicate space dialog, with the design language of the system.
This commit is contained in:
@ -31,6 +31,7 @@ class DuplicateSpaceDialog extends StatelessWidget {
|
|||||||
child: BlocListener<DuplicateSpaceBloc, DuplicateSpaceState>(
|
child: BlocListener<DuplicateSpaceBloc, DuplicateSpaceState>(
|
||||||
listener: _listener,
|
listener: _listener,
|
||||||
child: DuplicateSpaceDialogForm(
|
child: DuplicateSpaceDialogForm(
|
||||||
|
initialNameSuffix: '(1)',
|
||||||
initialName: initialName,
|
initialName: initialName,
|
||||||
selectedSpaceUuid: selectedSpaceUuid,
|
selectedSpaceUuid: selectedSpaceUuid,
|
||||||
selectedCommunityUuid: selectedCommunityUuid,
|
selectedCommunityUuid: selectedCommunityUuid,
|
||||||
|
@ -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/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/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/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 {
|
class DuplicateSpaceDialogForm extends StatefulWidget {
|
||||||
const DuplicateSpaceDialogForm({
|
const DuplicateSpaceDialogForm({
|
||||||
required this.initialName,
|
required this.initialName,
|
||||||
required this.selectedSpaceUuid,
|
required this.selectedSpaceUuid,
|
||||||
required this.selectedCommunityUuid,
|
required this.selectedCommunityUuid,
|
||||||
|
required this.initialNameSuffix,
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
|
|
||||||
final String initialName;
|
final String initialName;
|
||||||
final String selectedSpaceUuid;
|
final String selectedSpaceUuid;
|
||||||
final String selectedCommunityUuid;
|
final String selectedCommunityUuid;
|
||||||
|
final String initialNameSuffix;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<DuplicateSpaceDialogForm> createState() => _DuplicateSpaceDialogFormState();
|
State<DuplicateSpaceDialogForm> createState() => _DuplicateSpaceDialogFormState();
|
||||||
@ -27,7 +31,9 @@ class _DuplicateSpaceDialogFormState extends State<DuplicateSpaceDialogForm> {
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
_nameController = TextEditingController(text: '${widget.initialName}(1)');
|
_nameController = TextEditingController(
|
||||||
|
text: '${widget.initialName}${widget.initialNameSuffix}',
|
||||||
|
);
|
||||||
_nameController.addListener(_validateName);
|
_nameController.addListener(_validateName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,9 +50,17 @@ class _DuplicateSpaceDialogFormState extends State<DuplicateSpaceDialogForm> {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return AlertDialog(
|
return AlertDialog(
|
||||||
title: const SelectableText('Duplicate Space'),
|
title: const SelectableText(
|
||||||
|
'Duplicate Space',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 30,
|
||||||
|
fontWeight: FontWeight.w400,
|
||||||
|
color: ColorsManager.blackColor,
|
||||||
|
),
|
||||||
|
),
|
||||||
content: Column(
|
content: Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
spacing: 16,
|
spacing: 16,
|
||||||
children: [
|
children: [
|
||||||
const SelectableText('Enter a new name for the duplicated space:'),
|
const SelectableText('Enter a new name for the duplicated space:'),
|
||||||
@ -58,13 +72,11 @@ class _DuplicateSpaceDialogFormState extends State<DuplicateSpaceDialogForm> {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
actions: [
|
actions: [
|
||||||
TextButton(
|
SpaceDetailsActionButtons(
|
||||||
onPressed: Navigator.of(context).pop,
|
spacerFlex: 2,
|
||||||
child: const Text('Cancel'),
|
onSave: _isNameValid ? () => _submit(context) : null,
|
||||||
),
|
onCancel: Navigator.of(context).pop,
|
||||||
TextButton(
|
saveButtonLabel: 'Duplicate',
|
||||||
onPressed: _isNameValid ? () => _submit(context) : null,
|
|
||||||
child: const Text('Duplicate'),
|
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
@ -24,9 +24,10 @@ class DuplicateSpaceTextField extends StatelessWidget {
|
|||||||
color: ColorsManager.blackColor,
|
color: ColorsManager.blackColor,
|
||||||
),
|
),
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
label: const Text('Space Name'),
|
filled: true,
|
||||||
border: _border(),
|
fillColor: ColorsManager.boxColor,
|
||||||
enabledBorder: _border(),
|
border: _border(ColorsManager.transparentColor),
|
||||||
|
enabledBorder: _border(ColorsManager.transparentColor),
|
||||||
focusedBorder: _border(ColorsManager.primaryColor),
|
focusedBorder: _border(ColorsManager.primaryColor),
|
||||||
errorBorder: _border(context.theme.colorScheme.error),
|
errorBorder: _border(context.theme.colorScheme.error),
|
||||||
focusedErrorBorder: _border(context.theme.colorScheme.error),
|
focusedErrorBorder: _border(context.theme.colorScheme.error),
|
||||||
@ -41,7 +42,7 @@ class DuplicateSpaceTextField extends StatelessWidget {
|
|||||||
|
|
||||||
OutlineInputBorder _border([Color? color]) {
|
OutlineInputBorder _border([Color? color]) {
|
||||||
return OutlineInputBorder(
|
return OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(16),
|
borderRadius: BorderRadius.circular(8),
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
color: color ?? ColorsManager.blackColor,
|
color: color ?? ColorsManager.blackColor,
|
||||||
width: 0.5,
|
width: 0.5,
|
||||||
|
Reference in New Issue
Block a user