@visa/nova-angular
Version:
Visa Product Design System Nova Angular library
99 lines • 11.3 kB
JavaScript
/**
* Copyright (c) 2025 Visa, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
**/
import { coerceBooleanProperty } from '@angular/cdk/coercion';
import { Directive, HostBinding, Input } from '@angular/core';
import * as i0 from "@angular/core";
export const BreakpointType = {
XS: 'xs',
SM: 'sm',
MD: 'md',
LG: 'lg',
XL: 'xl',
XXL: 'xxl',
MOBILE: 'mobile',
DESKTOP: 'desktop'
};
export class BreakpointsDirective {
get hostClasses() {
const containerClasses = this.getClasses('container');
const mediaClasses = this.getClasses('media');
return [
this.vHide ? 'v-hide' : null,
this.vContainerHide && !(this.vContainerHide instanceof Array) ? `v-${this.vContainerHide}-container-hide` : null,
this.vMediaHide && !(this.vMediaHide instanceof Array) ? `v-${this.vMediaHide}-media-hide` : null,
containerClasses && containerClasses.length > 0 ? containerClasses : null,
mediaClasses && mediaClasses.length > 0 ? mediaClasses : null
].join(' ');
}
/**
* Hides element when true.
*/
get vHide() {
return this._vHide;
}
set vHide(value) {
this._vHide = coerceBooleanProperty(value);
}
/**
* Hides element when within given _container_ breakpoint.
*/
get vContainerHide() {
return this._vContainerHide;
}
set vContainerHide(value) {
this._vContainerHide = value;
}
/**
* Hides element when within given _media_ breakpoint.
*/
get vMediaHide() {
return this._vMediaHide;
}
set vMediaHide(value) {
this._vMediaHide = value;
}
getClasses(type) {
let classes = [];
if (type === 'container' && this.vContainerHide instanceof Array) {
this.vContainerHide.forEach((bp) => classes.push(`v-${bp}-container-hide`));
}
else if (type === 'media' && this.vMediaHide instanceof Array) {
this.vMediaHide.forEach((bp) => classes.push(`v-${bp}-media-hide`));
}
if (classes.length > 0)
return classes.join(' ');
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BreakpointsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: BreakpointsDirective, isStandalone: true, selector: "[vContainerHide], [vMediaHide], [vHide], ", inputs: { vHide: "vHide", vContainerHide: "vContainerHide", vMediaHide: "vMediaHide" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BreakpointsDirective, decorators: [{
type: Directive,
args: [{
standalone: true,
selector: '[vContainerHide], [vMediaHide], [vHide], '
}]
}], propDecorators: { hostClasses: [{
type: HostBinding,
args: ['class']
}], vHide: [{
type: Input
}], vContainerHide: [{
type: Input
}], vMediaHide: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWtwb2ludHMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ub3ZhLWxpYi9zcmMvbGliL2JyZWFrcG9pbnRzL2JyZWFrcG9pbnRzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0lBZUk7QUFDSixPQUFPLEVBQUUscUJBQXFCLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUU5RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsRUFBRSxFQUFFLElBQUk7SUFDUixFQUFFLEVBQUUsSUFBSTtJQUNSLEVBQUUsRUFBRSxJQUFJO0lBQ1IsRUFBRSxFQUFFLElBQUk7SUFDUixFQUFFLEVBQUUsSUFBSTtJQUNSLEdBQUcsRUFBRSxLQUFLO0lBQ1YsTUFBTSxFQUFFLFFBQVE7SUFDaEIsT0FBTyxFQUFFLFNBQVM7Q0FDVixDQUFDO0FBUVgsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixJQUNJLFdBQVc7UUFDYixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxPQUFPO1lBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQzVCLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLGNBQWMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDakgsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsVUFBVSxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDakcsZ0JBQWdCLElBQUksZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDekUsWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUk7U0FDOUQsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLEtBQW1CO1FBQzNCLElBQUksQ0FBQyxNQUFNLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUdEOztPQUVHO0lBQ0gsSUFDSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBQ0QsSUFBSSxjQUFjLENBQUMsS0FBSztRQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBR0Q7O09BRUc7SUFDSCxJQUNJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksVUFBVSxDQUFDLEtBQUs7UUFDbEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUdELFVBQVUsQ0FBQyxJQUEyQjtRQUNwQyxJQUFJLE9BQU8sR0FBYSxFQUFFLENBQUM7UUFDM0IsSUFBSSxJQUFJLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxjQUFjLFlBQVksS0FBSyxFQUFFLENBQUM7WUFDakUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUM5RSxDQUFDO2FBQU0sSUFBSSxJQUFJLEtBQUssT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLFlBQVksS0FBSyxFQUFFLENBQUM7WUFDaEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQUUsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7K0dBMURVLG9CQUFvQjttR0FBcEIsb0JBQW9COzs0RkFBcEIsb0JBQW9CO2tCQUpoQyxTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsMkNBQTJDO2lCQUN0RDs4QkFHSyxXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTztnQkFpQmhCLEtBQUs7c0JBRFIsS0FBSztnQkFhRixjQUFjO3NCQURqQixLQUFLO2dCQWFGLFVBQVU7c0JBRGIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAyNSBWaXNhLCBJbmMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKiovXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RCaW5kaW5nLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgQnJlYWtwb2ludFR5cGUgPSB7XG4gIFhTOiAneHMnLFxuICBTTTogJ3NtJyxcbiAgTUQ6ICdtZCcsXG4gIExHOiAnbGcnLFxuICBYTDogJ3hsJyxcbiAgWFhMOiAneHhsJyxcbiAgTU9CSUxFOiAnbW9iaWxlJyxcbiAgREVTS1RPUDogJ2Rlc2t0b3AnXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBCcmVha3BvaW50VHlwZSA9ICh0eXBlb2YgQnJlYWtwb2ludFR5cGUpW2tleW9mIHR5cGVvZiBCcmVha3BvaW50VHlwZV07XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1t2Q29udGFpbmVySGlkZV0sIFt2TWVkaWFIaWRlXSwgW3ZIaWRlXSwgJ1xufSlcbmV4cG9ydCBjbGFzcyBCcmVha3BvaW50c0RpcmVjdGl2ZSB7XG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgaG9zdENsYXNzZXMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb250YWluZXJDbGFzc2VzID0gdGhpcy5nZXRDbGFzc2VzKCdjb250YWluZXInKTtcbiAgICBjb25zdCBtZWRpYUNsYXNzZXMgPSB0aGlzLmdldENsYXNzZXMoJ21lZGlhJyk7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMudkhpZGUgPyAndi1oaWRlJyA6IG51bGwsXG4gICAgICB0aGlzLnZDb250YWluZXJIaWRlICYmICEodGhpcy52Q29udGFpbmVySGlkZSBpbnN0YW5jZW9mIEFycmF5KSA/IGB2LSR7dGhpcy52Q29udGFpbmVySGlkZX0tY29udGFpbmVyLWhpZGVgIDogbnVsbCxcbiAgICAgIHRoaXMudk1lZGlhSGlkZSAmJiAhKHRoaXMudk1lZGlhSGlkZSBpbnN0YW5jZW9mIEFycmF5KSA/IGB2LSR7dGhpcy52TWVkaWFIaWRlfS1tZWRpYS1oaWRlYCA6IG51bGwsXG4gICAgICBjb250YWluZXJDbGFzc2VzICYmIGNvbnRhaW5lckNsYXNzZXMubGVuZ3RoID4gMCA/IGNvbnRhaW5lckNsYXNzZXMgOiBudWxsLFxuICAgICAgbWVkaWFDbGFzc2VzICYmIG1lZGlhQ2xhc3Nlcy5sZW5ndGggPiAwID8gbWVkaWFDbGFzc2VzIDogbnVsbFxuICAgIF0uam9pbignICcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhpZGVzIGVsZW1lbnQgd2hlbiB0cnVlLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHZIaWRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl92SGlkZTtcbiAgfVxuICBzZXQgdkhpZGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX3ZIaWRlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBfdkhpZGU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEhpZGVzIGVsZW1lbnQgd2hlbiB3aXRoaW4gZ2l2ZW4gX2NvbnRhaW5lcl8gYnJlYWtwb2ludC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCB2Q29udGFpbmVySGlkZSgpOiBCcmVha3BvaW50VHlwZSB8IEJyZWFrcG9pbnRUeXBlW10gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdkNvbnRhaW5lckhpZGU7XG4gIH1cbiAgc2V0IHZDb250YWluZXJIaWRlKHZhbHVlKSB7XG4gICAgdGhpcy5fdkNvbnRhaW5lckhpZGUgPSB2YWx1ZTtcbiAgfVxuICBfdkNvbnRhaW5lckhpZGU6IEJyZWFrcG9pbnRUeXBlIHwgQnJlYWtwb2ludFR5cGVbXSB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEhpZGVzIGVsZW1lbnQgd2hlbiB3aXRoaW4gZ2l2ZW4gX21lZGlhXyBicmVha3BvaW50LlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHZNZWRpYUhpZGUoKTogQnJlYWtwb2ludFR5cGUgfCBCcmVha3BvaW50VHlwZVtdIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZNZWRpYUhpZGU7XG4gIH1cbiAgc2V0IHZNZWRpYUhpZGUodmFsdWUpIHtcbiAgICB0aGlzLl92TWVkaWFIaWRlID0gdmFsdWU7XG4gIH1cbiAgX3ZNZWRpYUhpZGU6IEJyZWFrcG9pbnRUeXBlIHwgQnJlYWtwb2ludFR5cGVbXSB8IG51bGw7XG5cbiAgZ2V0Q2xhc3Nlcyh0eXBlOiAnY29udGFpbmVyJyB8ICdtZWRpYScpOiBzdHJpbmcgfCB2b2lkIHtcbiAgICBsZXQgY2xhc3Nlczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAodHlwZSA9PT0gJ2NvbnRhaW5lcicgJiYgdGhpcy52Q29udGFpbmVySGlkZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICB0aGlzLnZDb250YWluZXJIaWRlLmZvckVhY2goKGJwKSA9PiBjbGFzc2VzLnB1c2goYHYtJHticH0tY29udGFpbmVyLWhpZGVgKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnbWVkaWEnICYmIHRoaXMudk1lZGlhSGlkZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICB0aGlzLnZNZWRpYUhpZGUuZm9yRWFjaCgoYnApID0+IGNsYXNzZXMucHVzaChgdi0ke2JwfS1tZWRpYS1oaWRlYCkpO1xuICAgIH1cbiAgICBpZiAoY2xhc3Nlcy5sZW5ndGggPiAwKSByZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG4gIH1cbn1cbiJdfQ==