ืฉืืฉ ืืืคืฆืื ืฉื ืืืื / ืขืืืื ืืืฉื ืืื ืจืง ืืคืฉืจ ืืืขืืืช ืงืืฆืื ืืื ืืกืืจ ืื ืืช ืื ืืคื ืืื ืฉืงืจืืช ืืขืืืื ืืืจื ืฉืืขืืช ืืช ืืงืืฆืื ืืชื ืืืืจ ืื ืื ืื ืฉืืื ืืขืฉื (ืืจืืืกืืืช ืขื ืฉืืืืช/ืืืื ืื/ืกืืืืืื ืืขืื) ื ืืกืฃ ืขื ืื ืชืขืฉื ืฉืืื ื ืฉืืคืฉืจ ืืขืฉืืช ืืฉืื ืฆืจืื ืืืืจืฉื ืืืจืฉืื ืืช ืืืืื ืืื ืคืขื ืฉืืืฉืื ื ืจืฉื ืืื ืืงืื ืืืืื ืืืืขื ( ืืจืื ืืื ืstudy mate ืื ืืกืฃ ืชืืจืื ืืช ืืชืืื ื ืฉืฉืืช ืืชืขืฆื ืืช ืืืชืจ ืฉืืืื ืืืฉ ืืืฉืงืข ืืื ืฆืืขืื ืจืืืขืื
6110ac3
verified
| class RegisterForm extends HTMLElement { | |
| connectedCallback() { | |
| this.attachShadow({ mode: 'open' }); | |
| this.shadowRoot.innerHTML = ` | |
| <style> | |
| .register-form { | |
| max-width: 500px; | |
| margin: 0 auto; | |
| padding: 2rem; | |
| background: var(--card-bg); | |
| border-radius: 16px; | |
| box-shadow: 0 4px 6px rgba(0,0,0,0.05); | |
| } | |
| .form-group { | |
| margin-bottom: 1.5rem; | |
| } | |
| label { | |
| display: block; | |
| margin-bottom: 0.5rem; | |
| font-weight: 600; | |
| } | |
| input { | |
| width: 100%; | |
| padding: 12px; | |
| border: 1px solid #ddd; | |
| border-radius: 8px; | |
| font-family: inherit; | |
| } | |
| .btn { | |
| width: 100%; | |
| padding: 12px; | |
| border-radius: 8px; | |
| border: none; | |
| font-weight: bold; | |
| cursor: pointer; | |
| background: var(--primary); | |
| color: white; | |
| transition: background 0.3s; | |
| } | |
| .btn:hover { | |
| background: var(--primary-light); | |
| } | |
| .login-link { | |
| text-align: center; | |
| margin-top: 1rem; | |
| } | |
| .login-link a { | |
| color: var(--primary); | |
| text-decoration: none; | |
| } | |
| </style> | |
| <div class="register-form"> | |
| <h2>ืืจืฉืื</h2> | |
| <form id="registerForm"> | |
| <div class="form-group"> | |
| <label for="name">ืฉื ืืื</label> | |
| <input type="text" id="name" required> | |
| </div> | |
| <div class="form-group"> | |
| <label for="email">ืืืืืื</label> | |
| <input type="email" id="email" required> | |
| </div> | |
| <div class="form-group"> | |
| <label for="password">ืกืืกืื</label> | |
| <input type="password" id="password" required> | |
| </div> | |
| <div class="form-group"> | |
| <label for="confirm-password">ืืืืืช ืกืืกืื</label> | |
| <input type="password" id="confirm-password" required> | |
| </div> | |
| <button type="submit" class="btn">ืืจืฉื</button> | |
| </form> | |
| <div class="login-link"> | |
| ืืืจ ืืฉ ืื ืืฉืืื? <a href="/login.html">ืืชืืืจ ืืื</a> | |
| </div> | |
| </div> | |
| `; | |
| this.shadowRoot.getElementById('registerForm').addEventListener('submit', async (e) => { | |
| e.preventDefault(); | |
| const email = this.shadowRoot.getElementById('email').value; | |
| const password = this.shadowRoot.getElementById('password').value; | |
| // Send welcome email | |
| await fetch('https://api.emailjs.com/api/v1.0/email/send', { | |
| method: 'POST', | |
| headers: { | |
| 'Content-Type': 'application/json', | |
| }, | |
| body: JSON.stringify({ | |
| service_id: 'YOUR_SERVICE_ID', | |
| template_id: 'YOUR_TEMPLATE_ID', | |
| user_id: 'YOUR_USER_ID', | |
| template_params: { | |
| to_email: email, | |
| subject: 'ืืจืื ืืื ื-StudyMate!', | |
| message: 'ืชืืื ืฉื ืจืฉืืช ื-StudyMate! ืื ื ืฉืืืื ืืืฆืืจืคืืชื ืืืขืจืืช.' | |
| } | |
| }) | |
| }); | |
| // Register user (simplified) | |
| alert('ืืืจืฉืื ืืืฆืขื ืืืฆืืื! ื ื ืืืืืง ืืช ืืืืืืื ืฉืื ืืืืืขืช ืืจืื ืืื.'); | |
| }); | |
| } | |
| } | |
| customElements.define('register-form', RegisterForm); |