35 lines
1.1 KiB
JavaScript
35 lines
1.1 KiB
JavaScript
document.addEventListener('DOMContentLoaded', () => {
|
|
const slugify = (value) => {
|
|
return value
|
|
.toLowerCase()
|
|
.trim()
|
|
.replace(/[^\p{L}\p{N}]+/gu, '-')
|
|
.replace(/^-+|-+$/g, '') || 'slug-artikel-otomatis';
|
|
};
|
|
|
|
const titleInput = document.querySelector('[data-slug-source]');
|
|
const slugTarget = document.querySelector('[data-slug-target]');
|
|
|
|
if (titleInput && slugTarget) {
|
|
const updateSlug = () => {
|
|
slugTarget.textContent = slugify(titleInput.value);
|
|
};
|
|
|
|
titleInput.addEventListener('input', updateSlug);
|
|
updateSlug();
|
|
}
|
|
|
|
if (window.bootstrap) {
|
|
document.querySelectorAll('.toast').forEach((toastElement) => {
|
|
const toast = new window.bootstrap.Toast(toastElement, {
|
|
delay: Number.parseInt(toastElement.dataset.bsDelay || '5000', 10),
|
|
autohide: true,
|
|
});
|
|
|
|
if (toastElement.dataset.autoshow !== 'false') {
|
|
toast.show();
|
|
}
|
|
});
|
|
}
|
|
});
|