i commited last idk when , so updates
This commit is contained in:
74
jquery/ui/easycard.js
vendored
Normal file
74
jquery/ui/easycard.js
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
/**
|
||||
* EasyCard Component
|
||||
* <easy-card title="Card Title">
|
||||
* <p>Put any content here: text, images, lists, etc.</p>
|
||||
* </easy-card>
|
||||
*/
|
||||
|
||||
class EasyCard extends HTMLElement {
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
const shadow = this.attachShadow({mode: 'open'});
|
||||
|
||||
// Create card container
|
||||
this.card = document.createElement('div');
|
||||
this.card.classList.add('easy-card');
|
||||
|
||||
// Create content container
|
||||
this.content = document.createElement('div');
|
||||
this.content.classList.add('easy-card-content');
|
||||
|
||||
// Styles
|
||||
const style = document.createElement('style');
|
||||
style.textContent = `
|
||||
.easy-card {
|
||||
background: #fff;
|
||||
border-radius: 8px;
|
||||
padding: 16px;
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
|
||||
font-family: Arial, sans-serif;
|
||||
max-width: 400px;
|
||||
margin: 8px 0;
|
||||
transition: transform 0.2s, box-shadow 0.2s;
|
||||
}
|
||||
.easy-card:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 6px 18px rgba(0,0,0,0.15);
|
||||
}
|
||||
.easy-card-title {
|
||||
margin: 0 0 8px 0;
|
||||
font-size: 1.2em;
|
||||
color: #333;
|
||||
}
|
||||
.easy-card-content {
|
||||
font-size: 1em;
|
||||
color: #555;
|
||||
}
|
||||
`;
|
||||
|
||||
shadow.appendChild(style);
|
||||
shadow.appendChild(this.card);
|
||||
}
|
||||
|
||||
connectedCallback() {
|
||||
// Add title if provided
|
||||
const titleText = this.getAttribute('title');
|
||||
if (titleText) {
|
||||
const title = document.createElement('h3');
|
||||
title.classList.add('easy-card-title');
|
||||
title.textContent = titleText;
|
||||
this.card.appendChild(title);
|
||||
}
|
||||
|
||||
// Move all light DOM content to the shadow DOM content container
|
||||
const contentNodes = Array.from(this.childNodes);
|
||||
contentNodes.forEach(node => {
|
||||
this.content.appendChild(node.cloneNode(true));
|
||||
});
|
||||
|
||||
this.card.appendChild(this.content);
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define('easy-card', EasyCard);
|
||||
Reference in New Issue
Block a user