Skip to content
Snippets Groups Projects
Select Git revision
  • 58b6b3ce840f3a9beacf456b005bd80daa3ca60e
  • main default protected
  • renovate/lock-file-maintenance
  • demo protected
  • person-select-custom
  • dbp-translation-component
  • icon-set-mapping
  • port-i18next-parser
  • remove-sentry
  • favorites-and-recent-files
  • revert-6c632dc6
  • lit2
  • advertisement
  • wc-part
  • automagic
  • publish
  • wip-cleanup
  • demo-file-handling
18 results

inline-notification.js

Blame
  • inline-notification.js 1.88 KiB
    import {css, html} from 'lit-element';
    import DBPLitElement from '../dbp-lit-element';
    import * as commonStyles from '../styles';
    
    /**
     * Inline Notification
     * 
     * Summary can be a string or empty
     * 
     * Body can be a string, html or empty
     * 
     * Type can be primary/info/success/warning/danger (default: info)
     *  
     */
    export class InlineNotification extends DBPLitElement {
        constructor() {
            super();
            this.type = '';
            this.summary = '';
            this.body = '';
        }
    
        static get properties() {
            return {
                type: { type: String },
                summary: { type: String },
                body: { type: String },
            };
        }
    
        connectedCallback() {
            super.connectedCallback();
        }
    
        static get styles() {
            // language=css
            return css`
                ${commonStyles.getThemeCSS()}
                ${commonStyles.getGeneralCSS()}
                ${commonStyles.getNotificationCSS()}
    
                .notification:not(:last-child) {
                    margin-bottom: 1.5rem;
                }
    
                .notification h3 {
                    font-weight: bold;
                    margin-bottom: 3px;
                }
    
                .notification h3 {
                    margin: 0 0 3px 0;
                    font: inherit;
                    font-weight: bold; 
                }
            `;
        }
    
        createBodyHtml() {
            return document.createRange().createContextualFragment(`${ this.body }`);
        }
    
        render() {
            const bodyHtml = this.createBodyHtml();
    
            return html`
                <div class="columns">
                    <div class="column">
                        <div id="inline-notification" class="notification is-${ this.type !== '' ? this.type : 'info' }">
                            ${ this.summary !== '' ? html`<h3>${ this.summary }</h3>` : `` }
                            ${ bodyHtml }
                        </div>
                    </div>
                </div>
            `;
        }
    }