UNPKG

@visa/nova-angular

Version:

Visa Product Design System Nova Angular library

99 lines 11.3 kB
/** * 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==