Commit Graph

46 Commits

Author SHA1 Message Date
Andras Bacsai bc39c2caa8 fix: eliminate layout shift on input border indicator using box-shadow
Replace border-based left indicator with inset box-shadow to prevent unwanted layout shifts when focusing or marking fields as dirty. The solution reserves 4px space with transparent shadow in default state and transitions to colored shadow on focus/dirty without affecting the box model. Update all form components (input, textarea, select, datalist) for consistency.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:29:06 +01:00
Andras Bacsai a5c6f53b58 Fix wire:dirty indicator appearing on readonly fields without wire:model binding
The wire:dirty.class was being applied to all form inputs, even those without
wire:model bindings (like readonly fields). This caused the dirty state indicator
to appear on readonly fields when other fields in the form were modified.

Fixed by only applying wire:dirty.class when wire:model binding is present:
- input.blade.php: Moved wire:dirty.class inside @if($modelBinding !== 'null')
- textarea.blade.php: Applied same fix for all textarea variations
- select.blade.php: Applied same fix for select elements

This ensures only fields with actual Livewire bindings show dirty state indicators.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-16 11:09:39 +02:00
Andras Bacsai 837a0f4545 Merge branch 'next' into andrasbacsai/livewire-model-binding
Resolved merge conflicts between Livewire model binding refactoring and UI/CSS updates from next branch. Key integrations:

- Preserved unique HTML ID generation for form components
- Maintained wire:model bindings using $modelBinding
- Integrated new wire:dirty.class styles (border-l-warning pattern)
- Kept both syncData(true) and validateDockerComposeForInjection in StackForm
- Merged security tests and helper improvements from next

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-16 11:05:29 +02:00
Andras Bacsai 2a8f02ed58 Changes auto-committed by Conductor 2025-10-16 09:48:32 +02:00
Andras Bacsai a514c837b6 Fix duplicate HTML ID warnings in form components
Resolve browser console warnings about non-unique HTML IDs when multiple
Livewire components with similar form fields appear on the same page.

**Problem:**
Multiple forms using generic IDs like `id="description"` or `id="name"`
caused duplicate ID warnings and potential accessibility/JavaScript issues.

**Solution:**
- Separate `wire:model` binding name from HTML `id` attribute
- Auto-prefix HTML IDs with Livewire component ID for uniqueness
- Preserve existing `wire:model` behavior with property names

**Implementation:**
- Added `$modelBinding` property for wire:model (e.g., "description")
- Added `$htmlId` property for unique HTML ID (e.g., "lw-xyz123-description")
- Updated render() method to generate unique IDs automatically
- Updated all blade templates to use new properties

**Components Updated:**
- Input (text, password, etc.)
- Textarea (including Monaco editor)
- Select
- Checkbox
- Datalist (single & multiple selection)

