| | |
| | |
| | |
| |
|
| |
|
| | export class Loading {
|
| | |
| | |
| |
|
| | static show(containerId, message = 'Loading...') {
|
| | const container = document.getElementById(containerId);
|
| | if (!container) {
|
| | console.warn(`[Loading] Container not found: ${containerId}`);
|
| | return;
|
| | }
|
| |
|
| | const spinner = document.createElement('div');
|
| | spinner.className = 'loading-container';
|
| | spinner.innerHTML = `
|
| | <div class="spinner"></div>
|
| | <p class="loading-text">${message}</p>
|
| | `;
|
| |
|
| | container.innerHTML = '';
|
| | container.appendChild(spinner);
|
| | }
|
| |
|
| | |
| | |
| |
|
| | static hide(containerId) {
|
| | const container = document.getElementById(containerId);
|
| | if (!container) return;
|
| |
|
| | const spinner = container.querySelector('.loading-container');
|
| | if (spinner) {
|
| | spinner.remove();
|
| | }
|
| | }
|
| |
|
| | |
| | |
| |
|
| | static skeletonRows(count = 5, columns = 5) {
|
| | let html = '';
|
| | for (let i = 0; i < count; i++) {
|
| | html += '<tr class="skeleton-row">';
|
| | for (let j = 0; j < columns; j++) {
|
| | html += '<td><div class="skeleton-box"></div></td>';
|
| | }
|
| | html += '</tr>';
|
| | }
|
| | return html;
|
| | }
|
| |
|
| | |
| | |
| |
|
| | static skeletonCards(count = 4) {
|
| | let html = '';
|
| | for (let i = 0; i < count; i++) {
|
| | html += `
|
| | <div class="skeleton-card">
|
| | <div class="skeleton-box skeleton-title"></div>
|
| | <div class="skeleton-box skeleton-text"></div>
|
| | <div class="skeleton-box skeleton-text"></div>
|
| | </div>
|
| | `;
|
| | }
|
| | return html;
|
| | }
|
| |
|
| | |
| | |
| |
|
| | static addSkeleton(selector) {
|
| | document.querySelectorAll(selector).forEach(el => {
|
| | el.classList.add('skeleton');
|
| | });
|
| | }
|
| |
|
| | |
| | |
| |
|
| | static removeSkeleton(selector) {
|
| | document.querySelectorAll(selector).forEach(el => {
|
| | el.classList.remove('skeleton');
|
| | });
|
| | }
|
| | }
|
| |
|
| | export default Loading;
|
| |
|