import {nativeVlElement, define} from '/node_modules/vl-ui-core/dist/vl-core.js';

/**
 * VlTitle
 * @class
 * @classdesc Gebruik de vl-title om titels en subtitels als leidraad voor de gebruiker om door de content te gaan.
 *
 * @extends HTMLHeadingElement
 * @mixes nativeVlElement
 *
 * @property {boolean} data-vl-sans - Attribuut wordt gebruikt om de font te wijzigen van Flanders Serif naar Flanders Sans.
 * @property {boolean} data-vl-has-border - Attribuut wordt gebruikt om een subtiele lijn toe te voegen onder de titel.
 * @property {boolean} data-vl-alt - Attribuut wordt gebruikt voor een alt titel en zal altijd een lijn toevoegen onder de titel.
 * @property {boolean} data-vl-no-space-bottom - Attribuut wordt gebruikt wanneer een titel gecombineerd wordt met de grid component.
 *
 * @see {@link https://www.github.com/milieuinfo/webcomponent-vl-ui-titles/releases/latest|Release notes}
 * @see {@link https://www.github.com/milieuinfo/webcomponent-vl-ui-titles/issues|Issues}
 * @see {@link https://webcomponenten.omgeving.vlaanderen.be/demo/vl-titles.html|Demo}
 */
export class VlTitle extends nativeVlElement(HTMLHeadingElement) {
  static get _observedClassAttributes() {
    return ['sans', 'has-border', 'alt', 'no-space-bottom'];
  }

  connectedCallback() {
    this.classList.add('vl-title');
    this.classList.add('vl-title--' + this.tagName.toLowerCase());
  }

  get _classPrefix() {
    return 'vl-title--';
  }
}

export class VlH1 extends VlTitle { }
export class VlH2 extends VlTitle { }
export class VlH3 extends VlTitle { }
export class VlH4 extends VlTitle { }
export class VlH5 extends VlTitle { }
export class VlH6 extends VlTitle { }

define('vl-h1', VlH1, {extends: 'h1'});
define('vl-h2', VlH2, {extends: 'h2'});
define('vl-h3', VlH3, {extends: 'h3'});
define('vl-h4', VlH4, {extends: 'h4'});
define('vl-h5', VlH5, {extends: 'h5'});
define('vl-h6', VlH6, {extends: 'h6'});