/*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ import { nextTick, DirectiveBinding } from 'vue'; import { registerResponsiveContentTable, unregisterResponsiveContentTable, } from './contentTableUtils'; interface ContentTableValue { off?: boolean; // if set to true, does not apply style } export default { mounted(el: HTMLElement, binding?: DirectiveBinding): void { if (binding?.value?.off) { return; } registerResponsiveContentTable(el); }, updated(el: HTMLElement, binding?: DirectiveBinding): void { if (binding?.value?.off) { unregisterResponsiveContentTable(el); return; } // classes can be overwritten when elements bind to :class, nextTick + using // updated avoids this problem (and doing in both mounted and updated avoids a temporary // state where the classes aren't added) nextTick(() => { registerResponsiveContentTable(el); }); }, beforeUnmount(el: HTMLElement): void { unregisterResponsiveContentTable(el); }, };