mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-26 17:26:10 -06:00
Static assets for markdown widget
This commit is contained in:
parent
53ac57e8a6
commit
b362024b12
BIN
netbox/project-static/dist/netbox-dark.css
vendored
BIN
netbox/project-static/dist/netbox-dark.css
vendored
Binary file not shown.
BIN
netbox/project-static/dist/netbox-light.css
vendored
BIN
netbox/project-static/dist/netbox-light.css
vendored
Binary file not shown.
BIN
netbox/project-static/dist/netbox-print.css
vendored
BIN
netbox/project-static/dist/netbox-print.css
vendored
Binary file not shown.
BIN
netbox/project-static/dist/netbox.js
vendored
BIN
netbox/project-static/dist/netbox.js
vendored
Binary file not shown.
BIN
netbox/project-static/dist/netbox.js.map
vendored
BIN
netbox/project-static/dist/netbox.js.map
vendored
Binary file not shown.
@ -4,6 +4,7 @@ import { initMoveButtons } from './moveOptions';
|
|||||||
import { initReslug } from './reslug';
|
import { initReslug } from './reslug';
|
||||||
import { initSelectAll } from './selectAll';
|
import { initSelectAll } from './selectAll';
|
||||||
import { initSelectMultiple } from './selectMultiple';
|
import { initSelectMultiple } from './selectMultiple';
|
||||||
|
import { initMarkdownPreviews } from './markdownPreview';
|
||||||
|
|
||||||
export function initButtons(): void {
|
export function initButtons(): void {
|
||||||
for (const func of [
|
for (const func of [
|
||||||
@ -13,6 +14,7 @@ export function initButtons(): void {
|
|||||||
initSelectAll,
|
initSelectAll,
|
||||||
initSelectMultiple,
|
initSelectMultiple,
|
||||||
initMoveButtons,
|
initMoveButtons,
|
||||||
|
initMarkdownPreviews,
|
||||||
]) {
|
]) {
|
||||||
func();
|
func();
|
||||||
}
|
}
|
||||||
|
44
netbox/project-static/src/buttons/markdownPreview.ts
Normal file
44
netbox/project-static/src/buttons/markdownPreview.ts
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
import { isTruthy } from 'src/util';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* interface for htmx configRequest event
|
||||||
|
*/
|
||||||
|
declare global {
|
||||||
|
interface HTMLElementEventMap {
|
||||||
|
'htmx:configRequest': CustomEvent<{
|
||||||
|
parameters: Record<string, string>;
|
||||||
|
headers: Record<string, string>;
|
||||||
|
}>;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function initMarkdownPreview(markdownWidget: HTMLDivElement) {
|
||||||
|
const previewButton = markdownWidget.querySelector('button.preview-button') as HTMLButtonElement;
|
||||||
|
const textarea = markdownWidget.querySelector('textarea') as HTMLTextAreaElement;
|
||||||
|
const preview = markdownWidget.querySelector('div.preview') as HTMLDivElement;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make sure the textarea has style attribute height
|
||||||
|
* So that it can be copied over to preview div.
|
||||||
|
*/
|
||||||
|
if (!isTruthy(textarea.style.height)) {
|
||||||
|
const { height } = textarea.getBoundingClientRect();
|
||||||
|
textarea.style.height = `${height}px`;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add the value of the textarea to the body of the htmx request
|
||||||
|
* and copy the height of text are to the preview div
|
||||||
|
*/
|
||||||
|
previewButton.addEventListener('htmx:configRequest', e => {
|
||||||
|
e.detail.parameters = { text: textarea.value || '' };
|
||||||
|
e.detail.headers['X-CSRFToken'] = window.CSRF_TOKEN;
|
||||||
|
preview.style.minHeight = textarea.style.height;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function initMarkdownPreviews(): void {
|
||||||
|
for (const markdownWidget of document.querySelectorAll<HTMLDivElement>('.markdown-widget')) {
|
||||||
|
initMarkdownPreview(markdownWidget);
|
||||||
|
}
|
||||||
|
}
|
@ -999,7 +999,7 @@ div.card-overlay {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Markdown widget */
|
/* Markdown widget */
|
||||||
.markdown-preview {
|
.markdown-widget {
|
||||||
.nav-link {
|
.nav-link {
|
||||||
border-bottom: 0;
|
border-bottom: 0;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user