This is a viewer only at the moment see the article on how this works.
To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk
This is a preview from the server running through my markdig pipeline
Un botón de copia para destacar.js
Saturday, 28 September 2024
El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.
En este sitio uso Hightlight.js para render fragmentos de código del lado cliente. Me gusta esto ya que mantiene el código del servidor limpio y sencillo . Sin embargoM SK3 Quisiera añadir un botón de copia a cada fragmento de código para que los usuarios pudieran copiar fácilmente el código a su tabla de clipboardMSC4 Esta es una tarea simple pero pensei que la documentaría aquí para cualquier otra persona que quizás quiera hacer lo mismo.
El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.
El punto final es que tenemos un botón de copia como este en el sitio:

Nota: Todos los créditos para este artículo van a El Presidente interino (habla en inglés): Doy las gracias al representante de la República Árabe Siria por su declaración. ¿Quién's artículo que usaba para crear este uno. Quiero solo documentar los cambios que he hecho a él aquí para mi propia referencia y compartirlo con otros .
El Comité recomienda al Estado Parte que incluya en su próximo informe periódico datos estadísticos desglosados por sexo, edad y origen étnico.
En el párrafo 2 de la parte dispositiva del proyecto de resolución, la Asamblea General pidió al Secretario General que le presentara en su quincuagésimo séptimo período de sesiones un informe sobre los progresos realizados en la aplicación de las recomendaciones formuladas por la Comisión Consultiva en Asuntos Administrativos y de Presupuesto. plugin de botones de copia para Higlight.js pero decidi que quería más control sobre el botón y el estilo. Así que me he encontrado El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer. para añadir un botón de copia.
El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.
Aunque ese artículo es un gran enfoque, tenía un par de problemas que dejaron de ser perfecto para mí:
- Utiliza una fuente que yo no uso'no uso en mi sitio ( pero entonces manualmente tiene el SVG tambiénM SK2 no estoy seguro por qué ).
// Lucide copy icon
copyButton.innerHTML = `<svg class="h-4 w-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>`;
Mientras esto funciona, ya uso BoxIcons en este sitio que tiene un copiar icono ya allí.
- Utiliza una biblioteca de toast que no tengo en este sitio.
// Notify user that the content has been copied
toast.success("Copied to clipboard", {
description: "The code block content has been copied to the clipboard.",
});
- En el bloque de código se elimina la entrada y se pone el icono en el fondo que yo no quería.
El Comité recomienda que el Estado Parte adopte todas las medidas necesarias para garantizar la protección de los derechos humanos y las libertades fundamentales, incluidos los derechos económicos, sociales y culturales.
El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.
Este plugin se conecta al after:highlightElement evento y agrega un botón al bloque de código.
Así que primero he copiado el código de Faraz' y luego he hecho los siguientes cambiosM SK1
- En lugar de añadirlo al final del bloque de código, la doy al inicio.
- En lugar del SVG he utilizado la versión de BoxIcons añadiendo esas clases al botón insertado & fijando el tamaño de texto a
text-xl. - Quisiera eliminar la notificación de toast y sustituirla por una simple
showToastFunción que tengo en mi sitio (ver más adelanteM SK1 - El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.
aria-labelEl Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.titlea la tecla de accesibilidad ( y para dar un buen efecto de hover
hljs.addPlugin({
"after:highlightElement": ({ el, text }) => {
const wrapper = el.parentElement;
if (wrapper == null) {
return;
}
/**
* Make the parent relative so we can absolutely
* position the copy button
*/
wrapper.classList.add("relative");
const copyButton = document.createElement("button");
copyButton.classList.add(
"absolute",
"top-2",
"right-1",
"p-2",
"text-gray-500",
"hover:text-gray-700",
"bx",
"bx-copy",
"text-xl",
"cursor-pointer"
);
copyButton.setAttribute("aria-label", "Copy code to clipboard");
copyButton.setAttribute("title", "Copy code to clipboard");
copyButton.onclick = () => {
navigator.clipboard.writeText(text);
// Notify user that the content has been copied
showToast("The code block content has been copied to the clipboard.", 3000, "success");
};
// Append the copy button to the wrapper
wrapper.prepend(copyButton);
},
});
showToast El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.
Esto se basa en un rasero parcial que he agregado a mi proyecto. El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer. El componente DaisyUI Toast para mostrar un mensaje al usuario. Me gusta este enfoque ya que mantiene el Javascript limpio y sencillo y me permite estilor el mensaje de tosta en la misma forma como el resto del sitio.
<div id="toast" class="toast toast-bottom fixed z-50 hidden overflow-y-hidden">
<div id="toast-message" class="alert">
<div>
<span id="toast-text">Notification message</span>
</div>
</div>
<p class="hidden right-1 bx-copy cursor-pointer alert-success alert-warning alert-error alert-info"></p>
</div>
Usted' noterá que esto también tiene un extraño ocultado p tag en la parte inferior, esto es sólo para Tailwind para analizar estas clases cuando construye el sitio
La función Javascript es simple, sólo muestra el mensaje de tosta para un tiempo determinado y luego lo oculta de nuevo.
window.showToast = function(message, duration = 3000, type = 'success') {
const toast = document.getElementById('toast');
const toastText = document.getElementById('toast-text');
const toastMessage = document.getElementById('toast-message');
// Set message and type
toastText.innerText = message;
toastMessage.className = `alert alert-${type}`; // Change alert type (success, warning, error)
// Show the toast
toast.classList.remove('hidden');
// Hide the toast after specified duration
setTimeout(() => {
toast.classList.add('hidden');
}, duration);
}
Podemos entonces llamar esto usando el showToast El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer. copyButton.onclick El Comité recomienda que el Estado Parte adopte todas las medidas necesarias para garantizar la igualdad de oportunidades entre los hombres y las mujeres en materia de empleo, incluida la eliminación del trabajo forzoso.
showToast("The code block content has been copied to the clipboard.", 3000, "success");
He añadido esta parte en el tope de mi _Layout.cshtml archivo de modo que es'es disponible en cada página.
<partial name="_Toast" />``
Ahora cuando muestramos los post del blog los bloques de código tienen:

El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.
Así que ' es esto , una simple modificación al código FarazM SK2 para que funcione para mí. Espero que esto ayude a alguien más ahí fueraMSC4