import {nativeVlElement, define} from '/node_modules/vl-ui-core/dist/vl-core.js';
/**
* Gebruik de link mixin in combinatie met link elementen.
* @mixin vlLinkElement
*
* @param {Object} SuperClass - Class die als base class gebruikt zal worden.
* @return {Object} class
*/
export const vlLinkElement = (SuperClass) => {
return class extends nativeVlElement(SuperClass) {
static get _observedAttributes() {
return ['error'];
}
static get _observedClassAttributes() {
return ['block'];
}
connectedCallback() {
this.classList.add('vl-link');
this._setIconLinkAttribute();
}
get _classPrefix() {
return 'vl-link--';
}
get _iconElementen() {
return this.querySelectorAll('[is="vl-icon"]');
}
_setIconLinkAttribute() {
this._iconElementen.forEach((icon) => {
icon.setAttribute('link', '');
});
}
_errorChangedCallback(oldValue, newValue) {
this._toggleClass(this, newValue, 'vl-u-text--error');
}
};
};
export const VlLinkElement = vlLinkElement;
/**
* VlLink
* @class
* @classdesc Gebruik de vl-link om de gebruiker door te verwijzen naar een andere URL, bijvoorbeeld een nieuwe pagina of een document.
*
* @extends HTMLAnchorElement
* @mixes vlLinkElement
*
* @property {string} data-vl-block - Attribuut zorgt ervoor dat het element als block getoond wordt.
* @property {string} data-vl-error - Attribuut zorgt ervoor dat het element als error getoond wordt.
*
* @see {@link https://www.github.com/milieuinfo/webcomponent-vl-ui-link/releases/latest|Release notes}
* @see {@link https://www.github.com/milieuinfo/webcomponent-vl-ui-link/issues|Issues}
* @see {@link https://webcomponenten.omgeving.vlaanderen.be/demo/vl-link.html|Demo}
*/
export class VlLink extends vlLinkElement(HTMLAnchorElement) {}
/**
* VlButtonLink
* @class
* @classdesc Een button gestyled als link.
*
* @extends HTMLButtonElement
* @mixes vlLinkElement
*
* @property {string} data-vl-block - Attribuut zorgt ervoor dat het element als block getoond wordt.
* @property {string} data-vl-error - Attribuut zorgt ervoor dat het element als error getoond wordt.
*
* @see {@link https://www.github.com/milieuinfo/webcomponent-vl-ui-link/releases/latest|Release notes}
* @see {@link https://www.github.com/milieuinfo/webcomponent-vl-ui-link/issues|Issues}
* @see {@link https://webcomponenten.omgeving.vlaanderen.be/demo/vl-link.html|Demo}
*/
export class VlButtonLink extends vlLinkElement(HTMLButtonElement) {}
define('vl-link', VlLink, {extends: 'a'});
define('vl-button-link', VlButtonLink, {extends: 'button'});