import { t, i18n } from '../../i18n.js';
import { router } from '../../router.js';
class PageCreate extends HTMLElement {
constructor() {
super();
this.formData = {
title: '',
description: '',
price: '',
category: '',
location: ''
};
}
connectedCallback() {
this.render();
this.unsubscribe = i18n.subscribe(() => this.render());
}
disconnectedCallback() {
if (this.unsubscribe) this.unsubscribe();
}
render() {
this.innerHTML = /* html */ `
`;
this.setupEventListeners();
}
setupEventListeners() {
const form = this.querySelector('#create-form');
const cancelBtn = this.querySelector('#cancel-btn');
form.addEventListener('submit', (e) => this.handleSubmit(e));
cancelBtn.addEventListener('click', () => router.back());
form.querySelectorAll('input, textarea, select').forEach(input => {
input.addEventListener('input', (e) => {
this.formData[e.target.name] = e.target.value;
});
});
}
async handleSubmit(e) {
e.preventDefault();
const form = e.target;
const submitBtn = form.querySelector('[type="submit"]');
submitBtn.disabled = true;
submitBtn.textContent = t('create.publishing');
await new Promise(resolve => setTimeout(resolve, 1000));
console.log('Creating listing:', this.formData);
router.navigate('/');
}
escapeHtml(text) {
const div = document.createElement('div');
div.textContent = text;
return div.innerHTML;
}
}
customElements.define('page-create', PageCreate);
const style = document.createElement('style');
style.textContent = /* css */ `
page-create .create-page {
max-width: 600px;
margin: 0 auto;
}
page-create .create-page h1 {
margin-bottom: var(--space-xl);
}
page-create .create-form .form-group {
margin-bottom: var(--space-lg);
}
page-create textarea.input {
resize: vertical;
min-height: 120px;
}
page-create .image-upload {
border: 2px dashed var(--color-border);
border-radius: var(--radius-lg);
overflow: hidden;
}
page-create .upload-area {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: var(--space-2xl);
cursor: pointer;
transition: background-color var(--transition-fast);
}
page-create .upload-area:hover {
background-color: var(--color-bg-secondary);
}
page-create .upload-icon {
font-size: 2rem;
margin-bottom: var(--space-sm);
}
page-create .form-actions {
display: flex;
gap: var(--space-md);
justify-content: flex-end;
margin-top: var(--space-xl);
}
`;
document.head.appendChild(style);