**Result:**
 All HTML IDs now unique across page
 No console warnings
 wire:model bindings work correctly
 Validation error messages display correctly
 Backward compatible - no changes needed in existing components

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 10:27:41 +02:00
Andras Bacsai c9e6418542 refactor(forms): simplify wire:dirty class bindings for input, select, and textarea components 2025-10-09 12:52:59 +02:00
Andras Bacsai ee502b9f76 feat(email): implement email change request and verification process
- Added functionality for users to request an email change, including generating a verification code and setting an expiration time.
- Implemented methods in the User model to handle email change requests, code validation, and confirmation.
- Created a new job to update the user's email in Stripe after confirmation.
- Introduced rate limiting for email change requests and verification attempts to prevent abuse.
- Added a new notification for email change verification.
- Updated the profile component to manage email change requests and verification UI.
2025-08-18 14:54:08 +02:00
Andras Bacsai 1ddec358a5 feat(input): add autofocus attribute to input component for improved accessibility 2025-08-12 10:06:19 +02:00
0x4e32 c728e6f2ba feat(ui): Upgrade to Tailwind v4 (#5710) 2025-05-14 12:43:23 +02:00
Andras Bacsai c211227141 fix: add min/max length to input/texarea 2024-11-03 21:27:02 +01:00
Andras Bacsai 96b8ddf664 chore: Add autocomplete attribute to input fields 2024-09-27 16:32:03 +02:00
Andras Bacsai 70dfa101ef refactor: Improve label positioning in input and checkbox components 2024-09-24 21:04:04 +02:00
Andras Bacsai 2644efd9f7 Update input.blade.php and health-checks.blade.php 2024-04-29 12:54:36 +02:00
Andras Bacsai d31f75d1ec Refactor form inputs and labels 2024-04-03 15:10:21 +02:00
Andras Bacsai b418a78e2e ui ui ui (pig) 2024-03-24 16:00:25 +01:00
Andras Bacsai 8b7e1e4169 Refactor code and update UI components 2024-03-22 11:34:15 +01:00
Andras Bacsai b61860b3ab ui: redesign 2024-03-20 12:54:06 +01:00
Andras Bacsai 91950e1891 ui: redesign 2024-03-19 15:37:16 +01:00
Andras Bacsai faa9a982a9 fix: multiline input 2024-03-18 12:28:53 +01:00
Andras Bacsai 3ea3674407 fix: multiline env variables 2024-03-15 22:02:37 +01:00
Andras Bacsai 38d367e709 fix: padding left on input boxes 2024-02-15 12:59:25 +01:00
Andras Bacsai 1ff1664b6c fix: copy invitation 2023-12-13 14:44:11 +01:00
Andras Bacsai 00d708610d improve local dev + contribution guide 2023-12-13 11:12:53 +01:00
Andras Bacsai 718603e37e wip: migrate to livewire 3 2023-12-07 19:06:32 +01:00
Andras Bacsai 3fc264560c Update dependencies and fix minor bugs. 2023-11-13 15:19:49 +01:00
Andras Bacsai 1338e68b8c wip: backup existing database 2023-09-05 12:14:31 +02:00
Andras Bacsai b39ca51d41 wip: boarding 2023-08-22 17:44:49 +02:00
Andras Bacsai 88b3005589 feat: force password reset + waitlist 2023-08-15 14:11:38 +02:00
Andras Bacsai c762195c8a format files lol 2023-08-11 20:19:42 +02:00
Andras Bacsai b4b1c671bd fix: input and textarea 2023-08-08 14:46:23 +02:00
Andras Bacsai f2228cec7b testing php storm code cleanup and styling 2023-08-08 11:51:36 +02:00
Andras Bacsai e9bd1f88c0 fixes 2023-07-28 09:10:35 +02:00
Andras Bacsai 9c393ff6bc fix: migrate db schema for smtp + discord 2023-07-27 21:26:15 +02:00
Andras Bacsai 8deeb59d5c fix: readonly input box 2023-07-25 15:23:16 +02:00
Andras Bacsai a0b2868e95 UI stuffs 2023-07-13 13:16:24 +02:00
Andras Bacsai 716c9aa860 fixes 2023-06-19 09:14:09 +02:00
Andras Bacsai 9d6557bacb fix 2023-06-16 21:16:30 +02:00
Andras Bacsai c69f95dea1 fix 2023-06-16 13:42:02 +02:00
Andras Bacsai 3589b92ec9 fix 2023-06-16 12:35:40 +02:00
Andras Bacsai 8daad8f8b8 fixes 2023-06-16 12:00:36 +02:00
Andras Bacsai 05c9126184 updates 2023-06-16 10:32:29 +02:00
Andras Bacsai fe51f8fbf7 private keys view 2023-06-15 09:58:17 +02:00
Andras Bacsai c701fbad32 fix 2023-06-13 10:11:11 +02:00
Andras Bacsai 0f7512a394 fix 2023-06-12 22:30:47 +02:00
Andras Bacsai 774b8d987b ui updates 2023-06-07 21:44:16 +02:00
Andras Bacsai d2b0823cd0 fix 2023-05-25 14:05:44 +02:00