UNPKG

@ulb-darmstadt/shacl-form

Version:
45 lines (39 loc) 1.6 kB
import { DefaultTheme } from './default' import { Term } from '@rdfjs/types' import { ShaclPropertyTemplate } from '../property-template' import { Editor } from '../theme' import bootstrap from 'bootstrap/dist/css/bootstrap.min.css' import css from './bootstrap.css?raw' export class BootstrapTheme extends DefaultTheme { constructor() { super(bootstrap + '\n' + css) } apply(root: HTMLFormElement): void { super.apply(root) root.dataset.bsTheme = 'light' } createDefaultTemplate(label: string, value: Term | null, required: boolean, editor: Editor, template?: ShaclPropertyTemplate | undefined): HTMLElement { const result = super.createDefaultTemplate(label, value, required, editor, template) if (editor.type !== 'checkbox') { result.classList.add('form-floating') if (editor.tagName === 'SELECT') { editor.classList.add('form-select') } else { editor.classList.add('form-control') } } const labelElem = result.querySelector('label') labelElem?.classList.add('form-label') if (labelElem?.title) { result.dataset.description = labelElem.title labelElem.removeAttribute('title') } result.prepend(editor) return result } createButton(label: string, primary: boolean): HTMLElement { const button = super.createButton(label, primary) button.classList.add('btn', primary ? 'btn-primary' : 'btn-outline-secondary') return button } }