diff --git a/App.js b/App.js
index 42d6992..c2e9693 100644
--- a/App.js
+++ b/App.js
@@ -8,80 +8,92 @@ class Product {
}
// UI Constructor
-class UI {
- addProduct(product) {
+class UI extends Product {
+ constructor(name, price, year, message, cssClass) {
+ super(name, price, year)
+ this.message = message
+ this.cssClass = cssClass
+ }
+
+ resetForm() {
+ document.getElementById('product-form').reset();
+ }
+
+ addProduct() {
const productList = document.getElementById('product-list');
const element = document.createElement('div');
element.innerHTML = `
-
Product: ${product.name} -
-
Price: ${product.price} -
-
Year: ${product.year}
+
Product: ${this.name}
+
Price: ${this.price}
+
Year: ${this.year}
Delete
`;
productList.appendChild(element);
+ this.resetForm();
}
- resetForm() {
- document.getElementById('product-form').reset();
- }
-
- deleteProduct(element) {
- if (element.name === 'delete') {
- element.parentElement.parentElement.remove();
- this.showMessage('Product Deleted Succsssfully', 'success');
- }
- }
showMessage(message, cssClass) {
+ //recibir valores de message o cssClass de forma implicita o explicita
+ const newCssClass = cssClass || this.cssClass;
+ const newMessage = message || this.message;
+
const div = document.createElement('div');
- div.className = `alert alert-${cssClass} mt-2`;
- div.appendChild(document.createTextNode(message));
+ div.className = `alert alert-${newCssClass} mt-2`;
+ div.appendChild(document.createTextNode(newMessage));
// Show in The DOM
const container = document.querySelector('.container');
const app = document.querySelector('#App');
// Insert Message in the UI
container.insertBefore(div, app);
// Remove the Message after 3 seconds
- setTimeout(function () {
+ setTimeout(function() {
document.querySelector('.alert').remove();
}, 3000);
}
+
+ deleteProduct() {
+ document.getElementById('product-list')
+ .addEventListener('click', (e) => {
+ if (e.target.name === 'delete') {
+ e.target.parentElement.parentElement.parentElement.remove();
+ this.showMessage('Product delect successfully...', 'info');
+ }
+ });
+ }
}
+//definir clase UI de manera explicita para reutilizar el método showMessage();
+const uiMessage = new UI
+
// DOM Events
document.getElementById('product-form')
- .addEventListener('submit', function (e) {
+ .addEventListener('submit', function(e) {
const name = document.getElementById('name').value,
price = document.getElementById('price').value,
year = document.getElementById('year').value;
-
- // Create a new Oject Product
- const product = new Product(name, price, year);
-
- // Create a new UI
- const ui = new UI();
-
- // Input User Validation
if (name === '' || price === '' || year === '') {
- ui.showMessage('Please Insert data in all fields', 'danger');
+ return uiMessage.showMessage('Complete fields, please!', 'info');
+ } else {
+ const ui = new UI(name, price, year, 'Product added succesfully', 'success');
+ ui.addProduct();
+ ui.showMessage();
+ ui.deleteProduct();
}
-
- // Save Product
- ui.addProduct(product);
- ui.showMessage('Product Added Successfully', 'success');
- ui.resetForm();
-
e.preventDefault();
});
-document.getElementById('product-list')
- .addEventListener('click', function (e) {
+/*
+ document.getElementById('product-list')
+ .addEventListener('click', function(e) {
const ui = new UI();
ui.deleteProduct(e.target);
e.preventDefault();
- });
\ No newline at end of file
+ });
+
+*/
\ No newline at end of file