From 3914e78465e69fb3bc8a482d193549695e26c215 Mon Sep 17 00:00:00 2001 From: SurendarSuri30 Date: Thu, 16 Jul 2026 15:18:59 +0530 Subject: [PATCH] UI changes review --- assets/images/bcpl_logo.png | Bin 45648 -> 249823 bytes lib/core/utils/active_option.dart | 38 ++ .../datasources/asset_remote_data_source.dart | 4 +- .../asset_form_lookups_provider.dart | 62 ++- .../screens/asset_list_screen.dart | 55 +-- .../widgets/asset_form_panel.dart | 17 +- .../widgets/asset_side_panels.dart | 26 +- .../screens/audit_logs_screen.dart | 110 ++--- .../widgets/audit_log_detail_panel.dart | 78 +-- .../providers/grn_lookups_provider.dart | 11 +- .../presentation/screens/grn_form_screen.dart | 416 ++++++++-------- .../presentation/screens/grn_list_screen.dart | 106 ++--- .../widgets/grn_line_items_editor.dart | 51 +- .../master_crud_remote_data_source.dart | 8 +- .../screens/master_list_screen.dart | 19 +- .../widgets/master_form_panel.dart | 6 +- .../widgets/master_inline_create_form.dart | 80 +++- .../widgets/master_quick_add.dart | 19 +- .../master_remote_data_source.dart | 9 +- .../purchase_order_lookups_provider.dart | 12 +- .../screens/purchase_order_form_screen.dart | 449 +++++++++--------- .../screens/purchase_order_list_screen.dart | 88 ++-- .../purchase_order_line_items_editor.dart | 76 ++- .../providers/add_user_form_provider.dart | 16 +- .../screens/users_role_management_screen.dart | 152 +++--- .../domain/entities/depreciation_report.dart | 5 + .../screens/depreciation_report_screen.dart | 185 +++----- .../datasources/role_remote_data_source.dart | 27 +- .../screens/permission_matrix_screen.dart | 7 +- .../widgets/settings_widgets.dart | 8 +- .../datasources/user_remote_data_source.dart | 9 +- .../screens/user_list_screen.dart | 27 +- .../screens/vendor_list_screen.dart | 86 ++-- .../widgets/vendor_form_panel.dart | 6 +- .../widgets/vendor_sub_resource_panels.dart | 26 +- lib/shared/routes/menu_config.dart | 31 +- lib/shared/widgets/app_filter_date_field.dart | 10 +- lib/shared/widgets/app_form_toggle_field.dart | 67 +++ .../widgets/app_responsive_filter_bar.dart | 227 +++++++++ lib/shared/widgets/app_search_export_bar.dart | 52 +- .../widgets/app_searchable_dropdown.dart | 2 + lib/shared/widgets/app_sidebar.dart | 171 +++---- .../widgets/master_inline_quick_add_form.dart | 63 ++- lib/shared/widgets/sidebar_logo.dart | 243 +++++++++- 44 files changed, 1767 insertions(+), 1393 deletions(-) create mode 100644 lib/core/utils/active_option.dart create mode 100644 lib/shared/widgets/app_form_toggle_field.dart create mode 100644 lib/shared/widgets/app_responsive_filter_bar.dart diff --git a/assets/images/bcpl_logo.png b/assets/images/bcpl_logo.png index 50015bc7528689536870e1e05984f7dd9c576586..8dfeb198a009da9203627afb41d070c491cd3d2b 100644 GIT binary patch literal 249823 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 literal 45648 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 item) { + if (item['is_active'] == false) return false; + if (item['isActive'] == false) return false; + + final status = (item['status']?.toString() ?? '').trim().toLowerCase(); + if (status.isEmpty) return true; + return !_inactiveStatuses.contains(status); +} + +/// Active user suitable for manager / assignee dropdowns. +bool isActiveUserOption({ + required String status, + required bool isActive, +}) { + return isActive && status.trim().toLowerCase() == 'active'; +} + +/// Active vendor suitable for PO / asset vendor dropdowns. +bool isActiveVendorOption({ + required bool isActive, + String? status, +}) { + if (!isActive) return false; + final normalized = (status ?? '').trim().toLowerCase(); + if (normalized.isEmpty) return true; + return !_inactiveStatuses.contains(normalized); +} diff --git a/lib/modules/assets/data/datasources/asset_remote_data_source.dart b/lib/modules/assets/data/datasources/asset_remote_data_source.dart index 50e83d0..add3d17 100644 --- a/lib/modules/assets/data/datasources/asset_remote_data_source.dart +++ b/lib/modules/assets/data/datasources/asset_remote_data_source.dart @@ -109,7 +109,9 @@ class AssetRemoteDataSource { ApiEndpoints.itemCategories, queryParameters: const {'limit': 100, 'is_active': true}, ); - return _parseList(response.data, AssetCategoryModel.fromJson); + return _parseList(response.data, AssetCategoryModel.fromJson) + .where((category) => category.isActive) + .toList(); } Future getAssetOptions() async { diff --git a/lib/modules/assets/presentation/providers/asset_form_lookups_provider.dart b/lib/modules/assets/presentation/providers/asset_form_lookups_provider.dart index 100c0de..b415e26 100644 --- a/lib/modules/assets/presentation/providers/asset_form_lookups_provider.dart +++ b/lib/modules/assets/presentation/providers/asset_form_lookups_provider.dart @@ -2,6 +2,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../../../core/constants/app_constants.dart'; import '../../../../core/network/api_handler.dart'; +import '../../../../core/utils/active_option.dart'; import '../../../../shared/models/asset_model.dart'; import '../../../../shared/models/grn_model.dart'; import '../../../../shared/models/purchase_order_model.dart'; @@ -116,22 +117,41 @@ Future> _safeOptions( Future> _safeVendorOptions(Ref ref) async { try { - final result = await ref.read(vendorRepositoryProvider).getVendors( - const VendorListQuery( - page: 1, - limit: AppConstants.maxPageSize, - status: 'active', - ), - ); - if (result.failure != null || result.data == null) return const []; - return result.data!.items - .map( - (vendor) => FilterOptionModel( - id: vendor.id, - name: vendor.vendorName, - ), - ) - .toList(); + final vendors = []; + var page = 1; + var totalPages = 1; + + while (page <= totalPages) { + final result = await ref.read(vendorRepositoryProvider).getVendors( + VendorListQuery( + page: page, + limit: AppConstants.maxPageSize, + isActive: true, + ), + ); + if (result.failure != null || result.data == null) return vendors; + + final data = result.data!; + vendors.addAll( + data.items + .where( + (vendor) => isActiveVendorOption( + isActive: vendor.isActive, + status: vendor.status, + ), + ) + .map( + (vendor) => FilterOptionModel( + id: vendor.id, + name: vendor.vendorName, + ), + ), + ); + totalPages = data.totalPages; + page++; + } + + return vendors; } catch (_) { return const []; } @@ -149,10 +169,12 @@ Future> _safeUserOptions(Ref ref) async { ); if (result.failure != null || result.data == null) return const []; return result.data!.items - .where((user) { - final status = user.status.trim().toLowerCase(); - return status == 'active' && user.isActive; - }) + .where( + (user) => isActiveUserOption( + status: user.status, + isActive: user.isActive, + ), + ) .map( (user) => FilterOptionModel( id: user.id, diff --git a/lib/modules/assets/presentation/screens/asset_list_screen.dart b/lib/modules/assets/presentation/screens/asset_list_screen.dart index 232e244..dddf8eb 100644 --- a/lib/modules/assets/presentation/screens/asset_list_screen.dart +++ b/lib/modules/assets/presentation/screens/asset_list_screen.dart @@ -18,6 +18,7 @@ import '../../../../shared/widgets/app_empty_state.dart'; import '../../../../shared/widgets/app_loading_view.dart'; import '../../../../shared/widgets/app_searchable_dropdown.dart'; import '../../../../shared/widgets/app_pagination.dart'; +import '../../../../shared/widgets/app_responsive_filter_bar.dart'; import '../../../../shared/widgets/app_status_chip.dart'; import '../../../../shared/widgets/app_table_action_icon.dart'; import '../../../../shared/widgets/can_permission.dart'; @@ -135,21 +136,15 @@ class _AssetListScreenState extends ConsumerState { children: [ Padding( padding: const EdgeInsets.all(16), - child: LayoutBuilder( - builder: (context, constraints) { - return _AssetsFilterBar( - wrapped: constraints.maxWidth < 1000, - query: state.query, - categories: allCategories, - plants: allPlants, - statuses: lookups?.statuses ?? const [], - onSearch: notifier.setSearch, - onCategoryChanged: - notifier.setCategoryFilter, - onPlantChanged: notifier.setPlantFilter, - onStatusChanged: notifier.setStatusFilter, - ); - }, + child: _AssetsFilterBar( + query: state.query, + categories: allCategories, + plants: allPlants, + statuses: lookups?.statuses ?? const [], + onSearch: notifier.setSearch, + onCategoryChanged: notifier.setCategoryFilter, + onPlantChanged: notifier.setPlantFilter, + onStatusChanged: notifier.setStatusFilter, ), ), const Divider(height: 1), @@ -275,7 +270,6 @@ class _AssetListScreenState extends ConsumerState { class _AssetsFilterBar extends StatelessWidget { const _AssetsFilterBar({ - required this.wrapped, required this.query, required this.categories, required this.plants, @@ -286,7 +280,6 @@ class _AssetsFilterBar extends StatelessWidget { required this.onStatusChanged, }); - final bool wrapped; final AssetListQuery query; final List categories; final List plants; @@ -315,7 +308,7 @@ class _AssetsFilterBar extends StatelessWidget { final categoryOptions = >[ const AppDropdownOption(value: null, label: 'All Categories'), for (final category in categories) - if (int.tryParse(category.id) != null) + if (category.isActive && int.tryParse(category.id) != null) AppDropdownOption( value: int.parse(category.id), label: category.name, @@ -371,29 +364,9 @@ class _AssetsFilterBar extends StatelessWidget { ), ]; - if (wrapped) { - return Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - searchField, - const SizedBox(height: 12), - ...filters.expand((f) => [f, const SizedBox(height: 12)]).toList() - ..removeLast(), - ], - ); - } - - return Row( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Expanded(flex: 3, child: searchField), - const SizedBox(width: 12), - Expanded(flex: 2, child: filters[0]), - const SizedBox(width: 12), - Expanded(flex: 2, child: filters[1]), - const SizedBox(width: 12), - Expanded(child: filters[2]), - ], + return AppResponsiveFilterBar( + search: searchField, + filters: filters, ); } } diff --git a/lib/modules/assets/presentation/widgets/asset_form_panel.dart b/lib/modules/assets/presentation/widgets/asset_form_panel.dart index 330e1ed..02c4da9 100644 --- a/lib/modules/assets/presentation/widgets/asset_form_panel.dart +++ b/lib/modules/assets/presentation/widgets/asset_form_panel.dart @@ -12,6 +12,7 @@ import '../../../../shared/models/user_management_models.dart' show FilterOption import '../../../../shared/widgets/app_button.dart'; import '../../../../shared/widgets/app_date_popup.dart'; import '../../../../shared/widgets/app_dropdown.dart'; +import '../../../../shared/widgets/app_form_toggle_field.dart'; import '../../../../shared/widgets/app_searchable_dropdown.dart'; import '../../../../shared/widgets/app_loading_view.dart'; import '../../../../shared/widgets/app_side_panel.dart'; @@ -880,10 +881,9 @@ class _AssetFormPanelState extends ConsumerState { ), ), const SizedBox(height: 8), - SwitchListTile( - contentPadding: EdgeInsets.zero, - title: const Text('Active'), - subtitle: const Text('Inactive assets are hidden from active lists'), + AppFormToggleField( + label: 'Active', + subtitle: 'Inactive assets are hidden from active lists', value: _isActive, onChanged: (value) => setState(() => _isActive = value), ), @@ -1079,7 +1079,9 @@ class _AssetFormPanelState extends ConsumerState { } Widget _categoryDropdown(List categories) { - final categoryIds = categories + final activeCategories = + categories.where((category) => category.isActive).toList(); + final categoryIds = activeCategories .map((c) => int.tryParse(c.id)) .whereType() .toList(); @@ -1089,7 +1091,7 @@ class _AssetFormPanelState extends ConsumerState { value: _dropdownValue(_categoryId, categoryIds), searchHint: 'Search category...', isDense: true, - options: categories + options: activeCategories .map( (c) => AppDropdownOption( value: int.tryParse(c.id) ?? 0, @@ -1105,7 +1107,8 @@ class _AssetFormPanelState extends ConsumerState { onChanged: (v) => setState(() { _categoryId = v; _subcategoryId = null; - final selectedCategory = categories.where((c) => int.tryParse(c.id) == v).firstOrNull; + final selectedCategory = + activeCategories.where((c) => int.tryParse(c.id) == v).firstOrNull; if (selectedCategory != null) { if (selectedCategory.defaultDepreciationMethod != null && selectedCategory.defaultDepreciationMethod!.trim().isNotEmpty) { diff --git a/lib/modules/assets/presentation/widgets/asset_side_panels.dart b/lib/modules/assets/presentation/widgets/asset_side_panels.dart index bd97afd..2bac004 100644 --- a/lib/modules/assets/presentation/widgets/asset_side_panels.dart +++ b/lib/modules/assets/presentation/widgets/asset_side_panels.dart @@ -11,6 +11,7 @@ import '../../../../shared/widgets/app_card.dart'; import '../../../../shared/widgets/app_date_popup.dart'; import '../../../../shared/widgets/app_dropdown.dart'; import '../../../../shared/widgets/app_empty_state.dart'; +import '../../../../shared/widgets/app_form_toggle_field.dart'; import '../../../../shared/widgets/app_searchable_dropdown.dart'; import '../../../../shared/widgets/app_side_panel.dart'; import '../../../../shared/widgets/app_text_field.dart'; @@ -360,9 +361,8 @@ class _AddAmcPanelState extends ConsumerState { maxLines: 3, ), const SizedBox(height: 8), - SwitchListTile( - contentPadding: EdgeInsets.zero, - title: const Text('Active'), + AppFormToggleField( + label: 'Active', value: _isActive, onChanged: (value) => setState(() => _isActive = value), ), @@ -804,9 +804,8 @@ class _LogServiceVisitPanelState extends ConsumerState { maxLines: 3, ), const SizedBox(height: 8), - SwitchListTile( - contentPadding: EdgeInsets.zero, - title: const Text('Under AMC'), + AppFormToggleField( + label: 'Under AMC', value: _isUnderAmc, onChanged: (value) => setState(() => _isUnderAmc = value), ), @@ -1151,21 +1150,18 @@ class _AddInsurancePanelState extends ConsumerState { ), ), const SizedBox(height: 8), - SwitchListTile( - contentPadding: EdgeInsets.zero, - title: const Text('Auto Renewal'), + AppFormToggleField( + label: 'Auto Renewal', value: _isAutoRenewal, onChanged: (value) => setState(() => _isAutoRenewal = value), ), - SwitchListTile( - contentPadding: EdgeInsets.zero, - title: const Text('Premium Paid'), + AppFormToggleField( + label: 'Premium Paid', value: _premiumPaid, onChanged: (value) => setState(() => _premiumPaid = value), ), - SwitchListTile( - contentPadding: EdgeInsets.zero, - title: const Text('Active'), + AppFormToggleField( + label: 'Active', value: _isActive, onChanged: (value) => setState(() => _isActive = value), ), diff --git a/lib/modules/audit/presentation/screens/audit_logs_screen.dart b/lib/modules/audit/presentation/screens/audit_logs_screen.dart index 358ebb0..02d98b4 100644 --- a/lib/modules/audit/presentation/screens/audit_logs_screen.dart +++ b/lib/modules/audit/presentation/screens/audit_logs_screen.dart @@ -16,6 +16,8 @@ import '../../../../shared/widgets/app_empty_state.dart'; import '../../../../shared/widgets/app_filter_date_field.dart'; import '../../../../shared/widgets/app_loading_view.dart'; import '../../../../shared/widgets/app_pagination.dart'; +import '../../../../shared/widgets/app_responsive_filter_bar.dart'; +import '../../../../shared/widgets/app_search_field.dart'; import '../../../../shared/widgets/app_searchable_dropdown.dart'; import '../../../../shared/widgets/app_side_panel.dart'; import '../../../../shared/widgets/app_status_chip.dart'; @@ -151,24 +153,19 @@ class _AuditLogsScreenState extends ConsumerState { ), Expanded( child: AppTableShell( - toolbar: LayoutBuilder( - builder: (context, constraints) { - return _FiltersBar( - searchController: _searchController, - filters: state.filters, - query: state.query, - wrapped: constraints.maxWidth < 1100, - onSearch: notifier.setSearch, - onTableChanged: notifier.setTableName, - onActionChanged: notifier.setAction, - onPerformerChanged: notifier.setPerformedBy, - onPickDateRange: () => _pickDateRange(state.query), - onClearDateRange: () => notifier.setDateRange(null, null), - onReset: () { - _searchController.clear(); - notifier.resetFilters(); - }, - ); + toolbar: _FiltersBar( + searchController: _searchController, + filters: state.filters, + query: state.query, + onSearch: notifier.setSearch, + onTableChanged: notifier.setTableName, + onActionChanged: notifier.setAction, + onPerformerChanged: notifier.setPerformedBy, + onPickDateRange: () => _pickDateRange(state.query), + onClearDateRange: () => notifier.setDateRange(null, null), + onReset: () { + _searchController.clear(); + notifier.resetFilters(); }, ), footer: AppPagination( @@ -237,7 +234,6 @@ class _FiltersBar extends StatelessWidget { required this.searchController, required this.filters, required this.query, - required this.wrapped, required this.onSearch, required this.onTableChanged, required this.onActionChanged, @@ -250,7 +246,6 @@ class _FiltersBar extends StatelessWidget { final TextEditingController searchController; final AuditLogFilterOptions filters; final AuditLogListQuery query; - final bool wrapped; final ValueChanged onSearch; final ValueChanged onTableChanged; final ValueChanged onActionChanged; @@ -270,24 +265,11 @@ class _FiltersBar extends StatelessWidget { @override Widget build(BuildContext context) { - final searchField = TextField( + final searchField = AppSearchField( controller: searchController, + hint: 'Search table, action, request ID...', onChanged: onSearch, - decoration: InputDecoration( - labelText: 'Search', - hintText: 'Search table, action, request ID...', - prefixIcon: const Icon(Icons.search), - isDense: true, - suffixIcon: searchController.text.isNotEmpty - ? IconButton( - icon: const Icon(Icons.clear), - onPressed: () { - searchController.clear(); - onSearch(''); - }, - ) - : null, - ), + onClear: () => onSearch(''), ); final tableDropdown = AppSearchableDropdown( @@ -350,51 +332,17 @@ class _FiltersBar extends StatelessWidget { child: const Text('Reset'), ); - if (wrapped) { - return Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - searchField, - const SizedBox(height: 12), - tableDropdown, - const SizedBox(height: 12), - actionDropdown, - const SizedBox(height: 12), - performerDropdown, - const SizedBox(height: 12), - Row( - children: [ - Expanded(child: dateField), - resetButton, - ], - ), - ], - ); - } - - Widget row(List cells) { - assert(cells.length == 4); - return Row( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - for (var i = 0; i < cells.length; i++) ...[ - if (i > 0) const SizedBox(width: 12), - Expanded(child: cells[i]), - ], - ], - ); - } - - return Column( - children: [ - row([searchField, tableDropdown, actionDropdown, performerDropdown]), - const SizedBox(height: 12), - row([ - dateField, - const SizedBox.shrink(), - const SizedBox.shrink(), - Align(alignment: Alignment.centerRight, child: resetButton), - ]), + return AppResponsiveFilterGrid( + fields: [ + searchField, + tableDropdown, + actionDropdown, + performerDropdown, + dateField, + Align( + alignment: Alignment.centerRight, + child: resetButton, + ), ], ); } diff --git a/lib/modules/audit/presentation/widgets/audit_log_detail_panel.dart b/lib/modules/audit/presentation/widgets/audit_log_detail_panel.dart index 55870e3..9f4a60f 100644 --- a/lib/modules/audit/presentation/widgets/audit_log_detail_panel.dart +++ b/lib/modules/audit/presentation/widgets/audit_log_detail_panel.dart @@ -44,6 +44,9 @@ class _DetailBody extends StatelessWidget { @override Widget build(BuildContext context) { + final hasOld = detail.oldValue != null || detail.hasOldValue; + final hasNew = detail.newValue != null || detail.hasNewValue; + return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -69,20 +72,7 @@ class _DetailBody extends StatelessWidget { _DetailRow(label: 'Request ID', value: detail.requestId ?? '—'), ], ), - if (detail.oldValue != null || detail.hasOldValue) - _ReadableValueSection( - title: 'OLD VALUE', - value: detail.oldValue, - emptyLabel: 'No previous value recorded', - ), - if (detail.newValue != null || detail.hasNewValue) - _ReadableValueSection( - title: 'NEW VALUE', - value: detail.newValue, - emptyLabel: 'No new value recorded', - ), - if ((detail.oldValue != null || detail.hasOldValue) && - (detail.newValue != null || detail.hasNewValue)) + if (hasOld && hasNew) _ChangedFieldsSection( oldValue: detail.oldValue, newValue: detail.newValue, @@ -135,56 +125,6 @@ class _DetailRow extends StatelessWidget { } } -class _ReadableValueSection extends StatelessWidget { - const _ReadableValueSection({ - required this.title, - required this.value, - required this.emptyLabel, - }); - - final String title; - final Map? value; - final String emptyLabel; - - @override - Widget build(BuildContext context) { - final theme = Theme.of(context); - final rows = value == null ? const <_FieldRow>[] : _flattenFields(value!); - - return SidePanelSection( - title: title, - children: [ - if (rows.isEmpty) - Text( - emptyLabel, - style: theme.textTheme.bodyMedium?.copyWith( - color: theme.colorScheme.onSurfaceVariant, - ), - ) - else - Container( - width: double.infinity, - padding: const EdgeInsets.fromLTRB(14, 14, 14, 2), - decoration: BoxDecoration( - color: theme.colorScheme.surfaceContainerHighest - .withValues(alpha: 0.35), - borderRadius: BorderRadius.circular(8), - border: Border.all( - color: theme.colorScheme.outline.withValues(alpha: 0.12), - ), - ), - child: Column( - children: [ - for (final row in rows) - _DetailRow(label: row.label, value: row.value), - ], - ), - ), - ], - ); - } -} - class _ChangedFieldsSection extends StatelessWidget { const _ChangedFieldsSection({ required this.oldValue, @@ -238,7 +178,10 @@ class _ChangedFieldsSection extends StatelessWidget { ), ), Padding( - padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 18), + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 18, + ), child: Icon( Icons.arrow_forward, size: 16, @@ -385,7 +328,10 @@ String? _nestedSummary(Map nested) { if (nested.length <= 2) { return nested.entries - .map((e) => '${_humanizeKey(e.key.toString())}: ${_formatValue(e.key.toString(), e.value)}') + .map( + (e) => + '${_humanizeKey(e.key.toString())}: ${_formatValue(e.key.toString(), e.value)}', + ) .join(', '); } diff --git a/lib/modules/grn/presentation/providers/grn_lookups_provider.dart b/lib/modules/grn/presentation/providers/grn_lookups_provider.dart index 45dfe9f..1800b82 100644 --- a/lib/modules/grn/presentation/providers/grn_lookups_provider.dart +++ b/lib/modules/grn/presentation/providers/grn_lookups_provider.dart @@ -1,6 +1,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../../../core/constants/app_constants.dart'; +import '../../../../core/utils/active_option.dart'; import '../../../../shared/models/purchase_order_model.dart'; import '../../../../shared/models/user_management_models.dart'; import '../../../masters/data/datasources/master_remote_data_source.dart'; @@ -69,10 +70,12 @@ Future> _safeUserOptions(Ref ref) async { ); if (result.failure != null || result.data == null) return const []; return result.data!.items - .where((user) { - final status = user.status.trim().toLowerCase(); - return status == 'active' && user.isActive; - }) + .where( + (user) => isActiveUserOption( + status: user.status, + isActive: user.isActive, + ), + ) .map( (user) => FilterOptionModel( id: user.id, diff --git a/lib/modules/grn/presentation/screens/grn_form_screen.dart b/lib/modules/grn/presentation/screens/grn_form_screen.dart index 96f67a4..d38ec6d 100644 --- a/lib/modules/grn/presentation/screens/grn_form_screen.dart +++ b/lib/modules/grn/presentation/screens/grn_form_screen.dart @@ -318,7 +318,7 @@ class _GrnFormScreenState extends ConsumerState { : const AsyncData(null); return Scaffold( - backgroundColor: Theme.of(context).scaffoldBackgroundColor, + backgroundColor: Theme.of(context).colorScheme.surface, body: lookupsAsync.when( skipLoadingOnReload: true, loading: () => lookupsAsync.hasValue @@ -388,236 +388,230 @@ class _GrnFormScreenState extends ConsumerState { return SingleChildScrollView( controller: _scrollController, padding: const EdgeInsets.fromLTRB(24, 16, 24, 32), - child: Align( - alignment: Alignment.topCenter, - child: ConstrainedBox( - constraints: const BoxConstraints(maxWidth: 1200), - child: Form( - key: _formKey, - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - _buildHeader(existing), - const SizedBox(height: 16), - _SectionCard( - title: 'RECEIPT DETAILS', - child: Column( - children: [ - FormRowFour( + child: Form( + key: _formKey, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + _buildHeader(existing), + const SizedBox(height: 16), + _SectionCard( + title: 'RECEIPT DETAILS', + child: Column( children: [ - _DateField( - label: 'GRN Date *', - value: _grnDate, - enabled: !widget.isEditing, - onTap: widget.isEditing - ? null - : () => _pickDate( - current: _grnDate, - onPicked: (d) => - setState(() => _grnDate = d), - ), - ), - if (!widget.isEditing) - AppSearchableDropdown( - label: 'Purchase Order *', - value: _selectedPoId, - hint: 'Select PO', - searchHint: 'Search PO...', - options: poOptions, - onChanged: (v) async { - setState(() => _selectedPoId = v); - if (v == null) { - for (final line in _lines) { - line.dispose(); - } - setState(() => _lines.clear()); - return; - } - try { - final po = await ref.read( - grnPurchaseOrderProvider(v).future, - ); - if (mounted && po != null) { - _loadLinesFromPo(po); - } - } catch (e) { - if (!mounted) return; - showAppToastFromSnackBar(context, - SnackBar(content: Text(e.toString())), - ); - } - }, - validator: (v) => v == null - ? 'Purchase Order Is Required' - : null, - ) - else - _ReadOnlyField( - label: 'Purchase Order', - value: existing?.poNumber ?? '—', - ), - MasterQuickAddDropdown( - masterId: 'warehouses', - label: 'Warehouse *', - value: _dropdownValue(_warehouseId, warehouseIds), - hint: 'Select warehouse', - searchHint: 'Search warehouse...', - options: _intOptions(lookups.warehouses), - refreshLookups: () => - ref.invalidate(grnLookupsProvider), - parseCreatedId: int.tryParse, - onChanged: widget.isEditing - ? (_) {} - : (v) => setState(() => _warehouseId = v), - validator: widget.isEditing - ? null - : (v) => - v == null ? 'Warehouse is required' : null, - enabled: !widget.isEditing, - ), - AppTextField( - label: 'Vendor Invoice No', - controller: _vendorInvoiceNoController, - ), - ], - ), - FormRowFour( - children: [ - _DateField( - label: 'Vendor Invoice Date', - value: _vendorInvoiceDate, - onTap: () => _pickDate( - current: _vendorInvoiceDate, - onPicked: (d) => - setState(() => _vendorInvoiceDate = d), - ), - ), - AppTextField( - label: 'Vendor Invoice Amount', - controller: _vendorInvoiceAmountController, - keyboardType: const TextInputType.numberWithOptions( - decimal: true, - ), - inputFormatters: [ - FilteringTextInputFormatter.allow( - RegExp(r'^\d*\.?\d{0,2}'), + FormRowFour( + children: [ + _DateField( + label: 'GRN Date *', + value: _grnDate, + enabled: !widget.isEditing, + onTap: widget.isEditing + ? null + : () => _pickDate( + current: _grnDate, + onPicked: (d) => + setState(() => _grnDate = d), + ), + ), + if (!widget.isEditing) + AppSearchableDropdown( + label: 'Purchase Order *', + value: _selectedPoId, + hint: 'Select PO', + searchHint: 'Search PO...', + options: poOptions, + onChanged: (v) async { + setState(() => _selectedPoId = v); + if (v == null) { + for (final line in _lines) { + line.dispose(); + } + setState(() => _lines.clear()); + return; + } + try { + final po = await ref.read( + grnPurchaseOrderProvider(v).future, + ); + if (mounted && po != null) { + _loadLinesFromPo(po); + } + } catch (e) { + if (!mounted) return; + showAppToastFromSnackBar(context, + SnackBar(content: Text(e.toString())), + ); + } + }, + validator: (v) => v == null + ? 'Purchase Order Is Required' + : null, + ) + else + _ReadOnlyField( + label: 'Purchase Order', + value: existing?.poNumber ?? '—', + ), + MasterQuickAddDropdown( + masterId: 'warehouses', + label: 'Warehouse *', + value: _dropdownValue(_warehouseId, warehouseIds), + hint: 'Select warehouse', + searchHint: 'Search warehouse...', + options: _intOptions(lookups.warehouses), + refreshLookups: () => + ref.invalidate(grnLookupsProvider), + parseCreatedId: int.tryParse, + onChanged: widget.isEditing + ? (_) {} + : (v) => setState(() => _warehouseId = v), + validator: widget.isEditing + ? null + : (v) => + v == null ? 'Warehouse is required' : null, + enabled: !widget.isEditing, + ), + AppTextField( + label: 'Vendor Invoice No', + controller: _vendorInvoiceNoController, ), ], - validator: (v) => Validators.optionalNonNegativeDouble( - v, - fieldName: 'Vendor Invoice Amount', - ), ), - AppTextField( - label: 'Vehicle No', - controller: _vehicleNoController, + FormRowFour( + children: [ + _DateField( + label: 'Vendor Invoice Date', + value: _vendorInvoiceDate, + onTap: () => _pickDate( + current: _vendorInvoiceDate, + onPicked: (d) => + setState(() => _vendorInvoiceDate = d), + ), + ), + AppTextField( + label: 'Vendor Invoice Amount', + controller: _vendorInvoiceAmountController, + keyboardType: const TextInputType.numberWithOptions( + decimal: true, + ), + inputFormatters: [ + FilteringTextInputFormatter.allow( + RegExp(r'^\d*\.?\d{0,2}'), + ), + ], + validator: (v) => Validators.optionalNonNegativeDouble( + v, + fieldName: 'Vendor Invoice Amount', + ), + ), + AppTextField( + label: 'Vehicle No', + controller: _vehicleNoController, + ), + AppTextField( + label: 'LR No', + controller: _lrNoController, + ), + ], ), - AppTextField( - label: 'LR No', - controller: _lrNoController, + FormRowFour( + children: [ + _DateField( + label: 'LR Date', + value: _lrDate, + onTap: () => _pickDate( + current: _lrDate, + onPicked: (d) => setState(() => _lrDate = d), + ), + ), + AppSearchableDropdown( + label: 'Received By', + value: _dropdownValue( + _normalizeUserId(_receivedById), + userIds, + ), + hint: 'Select user', + searchHint: 'Search user...', + options: _intOptions(lookups.users), + onChanged: (v) => + setState(() => _receivedById = v), + ), + AppSearchableDropdown( + label: 'Quality Checked By', + value: _dropdownValue( + _normalizeUserId(_qualityCheckedById), + userIds, + ), + hint: 'Select user', + searchHint: 'Search user...', + options: _intOptions(lookups.users), + onChanged: (v) => + setState(() => _qualityCheckedById = v), + ), + const SizedBox.shrink(), + ], ), ], ), - FormRowFour( - children: [ - _DateField( - label: 'LR Date', - value: _lrDate, - onTap: () => _pickDate( - current: _lrDate, - onPicked: (d) => setState(() => _lrDate = d), + ), + const SizedBox(height: 16), + if (!widget.isEditing) + GrnLineItemsEditor( + items: _lines, + onChanged: () => setState(() {}), + ) + else ...[ + _SectionCard( + title: 'LINE ITEMS · ${existing?.items.length ?? 0}', + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Text( + 'Line items cannot be changed after posting.', + style: theme.textTheme.bodyMedium?.copyWith( + color: theme.colorScheme.onSurfaceVariant, + ), ), - ), - AppSearchableDropdown( - label: 'Received By', - value: _dropdownValue( - _normalizeUserId(_receivedById), - userIds, - ), - hint: 'Select user', - searchHint: 'Search user...', - options: _intOptions(lookups.users), - onChanged: (v) => - setState(() => _receivedById = v), - ), - AppSearchableDropdown( - label: 'Quality Checked By', - value: _dropdownValue( - _normalizeUserId(_qualityCheckedById), - userIds, - ), - hint: 'Select user', - searchHint: 'Search user...', - options: _intOptions(lookups.users), - onChanged: (v) => - setState(() => _qualityCheckedById = v), - ), - const SizedBox.shrink(), - ], + if (existing?.items.isNotEmpty == true) ...[ + const SizedBox(height: 12), + GrnItemsTable(items: existing!.items), + ], + ], + ), ), ], - ), - ), - const SizedBox(height: 16), - if (!widget.isEditing) - GrnLineItemsEditor( - items: _lines, - onChanged: () => setState(() {}), - ) - else ...[ - _SectionCard( - title: 'LINE ITEMS · ${existing?.items.length ?? 0}', - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, + const SizedBox(height: 16), + _SectionCard( + title: 'ADDITIONAL DETAILS', + child: AppTextField( + controller: _remarksController, + label: 'Remarks', + hint: 'Any additional notes for this receipt.', + maxLines: 4, + ), + ), + const SizedBox(height: 20), + Row( children: [ Text( - 'Line items cannot be changed after posting.', - style: theme.textTheme.bodyMedium?.copyWith( + 'Fields marked * are required', + style: theme.textTheme.bodySmall?.copyWith( + color: theme.colorScheme.onSurfaceVariant, + ), + ), + const Spacer(), + Text( + widget.isEditing + ? '${existing?.items.length ?? 0} line item${(existing?.items.length ?? 0) == 1 ? '' : 's'} · editing header only' + : '${_lines.length} line item${_lines.length == 1 ? '' : 's'} · draft not yet saved', + style: theme.textTheme.bodySmall?.copyWith( color: theme.colorScheme.onSurfaceVariant, ), ), - if (existing?.items.isNotEmpty == true) ...[ - const SizedBox(height: 12), - GrnItemsTable(items: existing!.items), - ], ], ), - ), - ], - const SizedBox(height: 16), - _SectionCard( - title: 'ADDITIONAL DETAILS', - child: AppTextField( - controller: _remarksController, - label: 'Remarks', - hint: 'Any additional notes for this receipt.', - maxLines: 4, - ), - ), - const SizedBox(height: 20), - Row( - children: [ - Text( - 'Fields marked * are required', - style: theme.textTheme.bodySmall?.copyWith( - color: theme.colorScheme.onSurfaceVariant, - ), - ), - const Spacer(), - Text( - widget.isEditing - ? '${existing?.items.length ?? 0} line item${(existing?.items.length ?? 0) == 1 ? '' : 's'} · editing header only' - : '${_lines.length} line item${_lines.length == 1 ? '' : 's'} · draft not yet saved', - style: theme.textTheme.bodySmall?.copyWith( - color: theme.colorScheme.onSurfaceVariant, - ), - ), ], ), - ], - ), - ), - ), ), ); } diff --git a/lib/modules/grn/presentation/screens/grn_list_screen.dart b/lib/modules/grn/presentation/screens/grn_list_screen.dart index 3258e82..e56b407 100644 --- a/lib/modules/grn/presentation/screens/grn_list_screen.dart +++ b/lib/modules/grn/presentation/screens/grn_list_screen.dart @@ -15,6 +15,7 @@ import '../../../../shared/widgets/app_dropdown.dart'; import '../../../../shared/widgets/app_empty_state.dart'; import '../../../../shared/widgets/app_loading_view.dart'; import '../../../../shared/widgets/app_pagination.dart'; +import '../../../../shared/widgets/app_responsive_filter_bar.dart'; import '../../../../shared/widgets/app_searchable_dropdown.dart'; import '../../../../shared/widgets/can_permission.dart'; import '../../../../shared/widgets/app_table_action_icon.dart'; @@ -83,20 +84,15 @@ class _GrnListScreenState extends ConsumerState { ), Expanded( child: AppTableShell( - toolbar: LayoutBuilder( - builder: (context, constraints) { - return _FiltersBar( - searchController: _searchController, - query: state.query, - wrapped: constraints.maxWidth < 900, - showExport: canExport, - isExporting: state.isExporting, - onExport: _exportGrns, - onSearch: ref.read(grnListProvider.notifier).setSearch, - onStatusChanged: - ref.read(grnListProvider.notifier).setStatusFilter, - ); - }, + toolbar: _FiltersBar( + searchController: _searchController, + query: state.query, + showExport: canExport, + isExporting: state.isExporting, + onExport: _exportGrns, + onSearch: ref.read(grnListProvider.notifier).setSearch, + onStatusChanged: + ref.read(grnListProvider.notifier).setStatusFilter, ), footer: AppPagination( currentPage: state.query.page, @@ -191,7 +187,6 @@ class _FiltersBar extends StatelessWidget { const _FiltersBar({ required this.searchController, required this.query, - required this.wrapped, required this.onSearch, required this.onStatusChanged, this.showExport = false, @@ -201,7 +196,6 @@ class _FiltersBar extends StatelessWidget { final TextEditingController searchController; final GrnListQuery query; - final bool wrapped; final ValueChanged onSearch; final ValueChanged onStatusChanged; final bool showExport; @@ -212,25 +206,21 @@ class _FiltersBar extends StatelessWidget { Widget build(BuildContext context) { final searchField = Padding( padding: const EdgeInsets.only(top: 8), - child: SizedBox( - width: wrapped ? double.infinity : null, - child: TextField( - controller: searchController, - onChanged: onSearch, - decoration: const InputDecoration( - labelText: 'Search', - hintText: 'Search GRN number, PO, vendor...', - prefixIcon: Icon(Icons.search, size: 20), - floatingLabelBehavior: FloatingLabelBehavior.always, - isDense: true, - ), + child: TextField( + controller: searchController, + onChanged: onSearch, + decoration: const InputDecoration( + labelText: 'Search', + hintText: 'Search GRN number, PO, vendor...', + prefixIcon: Icon(Icons.search, size: 20), + floatingLabelBehavior: FloatingLabelBehavior.always, + isDense: true, ), ), ); - final statusFilter = SizedBox( - width: wrapped ? double.infinity : 180, - child: AppSearchableDropdown( + final filters = [ + AppSearchableDropdown( label: 'Status', value: query.status, searchHint: 'Search status...', @@ -243,46 +233,24 @@ class _FiltersBar extends StatelessWidget { ], onChanged: onStatusChanged, ), - ); + ]; - final exportButton = OutlinedButton.icon( - onPressed: isExporting ? null : onExport, - icon: isExporting - ? const SizedBox( - width: 18, - height: 18, - child: CircularProgressIndicator(strokeWidth: 2), + return AppResponsiveFilterBar( + search: searchField, + filters: filters, + trailing: showExport + ? OutlinedButton.icon( + onPressed: isExporting ? null : onExport, + icon: isExporting + ? const SizedBox( + width: 18, + height: 18, + child: CircularProgressIndicator(strokeWidth: 2), + ) + : const Icon(Icons.download_outlined, size: 18), + label: Text(isExporting ? 'Exporting...' : 'Export'), ) - : const Icon(Icons.download_outlined, size: 18), - label: Text(isExporting ? 'Exporting...' : 'Export'), - ); - - if (wrapped) { - return Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - searchField, - const SizedBox(height: 12), - statusFilter, - if (showExport) ...[ - const SizedBox(height: 12), - Align(alignment: Alignment.centerRight, child: exportButton), - ], - ], - ); - } - - return Row( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Expanded(flex: 3, child: searchField), - const SizedBox(width: 12), - Expanded(flex: 2, child: statusFilter), - if (showExport) ...[ - const SizedBox(width: 12), - exportButton, - ], - ], + : null, ); } } diff --git a/lib/modules/grn/presentation/widgets/grn_line_items_editor.dart b/lib/modules/grn/presentation/widgets/grn_line_items_editor.dart index f0e4c94..b9e0688 100644 --- a/lib/modules/grn/presentation/widgets/grn_line_items_editor.dart +++ b/lib/modules/grn/presentation/widgets/grn_line_items_editor.dart @@ -664,11 +664,6 @@ class _GrnItemsHeader extends StatelessWidget { child: Text('CURRENT', style: style, textAlign: TextAlign.right), ), const SizedBox(width: 12), - SizedBox( - width: 80, - child: Text('RATE', style: style, textAlign: TextAlign.right), - ), - const SizedBox(width: 12), SizedBox(width: 90, child: Text('BATCH', style: style)), const SizedBox(width: 12), SizedBox(width: 90, child: Text('MFG', style: style)), @@ -714,11 +709,38 @@ class _GrnItemRow extends StatelessWidget { ), Expanded( flex: 3, - child: Text( - item.itemName ?? item.itemCode ?? '—', - style: strong, - maxLines: 2, - overflow: TextOverflow.ellipsis, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + item.itemName ?? item.itemCode ?? '—', + style: strong, + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + if (item.remarks?.trim().isNotEmpty == true) ...[ + const SizedBox(height: 4), + Text( + item.remarks!.trim(), + style: theme.textTheme.bodySmall?.copyWith( + color: theme.colorScheme.onSurfaceVariant, + ), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + ], + if (item.rejectionReason?.trim().isNotEmpty == true) ...[ + const SizedBox(height: 2), + Text( + 'Reject: ${item.rejectionReason!.trim()}', + style: theme.textTheme.bodySmall?.copyWith( + color: theme.colorScheme.error, + ), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + ], + ], ), ), const SizedBox(width: 12), @@ -749,15 +771,6 @@ class _GrnItemRow extends StatelessWidget { ), ), const SizedBox(width: 12), - SizedBox( - width: 80, - child: Text( - item.rate != null ? _formatQty(item.rate!) : '—', - style: body, - textAlign: TextAlign.right, - ), - ), - const SizedBox(width: 12), SizedBox( width: 90, child: Text( diff --git a/lib/modules/master_data/data/datasources/master_crud_remote_data_source.dart b/lib/modules/master_data/data/datasources/master_crud_remote_data_source.dart index 3502954..8183574 100644 --- a/lib/modules/master_data/data/datasources/master_crud_remote_data_source.dart +++ b/lib/modules/master_data/data/datasources/master_crud_remote_data_source.dart @@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../../../core/constants/app_constants.dart'; import '../../../../core/network/dio_client.dart'; +import '../../../../core/utils/active_option.dart'; import '../../../../shared/models/export_file_result.dart'; import '../../domain/entities/master_definition.dart'; @@ -41,6 +42,7 @@ class MasterCrudRemoteDataSource { int page = 1, int limit = 20, String? search, + bool? isActive, }) async { final response = await dio.get( definition.apiPath, @@ -48,6 +50,7 @@ class MasterCrudRemoteDataSource { 'page': page, 'limit': limit, if (search != null && search.isNotEmpty) 'search': search, + if (isActive != null) 'is_active': isActive, }, ); @@ -85,10 +88,9 @@ class MasterCrudRemoteDataSource { definition, page: page, limit: AppConstants.defaultPageSize, + isActive: true, ); - allItems.addAll( - result.items.where((item) => item['is_active'] != false), - ); + allItems.addAll(result.items.where(isActiveOptionRow)); if (page >= result.totalPages) break; page++; } diff --git a/lib/modules/master_data/presentation/screens/master_list_screen.dart b/lib/modules/master_data/presentation/screens/master_list_screen.dart index 7831ee8..a3611e4 100644 --- a/lib/modules/master_data/presentation/screens/master_list_screen.dart +++ b/lib/modules/master_data/presentation/screens/master_list_screen.dart @@ -189,18 +189,13 @@ class _MasterListScreenState extends ConsumerState { ), Expanded( child: AppTableShell( - toolbar: LayoutBuilder( - builder: (context, constraints) { - return AppSearchExportBar( - wrapped: constraints.maxWidth < 640, - searchController: _searchController, - searchHint: _searchHint(def), - isExporting: state.isExporting, - showExport: canExport, - onSearch: notifier.setSearch, - onExport: _exportRecords, - ); - }, + toolbar: AppSearchExportBar( + searchController: _searchController, + searchHint: _searchHint(def), + isExporting: state.isExporting, + showExport: canExport, + onSearch: notifier.setSearch, + onExport: _exportRecords, ), footer: AppPagination( currentPage: state.page, diff --git a/lib/modules/master_data/presentation/widgets/master_form_panel.dart b/lib/modules/master_data/presentation/widgets/master_form_panel.dart index 0c467de..0f39ab6 100644 --- a/lib/modules/master_data/presentation/widgets/master_form_panel.dart +++ b/lib/modules/master_data/presentation/widgets/master_form_panel.dart @@ -5,6 +5,7 @@ import '../../../../core/errors/failure.dart'; import '../../../../core/utils/validators.dart'; import '../../../../shared/widgets/app_button.dart'; import '../../../../shared/widgets/app_dropdown.dart'; +import '../../../../shared/widgets/app_form_toggle_field.dart'; import '../../../../shared/widgets/app_searchable_dropdown.dart'; import '../../../../shared/widgets/app_loading_view.dart'; import '../../../../shared/widgets/app_side_panel.dart'; @@ -112,9 +113,8 @@ class _MasterFormPanelState extends ConsumerState { switch (field.type) { case MasterFieldType.boolean: if (field.key == 'is_active') { - return SwitchListTile( - contentPadding: EdgeInsets.zero, - title: Text(field.label), + return AppFormToggleField( + label: field.label, value: value == true, onChanged: (checked) => notifier.updateValue(field.key, checked), ); diff --git a/lib/modules/master_data/presentation/widgets/master_inline_create_form.dart b/lib/modules/master_data/presentation/widgets/master_inline_create_form.dart index 5002a7d..1d97e97 100644 --- a/lib/modules/master_data/presentation/widgets/master_inline_create_form.dart +++ b/lib/modules/master_data/presentation/widgets/master_inline_create_form.dart @@ -5,6 +5,7 @@ import '../../../../core/errors/failure.dart'; import '../../../../core/utils/validators.dart'; import '../../../../shared/widgets/app_button.dart'; import '../../../../shared/widgets/app_dropdown.dart'; +import '../../../../shared/widgets/app_form_toggle_field.dart'; import '../../../../shared/widgets/app_loading_view.dart'; import '../../../../shared/widgets/app_searchable_dropdown.dart'; import '../../../../shared/widgets/error_view.dart'; @@ -103,10 +104,8 @@ class _MasterInlineCreateFormState switch (field.type) { case MasterFieldType.boolean: if (field.key == 'is_active') { - return SwitchListTile( - contentPadding: EdgeInsets.zero, - dense: true, - title: Text(field.label), + return AppFormToggleField( + label: field.label, value: value == true, onChanged: (checked) => notifier.updateValue(field.key, checked), ); @@ -363,20 +362,38 @@ class _MasterInlineCreateFormState @override Widget build(BuildContext context) { final theme = Theme.of(context); + final isDark = theme.brightness == Brightness.dark; + final quickAddBackground = isDark + ? theme.colorScheme.primary.withValues(alpha: 0.16) + : theme.colorScheme.primary.withValues(alpha: 0.08); + final quickAddBorder = isDark + ? theme.colorScheme.primary.withValues(alpha: 0.65) + : theme.colorScheme.primary.withValues(alpha: 0.35); + final quickAddGlow = isDark + ? theme.colorScheme.primary.withValues(alpha: 0.22) + : theme.colorScheme.primary.withValues(alpha: 0.12); final formAsync = ref.watch(masterFormProvider(_args)); final def = _definition; final isSubmitting = formAsync.valueOrNull?.isSubmitting ?? false; return Material( - color: theme.colorScheme.surfaceContainerHighest.withValues(alpha: 0.45), + color: quickAddBackground, borderRadius: BorderRadius.circular(12), clipBehavior: Clip.none, child: Ink( decoration: BoxDecoration( borderRadius: BorderRadius.circular(12), border: Border.all( - color: theme.colorScheme.primary.withValues(alpha: 0.28), + color: quickAddBorder, + width: 1.2, ), + boxShadow: [ + BoxShadow( + color: quickAddGlow, + blurRadius: 12, + offset: const Offset(0, 2), + ), + ], ), child: Padding( padding: const EdgeInsets.fromLTRB(12, 8, 12, 12), @@ -447,29 +464,40 @@ class _MasterInlineCreateFormState formState: formState, twoColumns: useTwoColumns, ), - if (active != null) ...[ - const SizedBox(height: 4), - _buildField( - field: active, - formState: formState, - ), - ], const SizedBox(height: 8), Row( - mainAxisAlignment: MainAxisAlignment.end, + crossAxisAlignment: CrossAxisAlignment.center, children: [ - TextButton( - onPressed: - isSubmitting ? null : widget.onCancel, - child: const Text('Cancel'), - ), - const SizedBox(width: 8), - AppButton( - label: 'Add ${def.title}', - expand: false, - icon: Icons.check, - isLoading: isSubmitting, - onPressed: isSubmitting ? null : _submit, + if (active != null) + Expanded( + child: Align( + alignment: Alignment.centerLeft, + child: _buildField( + field: active, + formState: formState, + ), + ), + ) + else + const Spacer(), + const SizedBox(width: 12), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + TextButton( + onPressed: + isSubmitting ? null : widget.onCancel, + child: const Text('Cancel'), + ), + const SizedBox(width: 8), + AppButton( + label: 'Add ${def.title}', + expand: false, + icon: Icons.check, + isLoading: isSubmitting, + onPressed: isSubmitting ? null : _submit, + ), + ], ), ], ), diff --git a/lib/modules/master_data/presentation/widgets/master_quick_add.dart b/lib/modules/master_data/presentation/widgets/master_quick_add.dart index ed6d5e0..f4d203c 100644 --- a/lib/modules/master_data/presentation/widgets/master_quick_add.dart +++ b/lib/modules/master_data/presentation/widgets/master_quick_add.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; @@ -47,7 +49,9 @@ class MasterQuickAddDropdown extends ConsumerStatefulWidget { final bool enabled; final bool isDense; final Map? initialValues; - final VoidCallback? refreshLookups; + /// Called after create succeeds; awaited before [onChanged] so callers can + /// reload dependent lookups (e.g. item → UOM / GST defaults). + final FutureOr Function()? refreshLookups; final String? addNewLabel; @override @@ -114,8 +118,14 @@ class _MasterQuickAddDropdownState }); } - void _onSaved(String createdId) { - widget.refreshLookups?.call(); + Future _onSaved(String createdId) async { + try { + final refresh = widget.refreshLookups; + if (refresh != null) await refresh(); + } catch (_) { + // Still select the created row even if lookup refresh fails. + } + if (!mounted) return; if (createdId != 'created') { final parsed = widget.parseCreatedId(createdId); @@ -127,7 +137,8 @@ class _MasterQuickAddDropdownState _collapse(); if (!mounted) return; - showAppToastFromSnackBar(context, + showAppToastFromSnackBar( + context, SnackBar( content: Text('${_titleCase(masterQuickAddNoun(widget.masterId))} added'), diff --git a/lib/modules/masters/data/datasources/master_remote_data_source.dart b/lib/modules/masters/data/datasources/master_remote_data_source.dart index 5bccac6..f22290d 100644 --- a/lib/modules/masters/data/datasources/master_remote_data_source.dart +++ b/lib/modules/masters/data/datasources/master_remote_data_source.dart @@ -4,6 +4,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../../../core/constants/api_endpoints.dart'; import '../../../../core/constants/app_constants.dart'; import '../../../../core/network/dio_client.dart'; +import '../../../../core/utils/active_option.dart'; import '../../../../shared/models/user_management_models.dart'; final masterRemoteDataSourceProvider = Provider((ref) { @@ -65,7 +66,7 @@ class MasterRemoteDataSource { final options = []; for (final item in rows) { - if (item['is_active'] == false) continue; + if (!isActiveOptionRow(item)) continue; final id = item['id']?.toString() ?? ''; if (id.isEmpty) continue; @@ -104,7 +105,7 @@ class MasterRemoteDataSource { final pctById = {}; for (final item in rows) { - if (item['is_active'] == false) continue; + if (!isActiveOptionRow(item)) continue; final id = item['id']?.toString() ?? ''; if (id.isEmpty) continue; @@ -135,7 +136,7 @@ class MasterRemoteDataSource { ); final categoryFilter = itemCategoryId?.toString(); return rows - .where((item) => item['is_active'] != false) + .where(isActiveOptionRow) .where( (item) => categoryFilter == null || @@ -157,7 +158,7 @@ class MasterRemoteDataSource { queryParameters: {'is_active': true}, ); return rows - .where((item) => item['is_active'] != false) + .where(isActiveOptionRow) .map( (item) => FilterOptionModel( id: item['id']?.toString() ?? '', diff --git a/lib/modules/purchase_orders/presentation/providers/purchase_order_lookups_provider.dart b/lib/modules/purchase_orders/presentation/providers/purchase_order_lookups_provider.dart index 2bd8f55..ce133ec 100644 --- a/lib/modules/purchase_orders/presentation/providers/purchase_order_lookups_provider.dart +++ b/lib/modules/purchase_orders/presentation/providers/purchase_order_lookups_provider.dart @@ -1,6 +1,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../../../core/constants/app_constants.dart'; +import '../../../../core/utils/active_option.dart'; import '../../../../shared/models/user_management_models.dart'; import '../../../../shared/models/vendor_model.dart'; import '../../../masters/data/datasources/master_remote_data_source.dart'; @@ -157,11 +158,12 @@ Future> _fetchActiveVendors( final data = result.data!; vendors.addAll( data.items - .where((vendor) { - if (!vendor.isActive) return false; - final status = (vendor.status ?? '').trim().toLowerCase(); - return status != 'blacklisted'; - }) + .where( + (vendor) => isActiveVendorOption( + isActive: vendor.isActive, + status: vendor.status, + ), + ) .map( (vendor) => FilterOptionModel(id: vendor.id, name: vendor.vendorName), diff --git a/lib/modules/purchase_orders/presentation/screens/purchase_order_form_screen.dart b/lib/modules/purchase_orders/presentation/screens/purchase_order_form_screen.dart index 2158d35..a842b60 100644 --- a/lib/modules/purchase_orders/presentation/screens/purchase_order_form_screen.dart +++ b/lib/modules/purchase_orders/presentation/screens/purchase_order_form_screen.dart @@ -366,243 +366,238 @@ class _PurchaseOrderFormScreenState extends ConsumerState _pickDate( - current: _poDate, - onPicked: (d) => setState(() => _poDate = d), - ), - ), - AppSearchableDropdown( - label: 'PO Type *', - value: _poType, - hint: 'Select PO type', - searchHint: 'Search type...', - options: poTypeOptions - .map( - (e) => AppDropdownOption( - value: e.$1, - label: e.$2, - ), - ) - .toList(), - onChanged: (v) => setState(() => _poType = v), - validator: (v) => - v == null ? 'PO type is required' : null, - ), - AppSearchableDropdown( - label: 'Vendor *', - value: _dropdownValue(_vendorId, vendorIds), - hint: 'Select vendor', - searchHint: 'Search vendor...', - options: _intOptions(lookups.vendors), - onChanged: (v) => setState(() => _vendorId = v), - validator: (v) => - v == null ? 'Vendor is required' : null, - ), - MasterQuickAddDropdown( - masterId: 'plants', - label: 'Plant *', - value: _dropdownValue(_plantId, plantIds), - hint: 'Select plant', - searchHint: 'Search plant...', - options: _intOptions(lookups.plants), - refreshLookups: () => - ref.invalidate(purchaseOrderLookupsProvider), - parseCreatedId: int.tryParse, - onChanged: (v) => setState(() => _plantId = v), - validator: (v) => - v == null ? 'Plant is required' : null, - ), - ], - ), - FormRowFour( - children: [ - MasterQuickAddDropdown( - masterId: 'warehouses', - label: 'Warehouse', - value: _warehouseId, - hint: 'Select warehouse', - searchHint: 'Search warehouse...', - options: _nullableIntOptions(lookups.warehouses), - refreshLookups: () => - ref.invalidate(purchaseOrderLookupsProvider), - parseCreatedId: int.tryParse, - onChanged: (v) => - setState(() => _warehouseId = v), - ), - MasterQuickAddDropdown( - masterId: 'brands', - label: 'Brand', - value: _brandId, - hint: 'Select brand', - searchHint: 'Search brand...', - options: _nullableIntOptions(lookups.brands), - refreshLookups: () => - ref.invalidate(purchaseOrderLookupsProvider), - parseCreatedId: int.tryParse, - onChanged: (v) => setState(() => _brandId = v), - ), - MasterQuickAddDropdown( - masterId: 'payment_terms', - label: 'Payment Term', - value: _paymentTermId, - hint: 'Select payment term', - searchHint: 'Search payment term...', - options: - _nullableIntOptions(lookups.paymentTerms), - refreshLookups: () => - ref.invalidate(purchaseOrderLookupsProvider), - parseCreatedId: int.tryParse, - onChanged: (v) => - setState(() => _paymentTermId = v), - ), - MasterQuickAddDropdown( - masterId: 'delivery_terms', - label: 'Delivery Term', - value: _deliveryTermId, - hint: 'Select delivery term', - searchHint: 'Search delivery term...', - options: - _nullableIntOptions(lookups.deliveryTerms), - refreshLookups: () => - ref.invalidate(purchaseOrderLookupsProvider), - parseCreatedId: int.tryParse, - onChanged: (v) => - setState(() => _deliveryTermId = v), - ), - ], - ), - FormRow( - columnCount: 4, - children: [ - _DateField( - label: 'Expected Delivery', - value: _expectedDeliveryDate, - onTap: () => _pickDate( - current: _expectedDeliveryDate, - onPicked: (d) => setState( - () => _expectedDeliveryDate = d, - ), - ), - ), - ], - ), + child: Form( + key: _formKey, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + _buildHeader(existing), + if (_showReapprovalWarning(existing)) ...[ + const SizedBox(height: 8), + _ReapprovalBanner(), ], - ), - ), - const SizedBox(height: 16), - PurchaseOrderLineItemsEditor( - lines: _lines, - items: lookups.items, - itemHsnById: lookups.itemHsnById, - itemUomById: lookups.itemUomById, - itemGstRateById: lookups.itemGstRateById, - uom: lookups.uom, - gstRates: lookups.gstRates, - gstRatePctById: lookups.gstRatePctById, - onAddLine: _addLine, - onRemoveLine: _removeLine, - onChanged: () => setState(() {}), - ), - const SizedBox(height: 16), - LayoutBuilder( - builder: (context, constraints) { - final stack = constraints.maxWidth < 900; - final additional = _SectionCard( - title: 'ADDITIONAL DETAILS', + const SizedBox(height: 16), + _SectionCard( + title: 'ORDER DETAILS', child: Column( children: [ - AppTextField( - controller: _termsController, - label: 'Terms & Conditions', - hint: 'Payment terms, inspection conditions, etc.', - maxLines: 5, + FormRowFour( + children: [ + _DateField( + label: 'PO Date *', + value: _poDate, + onTap: () => _pickDate( + current: _poDate, + onPicked: (d) => setState(() => _poDate = d), + ), + ), + AppSearchableDropdown( + label: 'PO Type *', + value: _poType, + hint: 'Select PO type', + searchHint: 'Search type...', + options: poTypeOptions + .map( + (e) => AppDropdownOption( + value: e.$1, + label: e.$2, + ), + ) + .toList(), + onChanged: (v) => setState(() => _poType = v), + validator: (v) => + v == null ? 'PO type is required' : null, + ), + AppSearchableDropdown( + label: 'Vendor *', + value: _dropdownValue(_vendorId, vendorIds), + hint: 'Select vendor', + searchHint: 'Search vendor...', + options: _intOptions(lookups.vendors), + onChanged: (v) => setState(() => _vendorId = v), + validator: (v) => + v == null ? 'Vendor is required' : null, + ), + MasterQuickAddDropdown( + masterId: 'plants', + label: 'Plant *', + value: _dropdownValue(_plantId, plantIds), + hint: 'Select plant', + searchHint: 'Search plant...', + options: _intOptions(lookups.plants), + refreshLookups: () => + ref.invalidate(purchaseOrderLookupsProvider), + parseCreatedId: int.tryParse, + onChanged: (v) => setState(() => _plantId = v), + validator: (v) => + v == null ? 'Plant is required' : null, + ), + ], ), - AppTextField( - controller: _remarksController, - label: 'Remarks', - hint: 'Any additional notes for this order.', - maxLines: 4, + FormRowFour( + children: [ + MasterQuickAddDropdown( + masterId: 'warehouses', + label: 'Warehouse', + value: _warehouseId, + hint: 'Select warehouse', + searchHint: 'Search warehouse...', + options: _nullableIntOptions(lookups.warehouses), + refreshLookups: () => + ref.invalidate(purchaseOrderLookupsProvider), + parseCreatedId: int.tryParse, + onChanged: (v) => + setState(() => _warehouseId = v), + ), + MasterQuickAddDropdown( + masterId: 'brands', + label: 'Brand', + value: _brandId, + hint: 'Select brand', + searchHint: 'Search brand...', + options: _nullableIntOptions(lookups.brands), + refreshLookups: () => + ref.invalidate(purchaseOrderLookupsProvider), + parseCreatedId: int.tryParse, + onChanged: (v) => setState(() => _brandId = v), + ), + MasterQuickAddDropdown( + masterId: 'payment_terms', + label: 'Payment Term', + value: _paymentTermId, + hint: 'Select payment term', + searchHint: 'Search payment term...', + options: + _nullableIntOptions(lookups.paymentTerms), + refreshLookups: () => + ref.invalidate(purchaseOrderLookupsProvider), + parseCreatedId: int.tryParse, + onChanged: (v) => + setState(() => _paymentTermId = v), + ), + MasterQuickAddDropdown( + masterId: 'delivery_terms', + label: 'Delivery Term', + value: _deliveryTermId, + hint: 'Select delivery term', + searchHint: 'Search delivery term...', + options: + _nullableIntOptions(lookups.deliveryTerms), + refreshLookups: () => + ref.invalidate(purchaseOrderLookupsProvider), + parseCreatedId: int.tryParse, + onChanged: (v) => + setState(() => _deliveryTermId = v), + ), + ], + ), + FormRow( + columnCount: 4, + children: [ + _DateField( + label: 'Expected Delivery', + value: _expectedDeliveryDate, + onTap: () => _pickDate( + current: _expectedDeliveryDate, + onPicked: (d) => setState( + () => _expectedDeliveryDate = d, + ), + ), + ), + ], ), ], ), - ); - final summary = _AmountSummaryCard( - totals: totals, - freightController: _freightController, - otherChargesController: _otherChargesController, - discountController: _discountController, - isEditing: widget.isEditing, - ); - - if (stack) { - return Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - additional, - const SizedBox(height: 16), - summary, - ], - ); - } - - return Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Expanded(flex: 3, child: additional), - const SizedBox(width: 16), - Expanded(flex: 2, child: summary), - ], - ); - }, - ), - const SizedBox(height: 20), - Row( - children: [ - Text( - 'Fields marked * are required', - style: theme.textTheme.bodySmall?.copyWith( - color: theme.colorScheme.onSurfaceVariant, - ), ), - const Spacer(), - Text( - widget.isEditing - ? '${_lines.length} line item${_lines.length == 1 ? '' : 's'} · editing existing draft' - : '${_lines.length} line item${_lines.length == 1 ? '' : 's'} · draft not yet saved', - style: theme.textTheme.bodySmall?.copyWith( - color: theme.colorScheme.onSurfaceVariant, - ), + const SizedBox(height: 16), + PurchaseOrderLineItemsEditor( + lines: _lines, + items: lookups.items, + itemHsnById: lookups.itemHsnById, + itemUomById: lookups.itemUomById, + itemGstRateById: lookups.itemGstRateById, + uom: lookups.uom, + gstRates: lookups.gstRates, + gstRatePctById: lookups.gstRatePctById, + onAddLine: _addLine, + onRemoveLine: _removeLine, + onChanged: () => setState(() {}), + ), + const SizedBox(height: 16), + LayoutBuilder( + builder: (context, constraints) { + final stack = constraints.maxWidth < 900; + final additional = _SectionCard( + title: 'ADDITIONAL DETAILS', + child: Column( + children: [ + AppTextField( + controller: _termsController, + label: 'Terms & Conditions', + hint: + 'Payment terms, inspection conditions, etc.', + maxLines: 5, + ), + AppTextField( + controller: _remarksController, + label: 'Remarks', + hint: 'Any additional notes for this order.', + maxLines: 4, + ), + ], + ), + ); + final summary = _AmountSummaryCard( + totals: totals, + freightController: _freightController, + otherChargesController: _otherChargesController, + discountController: _discountController, + isEditing: widget.isEditing, + ); + + if (stack) { + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + additional, + const SizedBox(height: 16), + summary, + ], + ); + } + + return Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded(flex: 3, child: additional), + const SizedBox(width: 16), + Expanded(flex: 2, child: summary), + ], + ); + }, + ), + const SizedBox(height: 20), + Row( + children: [ + Text( + 'Fields marked * are required', + style: theme.textTheme.bodySmall?.copyWith( + color: theme.colorScheme.onSurfaceVariant, + ), + ), + const Spacer(), + Text( + widget.isEditing + ? '${_lines.length} line item${_lines.length == 1 ? '' : 's'} · editing existing draft' + : '${_lines.length} line item${_lines.length == 1 ? '' : 's'} · draft not yet saved', + style: theme.textTheme.bodySmall?.copyWith( + color: theme.colorScheme.onSurfaceVariant, + ), + ), + ], ), ], ), - ], - ), - ), - ), ), ); } @@ -718,7 +713,7 @@ class _PurchaseOrderFormScreenState extends ConsumerState const AppLoadingView(message: 'Loading form options...'), error: (e, _) => ErrorView.fromFailure( diff --git a/lib/modules/purchase_orders/presentation/screens/purchase_order_list_screen.dart b/lib/modules/purchase_orders/presentation/screens/purchase_order_list_screen.dart index 5121981..c54157c 100644 --- a/lib/modules/purchase_orders/presentation/screens/purchase_order_list_screen.dart +++ b/lib/modules/purchase_orders/presentation/screens/purchase_order_list_screen.dart @@ -16,6 +16,7 @@ import '../../../../shared/widgets/app_dropdown.dart'; import '../../../../shared/widgets/app_empty_state.dart'; import '../../../../shared/widgets/app_loading_view.dart'; import '../../../../shared/widgets/app_pagination.dart'; +import '../../../../shared/widgets/app_responsive_filter_bar.dart'; import '../../../../shared/widgets/app_search_field.dart'; import '../../../../shared/widgets/app_searchable_dropdown.dart'; import '../../../../shared/widgets/can_permission.dart'; @@ -103,23 +104,18 @@ class _PurchaseOrderListScreenState extends ConsumerState> statusOptions; - final bool wrapped; final ValueChanged onSearch; final ValueChanged onStatusChanged; final ValueChanged onPoTypeChanged; @@ -327,48 +321,22 @@ class _FiltersBar extends StatelessWidget { ), ]; - final exportButton = OutlinedButton.icon( - onPressed: isExporting ? null : onExport, - icon: isExporting - ? const SizedBox( - width: 18, - height: 18, - child: CircularProgressIndicator(strokeWidth: 2), + return AppResponsiveFilterBar( + search: searchField, + filters: filters, + trailing: showExport + ? OutlinedButton.icon( + onPressed: isExporting ? null : onExport, + icon: isExporting + ? const SizedBox( + width: 18, + height: 18, + child: CircularProgressIndicator(strokeWidth: 2), + ) + : const Icon(Icons.download_outlined, size: 18), + label: Text(isExporting ? 'Exporting...' : 'Export'), ) - : const Icon(Icons.download_outlined, size: 18), - label: Text(isExporting ? 'Exporting...' : 'Export'), - ); - - if (wrapped) { - return Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - searchField, - const SizedBox(height: 12), - filters[0], - const SizedBox(height: 12), - filters[1], - if (showExport) ...[ - const SizedBox(height: 12), - Align(alignment: Alignment.centerRight, child: exportButton), - ], - ], - ); - } - - return Row( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Expanded(flex: 3, child: searchField), - const SizedBox(width: 12), - Expanded(flex: 2, child: filters[0]), - const SizedBox(width: 12), - Expanded(flex: 2, child: filters[1]), - if (showExport) ...[ - const SizedBox(width: 12), - exportButton, - ], - ], + : null, ); } } diff --git a/lib/modules/purchase_orders/presentation/widgets/purchase_order_line_items_editor.dart b/lib/modules/purchase_orders/presentation/widgets/purchase_order_line_items_editor.dart index 6d11d44..4aa00e2 100644 --- a/lib/modules/purchase_orders/presentation/widgets/purchase_order_line_items_editor.dart +++ b/lib/modules/purchase_orders/presentation/widgets/purchase_order_line_items_editor.dart @@ -381,26 +381,78 @@ class _LineItemCardState extends ConsumerState<_LineItemCard> { setState(() {}); } + /// Prefer live provider maps so quick-add can autofill after lookups refresh. + Map get _itemUomById => + ref.read(purchaseOrderLookupsProvider).valueOrNull?.itemUomById ?? + widget.itemUomById; + + Map get _itemGstRateById => + ref.read(purchaseOrderLookupsProvider).valueOrNull?.itemGstRateById ?? + widget.itemGstRateById; + + Map get _itemHsnById => + ref.read(purchaseOrderLookupsProvider).valueOrNull?.itemHsnById ?? + widget.itemHsnById; + + bool _fillMissingItemDefaults() { + final itemId = widget.line.itemId; + if (itemId == null) return false; + final key = itemId.toString(); + var changed = false; + + final defaultUom = _itemUomById[key]; + if (widget.line.uomId == null && defaultUom != null) { + widget.line.uomId = defaultUom; + changed = true; + } + final defaultGst = _itemGstRateById[key]; + if (widget.line.gstRateId == null && defaultGst != null) { + widget.line.gstRateId = defaultGst; + changed = true; + } + final defaultHsn = _itemHsnById[key]; + if (widget.line.hsnCodeId == null && defaultHsn != null) { + widget.line.hsnCodeId = defaultHsn; + changed = true; + } + return changed; + } + void _onItemChanged(int? itemId) { _updateLine(() { widget.line.itemId = itemId; if (itemId == null) return; final key = itemId.toString(); - final defaultUom = widget.itemUomById[key]; + final defaultUom = _itemUomById[key]; if (defaultUom != null) { widget.line.uomId = defaultUom; } - final defaultGst = widget.itemGstRateById[key]; + final defaultGst = _itemGstRateById[key]; if (defaultGst != null) { widget.line.gstRateId = defaultGst; } - final defaultHsn = widget.itemHsnById[key]; + final defaultHsn = _itemHsnById[key]; if (defaultHsn != null) { widget.line.hsnCodeId = defaultHsn; } }); } + @override + void didUpdateWidget(covariant _LineItemCard oldWidget) { + super.didUpdateWidget(oldWidget); + final mapsChanged = oldWidget.itemUomById != widget.itemUomById || + oldWidget.itemGstRateById != widget.itemGstRateById || + oldWidget.itemHsnById != widget.itemHsnById; + if (!mapsChanged) return; + if (!_fillMissingItemDefaults()) return; + WidgetsBinding.instance.addPostFrameCallback((_) { + if (!mounted) return; + widget.onChanged(); + setState(() {}); + }); + } + @override Widget build(BuildContext context) { final theme = Theme.of(context); @@ -467,8 +519,10 @@ class _LineItemCardState extends ConsumerState<_LineItemCard> { hint: 'Select item', searchHint: 'Search item name or code...', options: itemOptions, - refreshLookups: () => - ref.invalidate(purchaseOrderLookupsProvider), + refreshLookups: () async { + ref.invalidate(purchaseOrderLookupsProvider); + await ref.read(purchaseOrderLookupsProvider.future); + }, parseCreatedId: int.tryParse, onChanged: _onItemChanged, validator: (v) => v == null ? 'Item is required' : null, @@ -500,8 +554,10 @@ class _LineItemCardState extends ConsumerState<_LineItemCard> { hint: 'Select UOM', searchHint: 'Search UOM...', options: uomOptions, - refreshLookups: () => - ref.invalidate(purchaseOrderLookupsProvider), + refreshLookups: () async { + ref.invalidate(purchaseOrderLookupsProvider); + await ref.read(purchaseOrderLookupsProvider.future); + }, parseCreatedId: int.tryParse, onChanged: (v) => _updateLine(() => line.uomId = v), validator: (v) => v == null ? 'Required' : null, @@ -543,8 +599,10 @@ class _LineItemCardState extends ConsumerState<_LineItemCard> { hint: 'Select', searchHint: 'Search GST %...', options: gstOptions, - refreshLookups: () => - ref.invalidate(purchaseOrderLookupsProvider), + refreshLookups: () async { + ref.invalidate(purchaseOrderLookupsProvider); + await ref.read(purchaseOrderLookupsProvider.future); + }, parseCreatedId: int.tryParse, onChanged: (v) => _updateLine(() => line.gstRateId = v), ), diff --git a/lib/modules/rbac/presentation/providers/add_user_form_provider.dart b/lib/modules/rbac/presentation/providers/add_user_form_provider.dart index 19f07ef..7c58bcf 100644 --- a/lib/modules/rbac/presentation/providers/add_user_form_provider.dart +++ b/lib/modules/rbac/presentation/providers/add_user_form_provider.dart @@ -1,5 +1,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../../../../core/constants/app_constants.dart'; +import '../../../../core/utils/active_option.dart'; import '../../../../shared/models/user_management_models.dart'; import '../../../masters/data/datasources/master_remote_data_source.dart'; import '../../../roles/data/repositories/role_repository_impl.dart'; @@ -67,11 +69,21 @@ class AddUserFormNotifier extends FamilyAsyncNotifier final plants = await masterRemote.listPlants(); final designations = await masterRemote.listDesignations(); - final usersResult = await getUsers(const UserListQuery(limit: 100)); + final usersResult = await getUsers( + const UserListQuery( + limit: AppConstants.maxPageSize, + status: 'active', + isActive: true, + ), + ); if (usersResult.failure != null) throw usersResult.failure!; final managers = usersResult.data!.items - .where((user) => isReportingManagerRole(user.roleName)) + .where( + (user) => + isReportingManagerRole(user.roleName) && + isActiveUserOption(status: user.status, isActive: user.isActive), + ) .map((user) => FilterOptionModel(id: user.id, name: user.fullName)) .toList(); diff --git a/lib/modules/rbac/presentation/screens/users_role_management_screen.dart b/lib/modules/rbac/presentation/screens/users_role_management_screen.dart index 1fed7a0..c03d595 100644 --- a/lib/modules/rbac/presentation/screens/users_role_management_screen.dart +++ b/lib/modules/rbac/presentation/screens/users_role_management_screen.dart @@ -13,6 +13,7 @@ import '../../../../shared/providers/permissions_provider.dart'; import '../../../../shared/widgets/app_confirmation_dialog.dart'; import '../../../users/presentation/widgets/user_rich_data_table.dart'; import '../../../../shared/widgets/app_pagination.dart'; +import '../../../../shared/widgets/app_responsive_filter_bar.dart'; import '../../../../shared/widgets/app_dropdown.dart'; import '../../../../shared/widgets/app_card.dart'; import '../../../../shared/widgets/app_data_table.dart'; @@ -715,44 +716,38 @@ class _UsersTabState extends ConsumerState<_UsersTab> { children: [ Padding( padding: const EdgeInsets.all(16), - child: LayoutBuilder( - builder: (context, constraints) { - final useWrappedFilters = constraints.maxWidth < 1000; - return _UsersFilterBar( - wrapped: useWrappedFilters, - roleFilter: roleFilter, - departmentFilter: departmentFilter, - statusFilter: statusFilter, - roles: roles, - departments: departments, - statuses: statuses, - isExporting: usersState.isExporting, - showExport: canExport, - searchController: _searchController, - onExport: _exportUsers, - onSearch: ref.read(usersListProvider.notifier).setSearch, - onRoleChanged: (value) { - ref.read(usersListProvider.notifier).setRoleFilter( - value == 'All Roles' - ? null - : _roleIdForName(value, filters), - ); - }, - onDepartmentChanged: (value) { - ref.read(usersListProvider.notifier).setDepartmentFilter( - value == 'All Departments' - ? null - : _departmentIdForName(value, filters), - ); - }, - onStatusChanged: (value) { - ref.read(usersListProvider.notifier).setStatusFilter( - value == 'All Statuses' - ? null - : _statusValueForLabel(value, filters), - ); - }, - ); + child: _UsersFilterBar( + roleFilter: roleFilter, + departmentFilter: departmentFilter, + statusFilter: statusFilter, + roles: roles, + departments: departments, + statuses: statuses, + isExporting: usersState.isExporting, + showExport: canExport, + searchController: _searchController, + onExport: _exportUsers, + onSearch: ref.read(usersListProvider.notifier).setSearch, + onRoleChanged: (value) { + ref.read(usersListProvider.notifier).setRoleFilter( + value == 'All Roles' + ? null + : _roleIdForName(value, filters), + ); + }, + onDepartmentChanged: (value) { + ref.read(usersListProvider.notifier).setDepartmentFilter( + value == 'All Departments' + ? null + : _departmentIdForName(value, filters), + ); + }, + onStatusChanged: (value) { + ref.read(usersListProvider.notifier).setStatusFilter( + value == 'All Statuses' + ? null + : _statusValueForLabel(value, filters), + ); }, ), ), @@ -807,7 +802,6 @@ class _UsersTabState extends ConsumerState<_UsersTab> { class _UsersFilterBar extends StatelessWidget { const _UsersFilterBar({ - required this.wrapped, required this.roleFilter, required this.departmentFilter, required this.statusFilter, @@ -824,7 +818,6 @@ class _UsersFilterBar extends StatelessWidget { required this.onStatusChanged, }); - final bool wrapped; final String roleFilter; final String departmentFilter; final String statusFilter; @@ -878,56 +871,26 @@ class _UsersFilterBar extends StatelessWidget { ), ]; - final exportButton = Padding( - padding: const EdgeInsets.only(top: 8), - child: OutlinedButton.icon( - onPressed: isExporting ? null : onExport, - style: OutlinedButton.styleFrom( - minimumSize: const Size(0, 48), - padding: const EdgeInsets.symmetric(horizontal: 16), - ), - icon: isExporting - ? const SizedBox( - width: 18, - height: 18, - child: CircularProgressIndicator(strokeWidth: 2), - ) - : const Icon(Icons.download_outlined, size: 18), - label: Text(isExporting ? 'Exporting...' : 'Export'), - ), - ); - - if (wrapped) { - return Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - searchField, - const SizedBox(height: 12), - ...filters.expand((f) => [f, const SizedBox(height: 12)]).toList() - ..removeLast(), - if (showExport) ...[ - const SizedBox(height: 12), - exportButton, - ], - ], - ); - } - - return Row( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Expanded(flex: 3, child: searchField), - const SizedBox(width: 12), - Expanded(flex: 2, child: filters[0]), - const SizedBox(width: 12), - Expanded(flex: 2, child: filters[1]), - const SizedBox(width: 12), - Expanded(child: filters[2]), - if (showExport) ...[ - const SizedBox(width: 12), - exportButton, - ], - ], + return AppResponsiveFilterBar( + search: searchField, + filters: filters, + trailing: showExport + ? OutlinedButton.icon( + onPressed: isExporting ? null : onExport, + style: OutlinedButton.styleFrom( + minimumSize: const Size(0, 48), + padding: const EdgeInsets.symmetric(horizontal: 16), + ), + icon: isExporting + ? const SizedBox( + width: 18, + height: 18, + child: CircularProgressIndicator(strokeWidth: 2), + ) + : const Icon(Icons.download_outlined, size: 18), + label: Text(isExporting ? 'Exporting...' : 'Export'), + ) + : null, ); } } @@ -1314,7 +1277,7 @@ class _PermissionMatrixTabState extends ConsumerState<_PermissionMatrixTab> { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Role permission matrix', + 'Role Permission Matrix', style: Theme.of(context) .textTheme .titleMedium @@ -1426,7 +1389,7 @@ class _PermissionMatrixTable extends ConsumerWidget { AppDataColumn( label: 'Module', flex: 3, - searchText: (module) => '${module.name} ${module.code}', + enableSearch: false, cellBuilder: (context, module) { final index = matrix.modules.indexOf(module); final appearance = @@ -1465,10 +1428,7 @@ class _PermissionMatrixTable extends ConsumerWidget { label: permissionActionLabel(action), flex: 1, alignment: Alignment.center, - searchText: (module) { - final checked = module.granted[action] ?? false; - return checked ? 'yes granted true' : 'no denied false'; - }, + enableSearch: false, cellBuilder: (context, module) { final checked = module.granted[action] ?? false; return Checkbox( diff --git a/lib/modules/reports/domain/entities/depreciation_report.dart b/lib/modules/reports/domain/entities/depreciation_report.dart index 2818176..3e140b8 100644 --- a/lib/modules/reports/domain/entities/depreciation_report.dart +++ b/lib/modules/reports/domain/entities/depreciation_report.dart @@ -1,3 +1,4 @@ +import '../../../../core/utils/active_option.dart'; import '../../../../shared/models/asset_model.dart'; class ReportFilterOption { @@ -65,6 +66,10 @@ class DepreciationReportFilters { final raw = json[key]; if (raw is List && raw.isNotEmpty) { return raw + .where((item) { + if (item is! Map) return true; + return isActiveOptionRow(Map.from(item)); + }) .map(ReportFilterOption.fromDynamic) .where((o) => o.value.isNotEmpty) .toList(); diff --git a/lib/modules/reports/presentation/screens/depreciation_report_screen.dart b/lib/modules/reports/presentation/screens/depreciation_report_screen.dart index 09122d8..55bb361 100644 --- a/lib/modules/reports/presentation/screens/depreciation_report_screen.dart +++ b/lib/modules/reports/presentation/screens/depreciation_report_screen.dart @@ -18,10 +18,12 @@ import '../../../../shared/widgets/app_empty_state.dart'; import '../../../../shared/widgets/app_filter_date_field.dart'; import '../../../../shared/widgets/app_loading_view.dart'; import '../../../../shared/widgets/app_pagination.dart'; +import '../../../../shared/widgets/app_responsive_filter_bar.dart'; import '../../../../shared/widgets/app_searchable_dropdown.dart'; import '../../../../shared/widgets/app_table_shell.dart'; import '../../../../shared/widgets/error_view.dart'; import '../../../../shared/widgets/page_header.dart'; +import '../../../../shared/widgets/app_search_field.dart'; import '../../domain/entities/depreciation_report.dart'; import '../providers/depreciation_report_provider.dart'; import '../../../../shared/widgets/app_toast.dart'; @@ -158,7 +160,7 @@ class _DepreciationReportScreenState ) : const Icon(Icons.download_outlined), label: Text( - state.isExporting ? 'Exporting...' : 'Export CSV', + state.isExporting ? 'Exporting...' : 'Export', ), ), ], @@ -167,32 +169,27 @@ class _DepreciationReportScreenState const SizedBox(height: 12), Expanded( child: AppTableShell( - toolbar: LayoutBuilder( - builder: (context, constraints) { - return _FiltersBar( - searchController: _searchController, - filters: state.filters, - query: state.query, - wrapped: constraints.maxWidth < 1100, - onSearch: notifier.setSearch, - onPlantChanged: notifier.setPlantId, - onCategoryChanged: notifier.setItemCategoryId, - onSubcategoryChanged: notifier.setItemSubcategoryId, - onDepartmentChanged: notifier.setDepartmentId, - onStatusChanged: notifier.setStatus, - onMethodChanged: notifier.setDepreciationMethod, - onIsActiveChanged: notifier.setIsActive, - onPickAsOfDate: () => _pickAsOfDate(state.query), - onClearAsOfDate: () => notifier.setAsOfDate(null), - onPickPurchaseRange: () => - _pickPurchaseDateRange(state.query), - onClearPurchaseRange: () => - notifier.setPurchaseDateRange(null, null), - onReset: () { - _searchController.clear(); - notifier.resetFilters(); - }, - ); + toolbar: _FiltersBar( + searchController: _searchController, + filters: state.filters, + query: state.query, + onSearch: notifier.setSearch, + onPlantChanged: notifier.setPlantId, + onCategoryChanged: notifier.setItemCategoryId, + onSubcategoryChanged: notifier.setItemSubcategoryId, + onDepartmentChanged: notifier.setDepartmentId, + onStatusChanged: notifier.setStatus, + onMethodChanged: notifier.setDepreciationMethod, + onIsActiveChanged: notifier.setIsActive, + onPickAsOfDate: () => _pickAsOfDate(state.query), + onClearAsOfDate: () => notifier.setAsOfDate(null), + onPickPurchaseRange: () => + _pickPurchaseDateRange(state.query), + onClearPurchaseRange: () => + notifier.setPurchaseDateRange(null, null), + onReset: () { + _searchController.clear(); + notifier.resetFilters(); }, ), footer: AppPagination( @@ -326,7 +323,6 @@ class _FiltersBar extends StatefulWidget { required this.searchController, required this.filters, required this.query, - required this.wrapped, required this.onSearch, required this.onPlantChanged, required this.onCategoryChanged, @@ -345,7 +341,6 @@ class _FiltersBar extends StatefulWidget { final TextEditingController searchController; final DepreciationReportFilters filters; final DepreciationReportQuery query; - final bool wrapped; final ValueChanged onSearch; final ValueChanged onPlantChanged; final ValueChanged onCategoryChanged; @@ -399,24 +394,11 @@ class _FiltersBarState extends State<_FiltersBar> { .where((o) => o.parentId == query.itemCategoryId) .toList(); - final searchField = TextField( + final searchField = AppSearchField( controller: widget.searchController, + hint: 'Search asset code or name...', onChanged: widget.onSearch, - decoration: InputDecoration( - labelText: 'Search', - hintText: 'Search asset code or name...', - prefixIcon: const Icon(Icons.search), - isDense: true, - suffixIcon: widget.searchController.text.isNotEmpty - ? IconButton( - icon: const Icon(Icons.clear), - onPressed: () { - widget.searchController.clear(); - widget.onSearch(''); - }, - ) - : null, - ), + onClear: () => widget.onSearch(''), ); Widget dropdown({ @@ -536,19 +518,6 @@ class _FiltersBarState extends State<_FiltersBar> { child: const Text('Reset'), ); - Widget row(List cells) { - assert(cells.length == 4); - return Row( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - for (var i = 0; i < cells.length; i++) ...[ - if (i > 0) const SizedBox(width: 12), - Expanded(child: cells[i]), - ], - ], - ); - } - final actions = Row( children: [ moreButton, @@ -556,58 +525,36 @@ class _FiltersBarState extends State<_FiltersBar> { ], ); - if (widget.wrapped) { - return Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - searchField, - const SizedBox(height: 12), - plant, - const SizedBox(height: 12), - category, - const SizedBox(height: 12), - asOfField, - const SizedBox(height: 4), - actions, - if (_moreOpen) ...[ - const SizedBox(height: 8), - Divider(color: theme.colorScheme.outline.withValues(alpha: 0.2)), - const SizedBox(height: 8), - subcategory, - const SizedBox(height: 12), - department, - const SizedBox(height: 12), - status, - const SizedBox(height: 12), - method, - const SizedBox(height: 12), - active, - const SizedBox(height: 12), - purchaseField, - ], - ], - ); - } + final moreFilters = _moreOpen + ? Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Divider( + height: 1, + color: theme.colorScheme.outline.withValues(alpha: 0.2), + ), + const SizedBox(height: 12), + AppResponsiveFilterGrid( + fields: [ + subcategory, + department, + status, + method, + active, + purchaseField, + ], + ), + ], + ) + : null; - return Column( - children: [ - row([searchField, plant, category, asOfField]), - const SizedBox(height: 4), - Align(alignment: Alignment.centerRight, child: actions), - if (_moreOpen) ...[ - const SizedBox(height: 8), - Divider(height: 1, color: theme.colorScheme.outline.withValues(alpha: 0.2)), - const SizedBox(height: 12), - row([subcategory, department, status, method]), - const SizedBox(height: 12), - row([ - active, - purchaseField, - const SizedBox.shrink(), - const SizedBox.shrink(), - ]), - ], - ], + return AppResponsiveFilterGrid( + fields: [searchField, plant, category, asOfField], + footer: Align( + alignment: Alignment.centerRight, + child: actions, + ), + extra: moreFilters, ); } } @@ -664,26 +611,6 @@ class _ReportTable extends StatelessWidget { textAlign: TextAlign.right, ), ), - AppDataColumn( - label: 'Method', - flex: 2, - searchText: (row) => row.depreciationMethod ?? '', - cellBuilder: (_, row) => AppTableCell.text( - row.depreciationMethod, - placeholder: '-', - ), - ), - AppDataColumn( - label: 'Rate %', - flex: 1, - alignment: Alignment.centerRight, - searchText: (row) => row.depreciationRate?.toStringAsFixed(2) ?? '', - cellBuilder: (_, row) => AppTableCell.text( - row.depreciationRate?.toStringAsFixed(2), - textAlign: TextAlign.right, - placeholder: '-', - ), - ), AppDataColumn( label: 'Annual', flex: 2, diff --git a/lib/modules/roles/data/datasources/role_remote_data_source.dart b/lib/modules/roles/data/datasources/role_remote_data_source.dart index 3166e74..6c062d7 100644 --- a/lib/modules/roles/data/datasources/role_remote_data_source.dart +++ b/lib/modules/roles/data/datasources/role_remote_data_source.dart @@ -1,6 +1,7 @@ import 'package:dio/dio.dart'; import '../../../../core/constants/api_endpoints.dart'; +import '../../../../core/utils/active_option.dart'; import '../../../../shared/models/permission_matrix_models.dart'; import '../../../../shared/models/role_model.dart'; import '../../../../shared/models/user_management_models.dart'; @@ -42,13 +43,25 @@ class RoleRemoteDataSource { if (search != null && search.isNotEmpty) 'search': search, }, ); - return _parseList( - response.data['data'], - (json) => FilterOptionModel( - id: json['id']?.toString() ?? '', - name: json['name'] as String? ?? '', - ), - ).where((role) => role.id.isNotEmpty && role.name.isNotEmpty).toList(); + final raw = response.data['data']; + final list = raw is List + ? raw + : raw is Map + ? (raw['items'] as List?) ?? const [] + : const []; + + return list + .whereType() + .map((item) => Map.from(item)) + .where(isActiveOptionRow) + .map( + (json) => FilterOptionModel( + id: json['id']?.toString() ?? '', + name: json['name'] as String? ?? '', + ), + ) + .where((role) => role.id.isNotEmpty && role.name.isNotEmpty) + .toList(); } Future getRoleById(String id) async { diff --git a/lib/modules/roles/presentation/screens/permission_matrix_screen.dart b/lib/modules/roles/presentation/screens/permission_matrix_screen.dart index add0a60..a74ad7e 100644 --- a/lib/modules/roles/presentation/screens/permission_matrix_screen.dart +++ b/lib/modules/roles/presentation/screens/permission_matrix_screen.dart @@ -91,7 +91,7 @@ class _MatrixGrid extends ConsumerWidget { AppDataColumn( label: 'Module', flex: 3, - searchText: (row) => row.name, + enableSearch: false, cellBuilder: (_, row) => AppTableCell.text(row.name), ), ...matrix.actionColumns.map( @@ -99,10 +99,7 @@ class _MatrixGrid extends ConsumerWidget { label: permissionActionLabel(action), flex: 1, alignment: Alignment.center, - searchText: (row) { - final checked = row.granted[action] ?? false; - return checked ? 'yes granted true' : 'no denied false'; - }, + enableSearch: false, cellBuilder: (_, row) => Checkbox( value: row.granted[action] ?? false, visualDensity: VisualDensity.compact, diff --git a/lib/modules/settings/presentation/widgets/settings_widgets.dart b/lib/modules/settings/presentation/widgets/settings_widgets.dart index ff6e53c..4946778 100644 --- a/lib/modules/settings/presentation/widgets/settings_widgets.dart +++ b/lib/modules/settings/presentation/widgets/settings_widgets.dart @@ -4,6 +4,7 @@ import 'package:go_router/go_router.dart'; import '../../../../core/utils/responsive_utils.dart'; import '../../../../shared/widgets/app_card.dart'; import '../../../../shared/widgets/app_dropdown.dart'; +import '../../../../shared/widgets/app_form_toggle_field.dart'; import '../../../../shared/widgets/app_searchable_dropdown.dart'; import '../../../../shared/widgets/page_header.dart'; import '../../domain/entities/app_settings.dart'; @@ -117,10 +118,9 @@ class SettingsSwitchTile extends StatelessWidget { @override Widget build(BuildContext context) { - return SwitchListTile( - contentPadding: EdgeInsets.zero, - title: Text(title), - subtitle: subtitle != null ? Text(subtitle!) : null, + return AppFormToggleField( + label: title, + subtitle: subtitle, value: value, onChanged: onChanged, ); diff --git a/lib/modules/users/data/datasources/user_remote_data_source.dart b/lib/modules/users/data/datasources/user_remote_data_source.dart index 14a2b93..d3cbcf7 100644 --- a/lib/modules/users/data/datasources/user_remote_data_source.dart +++ b/lib/modules/users/data/datasources/user_remote_data_source.dart @@ -1,6 +1,7 @@ import 'package:dio/dio.dart'; import '../../../../core/constants/api_endpoints.dart'; +import '../../../../core/utils/active_option.dart'; import '../../../../shared/models/api_response.dart'; import '../../../../shared/models/export_file_result.dart'; import '../../../../shared/models/user_management_models.dart'; @@ -31,9 +32,11 @@ class UserRemoteDataSource { List parseIdNameOptions(List? list) { return (list ?? []) - .map( - (item) => FilterOptionModel.fromJson(item as Map), - ) + .whereType() + .map((item) => Map.from(item)) + .where(isActiveOptionRow) + .map(FilterOptionModel.fromJson) + .where((item) => item.id.isNotEmpty && item.name.isNotEmpty) .toList(); } diff --git a/lib/modules/users/presentation/screens/user_list_screen.dart b/lib/modules/users/presentation/screens/user_list_screen.dart index 5870678..54edb4e 100644 --- a/lib/modules/users/presentation/screens/user_list_screen.dart +++ b/lib/modules/users/presentation/screens/user_list_screen.dart @@ -12,6 +12,7 @@ import '../../../../shared/widgets/app_dropdown.dart'; import '../../../../shared/widgets/app_empty_state.dart'; import '../../../../shared/widgets/app_loading_view.dart'; import '../../../../shared/widgets/app_pagination.dart'; +import '../../../../shared/widgets/app_responsive_filter_bar.dart'; import '../../../../shared/widgets/app_search_field.dart'; import '../../../../shared/widgets/app_searchable_dropdown.dart'; import '../../../../shared/widgets/app_status_chip.dart'; @@ -272,29 +273,9 @@ class _FiltersBar extends StatelessWidget { ), ]; - if (context.isMobile) { - return Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - searchField, - const SizedBox(height: 12), - ...dropdowns.expand((f) => [f, const SizedBox(height: 12)]).toList() - ..removeLast(), - ], - ); - } - - return Row( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Expanded(flex: 3, child: searchField), - const SizedBox(width: 12), - Expanded(flex: 2, child: dropdowns[0]), - const SizedBox(width: 12), - Expanded(flex: 2, child: dropdowns[1]), - const SizedBox(width: 12), - Expanded(flex: 2, child: dropdowns[2]), - ], + return AppResponsiveFilterBar( + search: searchField, + filters: dropdowns, ); } } diff --git a/lib/modules/vendors/presentation/screens/vendor_list_screen.dart b/lib/modules/vendors/presentation/screens/vendor_list_screen.dart index 270d722..80bd60e 100644 --- a/lib/modules/vendors/presentation/screens/vendor_list_screen.dart +++ b/lib/modules/vendors/presentation/screens/vendor_list_screen.dart @@ -16,6 +16,7 @@ import '../../../../shared/widgets/app_searchable_dropdown.dart'; import '../../../../shared/widgets/app_empty_state.dart'; import '../../../../shared/widgets/app_loading_view.dart'; import '../../../../shared/widgets/app_pagination.dart'; +import '../../../../shared/widgets/app_responsive_filter_bar.dart'; import '../../../../shared/widgets/app_search_field.dart'; import '../../../../shared/widgets/app_status_chip.dart'; import '../../../../shared/widgets/app_table_action_icon.dart'; @@ -90,22 +91,17 @@ class _VendorListScreenState extends ConsumerState { ), Expanded( child: AppTableShell( - toolbar: LayoutBuilder( - builder: (context, constraints) { - return _FiltersBar( - searchController: _searchController, - query: state.query, - wrapped: constraints.maxWidth < 900, - showExport: canExport, - isExporting: state.isExporting, - onExport: _exportVendors, - onSearch: ref.read(vendorsListProvider.notifier).setSearch, - onStatusChanged: - ref.read(vendorsListProvider.notifier).setStatusFilter, - onVendorTypeChanged: - ref.read(vendorsListProvider.notifier).setVendorTypeFilter, - ); - }, + toolbar: _FiltersBar( + searchController: _searchController, + query: state.query, + showExport: canExport, + isExporting: state.isExporting, + onExport: _exportVendors, + onSearch: ref.read(vendorsListProvider.notifier).setSearch, + onStatusChanged: + ref.read(vendorsListProvider.notifier).setStatusFilter, + onVendorTypeChanged: + ref.read(vendorsListProvider.notifier).setVendorTypeFilter, ), footer: AppPagination( currentPage: state.query.page, @@ -209,7 +205,6 @@ class _FiltersBar extends StatelessWidget { const _FiltersBar({ required this.searchController, required this.query, - required this.wrapped, required this.onSearch, required this.onStatusChanged, required this.onVendorTypeChanged, @@ -220,7 +215,6 @@ class _FiltersBar extends StatelessWidget { final TextEditingController searchController; final VendorListQuery query; - final bool wrapped; final ValueChanged onSearch; final ValueChanged onStatusChanged; final ValueChanged onVendorTypeChanged; @@ -265,48 +259,22 @@ class _FiltersBar extends StatelessWidget { ), ]; - final exportButton = OutlinedButton.icon( - onPressed: isExporting ? null : onExport, - icon: isExporting - ? const SizedBox( - width: 18, - height: 18, - child: CircularProgressIndicator(strokeWidth: 2), + return AppResponsiveFilterBar( + search: searchField, + filters: filters, + trailing: showExport + ? OutlinedButton.icon( + onPressed: isExporting ? null : onExport, + icon: isExporting + ? const SizedBox( + width: 18, + height: 18, + child: CircularProgressIndicator(strokeWidth: 2), + ) + : const Icon(Icons.download_outlined, size: 18), + label: Text(isExporting ? 'Exporting...' : 'Export'), ) - : const Icon(Icons.download_outlined, size: 18), - label: Text(isExporting ? 'Exporting...' : 'Export'), - ); - - if (wrapped) { - return Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - searchField, - const SizedBox(height: 12), - filters[0], - const SizedBox(height: 12), - filters[1], - if (showExport) ...[ - const SizedBox(height: 12), - Align(alignment: Alignment.centerRight, child: exportButton), - ], - ], - ); - } - - return Row( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Expanded(flex: 3, child: searchField), - const SizedBox(width: 12), - Expanded(flex: 2, child: filters[0]), - const SizedBox(width: 12), - Expanded(flex: 2, child: filters[1]), - if (showExport) ...[ - const SizedBox(width: 12), - exportButton, - ], - ], + : null, ); } } diff --git a/lib/modules/vendors/presentation/widgets/vendor_form_panel.dart b/lib/modules/vendors/presentation/widgets/vendor_form_panel.dart index 7b13722..364e1d3 100644 --- a/lib/modules/vendors/presentation/widgets/vendor_form_panel.dart +++ b/lib/modules/vendors/presentation/widgets/vendor_form_panel.dart @@ -7,6 +7,7 @@ import '../../../../shared/models/user_management_models.dart'; import '../../../../shared/models/vendor_model.dart'; import '../../../../shared/widgets/app_button.dart'; import '../../../../shared/widgets/app_dropdown.dart'; +import '../../../../shared/widgets/app_form_toggle_field.dart'; import '../../../../shared/widgets/app_searchable_dropdown.dart'; import '../../../../shared/widgets/app_loading_view.dart'; import '../../../../shared/widgets/app_side_panel.dart'; @@ -329,9 +330,8 @@ class _VendorFormPanelState extends ConsumerState { ), if (_showActiveSwitch) ...[ const SizedBox(height: 12), - SwitchListTile( - contentPadding: EdgeInsets.zero, - title: const Text('Active'), + AppFormToggleField( + label: 'Active', value: _isActive, onChanged: (v) => setState(() => _isActive = v), ), diff --git a/lib/modules/vendors/presentation/widgets/vendor_sub_resource_panels.dart b/lib/modules/vendors/presentation/widgets/vendor_sub_resource_panels.dart index 89007ad..8a0affb 100644 --- a/lib/modules/vendors/presentation/widgets/vendor_sub_resource_panels.dart +++ b/lib/modules/vendors/presentation/widgets/vendor_sub_resource_panels.dart @@ -5,6 +5,7 @@ import '../../../../core/utils/validators.dart'; import '../../../../shared/models/vendor_model.dart'; import '../../../../shared/widgets/app_button.dart'; import '../../../../shared/widgets/app_dropdown.dart'; +import '../../../../shared/widgets/app_form_toggle_field.dart'; import '../../../../shared/widgets/app_side_panel.dart'; import '../../../../shared/widgets/app_text_field.dart'; import '../providers/vendors_provider.dart'; @@ -196,9 +197,8 @@ class _VendorAddressPanelState extends ConsumerState { inputFormatters: Validators.gstinInput, ), const SizedBox(height: 12), - SwitchListTile( - contentPadding: EdgeInsets.zero, - title: const Text('Active'), + AppFormToggleField( + label: 'Active', value: _isActive, onChanged: (v) => setState(() => _isActive = v), ), @@ -325,15 +325,13 @@ class _VendorContactPanelState extends ConsumerState { ), ), const SizedBox(height: 12), - SwitchListTile( - contentPadding: EdgeInsets.zero, - title: const Text('Primary Contact'), + AppFormToggleField( + label: 'Primary Contact', value: _isPrimary, onChanged: (v) => setState(() => _isPrimary = v), ), - SwitchListTile( - contentPadding: EdgeInsets.zero, - title: const Text('Active'), + AppFormToggleField( + label: 'Active', value: _isActive, onChanged: (v) => setState(() => _isActive = v), ), @@ -491,15 +489,13 @@ class _VendorBankDetailPanelState extends ConsumerState { onChanged: (v) => setState(() => _accountType = v), ), const SizedBox(height: 12), - SwitchListTile( - contentPadding: EdgeInsets.zero, - title: const Text('Primary Account'), + AppFormToggleField( + label: 'Primary Account', value: _isPrimary, onChanged: (v) => setState(() => _isPrimary = v), ), - SwitchListTile( - contentPadding: EdgeInsets.zero, - title: const Text('Active'), + AppFormToggleField( + label: 'Active', value: _isActive, onChanged: (v) => setState(() => _isActive = v), ), diff --git a/lib/shared/routes/menu_config.dart b/lib/shared/routes/menu_config.dart index f911f3b..5a87925 100644 --- a/lib/shared/routes/menu_config.dart +++ b/lib/shared/routes/menu_config.dart @@ -42,12 +42,6 @@ const List appMenuItems = [ // route: RouteConstants.branches, // module: 'branches', // ), - MenuItem( - label: 'Users & Roles', - icon: Icons.admin_panel_settings_outlined, - route: RouteConstants.usersRoleManagement, - module: 'users', - ), MenuItem( label: 'Assets', icon: Icons.inventory_2_outlined, @@ -86,18 +80,24 @@ const List appMenuItems = [ route: RouteConstants.grn, module: 'grn', ), - MenuItem( - label: 'Master Data', - icon: Icons.dataset_outlined, - route: RouteConstants.masterData, - module: 'master_data', - ), MenuItem( label: 'Reports', icon: Icons.assessment_outlined, route: RouteConstants.reports, module: 'reports', ), + MenuItem( + label: 'Users & Roles', + icon: Icons.admin_panel_settings_outlined, + route: RouteConstants.usersRoleManagement, + module: 'users', + ), + MenuItem( + label: 'Master Data', + icon: Icons.dataset_outlined, + route: RouteConstants.masterData, + module: 'master_data', + ), MenuItem( label: 'Audit Logs', icon: Icons.history_outlined, @@ -112,6 +112,13 @@ const List appMenuItems = [ ), ]; +/// Routes rendered under the Support section (after primary ops menus). +const Set supportMenuRoutes = { + RouteConstants.usersRoleManagement, + RouteConstants.masterData, + RouteConstants.auditLogs, + RouteConstants.settings, +}; List getVisibleMenuItems({ required List permissions, required UserRole role, diff --git a/lib/shared/widgets/app_filter_date_field.dart b/lib/shared/widgets/app_filter_date_field.dart index 9d62623..baf81a9 100644 --- a/lib/shared/widgets/app_filter_date_field.dart +++ b/lib/shared/widgets/app_filter_date_field.dart @@ -13,6 +13,7 @@ class AppFilterDateField extends StatelessWidget { this.placeholder = 'Select date', this.onClear, this.isEmpty = false, + this.alignWithLabeledFields = true, }); final String label; @@ -22,6 +23,7 @@ class AppFilterDateField extends StatelessWidget { final String placeholder; final VoidCallback? onClear; final bool isEmpty; + final bool alignWithLabeledFields; static const _suffixConstraints = BoxConstraints( minWidth: 40, @@ -35,7 +37,7 @@ class AppFilterDateField extends StatelessWidget { final theme = Theme.of(context); final showClear = onClear != null && !isEmpty; - return InputDecorator( + final field = InputDecorator( decoration: InputDecoration( labelText: label, isDense: true, @@ -79,5 +81,11 @@ class AppFilterDateField extends StatelessWidget { ), ), ); + + if (!alignWithLabeledFields) return field; + return Padding( + padding: const EdgeInsets.only(top: 8), + child: field, + ); } } diff --git a/lib/shared/widgets/app_form_toggle_field.dart b/lib/shared/widgets/app_form_toggle_field.dart new file mode 100644 index 0000000..174e61f --- /dev/null +++ b/lib/shared/widgets/app_form_toggle_field.dart @@ -0,0 +1,67 @@ +import 'package:flutter/material.dart'; + +/// Compact, theme-aware toggle for forms. +/// +/// Keeps the switch close to the label for better visual grouping. +class AppFormToggleField extends StatelessWidget { + const AppFormToggleField({ + super.key, + required this.label, + required this.value, + required this.onChanged, + this.subtitle, + this.enabled = true, + }); + + final String label; + final String? subtitle; + final bool value; + final ValueChanged? onChanged; + final bool enabled; + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + return Padding( + padding: const EdgeInsets.symmetric(vertical: 1), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + label, + style: theme.textTheme.bodyLarge?.copyWith( + color: enabled + ? theme.colorScheme.onSurface + : theme.colorScheme.onSurfaceVariant, + ), + ), + const SizedBox(width: 10), + Transform.scale( + scale: 0.80, + child: Switch( + value: value, + onChanged: enabled ? onChanged : null, + materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, + ), + ), + ], + ), + if (subtitle != null && subtitle!.trim().isNotEmpty) + Padding( + padding: const EdgeInsets.only(top: 1), + child: Text( + subtitle!, + style: theme.textTheme.bodySmall?.copyWith( + color: theme.colorScheme.onSurfaceVariant, + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/shared/widgets/app_responsive_filter_bar.dart b/lib/shared/widgets/app_responsive_filter_bar.dart new file mode 100644 index 0000000..835fc39 --- /dev/null +++ b/lib/shared/widgets/app_responsive_filter_bar.dart @@ -0,0 +1,227 @@ +import 'package:flutter/material.dart'; + +import '../../core/utils/responsive_utils.dart'; + +/// Responsive list-page filter layout. +/// +/// - Wide: search + filters (+ trailing) in one row +/// - Medium: search full width, filters wrap 2+ per row +/// - Narrow: one field per row +class AppResponsiveFilterBar extends StatelessWidget { + const AppResponsiveFilterBar({ + super.key, + required this.search, + this.filters = const [], + this.trailing, + this.spacing = 12, + this.runSpacing = 12, + this.searchFlex = 3, + this.filterFlex = 2, + this.crossAxisAlignment = CrossAxisAlignment.start, + }); + + final Widget search; + final List filters; + final Widget? trailing; + final double spacing; + final double runSpacing; + final int searchFlex; + final int filterFlex; + final CrossAxisAlignment crossAxisAlignment; + + static const double _rowBreakpoint = 720; + static const double _stackBreakpoint = AppBreakpoints.tablet; // 600 + static const double _minFilterWidth = 160; + + @override + Widget build(BuildContext context) { + return LayoutBuilder( + builder: (context, constraints) { + final maxWidth = constraints.maxWidth; + final hasTrailing = trailing != null; + + if (maxWidth >= _rowBreakpoint) { + return Row( + crossAxisAlignment: crossAxisAlignment, + children: [ + Expanded(flex: searchFlex, child: search), + for (final filter in filters) ...[ + SizedBox(width: spacing), + Expanded(flex: filterFlex, child: filter), + ], + if (hasTrailing) ...[ + SizedBox(width: spacing), + Padding( + padding: const EdgeInsets.only(top: 8), + child: trailing!, + ), + ], + ], + ); + } + + if (maxWidth >= _stackBreakpoint) { + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + search, + SizedBox(height: runSpacing), + Wrap( + spacing: spacing, + runSpacing: runSpacing, + children: [ + for (final filter in filters) + SizedBox( + width: _wrapChildWidth( + maxWidth: maxWidth, + itemCount: filters.length + (hasTrailing ? 1 : 0), + ), + child: filter, + ), + if (hasTrailing) + SizedBox( + width: _wrapChildWidth( + maxWidth: maxWidth, + itemCount: filters.length + 1, + ), + child: Align( + alignment: Alignment.centerRight, + child: Padding( + padding: const EdgeInsets.only(top: 8), + child: trailing!, + ), + ), + ), + ], + ), + ], + ); + } + + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + search, + for (final filter in filters) ...[ + SizedBox(height: runSpacing), + filter, + ], + if (hasTrailing) ...[ + SizedBox(height: runSpacing), + Align(alignment: Alignment.centerRight, child: trailing!), + ], + ], + ); + }, + ); + } + + double _wrapChildWidth({ + required double maxWidth, + required int itemCount, + }) { + if (itemCount <= 0) return maxWidth; + final preferredCols = maxWidth >= 840 ? 3 : 2; + final cols = preferredCols.clamp(1, itemCount); + final gaps = spacing * (cols - 1); + final width = (maxWidth - gaps) / cols; + return width < _minFilterWidth ? maxWidth : width; + } +} + +/// Responsive grid for screens with many filter fields (audit, reports, etc.). +/// +/// - Wide: up to [maxColumns] fields per row +/// - Medium: wrapped 2–3 fields per row +/// - Narrow: one field per row +class AppResponsiveFilterGrid extends StatelessWidget { + const AppResponsiveFilterGrid({ + super.key, + required this.fields, + this.spacing = 12, + this.runSpacing = 12, + this.minFieldWidth = 160, + this.maxColumns = 4, + this.footer, + this.extra, + }); + + final List fields; + final double spacing; + final double runSpacing; + final double minFieldWidth; + final int maxColumns; + final Widget? footer; + final Widget? extra; + + static const double _rowBreakpoint = 720; + static const double _stackBreakpoint = AppBreakpoints.tablet; + + @override + Widget build(BuildContext context) { + return LayoutBuilder( + builder: (context, constraints) { + final maxWidth = constraints.maxWidth; + + Widget content; + if (maxWidth >= _rowBreakpoint && fields.length <= maxColumns) { + content = Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + for (var i = 0; i < fields.length; i++) ...[ + if (i > 0) SizedBox(width: spacing), + Expanded(child: fields[i]), + ], + ], + ); + } else if (maxWidth >= _stackBreakpoint) { + final cols = maxWidth >= 900 + ? 3 + : maxWidth >= _rowBreakpoint + ? 2 + : 2; + final itemWidth = _itemWidth(maxWidth, cols); + content = Wrap( + spacing: spacing, + runSpacing: runSpacing, + children: [ + for (final field in fields) + SizedBox(width: itemWidth, child: field), + ], + ); + } else { + content = Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + for (var i = 0; i < fields.length; i++) ...[ + if (i > 0) SizedBox(height: runSpacing), + fields[i], + ], + ], + ); + } + + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + content, + if (footer != null) ...[ + SizedBox(height: runSpacing), + footer!, + ], + if (extra != null) ...[ + SizedBox(height: runSpacing), + extra!, + ], + ], + ); + }, + ); + } + + double _itemWidth(double maxWidth, int cols) { + final gaps = spacing * (cols - 1); + final width = (maxWidth - gaps) / cols; + return width < minFieldWidth ? maxWidth : width; + } +} diff --git a/lib/shared/widgets/app_search_export_bar.dart b/lib/shared/widgets/app_search_export_bar.dart index a4a0b61..69caa12 100644 --- a/lib/shared/widgets/app_search_export_bar.dart +++ b/lib/shared/widgets/app_search_export_bar.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; +import 'app_responsive_filter_bar.dart'; + /// Search field with export action — matches the users list toolbar (no filters). class AppSearchExportBar extends StatelessWidget { const AppSearchExportBar({ @@ -8,6 +10,7 @@ class AppSearchExportBar extends StatelessWidget { required this.onSearch, required this.onExport, this.isExporting = false, + @Deprecated('Layout is always responsive via AppResponsiveFilterBar') this.wrapped = false, this.searchController, this.searchWidth = 320, @@ -35,42 +38,21 @@ class AppSearchExportBar extends StatelessWidget { onChanged: onSearch, ); - final exportButton = OutlinedButton.icon( - onPressed: isExporting ? null : onExport, - icon: isExporting - ? const SizedBox( - width: 18, - height: 18, - child: CircularProgressIndicator(strokeWidth: 2), + return AppResponsiveFilterBar( + search: searchField, + trailing: showExport + ? OutlinedButton.icon( + onPressed: isExporting ? null : onExport, + icon: isExporting + ? const SizedBox( + width: 18, + height: 18, + child: CircularProgressIndicator(strokeWidth: 2), + ) + : const Icon(Icons.download_outlined, size: 18), + label: Text(isExporting ? 'Exporting...' : 'Export'), ) - : const Icon(Icons.download_outlined, size: 18), - label: Text(isExporting ? 'Exporting...' : 'Export'), - ); - - if (wrapped) { - return Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - searchField, - if (showExport) ...[ - const SizedBox(height: 12), - Row( - children: [ - const Spacer(), - exportButton, - ], - ), - ], - ], - ); - } - - return Row( - children: [ - SizedBox(width: searchWidth, child: searchField), - const Spacer(), - if (showExport) exportButton, - ], + : null, ); } } diff --git a/lib/shared/widgets/app_searchable_dropdown.dart b/lib/shared/widgets/app_searchable_dropdown.dart index 217d54b..6675b10 100644 --- a/lib/shared/widgets/app_searchable_dropdown.dart +++ b/lib/shared/widgets/app_searchable_dropdown.dart @@ -230,6 +230,7 @@ class _AppSearchableDropdownState extends State> { decoration: InputDecoration( labelText: widget.label, hintText: displayLabel == null ? effectiveHint : null, + hintMaxLines: 1, floatingLabelBehavior: FloatingLabelBehavior.always, isDense: widget.isDense, errorText: field.errorText, @@ -612,6 +613,7 @@ class _AppSearchableLookupFieldState decoration: InputDecoration( labelText: widget.label, hintText: displayLabel == null ? effectiveHint : null, + hintMaxLines: 1, floatingLabelBehavior: FloatingLabelBehavior.always, isDense: widget.isDense, suffixIcon: Icon( diff --git a/lib/shared/widgets/app_sidebar.dart b/lib/shared/widgets/app_sidebar.dart index d5fc96e..04d285b 100644 --- a/lib/shared/widgets/app_sidebar.dart +++ b/lib/shared/widgets/app_sidebar.dart @@ -57,8 +57,16 @@ class _AppSidebarState extends ConsumerState { final Set _expandedMenus = {}; final Set _manuallyCollapsedMenus = {}; - List get _mainMenuItems => - widget.menuItems.where((item) => item.route != RouteConstants.settings).toList(); + List get _primaryMenuItems => widget.menuItems + .where((item) => !menu.supportMenuRoutes.contains(item.route)) + .toList(); + + List get _supportMenuItems => widget.menuItems + .where((item) => menu.supportMenuRoutes.contains(item.route)) + .toList(); + + bool get _hasSupportSection => + _supportMenuItems.isNotEmpty || AppConstants.showNotificationsMenu; bool _routeMatches(String route) { final current = widget.currentRoute; @@ -104,7 +112,7 @@ class _AppSidebarState extends ConsumerState { void didUpdateWidget(covariant AppSidebar oldWidget) { super.didUpdateWidget(oldWidget); if (oldWidget.currentRoute != widget.currentRoute) { - for (final item in _mainMenuItems) { + for (final item in [..._primaryMenuItems, ..._supportMenuItems]) { if (item.children.isNotEmpty && _isGroupActive(item)) { _expandedMenus.add(item.route); _manuallyCollapsedMenus.remove(item.route); @@ -167,84 +175,25 @@ class _AppSidebarState extends ConsumerState { child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - if (!isNarrow) - const _SectionLabel(label: 'MAIN MENU') - else - const SizedBox(height: 4), - ..._mainMenuItems.map((item) { - if (isNarrow && item.children.isNotEmpty) { - return _CollapsedFlyoutNavItem( - item: item, - selected: _isGroupActive(item), - isChildSelected: (route) => - _isSelectedAmongSiblings(route, item.children), - onChildTap: widget.onItemTap, - ); - } - - if (item.children.isNotEmpty && !isNarrow) { - final expanded = _isGroupExpanded(item); - final active = _isGroupActive(item); - return Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - _SidebarNavItem( - icon: item.icon, - label: item.label, - selected: active, - collapsed: false, - showChevron: true, - chevronExpanded: expanded, - onTap: () => _toggleGroup(item), - ), - if (expanded) - ...item.children.map( - (child) => _SidebarNavItem( - icon: child.icon, - label: child.label, - selected: _isSelectedAmongSiblings( - child.route, - item.children, - ), - collapsed: false, - indent: _sidebarChildIndent, - onTap: () => widget.onItemTap(child.route), - ), - ), - ], - ); - } - - return _SidebarNavItem( - icon: item.icon, - label: item.label, - selected: _isSelected(item.route) || - (isNarrow && _isGroupActive(item)), - collapsed: isNarrow, - onTap: () { - widget.onItemTap(item.route); - }, - ); - }), - const SizedBox(height: 16), - if (!isNarrow) const _SectionLabel(label: 'SUPPORT'), - if (AppConstants.showNotificationsMenu) - _SidebarNavItem( - icon: Icons.notifications_outlined, - label: 'Notifications', - selected: false, - collapsed: isNarrow, - badge: isNarrow ? null : '3', - onTap: () {}, - ), - if (_hasSettings) - _SidebarNavItem( - icon: Icons.settings_outlined, - label: 'Settings', - selected: _isSelected(RouteConstants.settings), - collapsed: isNarrow, - onTap: () => widget.onItemTap(RouteConstants.settings), + if (isNarrow) const SizedBox(height: 4), + ..._buildNavItems(_primaryMenuItems, isNarrow: isNarrow), + if (_hasSupportSection) ...[ + const SizedBox(height: 16), + if (!isNarrow) const _SectionLabel(label: 'SUPPORT'), + if (AppConstants.showNotificationsMenu) + _SidebarNavItem( + icon: Icons.notifications_outlined, + label: 'Notifications', + selected: false, + collapsed: isNarrow, + badge: isNarrow ? null : '3', + onTap: () {}, + ), + ..._buildNavItems( + _supportMenuItems, + isNarrow: isNarrow, ), + ], ], ), ), @@ -259,8 +208,66 @@ class _AppSidebarState extends ConsumerState { ); } - bool get _hasSettings => - widget.menuItems.any((item) => item.route == RouteConstants.settings); + List _buildNavItems( + List items, { + required bool isNarrow, + }) { + return items.map((item) { + if (isNarrow && item.children.isNotEmpty) { + return _CollapsedFlyoutNavItem( + item: item, + selected: _isGroupActive(item), + isChildSelected: (route) => + _isSelectedAmongSiblings(route, item.children), + onChildTap: widget.onItemTap, + ); + } + + if (item.children.isNotEmpty && !isNarrow) { + final expanded = _isGroupExpanded(item); + final active = _isGroupActive(item); + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + _SidebarNavItem( + icon: item.icon, + label: item.label, + selected: active, + collapsed: false, + showChevron: true, + chevronExpanded: expanded, + onTap: () => _toggleGroup(item), + ), + if (expanded) + ...item.children.map( + (child) => _SidebarNavItem( + icon: child.icon, + label: child.label, + selected: _isSelectedAmongSiblings( + child.route, + item.children, + ), + collapsed: false, + indent: _sidebarChildIndent, + onTap: () => widget.onItemTap(child.route), + ), + ), + ], + ); + } + + return _SidebarNavItem( + icon: item.icon, + label: item.label, + selected: _isSelected(item.route) || + (isNarrow && _isGroupActive(item)), + collapsed: isNarrow, + onTap: () { + widget.onItemTap(item.route); + }, + ); + }).toList(); + } Widget _buildHeader(BuildContext context, {required bool isNarrow}) { final theme = Theme.of(context); diff --git a/lib/shared/widgets/master_inline_quick_add_form.dart b/lib/shared/widgets/master_inline_quick_add_form.dart index 6755cb2..6b9a52c 100644 --- a/lib/shared/widgets/master_inline_quick_add_form.dart +++ b/lib/shared/widgets/master_inline_quick_add_form.dart @@ -4,6 +4,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../core/utils/validators.dart'; import '../../modules/master_data/data/repositories/master_repository_impl.dart'; import '../../modules/master_data/domain/entities/master_definition.dart'; +import 'app_form_toggle_field.dart'; /// Compact master create form for use inside a dropdown panel. class MasterInlineQuickAddForm extends ConsumerStatefulWidget { @@ -176,10 +177,8 @@ class _MasterInlineQuickAddFormState switch (field.type) { case MasterFieldType.boolean: if (field.key == 'is_active') { - return SwitchListTile( - contentPadding: EdgeInsets.zero, - dense: true, - title: Text(field.label, style: const TextStyle(fontSize: 13)), + return AppFormToggleField( + label: field.label, value: _values[field.key] == true, onChanged: _submitting ? null @@ -253,6 +252,9 @@ class _MasterInlineQuickAddFormState Widget build(BuildContext context) { final theme = Theme.of(context); final fields = _definition.formFields; + final activeField = fields.where((field) => field.key == 'is_active').firstOrNull; + final regularFields = + fields.where((field) => field.key != 'is_active').toList(); return Material( color: theme.colorScheme.surfaceContainerHighest.withValues(alpha: 0.45), @@ -297,7 +299,7 @@ class _MasterInlineQuickAddFormState ), ) else ...[ - for (final field in fields) ...[ + for (final field in regularFields) ...[ _buildField(field), const SizedBox(height: 8), ], @@ -312,25 +314,40 @@ class _MasterInlineQuickAddFormState ), ), Row( + crossAxisAlignment: CrossAxisAlignment.center, children: [ - const Spacer(), - TextButton( - onPressed: _submitting ? null : widget.onCancel, - child: const Text('Cancel'), - ), - const SizedBox(width: 4), - FilledButton( - onPressed: _submitting ? null : _submit, - child: _submitting - ? const SizedBox( - width: 16, - height: 16, - child: CircularProgressIndicator( - strokeWidth: 2, - color: Colors.white, - ), - ) - : Text('Add ${_definition.title}'), + if (activeField != null) + Expanded( + child: Align( + alignment: Alignment.centerLeft, + child: _buildField(activeField), + ), + ) + else + const Spacer(), + const SizedBox(width: 12), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + TextButton( + onPressed: _submitting ? null : widget.onCancel, + child: const Text('Cancel'), + ), + const SizedBox(width: 4), + FilledButton( + onPressed: _submitting ? null : _submit, + child: _submitting + ? const SizedBox( + width: 16, + height: 16, + child: CircularProgressIndicator( + strokeWidth: 2, + color: Colors.white, + ), + ) + : Text('Add ${_definition.title}'), + ), + ], ), ], ), diff --git a/lib/shared/widgets/sidebar_logo.dart b/lib/shared/widgets/sidebar_logo.dart index a34c849..40c456a 100644 --- a/lib/shared/widgets/sidebar_logo.dart +++ b/lib/shared/widgets/sidebar_logo.dart @@ -1,4 +1,7 @@ +import 'dart:async'; import 'dart:convert'; +import 'dart:typed_data'; +import 'dart:ui' as ui; import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; @@ -31,6 +34,7 @@ class SidebarLogo extends StatelessWidget { @override Widget build(BuildContext context) { final theme = Theme.of(context); + final isLight = theme.brightness == Brightness.light; final fallback = Image.asset( AppConstants.defaultLogoAsset, width: _width, @@ -43,7 +47,7 @@ class SidebarLogo extends StatelessWidget { ), ); - final content = _buildLogoContent(fallback); + final content = _buildLogoContent(fallback, knockOutBlack: isLight); if (!showBackground) { return SizedBox(width: _width, height: _height, child: content); @@ -61,39 +65,50 @@ class SidebarLogo extends StatelessWidget { ); } - Widget _buildLogoContent(Widget fallback) { + Widget _buildLogoContent(Widget fallback, {required bool knockOutBlack}) { final url = resolveMediaUrl(logoUrl); if (url == null || url.isEmpty) { - return fallback; + return _maybeKnockOut(fallbackProvider: const AssetImage(AppConstants.defaultLogoAsset), fallback: fallback, knockOutBlack: knockOutBlack); } if (url.startsWith('assets/')) { - return Image.asset( + final image = Image.asset( url, width: _width, height: _height, fit: fit, errorBuilder: (_, __, ___) => fallback, ); + return _maybeKnockOut( + fallbackProvider: AssetImage(url), + fallback: image, + knockOutBlack: knockOutBlack, + ); } if (url.startsWith('data:image')) { try { final base64Str = url.contains(',') ? url.split(',').last : url; - return Image.memory( - base64Decode(base64Str), + final bytes = base64Decode(base64Str); + final image = Image.memory( + bytes, width: _width, height: _height, fit: fit, errorBuilder: (_, __, ___) => fallback, ); + return _maybeKnockOut( + fallbackProvider: MemoryImage(bytes), + fallback: image, + knockOutBlack: knockOutBlack, + ); } catch (_) { return fallback; } } if (url.startsWith('http://') || url.startsWith('https://')) { - return CachedNetworkImage( + final image = CachedNetworkImage( imageUrl: url, width: _width, height: _height, @@ -107,10 +122,224 @@ class SidebarLogo extends StatelessWidget { ), errorWidget: (_, __, ___) => fallback, ); + return _maybeKnockOut( + fallbackProvider: CachedNetworkImageProvider(url), + fallback: image, + knockOutBlack: knockOutBlack, + ); } return fallback; } + + Widget _maybeKnockOut({ + required ImageProvider fallbackProvider, + required Widget fallback, + required bool knockOutBlack, + }) { + if (!knockOutBlack) return fallback; + return _BlackBackgroundKnockOut( + provider: fallbackProvider, + width: _width, + height: _height, + fit: fit, + fallback: fallback, + ); + } +} + +/// Removes a solid black logo backdrop in light mode when corners are black. +class _BlackBackgroundKnockOut extends StatefulWidget { + const _BlackBackgroundKnockOut({ + required this.provider, + required this.width, + required this.height, + required this.fit, + required this.fallback, + }); + + final ImageProvider provider; + final double width; + final double height; + final BoxFit fit; + final Widget fallback; + + @override + State<_BlackBackgroundKnockOut> createState() => + _BlackBackgroundKnockOutState(); +} + +class _BlackBackgroundKnockOutState extends State<_BlackBackgroundKnockOut> { + static final Map _cache = {}; + + ui.Image? _processed; + bool _failed = false; + Object? _providerKey; + + @override + void initState() { + super.initState(); + _load(); + } + + @override + void didUpdateWidget(covariant _BlackBackgroundKnockOut oldWidget) { + super.didUpdateWidget(oldWidget); + if (oldWidget.provider != widget.provider) { + _load(); + } + } + + Future _load() async { + final key = _cacheKey(widget.provider); + _providerKey = key; + final cached = _cache[key]; + if (cached != null) { + if (mounted) { + setState(() { + _processed = cached; + _failed = false; + }); + } + return; + } + + try { + final source = await _resolveImage(widget.provider); + final processed = await _knockOutBlackBackground(source); + source.dispose(); + _cache[key] = processed; + if (!mounted || _providerKey != key) { + // Another load superseded this one; keep cache entry. + return; + } + setState(() { + _processed = processed; + _failed = false; + }); + } catch (_) { + if (mounted && _providerKey == key) { + setState(() { + _processed = null; + _failed = true; + }); + } + } + } + + String _cacheKey(ImageProvider provider) { + if (provider is AssetImage) return 'asset:${provider.assetName}'; + if (provider is MemoryImage) { + return 'memory:${provider.bytes.length}:${Object.hashAll(provider.bytes.take(64))}'; + } + if (provider is NetworkImage) return 'net:${provider.url}'; + if (provider is CachedNetworkImageProvider) return 'cnet:${provider.url}'; + return 'other:${provider.runtimeType}:$provider'; + } + + Future _resolveImage(ImageProvider provider) async { + final completer = Completer(); + final stream = provider.resolve(const ImageConfiguration()); + late final ImageStreamListener listener; + listener = ImageStreamListener( + (info, _) { + stream.removeListener(listener); + completer.complete(info.image.clone()); + }, + onError: (error, stack) { + stream.removeListener(listener); + completer.completeError(error, stack); + }, + ); + stream.addListener(listener); + return completer.future; + } + + Future _knockOutBlackBackground(ui.Image source) async { + final byteData = + await source.toByteData(format: ui.ImageByteFormat.rawRgba); + if (byteData == null) return source.clone(); + + final pixels = byteData.buffer.asUint8List(); + final width = source.width; + final height = source.height; + + if (!_hasBlackBackdrop(pixels, width, height)) { + return source.clone(); + } + + const threshold = 28; + for (var i = 0; i < pixels.length; i += 4) { + final r = pixels[i]; + final g = pixels[i + 1]; + final b = pixels[i + 2]; + if (r <= threshold && g <= threshold && b <= threshold) { + pixels[i + 3] = 0; + } + } + + final completer = Completer(); + ui.decodeImageFromPixels( + pixels, + width, + height, + ui.PixelFormat.rgba8888, + completer.complete, + ); + return completer.future; + } + + bool _hasBlackBackdrop(Uint8List pixels, int width, int height) { + if (width < 2 || height < 2) return false; + + final samples = <(int, int)>[ + (0, 0), + (width - 1, 0), + (0, height - 1), + (width - 1, height - 1), + (width ~/ 2, 0), + (width ~/ 2, height - 1), + (0, height ~/ 2), + (width - 1, height ~/ 2), + ]; + + var blackSamples = 0; + for (final (x, y) in samples) { + final i = (y * width + x) * 4; + final r = pixels[i]; + final g = pixels[i + 1]; + final b = pixels[i + 2]; + final a = pixels[i + 3]; + // Opaque near-black corner/edge => baked-in backdrop. + if (a > 200 && r <= 28 && g <= 28 && b <= 28) { + blackSamples++; + } + } + return blackSamples >= 5; + } + + @override + Widget build(BuildContext context) { + if (_failed || _processed == null) { + return widget.fallback; + } + + return SizedBox( + width: widget.width, + height: widget.height, + child: FittedBox( + fit: widget.fit, + child: SizedBox( + width: _processed!.width.toDouble(), + height: _processed!.height.toDouble(), + child: RawImage( + image: _processed, + fit: BoxFit.fill, + ), + ), + ), + ); + } } /// Resolves logo URL from company profile, branding, or bundled default.