bc989422e2
refactor: reduce function nesting depth to fix Credo warnings
...
Extract nested conditionals into separate helper functions:
- check_amount_change/2 and related helpers in MembershipFeeTypeLive.Form
- check_interval_change/2 and related helpers in MemberLive.Form
This reduces nesting depth from 3 to 2, improving code readability.
2025-12-18 15:08:32 +01:00
1fde2985e5
feat: add routes for membership fee types admin
...
- GET /membership_fee_types - List view
- GET /membership_fee_types/new - Create form
- GET /membership_fee_types/:id/edit - Edit form
2025-12-18 15:08:32 +01:00
810a54c11f
feat: add membership fee types admin interface
...
- Add list view showing name, amount, interval, member count
- Add create/edit forms for membership fee types
- Gray out interval field on edit (immutable)
- Show warning on amount change with impact information
- Prevent deletion if type is in use
2025-12-18 15:08:31 +01:00
35cafd6e6a
feat: add membership fee type dropdown to member form
...
- Add membership fee type selection in member create/edit form
- Show warning if different interval selected
- Filter available types to same interval only
2025-12-18 15:08:31 +01:00
920cae656e
feat: add membership fees section to member detail view
...
- Add membership fees section with cycle table
- Display cycles with interval, amount, status, and actions
- Add membership fee type dropdown (same interval only)
- Add status change actions (mark as paid/suspended/unpaid)
- Add cycle regeneration (manual and missing cycles)
- Add cycle amount editing
- Add cycle deletion with confirmation
2025-12-18 15:08:31 +01:00
99dc17bf4d
feat: add membership fee status column to member list
...
- Add status column showing last completed or current cycle status
- Add toggle to switch between last/current cycle view
- Add color coding (green/red/gray) for paid/unpaid/suspended
- Add filters for unpaid cycles in last/current cycle
- Efficiently load cycles to avoid N+1 queries
2025-12-18 15:08:31 +01:00
09dfbe455b
feat: add membership fee helper modules
...
MembershipFeeHelpers: formatting functions for currency, intervals, cycles
MembershipFeeStatus: helper for loading and determining cycle status in member list
2025-12-18 15:08:30 +01:00
78b5335456
refactor: migrate MembershipFeeSettingsLive to AshPhoenix.Form
2025-12-18 11:54:23 +01:00
283f824f4d
fix: improve accessibility - WCAG 2 AA contrast and select label
2025-12-18 11:54:23 +01:00
630b51ac34
refactor: replace ContributionSettingsLive mockup with MembershipFeeSettingsLive in navigation
2025-12-18 11:54:23 +01:00
e135a6cdbf
feat: implement full CRUD for membership fee types with settings UI
...
- Add interval immutability and deletion prevention validations
- Add settings validation for default_membership_fee_type_id
- Create MembershipFeeSettingsLive for admin UI with form handling
- Add comprehensive test coverage (unit, integration, settings)
2025-12-18 11:54:23 +01:00
bbc094daaa
fix: add validation for required custom fields
continuous-integration/drone/push Build is failing
2025-12-17 13:31:15 +01:00
c88f805b6e
style: combines member and custom fields in settings
2025-12-16 17:16:29 +01:00
5fa0b48acc
feat: adds form for member fields
2025-12-16 17:12:26 +01:00
62d04add8e
fix: standardize 'Custom Field' capitalization in i18n
...
Change 'Save Custom field' to 'Save Custom Field' and
'Save Custom field value' to 'Save Custom Field Value' for consistency.
Update gettext files accordingly.
2025-12-16 14:54:43 +01:00
be6ea56860
fix: improve mailto BCC encoding
...
Use URI.encode_www_form() instead of URI.encode() for mailto query parameters.
This is the safer choice for query parameter encoding.
Add comment about mailto URL length limits that vary by email client.
2025-12-16 14:51:42 +01:00
fb91f748c2
perf: optimize member index selection calculations
...
Calculate selected_count, any_selected? and mailto_bcc once in assigns
instead of recalculating Enum.any? and Enum.count multiple times in template.
This improves render performance and makes the template code more readable.
2025-12-16 14:50:52 +01:00
222af635ae
fix: make disabled links more robust in CoreComponents.button
...
Remove navigation attributes (href, navigate, patch) when disabled=true
to prevent 'Open in new tab' and 'Copy link' from working on disabled links.
This makes the disabled state semantically stronger and independent of CSS themes.
2025-12-16 14:48:18 +01:00
dd4048669c
fix: update clubname on save
continuous-integration/drone/push Build is passing
2025-12-16 14:35:00 +01:00
e0712d47bc
chore: change payment filter text
2025-12-16 14:35:00 +01:00
4e86351e1c
feat: disable email buttons instead hide them
2025-12-16 14:35:00 +01:00
8bfa5b7d1d
chore: remove immutable from custom fields
2025-12-16 14:35:00 +01:00
18c082a893
chore: updated translation
continuous-integration/drone/push Build is failing
2025-12-15 10:50:36 +01:00
e088123fb9
feat: adds required column to custom field settings
2025-12-15 09:58:38 +01:00
3d81461fbe
feat: adds memberdata component for settings
2025-12-15 09:58:19 +01:00
9dba4d1019
fix: credo warnings
continuous-integration/drone/push Build is passing
2025-12-11 14:21:40 +01:00
b0097ab99d
feat: adds sidebar as overlay and moves navbar content there
continuous-integration/drone/push Build is failing
2025-12-11 10:11:00 +01:00
b1f6d29ca1
Merge remote-tracking branch 'origin/main' into feature/220_ui_issues_2
continuous-integration/drone/push Build is passing
2025-12-11 01:49:12 +01:00
1675d66b67
translate field names for visibility dropdown
continuous-integration/drone/push Build is failing
2025-12-11 00:51:26 +01:00
bb6ea0085b
Merge branch 'main' into sidebar
continuous-integration/drone/push Build encountered an error
2025-12-08 12:29:33 +01:00
c3e95ca711
formatting
continuous-integration/drone/push Build is passing
2025-12-08 11:51:45 +01:00
1b06f885bf
Merge branch 'main' into feature/223_member_checkbox
continuous-integration/drone/push Build is failing
2025-12-08 11:43:54 +01:00
8512be0282
feat: reuse form_section in settings
continuous-integration/drone/push Build is failing
2025-12-04 12:32:24 +01:00
2f6d5ff818
Add simple sidebar
continuous-integration/drone/push Build is failing
2025-12-03 22:41:57 +01:00
94de429529
style: translate fieldtypes and payment as button
2025-12-03 22:18:18 +01:00
5ae4450444
Merge branch 'main' into feature/209_hide_field_dropdown
continuous-integration/drone/push Build is passing
2025-12-03 18:58:40 +01:00
cf6a108049
refactor: DRY - use Mv.Constants.custom_field_prefix() instead of string literals
continuous-integration/drone/push Build is passing
2025-12-03 18:47:27 +01:00
fabfe64468
refactor: rename custom_fields/member_fields to extract_*_field_keys for clarity
2025-12-03 18:44:17 +01:00
6029920c3f
refactor: cleanup dropdown_menu component (required attr, remove redundant defaults, fix checkbox)
2025-12-03 18:42:49 +01:00
6cf955b024
fix: get_from_cookie now correctly handles list return from get_req_header
2025-12-03 18:37:51 +01:00
217ed632fa
fix: preserve paid_filter in URL when toggling field visibility
2025-12-03 18:36:13 +01:00
3b038d451d
fix: use all_custom_fields in prepare_dynamic_cols
...
Allows users to enable globally hidden custom fields in the table view
2025-12-03 18:20:32 +01:00
690083bdf0
refactor: fix Credo warnings in field visibility modules
...
Use Enum.map_join and reduce nesting in format_custom_field_label
2025-12-03 18:10:13 +01:00
4bbba65038
fix: remove duplicate member_fields_visible assignment in mount/3
...
Removes dead code and fixes initialization to use FieldVisibility module
2025-12-03 18:09:08 +01:00
75e1fc8a3a
fix: use all_custom_fields in handle_info(:field_toggled)
...
Fixes bug where globally hidden custom fields could not be enabled via dropdown
2025-12-03 18:07:37 +01:00
8ce89a7227
formatting
continuous-integration/drone/push Build is passing
2025-12-03 17:44:01 +01:00
f5b67de870
Merge branch 'main' into feature/209_hide_field_dropdown
continuous-integration/drone/push Build is failing
2025-12-03 17:38:50 +01:00
ba5fc34d80
Move custom fields to global admin settings
continuous-integration/drone/push Build is failing
2025-12-03 16:32:40 +01:00
2542bcf9e4
fix: improve gettext translations and deduplicate email formatting in member views
continuous-integration/drone/push Build was killed
2025-12-03 15:30:09 +01:00
ed961f7585
Redesign member view/edit UI with improved accessibility
...
- Group fields into Personal Data, Custom Fields, and Payment Data sections
- Fix WCAG AA contrast issues and semantic HTML (dt/dd in dl)
- Format mailto links with member name in href attribute
2025-12-03 15:29:29 +01:00