mirror of
https://github.com/Xevion/paperless-mobile.git
synced 2025-12-09 10:08:00 -06:00
feat: Replaced old label form fields with full page search, removed badge from edit button in document details
This commit is contained in:
@@ -62,6 +62,7 @@ class AddLabelFormWidget<T extends Label> extends StatelessWidget {
|
||||
title: pageTitle,
|
||||
),
|
||||
body: LabelForm<T>(
|
||||
autofocusNameField: true,
|
||||
initialValue: label,
|
||||
fromJsonT: fromJsonT,
|
||||
submitButtonConfig: SubmitButtonConfig<T>(
|
||||
|
||||
@@ -72,6 +72,7 @@ class EditLabelForm<T extends Label> extends StatelessWidget {
|
||||
],
|
||||
),
|
||||
body: LabelForm<T>(
|
||||
autofocusNameField: false,
|
||||
initialValue: label,
|
||||
fromJsonT: fromJsonT,
|
||||
submitButtonConfig: SubmitButtonConfig<T>(
|
||||
|
||||
@@ -11,17 +11,20 @@ class EditCorrespondentPage extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BlocProvider(
|
||||
lazy: false,
|
||||
create: (context) => EditLabelCubit(
|
||||
context.read(),
|
||||
),
|
||||
child: EditLabelPage<Correspondent>(
|
||||
label: correspondent,
|
||||
fromJsonT: Correspondent.fromJson,
|
||||
onSubmit: (context, label) =>
|
||||
context.read<EditLabelCubit>().addCorrespondent(label),
|
||||
onDelete: (context, label) =>
|
||||
context.read<EditLabelCubit>().removeCorrespondent(label),
|
||||
),
|
||||
child: Builder(builder: (context) {
|
||||
return EditLabelPage<Correspondent>(
|
||||
label: correspondent,
|
||||
fromJsonT: Correspondent.fromJson,
|
||||
onSubmit: (context, label) =>
|
||||
context.read<EditLabelCubit>().replaceCorrespondent(label),
|
||||
onDelete: (context, label) =>
|
||||
context.read<EditLabelCubit>().removeCorrespondent(label),
|
||||
);
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ class EditDocumentTypePage extends StatelessWidget {
|
||||
label: documentType,
|
||||
fromJsonT: DocumentType.fromJson,
|
||||
onSubmit: (context, label) =>
|
||||
context.read<EditLabelCubit>().addDocumentType(label),
|
||||
context.read<EditLabelCubit>().replaceDocumentType(label),
|
||||
onDelete: (context, label) =>
|
||||
context.read<EditLabelCubit>().removeDocumentType(label),
|
||||
),
|
||||
|
||||
@@ -19,7 +19,7 @@ class EditStoragePathPage extends StatelessWidget {
|
||||
label: storagePath,
|
||||
fromJsonT: StoragePath.fromJson,
|
||||
onSubmit: (context, label) =>
|
||||
context.read<EditLabelCubit>().addStoragePath(label),
|
||||
context.read<EditLabelCubit>().replaceStoragePath(label),
|
||||
onDelete: (context, label) =>
|
||||
context.read<EditLabelCubit>().removeStoragePath(label),
|
||||
additionalFields: [
|
||||
|
||||
@@ -22,7 +22,7 @@ class EditTagPage extends StatelessWidget {
|
||||
label: tag,
|
||||
fromJsonT: Tag.fromJson,
|
||||
onSubmit: (context, label) =>
|
||||
context.read<EditLabelCubit>().addTag(label),
|
||||
context.read<EditLabelCubit>().replaceTag(label),
|
||||
onDelete: (context, label) =>
|
||||
context.read<EditLabelCubit>().removeTag(label),
|
||||
additionalFields: [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_form_builder/flutter_form_builder.dart';
|
||||
import 'package:form_builder_validators/form_builder_validators.dart';
|
||||
|
||||
import 'package:paperless_api/paperless_api.dart';
|
||||
import 'package:paperless_mobile/core/translation/matching_algorithm_localization_mapper.dart';
|
||||
import 'package:paperless_mobile/core/type/types.dart';
|
||||
@@ -25,7 +25,7 @@ class SubmitButtonConfig<T extends Label> {
|
||||
class LabelForm<T extends Label> extends StatefulWidget {
|
||||
final T? initialValue;
|
||||
|
||||
final SubmitButtonConfig submitButtonConfig;
|
||||
final SubmitButtonConfig<T> submitButtonConfig;
|
||||
|
||||
/// FromJson method to parse the form field values into a label instance.
|
||||
final T Function(Map<String, dynamic> json) fromJsonT;
|
||||
@@ -33,12 +33,15 @@ class LabelForm<T extends Label> extends StatefulWidget {
|
||||
/// List of additionally rendered form fields.
|
||||
final List<Widget> additionalFields;
|
||||
|
||||
final bool autofocusNameField;
|
||||
|
||||
const LabelForm({
|
||||
Key? key,
|
||||
required this.initialValue,
|
||||
required this.fromJsonT,
|
||||
this.additionalFields = const [],
|
||||
required this.submitButtonConfig,
|
||||
required this.autofocusNameField,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
@@ -74,12 +77,18 @@ class _LabelFormState<T extends Label> extends State<LabelForm<T>> {
|
||||
child: ListView(
|
||||
children: [
|
||||
FormBuilderTextField(
|
||||
autofocus: widget.autofocusNameField,
|
||||
name: Label.nameKey,
|
||||
decoration: InputDecoration(
|
||||
labelText: S.of(context)!.name,
|
||||
errorText: _errors[Label.nameKey],
|
||||
),
|
||||
validator: FormBuilderValidators.required(),
|
||||
validator: (value) {
|
||||
if (value?.trim().isEmpty ?? true) {
|
||||
return S.of(context)!.thisFieldIsRequired;
|
||||
}
|
||||
return null;
|
||||
},
|
||||
initialValue: widget.initialValue?.name,
|
||||
onChanged: (val) => setState(() => _errors = {}),
|
||||
),
|
||||
@@ -148,6 +157,8 @@ class _LabelFormState<T extends Label> extends State<LabelForm<T>> {
|
||||
Navigator.pop(context, createdLabel);
|
||||
} on PaperlessServerException catch (error, stackTrace) {
|
||||
showErrorMessage(context, error, stackTrace);
|
||||
} on PaperlessValidationErrors catch (errors) {
|
||||
setState(() => _errors = errors);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user