@maplander/components 0.21.42 → 0.21.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_theming.scss +0 -1
- package/bundles/maplander-components.umd.js +3 -173
- package/bundles/maplander-components.umd.js.map +1 -1
- package/bundles/maplander-components.umd.min.js +2 -2
- package/bundles/maplander-components.umd.min.js.map +1 -1
- package/esm2015/lib/components/fab-filters/fab-filters.component.js +2 -2
- package/esm2015/lib/components/filters/filters.component.js +4 -85
- package/esm2015/lib/services/markers/markers.service.js +1 -68
- package/esm5/lib/components/fab-filters/fab-filters.component.js +2 -2
- package/esm5/lib/components/filters/filters.component.js +4 -103
- package/esm5/lib/services/markers/markers.service.js +1 -84
- package/fesm2015/maplander-components.js +4 -141
- package/fesm2015/maplander-components.js.map +1 -1
- package/fesm5/maplander-components.js +4 -174
- package/fesm5/maplander-components.js.map +1 -1
- package/lib/components/filters/filters.component.d.ts +1 -16
- package/lib/services/markers/markers.service.d.ts +1 -12
- package/maplander-components.metadata.json +1 -1
- package/package.json +1 -1
package/_theming.scss
CHANGED
|
@@ -2590,7 +2590,7 @@
|
|
|
2590
2590
|
FabFiltersComponent.decorators = [
|
|
2591
2591
|
{ type: core.Component, args: [{
|
|
2592
2592
|
selector: 'lib-fab-filters',
|
|
2593
|
-
template: "<div class=\"fab-filters\">\r\n <button mat-flat-button=\"\" color=\"primary\" class=\"btn_filters\" (click)=\"openFilters()\">\r\n Filtros\r\n </button>\r\n
|
|
2593
|
+
template: "<div class=\"fab-filters\">\r\n <button mat-flat-button=\"\" color=\"primary\" class=\"btn_filters\" (click)=\"openFilters()\">\r\n Filtros\r\n </button>\r\n <div class=\"filters-container\">\r\n <ng-template [ngIf]=\"chips.length > 0\">\r\n <mat-chip-list aria-orientation=\"horizontal\">\r\n <ng-container *ngFor=\"let chip of chips\">\r\n <mat-chip (click)=\"onClickChip(chip.type)\">\r\n <ng-container [ngSwitch]=\"chip.type\">\r\n <ng-container *ngSwitchCase=\"'PROPERTY_TYPE'\">\r\n <span class=\"icon property-icon ic-property-{{chip.icon}}\"\r\n [ngStyle]=\"{'background': 'var(--' + chip.icon + ')'}\"></span>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'LISTING'\">\r\n <ng-template [ngIf]=\"chip.icon[0] !== 'mlm'\" [ngIfElse]=\"mlm\">\r\n <mat-icon class=\"listing-icon\">\r\n list\r\n </mat-icon>\r\n </ng-template>\r\n <ng-template #mlm>\r\n <mat-icon class=\"listing-icon\" svgIcon=\"opi:mlm\"></mat-icon>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'AMENITIES'\">\r\n <span class=\"icon ic-amenities-{{chip.icon[0]}}\"></span>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngFor=\"let i of chip.icon\">\r\n <span class=\"icon ic-features-{{i}}\"></span>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n {{chip.text}}\r\n </mat-chip>\r\n </ng-container>\r\n </mat-chip-list>\r\n </ng-template>\r\n </div>\r\n</div>\r\n",
|
|
2594
2594
|
styles: [":host{display:block;position:inherit;top:inherit;bottom:inherit;left:inherit;right:inherit;z-index:inherit;width:inherit}.fab-filters{display:flex;width:100%;border-radius:8px 0 0 8px}.fab-filters .filters-container{width:calc(100% - 64px);height:40px;padding-right:8px;box-sizing:border-box;border-radius:4px 4px 4px 0;display:flex;align-items:center;transition:150ms}.fab-filters .filters-container mat-chip-list{width:100%;height:100%;overflow:hidden}.fab-filters .filters-container mat-chip-list mat-chip{min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content}.fab-filters ::ng-deep .filters-container mat-chip-list .mat-chip-list-wrapper{width:100%;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;padding-bottom:16px;margin:0}.fab-filters .filters-container mat-chip-list mat-chip .icon{width:24px;height:24px;font-size:16px;border-radius:50%;margin-right:8px;display:flex;align-items:center;justify-content:center}"]
|
|
2595
2595
|
}] }
|
|
2596
2596
|
];
|
|
@@ -2838,8 +2838,6 @@
|
|
|
2838
2838
|
this._formBuilder = _formBuilder;
|
|
2839
2839
|
this._converter = _converter;
|
|
2840
2840
|
this.METERS_TO_SQ = 10.76391042;
|
|
2841
|
-
this._lastState = null;
|
|
2842
|
-
this.changeFilter = new core.EventEmitter();
|
|
2843
2841
|
this.isOPI = this._config || false;
|
|
2844
2842
|
this._subscription = new rxjs.Subscription();
|
|
2845
2843
|
this.propertyTypeList = ConstantsComponents.PropertyTypeList.map((/**
|
|
@@ -2888,35 +2886,10 @@
|
|
|
2888
2886
|
* @return {?}
|
|
2889
2887
|
*/
|
|
2890
2888
|
function (changes) {
|
|
2891
|
-
var e_1, _a;
|
|
2892
2889
|
if (changes['utils'] && changes['utils'].currentValue) {
|
|
2893
2890
|
console.log('[FiltersComponent] utils ready');
|
|
2894
2891
|
this.initComponent();
|
|
2895
2892
|
}
|
|
2896
|
-
if (changes['stateOptions'] && changes['stateOptions'].currentValue) {
|
|
2897
|
-
if (this._lastState !== null) {
|
|
2898
|
-
try {
|
|
2899
|
-
for (var _b = __values(this.stateOptions), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
2900
|
-
var stateOption = _c.value;
|
|
2901
|
-
if (stateOption.name === this._lastState) {
|
|
2902
|
-
this.propertyTotal = stateOption.total;
|
|
2903
|
-
this.filter.state = this._lastState;
|
|
2904
|
-
this.filtersForm.patchValue({
|
|
2905
|
-
state: this._lastState
|
|
2906
|
-
});
|
|
2907
|
-
break;
|
|
2908
|
-
}
|
|
2909
|
-
}
|
|
2910
|
-
}
|
|
2911
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
2912
|
-
finally {
|
|
2913
|
-
try {
|
|
2914
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
2915
|
-
}
|
|
2916
|
-
finally { if (e_1) throw e_1.error; }
|
|
2917
|
-
}
|
|
2918
|
-
}
|
|
2919
|
-
}
|
|
2920
2893
|
};
|
|
2921
2894
|
/**
|
|
2922
2895
|
* @return {?}
|
|
@@ -2955,7 +2928,6 @@
|
|
|
2955
2928
|
* @return {?}
|
|
2956
2929
|
*/
|
|
2957
2930
|
function (index) {
|
|
2958
|
-
this._lastState = this.filter.state;
|
|
2959
2931
|
this.resetFilters(index);
|
|
2960
2932
|
this.applyAmenities();
|
|
2961
2933
|
this.filter.type = this.propertyTypeSelected.value;
|
|
@@ -2967,11 +2939,6 @@
|
|
|
2967
2939
|
this.filtersForm.controls['offering'].setValue(types.OfferingTypeEnum.SALE);
|
|
2968
2940
|
break;
|
|
2969
2941
|
}
|
|
2970
|
-
this.filter.locationType = 'STATE';
|
|
2971
|
-
this.filter.state = null;
|
|
2972
|
-
this.filter.municipality = null;
|
|
2973
|
-
this.filter.colony = null;
|
|
2974
|
-
this.changeFilter.emit({ type: 'propertyType', payload: { filter: this.filter, value: this.filtersForm.value } });
|
|
2975
2942
|
};
|
|
2976
2943
|
/**
|
|
2977
2944
|
* @param {?} ev
|
|
@@ -2982,13 +2949,7 @@
|
|
|
2982
2949
|
* @return {?}
|
|
2983
2950
|
*/
|
|
2984
2951
|
function (ev) {
|
|
2985
|
-
this._lastState = this.filter.state;
|
|
2986
|
-
this.filter.locationType = 'STATE';
|
|
2987
|
-
this.filter.state = null;
|
|
2988
|
-
this.filter.municipality = null;
|
|
2989
|
-
this.filter.colony = null;
|
|
2990
2952
|
this.filter.offering = (/** @type {?} */ (ev));
|
|
2991
|
-
this.changeFilter.emit({ type: 'offer', payload: { filter: this.filter, value: this.filtersForm.value } });
|
|
2992
2953
|
};
|
|
2993
2954
|
/**
|
|
2994
2955
|
* @param {?} ev
|
|
@@ -3000,19 +2961,6 @@
|
|
|
3000
2961
|
*/
|
|
3001
2962
|
function (ev) {
|
|
3002
2963
|
this.filter.currency = ev;
|
|
3003
|
-
this.changeFilterStatus();
|
|
3004
|
-
};
|
|
3005
|
-
/**
|
|
3006
|
-
* @param {?} ev
|
|
3007
|
-
* @return {?}
|
|
3008
|
-
*/
|
|
3009
|
-
FiltersComponent.prototype.changeState = /**
|
|
3010
|
-
* @param {?} ev
|
|
3011
|
-
* @return {?}
|
|
3012
|
-
*/
|
|
3013
|
-
function (ev) {
|
|
3014
|
-
this.filter.state = ev;
|
|
3015
|
-
this.changeFilterStatus();
|
|
3016
2964
|
};
|
|
3017
2965
|
/**
|
|
3018
2966
|
* @param {?} amenity
|
|
@@ -3034,7 +2982,6 @@
|
|
|
3034
2982
|
this.filter.extras.push(amenity.value);
|
|
3035
2983
|
}
|
|
3036
2984
|
amenity.checked = !amenity.checked;
|
|
3037
|
-
this.changeFilterStatus();
|
|
3038
2985
|
};
|
|
3039
2986
|
/**
|
|
3040
2987
|
* @return {?}
|
|
@@ -3084,7 +3031,6 @@
|
|
|
3084
3031
|
this.filter = propertyTypeItemIndex ? Utils.getFilterByPropertyType(this.filter) : Utils.getInitialFilter(this.isOPI, this.filter);
|
|
3085
3032
|
this.updateFormByFilters();
|
|
3086
3033
|
this.setPrices();
|
|
3087
|
-
this.propertyTotal = 0;
|
|
3088
3034
|
};
|
|
3089
3035
|
/**
|
|
3090
3036
|
* @private
|
|
@@ -3096,7 +3042,6 @@
|
|
|
3096
3042
|
*/
|
|
3097
3043
|
function () {
|
|
3098
3044
|
this.filtersForm = this._formBuilder.group({
|
|
3099
|
-
state: ['', [forms.Validators.required]],
|
|
3100
3045
|
offering: [],
|
|
3101
3046
|
currency: [],
|
|
3102
3047
|
minPrice: ['', [forms.Validators.required, forms.Validators.pattern(new RegExp('(^[0-9]+)'))]],
|
|
@@ -3111,33 +3056,6 @@
|
|
|
3111
3056
|
validator: CurrencyFilterValidator('minPrice', 'maxPrice')
|
|
3112
3057
|
});
|
|
3113
3058
|
};
|
|
3114
|
-
/**
|
|
3115
|
-
* @return {?}
|
|
3116
|
-
*/
|
|
3117
|
-
FiltersComponent.prototype.changeFilterStatus = /**
|
|
3118
|
-
* @return {?}
|
|
3119
|
-
*/
|
|
3120
|
-
function () {
|
|
3121
|
-
this.getFilterByForm();
|
|
3122
|
-
/** @type {?} */
|
|
3123
|
-
var filterToSearch = Object.assign({}, this.filter);
|
|
3124
|
-
if (this.surfaceUnitSelected === 1) {
|
|
3125
|
-
filterToSearch.mainArea = filterToSearch.mainArea * this.METERS_TO_SQ;
|
|
3126
|
-
}
|
|
3127
|
-
if (!this.filtersForm.controls['minPrice'].value) {
|
|
3128
|
-
this.filtersForm.controls['minPrice'].reset(0);
|
|
3129
|
-
this.filtersForm.patchValue({
|
|
3130
|
-
minPrice: 0
|
|
3131
|
-
});
|
|
3132
|
-
}
|
|
3133
|
-
if (!this.filtersForm.controls['minPrice'].value) {
|
|
3134
|
-
this.filtersForm.controls['minPrice'].reset(0);
|
|
3135
|
-
this.filtersForm.patchValue({
|
|
3136
|
-
maxPrice: 0
|
|
3137
|
-
});
|
|
3138
|
-
}
|
|
3139
|
-
this.changeFilter.emit({ type: 'filter', payload: { filter: this.filter, value: filterToSearch } });
|
|
3140
|
-
};
|
|
3141
3059
|
/**
|
|
3142
3060
|
* @private
|
|
3143
3061
|
* @return {?}
|
|
@@ -3148,7 +3066,6 @@
|
|
|
3148
3066
|
*/
|
|
3149
3067
|
function () {
|
|
3150
3068
|
this.filtersForm.patchValue({
|
|
3151
|
-
state: this.filter.state,
|
|
3152
3069
|
offering: this.filter.offering,
|
|
3153
3070
|
currency: this.filter.currency,
|
|
3154
3071
|
minPrice: this.filter.downLimitPrice,
|
|
@@ -3172,7 +3089,6 @@
|
|
|
3172
3089
|
function () {
|
|
3173
3090
|
/** @type {?} */
|
|
3174
3091
|
var data = this.filtersForm.value;
|
|
3175
|
-
this.filter.state = data.state;
|
|
3176
3092
|
this.filter.offering = data.offering;
|
|
3177
3093
|
this.filter.currency = data.currency;
|
|
3178
3094
|
this.filter.downLimitPrice = Number(data.minPrice);
|
|
@@ -3381,7 +3297,6 @@
|
|
|
3381
3297
|
*/
|
|
3382
3298
|
function (open) {
|
|
3383
3299
|
if (open) {
|
|
3384
|
-
this.changeFilter.emit({ type: 'init', payload: { filter: null, value: null } });
|
|
3385
3300
|
this._render.setStyle(this._ref.nativeElement, 'visibility', 'visible');
|
|
3386
3301
|
this._render.setStyle(this._ref.nativeElement, 'opacity', '1');
|
|
3387
3302
|
}
|
|
@@ -3452,7 +3367,7 @@
|
|
|
3452
3367
|
FiltersComponent.decorators = [
|
|
3453
3368
|
{ type: core.Component, args: [{
|
|
3454
3369
|
selector: 'lib-filters',
|
|
3455
|
-
template: "<!-- Todo: [FiltersComponent] Refactor code -->\r\n<form class=\"filters\" [formGroup]=\"filtersForm\" [ngClass]=\"{'filters--opened': propertyTypeSelected.value !== 'NONE'}\">\r\n <ng-template [ngIf]=\"!isOPI\">\r\n <div class=\"float-button-close\">\r\n <button mat-icon-button type=\"button\" class=\"float-button-close__button\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n <div class=\"body\">\r\n <div class=\"--padding\">\r\n <div class=\"header\">\r\n <mat-form-field class=\"currency\" appearance=\"outline\">\r\n <mat-label>Divisa</mat-label>\r\n <mat-select formControlName=\"currency\">\r\n <ng-container *ngFor=\"let currency of currencyList\">\r\n <mat-option [value]=\"currency.type\" (click)=\"changeCurrency(currency.type)\">\r\n {{currency.type}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-button-toggle-group class=\"offering-type-list\" name=\"offering-type\" formControlName=\"offering\"\r\n aria-label=\"Offering type\">\r\n <mat-button-toggle (click)=\"changeOffering('SALE')\" [value]=\"'SALE'\"\r\n [disabled]=\"propertyTypeSelected.value === 'NONE' || propertyTypeSelected.value === 'ROOM'\">\r\n Venta\r\n </mat-button-toggle>\r\n <mat-button-toggle (click)=\"changeOffering('RENT')\" [value]=\"'RENT'\"\r\n [disabled]=\"propertyTypeSelected.value === 'NONE' || propertyTypeSelected.value === 'INVESTMENT'\">\r\n Renta\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n <div class=\"mat-elevation-z2\" [ngClass]=\"{'property-type-list': !newFilters, 'new-property-type-list': newFilters}\">\r\n <ng-container *ngFor=\"let type of propertyTypeList; let i = index\">\r\n <ng-template [ngIf]=\"type.value !== 'NONE' && (type.value !== 'ROOM' && newFilters)\">\r\n <div class=\"property-type-list__button\">\r\n <div\r\n class=\"property-type-list__border\"\r\n [ngClass]=\"{'property-type-list__border--active': (type.value === propertyTypeSelected.value) || (propertyTypeSelected.value === 'NONE') || ((type.value === 'HOUSE' || type.value === 'APARTMENT') && propertyTypeSelected.value === 'RESIDENTIAL')}\"\r\n [ngStyle]=\"{'border-color': 'var(--' + type.iconName + ')'}\">\r\n <button mat-mini-fab=\"\" type=\"button\" (click)=\"changePropertyType(i)\"\r\n [ngStyle]=\"{'background-color': 'var(--' + type.iconName + ')'}\">\r\n <span class=\"property-type-list__icon ic-property-{{type.iconName}}\"></span>\r\n </button>\r\n </div>\r\n <span class=\"property-type-list__label\">{{type.shortName}}</span>\r\n <ng-template [ngIf]=\"type.value === 'RESIDENTIAL' && propertyTypeSelected.value === 'RESIDENTIAL'\">\r\n <div class=\"property-type-list__divider property-type-list__divider--left\"></div>\r\n <div class=\"property-type-list__divider property-type-list__divider--right\"></div>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n <ng-template [ngIf]=\"isOPI\">\r\n <div class=\"all\">\r\n <button mat-raised-button=\"\" type=\"button\" class=\"all__button\"\r\n [ngClass]=\"{'all__button--active': propertyTypeSelected.value === 'NONE'}\"\r\n (click)=\"changePropertyType(9)\">Todo\r\n </button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <ng-template [ngIf]=\"newFilters && propertyTypeSelected.value !== 'NONE'\">\r\n <div class=\"--padding\">\r\n <h4 class=\"--title\">\r\n Estado\r\n </h4>\r\n <div class=\"budget\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Estado</mat-label>\r\n <mat-select formControlName=\"state\">\r\n <ng-container *ngFor=\"let state of stateOptions\">\r\n <mat-option [value]=\"state.name\" (click)=\"changeState(state.name)\">\r\n {{state.name}} ({{state.total}})\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-error *ngIf=\"filtersForm.controls['state'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value !== 'NONE'\">\r\n <mat-divider></mat-divider>\r\n <div class=\"--padding\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-price\"></span>\r\n Presupuesto\r\n </h4>\r\n <div class=\"budget\">\r\n <!-- Min price [START] -->\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>M\u00EDnimo</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" type=\"number\" title=\"Min price\" formControlName=\"minPrice\" min=\"1\" (focusout)=\"changeFilterStatus()\">\r\n <mat-error *ngIf=\"filtersForm.controls['minPrice'].hasError('pattern')\">\r\n Debe ingresar solo n\u00FAmeros\r\n </mat-error>\r\n <mat-error *ngIf=\"filtersForm.controls['minPrice'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Min price [END] -->\r\n <!-- Max price [START] -->\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>M\u00E1ximo</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" type=\"number\" title=\"max price\" formControlName=\"maxPrice\" (focusout)=\"changeFilterStatus()\">\r\n <mat-error *ngIf=\"filtersForm.controls['maxPrice'].hasError('pattern')\">\r\n Debe ingresar solo n\u00FAmeros\r\n </mat-error>\r\n <mat-error *ngIf=\"filtersForm.controls['maxPrice'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n <mat-error *ngIf=\"filtersForm.controls['maxPrice'].hasError('currency')\">\r\n Valor m\u00EDnimo excedido\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Max price [END] -->\r\n </div>\r\n <div class=\"features\">\r\n <ng-template\r\n [ngIf]=\"propertyTypeSelected.value === 'RESIDENTIAL' || propertyTypeSelected.value === 'HOUSE' || propertyTypeSelected.value === 'APARTMENT'\">\r\n <div class=\"features__bedrooms\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-bedroom\"></span>\r\n Habitaciones\r\n </h4>\r\n <mat-button-toggle-group name=\"bedrooms\" aria-label=\"Bedrooms\" formControlName=\"bedrooms\">\r\n <ng-container *ngFor=\"let bedroom of bedroomsList\">\r\n <ng-template [ngIf]=\"bedroom === 0\" [ngIfElse]=\"bedroomNumber\">\r\n <mat-button-toggle [value]=\"bedroom\" (click)=\"changeFilterStatus()\" class=\"features__bedrooms--unlimited\">\r\n Sin <br> l\u00EDmite\r\n </mat-button-toggle>\r\n </ng-template>\r\n <ng-template #bedroomNumber>\r\n <mat-button-toggle [value]=\"bedroom\" (click)=\"changeFilterStatus()\">{{bedroom}}+\r\n </mat-button-toggle>\r\n </ng-template>\r\n </ng-container>\r\n </mat-button-toggle-group>\r\n </div>\r\n <div class=\"features__bathrooms\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-bathroom\"></span>\r\n Ba\u00F1os\r\n </h4>\r\n <mat-button-toggle-group name=\"bathrooms\" aria-label=\"Bathrooms\" formControlName=\"bathrooms\">\r\n <ng-container *ngFor=\"let bathroom of bathroomsList\">\r\n <ng-template [ngIf]=\"bathroom === 0\" [ngIfElse]=\"bathroomNumber\">\r\n <mat-button-toggle [value]=\"bathroom\" (click)=\"changeFilterStatus()\"\r\n class=\"features__bathrooms--unlimited\">\r\n Sin <br> l\u00EDmite\r\n </mat-button-toggle>\r\n </ng-template>\r\n <ng-template #bathroomNumber>\r\n <mat-button-toggle [value]=\"bathroom\" (click)=\"changeFilterStatus()\">{{bathroom}}+\r\n </mat-button-toggle>\r\n </ng-template>\r\n </ng-container>\r\n </mat-button-toggle-group>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value !== 'LAND' && propertyTypeSelected.value !== 'INVESTMENT'\">\r\n <div class=\"features__parking-places\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-parking\"></span>\r\n Estacionamientos\r\n </h4>\r\n <mat-button-toggle-group name=\"parking_places\" aria-label=\"Parking Places\"\r\n formControlName=\"parkingPlaces\">\r\n <ng-container *ngFor=\"let parking of parkingPlacesList\">\r\n <ng-template [ngIf]=\"parking === 0\" [ngIfElse]=\"parkingNumber\">\r\n <mat-button-toggle [value]=\"parking\" (click)=\"changeFilterStatus()\"\r\n class=\"features__parking-places--unlimited\">\r\n Sin <br> l\u00EDmite\r\n </mat-button-toggle>\r\n </ng-template>\r\n <ng-template #parkingNumber>\r\n <mat-button-toggle [value]=\"parking\" (click)=\"changeFilterStatus()\">{{parking}}+\r\n </mat-button-toggle>\r\n </ng-template>\r\n </ng-container>\r\n </mat-button-toggle-group>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value !== 'INVESTMENT'\">\r\n <div class=\"features__surface\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-surface\"></span>\r\n Superficie\r\n </h4>\r\n <div class=\"--row\">\r\n <mat-form-field appearance=\"outline\" class=\"--col\">\r\n <mat-label>\u00C1rea</mat-label>\r\n <mat-select formControlName=\"surface\" (selectionChange)=\"changeFilterStatus()\">\r\n <mat-option [value]=\"0\" (click)=\"changeFilterStatus()\">\r\n Sin l\u00EDmite\r\n </mat-option>\r\n <ng-container *ngFor=\"let surface of surfaceList\">\r\n <mat-option [value]=\"surface\" (click)=\"changeFilterStatus()\">\r\n {{surface}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-button-toggle-group name=\"unit_surface\" aria-label=\"Unit surface\" formControlName=\"surfaceUnit\">\r\n <mat-button-toggle (click)=\"changeFilterStatus()\" [value]=\"0\">m2</mat-button-toggle>\r\n <mat-button-toggle (click)=\"changeFilterStatus()\" [value]=\"1\">sq ft</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value === 'INVESTMENT'\">\r\n <div class=\"feature investment\">\r\n <h4 class=\"--title\">Retorno de inversi\u00F3n</h4>\r\n <mat-form-field appearance=\"outline\" class=\"--col\">\r\n <mat-label>Porcentaje</mat-label>\r\n <mat-select formControlName=\"roi\">\r\n <mat-option [value]=\"0\" (click)=\"changeFilterStatus()\">\r\n Sin l\u00EDmite\r\n </mat-option>\r\n <ng-container *ngFor=\"let roi of roiList\">\r\n <mat-option [value]=\"roi\" (click)=\"changeFilterStatus()\">\r\n {{roi}}%\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </ng-template>\r\n <div class=\"amenities-container\">\r\n <ng-template [ngIf]=\"propertyTypeSelected.amenities.length > 0\">\r\n <div class=\"amenities\">\r\n <h4 class=\"--title\">\r\n Amenidades\r\n </h4>\r\n <div class=\"amenities__list\">\r\n <ng-container *ngFor=\"let amenity of propertyTypeSelected.amenities\">\r\n <div class=\"amenities__amenity\" matRipple (click)=\"updateAmenity(amenity)\">\r\n <span class=\"amenity__icon ic-amenities-{{amenity.iconName}}\"\r\n [ngClass]=\"{'amenity--active': amenity.checked}\"></span>\r\n <span class=\"amenity__label\">{{amenity.name}}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.features.length > 0\">\r\n <div class=\"amenities\">\r\n <h4 class=\"--title\">\r\n Caracteristicas de la ubicaci\u00F3n\r\n </h4>\r\n <div class=\"amenities__list\">\r\n <ng-container *ngFor=\"let feature of propertyTypeSelected.features\">\r\n <div class=\"amenities__amenity\" matRipple (click)=\"updateAmenity(feature)\">\r\n <span class=\"amenity__icon ic-amenities-{{feature.iconName}}\"\r\n [ngClass]=\"{'amenity--active': feature.checked}\"></span>\r\n <span class=\"amenity__label\">{{feature.name}}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <button mat-flat-button type=\"submit\" class=\"apply-button\" color=\"primary\" [disabled]=\"(propertyTotal === 0 || filtersForm.invalid) && newFilters\"\r\n (click)=\"applyFilters()\">\r\n VER <span *ngIf=\"propertyTotal > 0 && newFilters\">{{propertyTotal}}</span> {{(propertyTotal === 1 ? 'PROPIEDAD' : 'PROPIEDADES')}}\r\n </button>\r\n </div>\r\n <!--div class=\"actions\">\r\n <ng-template [ngIf]=\"!isOPI\" [ngIfElse]=\"closeButtonTemplate\">\r\n <button mat-flat-button=\"\" type=\"button\" class=\"action__button\" color=\"primary\" (click)=\"saveSearchByFilters()\">\r\n GUARDAR\r\n </button>\r\n </ng-template>\r\n <ng-template #closeButtonTemplate>\r\n <button mat-flat-button=\"\" type=\"button\" class=\"action__button\" color=\"primary\" (click)=\"close()\">CERRAR</button>\r\n </ng-template>\r\n <button mat-flat-button=\"\" type=\"button\" class=\"action__button\" color=\"primary\"\r\n (click)=\"resetFilters()\">LIMPIAR\r\n </button>\r\n </div-->\r\n</form>\r\n",
|
|
3370
|
+
template: "<!-- Todo: [FiltersComponent] Refactor code -->\r\n<form class=\"filters\" [formGroup]=\"filtersForm\" [ngClass]=\"{'filters--opened': propertyTypeSelected.value !== 'NONE'}\">\r\n <ng-template [ngIf]=\"!isOPI\">\r\n <div class=\"float-button-close\">\r\n <button mat-icon-button type=\"button\" class=\"float-button-close__button\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n <div class=\"body\">\r\n <div class=\"--padding\">\r\n <div class=\"header\">\r\n <mat-form-field class=\"currency\" appearance=\"outline\">\r\n <mat-label>Divisa</mat-label>\r\n <mat-select formControlName=\"currency\">\r\n <ng-container *ngFor=\"let currency of currencyList\">\r\n <mat-option [value]=\"currency.type\" (click)=\"changeCurrency(currency.type)\">\r\n {{currency.type}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-button-toggle-group class=\"offering-type-list\" name=\"offering-type\" formControlName=\"offering\"\r\n aria-label=\"Offering type\">\r\n <mat-button-toggle (click)=\"changeOffering('SALE')\" [value]=\"'SALE'\"\r\n [disabled]=\"propertyTypeSelected.value === 'NONE' || propertyTypeSelected.value === 'ROOM'\">\r\n Venta\r\n </mat-button-toggle>\r\n <mat-button-toggle (click)=\"changeOffering('RENT')\" [value]=\"'RENT'\"\r\n [disabled]=\"propertyTypeSelected.value === 'NONE' || propertyTypeSelected.value === 'INVESTMENT'\">\r\n Renta\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n <div class=\"mat-elevation-z2\" [ngClass]=\"{'property-type-list': !newFilters, 'new-property-type-list': newFilters}\">\r\n <ng-container *ngFor=\"let type of propertyTypeList; let i = index\">\r\n <ng-template [ngIf]=\"type.value !== 'NONE' && (type.value !== 'ROOM' && newFilters)\">\r\n <div class=\"property-type-list__button\">\r\n <div\r\n class=\"property-type-list__border\"\r\n [ngClass]=\"{'property-type-list__border--active': (type.value === propertyTypeSelected.value) || (propertyTypeSelected.value === 'NONE') || ((type.value === 'HOUSE' || type.value === 'APARTMENT') && propertyTypeSelected.value === 'RESIDENTIAL')}\"\r\n [ngStyle]=\"{'border-color': 'var(--' + type.iconName + ')'}\">\r\n <button mat-mini-fab=\"\" type=\"button\" (click)=\"changePropertyType(i)\"\r\n [ngStyle]=\"{'background-color': 'var(--' + type.iconName + ')'}\">\r\n <span class=\"property-type-list__icon ic-property-{{type.iconName}}\"></span>\r\n </button>\r\n </div>\r\n <span class=\"property-type-list__label\">{{type.shortName}}</span>\r\n <ng-template [ngIf]=\"type.value === 'RESIDENTIAL' && propertyTypeSelected.value === 'RESIDENTIAL'\">\r\n <div class=\"property-type-list__divider property-type-list__divider--left\"></div>\r\n <div class=\"property-type-list__divider property-type-list__divider--right\"></div>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n <ng-template [ngIf]=\"isOPI\">\r\n <div class=\"all\">\r\n <button mat-raised-button=\"\" type=\"button\" class=\"all__button\"\r\n [ngClass]=\"{'all__button--active': propertyTypeSelected.value === 'NONE'}\"\r\n (click)=\"changePropertyType(9)\">Todo\r\n </button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value !== 'NONE'\">\r\n <mat-divider></mat-divider>\r\n <div class=\"--padding\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-price\"></span>\r\n Presupuesto\r\n </h4>\r\n <div class=\"budget\">\r\n <!-- Min price [START] -->\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>M\u00EDnimo</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" type=\"number\" title=\"Min price\" formControlName=\"minPrice\" min=\"1\" >\r\n <mat-error *ngIf=\"filtersForm.controls['minPrice'].hasError('pattern')\">\r\n Debe ingresar solo n\u00FAmeros\r\n </mat-error>\r\n <mat-error *ngIf=\"filtersForm.controls['minPrice'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Min price [END] -->\r\n <!-- Max price [START] -->\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>M\u00E1ximo</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" type=\"number\" title=\"max price\" formControlName=\"maxPrice\">\r\n <mat-error *ngIf=\"filtersForm.controls['maxPrice'].hasError('pattern')\">\r\n Debe ingresar solo n\u00FAmeros\r\n </mat-error>\r\n <mat-error *ngIf=\"filtersForm.controls['maxPrice'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n <mat-error *ngIf=\"filtersForm.controls['maxPrice'].hasError('currency')\">\r\n Valor m\u00EDnimo excedido\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Max price [END] -->\r\n </div>\r\n <div class=\"features\">\r\n <ng-template\r\n [ngIf]=\"propertyTypeSelected.value === 'RESIDENTIAL' || propertyTypeSelected.value === 'HOUSE' || propertyTypeSelected.value === 'APARTMENT'\">\r\n <div class=\"features__bedrooms\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-bedroom\"></span>\r\n Habitaciones\r\n </h4>\r\n <mat-button-toggle-group name=\"bedrooms\" aria-label=\"Bedrooms\" formControlName=\"bedrooms\">\r\n <ng-container *ngFor=\"let bedroom of bedroomsList\">\r\n <ng-template [ngIf]=\"bedroom === 0\" [ngIfElse]=\"bedroomNumber\">\r\n <mat-button-toggle [value]=\"bedroom\" class=\"features__bedrooms--unlimited\">\r\n Sin <br> l\u00EDmite\r\n </mat-button-toggle>\r\n </ng-template>\r\n <ng-template #bedroomNumber>\r\n <mat-button-toggle [value]=\"bedroom\">{{bedroom}}+\r\n </mat-button-toggle>\r\n </ng-template>\r\n </ng-container>\r\n </mat-button-toggle-group>\r\n </div>\r\n <div class=\"features__bathrooms\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-bathroom\"></span>\r\n Ba\u00F1os\r\n </h4>\r\n <mat-button-toggle-group name=\"bathrooms\" aria-label=\"Bathrooms\" formControlName=\"bathrooms\">\r\n <ng-container *ngFor=\"let bathroom of bathroomsList\">\r\n <ng-template [ngIf]=\"bathroom === 0\" [ngIfElse]=\"bathroomNumber\">\r\n <mat-button-toggle [value]=\"bathroom\"\r\n class=\"features__bathrooms--unlimited\">\r\n Sin <br> l\u00EDmite\r\n </mat-button-toggle>\r\n </ng-template>\r\n <ng-template #bathroomNumber>\r\n <mat-button-toggle [value]=\"bathroom\">{{bathroom}}+\r\n </mat-button-toggle>\r\n </ng-template>\r\n </ng-container>\r\n </mat-button-toggle-group>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value !== 'LAND' && propertyTypeSelected.value !== 'INVESTMENT'\">\r\n <div class=\"features__parking-places\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-parking\"></span>\r\n Estacionamientos\r\n </h4>\r\n <mat-button-toggle-group name=\"parking_places\" aria-label=\"Parking Places\"\r\n formControlName=\"parkingPlaces\">\r\n <ng-container *ngFor=\"let parking of parkingPlacesList\">\r\n <ng-template [ngIf]=\"parking === 0\" [ngIfElse]=\"parkingNumber\">\r\n <mat-button-toggle [value]=\"parking\"\r\n class=\"features__parking-places--unlimited\">\r\n Sin <br> l\u00EDmite\r\n </mat-button-toggle>\r\n </ng-template>\r\n <ng-template #parkingNumber>\r\n <mat-button-toggle [value]=\"parking\">{{parking}}+\r\n </mat-button-toggle>\r\n </ng-template>\r\n </ng-container>\r\n </mat-button-toggle-group>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value !== 'INVESTMENT'\">\r\n <div class=\"features__surface\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-surface\"></span>\r\n Superficie\r\n </h4>\r\n <div class=\"--row\">\r\n <mat-form-field appearance=\"outline\" class=\"--col\">\r\n <mat-label>\u00C1rea</mat-label>\r\n <mat-select formControlName=\"surface\">\r\n <mat-option [value]=\"0\">\r\n Sin l\u00EDmite\r\n </mat-option>\r\n <ng-container *ngFor=\"let surface of surfaceList\">\r\n <mat-option [value]=\"surface\">\r\n {{surface}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-button-toggle-group name=\"unit_surface\" aria-label=\"Unit surface\" formControlName=\"surfaceUnit\">\r\n <mat-button-toggle [value]=\"0\">m2</mat-button-toggle>\r\n <mat-button-toggle [value]=\"1\">sq ft</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value === 'INVESTMENT'\">\r\n <div class=\"feature investment\">\r\n <h4 class=\"--title\">Retorno de inversi\u00F3n</h4>\r\n <mat-form-field appearance=\"outline\" class=\"--col\">\r\n <mat-label>Porcentaje</mat-label>\r\n <mat-select formControlName=\"roi\">\r\n <mat-option [value]=\"0\">\r\n Sin l\u00EDmite\r\n </mat-option>\r\n <ng-container *ngFor=\"let roi of roiList\">\r\n <mat-option [value]=\"roi\">\r\n {{roi}}%\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </ng-template>\r\n <div class=\"amenities-container\">\r\n <ng-template [ngIf]=\"propertyTypeSelected.amenities.length > 0\">\r\n <div class=\"amenities\">\r\n <h4 class=\"--title\">\r\n Amenidades\r\n </h4>\r\n <div class=\"amenities__list\">\r\n <ng-container *ngFor=\"let amenity of propertyTypeSelected.amenities\">\r\n <div class=\"amenities__amenity\" matRipple (click)=\"updateAmenity(amenity)\">\r\n <span class=\"amenity__icon ic-amenities-{{amenity.iconName}}\"\r\n [ngClass]=\"{'amenity--active': amenity.checked}\"></span>\r\n <span class=\"amenity__label\">{{amenity.name}}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.features.length > 0\">\r\n <div class=\"amenities\">\r\n <h4 class=\"--title\">\r\n Caracteristicas de la ubicaci\u00F3n\r\n </h4>\r\n <div class=\"amenities__list\">\r\n <ng-container *ngFor=\"let feature of propertyTypeSelected.features\">\r\n <div class=\"amenities__amenity\" matRipple (click)=\"updateAmenity(feature)\">\r\n <span class=\"amenity__icon ic-amenities-{{feature.iconName}}\"\r\n [ngClass]=\"{'amenity--active': feature.checked}\"></span>\r\n <span class=\"amenity__label\">{{feature.name}}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <button mat-flat-button type=\"submit\" class=\"apply-button\" color=\"primary\" (click)=\"applyFilters()\">\r\n VER PROPIEDADES\r\n </button>\r\n </div>\r\n <!--div class=\"actions\">\r\n <ng-template [ngIf]=\"!isOPI\" [ngIfElse]=\"closeButtonTemplate\">\r\n <button mat-flat-button=\"\" type=\"button\" class=\"action__button\" color=\"primary\" (click)=\"saveSearchByFilters()\">\r\n GUARDAR\r\n </button>\r\n </ng-template>\r\n <ng-template #closeButtonTemplate>\r\n <button mat-flat-button=\"\" type=\"button\" class=\"action__button\" color=\"primary\" (click)=\"close()\">CERRAR</button>\r\n </ng-template>\r\n <button mat-flat-button=\"\" type=\"button\" class=\"action__button\" color=\"primary\"\r\n (click)=\"resetFilters()\">LIMPIAR\r\n </button>\r\n </div-->\r\n</form>\r\n",
|
|
3456
3371
|
styles: [":host{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;display:flex;background:var(--overlay);transition:250ms}.filters--opened{height:90%!important}@media screen and (max-width:600px){.filters--opened{width:100%!important;height:100%!important;top:0!important}}.filters{width:700px;height:auto;margin:auto;border-radius:16px;position:relative;overflow:hidden;transition:150ms}.filters .--padding{padding:16px 48px;box-sizing:border-box}.filters .--row{display:flex;justify-content:space-between;align-items:flex-start}.filters .--col{width:45%}.filters .--title{margin:16px 0;color:#707070}.filters .float-button-close{position:absolute;top:16px;right:16px;height:16px;border-radius:50%}.filters .apply-button{width:100%;position:absolute;bottom:0}.filters .body{height:calc(100% - 36px);overflow-x:hidden;overflow-y:auto}.filters .header{display:flex;align-items:center;justify-content:space-around;margin-bottom:8px}.filters .listing-types{width:100%;border-radius:16px}.filters .listing-types mat-button-toggle{width:50%;height:36px}.filters ::ng-deep .listing-types mat-button-toggle button{height:36px}.filters ::ng-deep .listing-types mat-button-toggle button .mat-button-toggle-label-content{line-height:36px}.filters .currency ::ng-deep .mat-form-field-wrapper{padding:0}@media screen and (max-width:600px){.filters{width:100%;position:absolute;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;top:initial;bottom:0;left:0}.filters .--padding{padding:16px 24px}.filters .header{flex-direction:column}.filters .currency{width:70%;margin-bottom:8px}}.filters .offering-type-list{width:40%;border-radius:16px}.filters .offering-type-list mat-button-toggle{width:50%;height:36px}.filters ::ng-deep .offering-type-list mat-button-toggle button{height:36px}.filters ::ng-deep .offering-type-list mat-button-toggle button .mat-button-toggle-label-content{line-height:36px}.filters .property-type-list{display:-ms-grid;display:grid;-ms-grid-columns:(calc(100% / 9))[9];grid-template-columns:repeat(9,calc(100% / 9));-ms-grid-rows:(80px)[1];grid-template-rows:repeat(1,80px);border-radius:40px;padding:8px;box-sizing:border-box}@media screen and (max-width:600px){.filters .offering-type-list{width:70%}.filters .property-type-list{-ms-grid-columns:(calc(100% / 3))[3];grid-template-columns:repeat(3,calc(100% / 3));-ms-grid-rows:(80px)[3];grid-template-rows:repeat(3,80px)}}.filters .new-property-type-list{display:-ms-grid;display:grid;-ms-grid-columns:(calc(100% / 8))[8];grid-template-columns:repeat(8,calc(100% / 8));-ms-grid-rows:(80px)[1];grid-template-rows:repeat(1,80px);border-radius:40px;padding:8px;box-sizing:border-box}.filters .property-type-list .property-type-list__button{margin:auto;position:relative}.filters .property-type-list .property-type-list__button button{box-shadow:none}.filters .property-type-list .property-type-list__icon{width:24px;height:24px;font-size:24px}.filters .property-type-list .property-type-list__border{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;margin:auto;opacity:.7;border-radius:50%;box-sizing:border-box}.filters .property-type-list .property-type-list__border--active{padding:4px;border:2px solid;opacity:1!important}.filters .property-type-list .property-type-list__label{font-size:12px;display:block;margin:8px 0;text-align:center}.filters .property-type-list .property-type-list__divider{width:14%;height:2px;background:#707070;top:30%;position:absolute}.filters .property-type-list .property-type-list__divider--left{left:-9px}.filters .property-type-list .property-type-list__divider--right{right:-9px}@media screen and (max-width:600px){.filters .new-property-type-list{-ms-grid-columns:(calc(100% / 3))[3];grid-template-columns:repeat(3,calc(100% / 3));-ms-grid-rows:(80px)[3];grid-template-rows:repeat(3,80px)}.filters .property-type-list .property-type-list__divider{width:60%}.filters .property-type-list .property-type-list__divider--left{left:-38px}.filters .property-type-list .property-type-list__divider--right{right:-38px}}.filters .new-property-type-list .property-type-list__button{margin:auto;position:relative}.filters .new-property-type-list .property-type-list__button button{box-shadow:none}.filters .new-property-type-list .property-type-list__icon{width:24px;height:24px;font-size:24px}.filters .new-property-type-list .property-type-list__border{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;margin:auto;opacity:.7;border-radius:50%;box-sizing:border-box}.filters .new-property-type-list .property-type-list__border--active{padding:4px;border:2px solid;opacity:1!important}.filters .new-property-type-list .property-type-list__label{font-size:12px;display:block;margin:8px 0;text-align:center}.filters .new-property-type-list .property-type-list__divider{width:14%;height:2px;background:#707070;top:30%;position:absolute}.filters .new-property-type-list .property-type-list__divider--left{left:-9px}.filters .new-property-type-list .property-type-list__divider--right{right:-9px}@media screen and (max-width:600px){.filters .new-property-type-list .property-type-list__divider{width:60%}.filters .new-property-type-list .property-type-list__divider--left{left:-38px}.filters .new-property-type-list .property-type-list__divider--right{right:-38px}}.filters .all{width:100%;margin:8px 0}.filters .all .all__button{margin:0 40%;width:20%;border-radius:16px;background:0 0}.filters .budget{display:flex}.filters .budget mat-form-field{margin-right:8px;width:calc(100% / 2 - 8px)}.filters .features{display:-ms-grid;display:grid;-ms-grid-columns:(50%)[2];grid-template-columns:repeat(2,50%);-ms-grid-rows:(auto)[2];grid-template-rows:repeat(2,auto)}@media screen and (max-width:600px){.filters .all .all__button{width:50%;margin:0 25%}.filters .features{display:block}.filters .amenities-container{flex-direction:column}}.filters .features .features__bathrooms mat-button-toggle-group,.filters .features .features__bedrooms mat-button-toggle-group,.filters .features .features__parking-places mat-button-toggle-group{width:calc(100% - 16px)}.filters .features .features__bathrooms mat-button-toggle-group mat-button-toggle,.filters .features .features__bedrooms mat-button-toggle-group mat-button-toggle,.filters .features .features__parking-places mat-button-toggle-group mat-button-toggle{width:calc(100% / 5)}.filters .features .features__bedrooms--unlimited ::ng-deep .mat-button-toggle-label-content{line-height:16px;padding:8px;font-size:12px}.filters .features .features__bathrooms--unlimited ::ng-deep .mat-button-toggle-label-content{line-height:16px;padding:8px;font-size:12px}.filters .features .features__parking-places--unlimited ::ng-deep .mat-button-toggle-label-content{line-height:16px;padding:8px;font-size:12px}.filters .features .features__surface mat-button-toggle-group{margin-top:6px;margin-right:16px}.filters .amenities-container{width:100%;-ms-grid-column:1;grid-column-start:1;-ms-grid-column-span:2;grid-column-end:3;display:flex}.filters .amenities{width:50%}@media screen and (max-width:600px){.filters .amenities{width:100%}}.filters .amenities__amenity{width:calc(100% / 3 - 24px);height:120px;border-radius:8px;padding:8px;display:inline-flex;flex-direction:column;align-items:center;box-sizing:border-box;margin:0 8px 8px 0;cursor:pointer}.filters .amenity__icon{display:block;width:24px;height:24px;margin:8px auto;font-size:24px;padding:8px;border-radius:50%}.filters .amenity__label{width:100%;display:block;text-align:center;font-size:12px;margin:auto}.filters .actions{display:flex}.filters .actions .action__button{width:50%;border-radius:0}"]
|
|
3457
3372
|
}] }
|
|
3458
3373
|
];
|
|
@@ -3467,10 +3382,7 @@
|
|
|
3467
3382
|
]; };
|
|
3468
3383
|
FiltersComponent.propDecorators = {
|
|
3469
3384
|
utils: [{ type: core.Input }],
|
|
3470
|
-
newFilters: [{ type: core.Input }]
|
|
3471
|
-
stateOptions: [{ type: core.Input }],
|
|
3472
|
-
propertyTotal: [{ type: core.Input }],
|
|
3473
|
-
changeFilter: [{ type: core.Output }]
|
|
3385
|
+
newFilters: [{ type: core.Input }]
|
|
3474
3386
|
};
|
|
3475
3387
|
return FiltersComponent;
|
|
3476
3388
|
}());
|
|
@@ -7796,88 +7708,6 @@
|
|
|
7796
7708
|
response.markers = list;
|
|
7797
7709
|
return response;
|
|
7798
7710
|
};
|
|
7799
|
-
/**
|
|
7800
|
-
* @param {?} list
|
|
7801
|
-
* @return {?}
|
|
7802
|
-
*/
|
|
7803
|
-
MarkersService.prototype.buildNewSpider = /**
|
|
7804
|
-
* @param {?} list
|
|
7805
|
-
* @return {?}
|
|
7806
|
-
*/
|
|
7807
|
-
function (list) {
|
|
7808
|
-
var e_1, _a;
|
|
7809
|
-
/** @type {?} */
|
|
7810
|
-
var response = { markers: [], polyLines: [] };
|
|
7811
|
-
/** @type {?} */
|
|
7812
|
-
var newList = [];
|
|
7813
|
-
try {
|
|
7814
|
-
for (var list_1 = __values(list), list_1_1 = list_1.next(); !list_1_1.done; list_1_1 = list_1.next()) {
|
|
7815
|
-
var listElement = list_1_1.value;
|
|
7816
|
-
newList.push({
|
|
7817
|
-
id: listElement.id,
|
|
7818
|
-
location: listElement.location,
|
|
7819
|
-
price: listElement.price,
|
|
7820
|
-
currency: listElement.currency,
|
|
7821
|
-
url: listElement.url,
|
|
7822
|
-
type: listElement.type,
|
|
7823
|
-
extras: {}
|
|
7824
|
-
});
|
|
7825
|
-
}
|
|
7826
|
-
}
|
|
7827
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
7828
|
-
finally {
|
|
7829
|
-
try {
|
|
7830
|
-
if (list_1_1 && !list_1_1.done && (_a = list_1.return)) _a.call(list_1);
|
|
7831
|
-
}
|
|
7832
|
-
finally { if (e_1) throw e_1.error; }
|
|
7833
|
-
}
|
|
7834
|
-
newList.map((/**
|
|
7835
|
-
* @param {?} el
|
|
7836
|
-
* @return {?}
|
|
7837
|
-
*/
|
|
7838
|
-
function (el) {
|
|
7839
|
-
el.extras['repeat'] = false;
|
|
7840
|
-
/** @type {?} */
|
|
7841
|
-
var size = newList.filter((/**
|
|
7842
|
-
* @param {?} item
|
|
7843
|
-
* @return {?}
|
|
7844
|
-
*/
|
|
7845
|
-
function (item) {
|
|
7846
|
-
return el.location.latitude === item.location.latitude && el.location.longitude === item.location.longitude;
|
|
7847
|
-
}));
|
|
7848
|
-
/** @type {?} */
|
|
7849
|
-
var distance = 30 * size.length / 2.0;
|
|
7850
|
-
/** @type {?} */
|
|
7851
|
-
var radiansBetweenAnnotations = (Math.PI * 2) / size.length;
|
|
7852
|
-
if (!el.extras['repeat'] && size.length > 1) {
|
|
7853
|
-
/** @type {?} */
|
|
7854
|
-
var locationShare = Object.assign({}, el.location);
|
|
7855
|
-
for (var i = 0; i < size.length; i++) {
|
|
7856
|
-
/** @type {?} */
|
|
7857
|
-
var heading = radiansBetweenAnnotations * i;
|
|
7858
|
-
size[i]['repeat'] = true;
|
|
7859
|
-
/** @type {?} */
|
|
7860
|
-
var newLocation = MarkersService.calculateLocationFrom(locationShare, heading, distance);
|
|
7861
|
-
response.polyLines.push({
|
|
7862
|
-
path: [
|
|
7863
|
-
{
|
|
7864
|
-
latitude: Number(locationShare.latitude),
|
|
7865
|
-
longitude: Number(locationShare.longitude)
|
|
7866
|
-
},
|
|
7867
|
-
{
|
|
7868
|
-
latitude: Number(newLocation.latitude),
|
|
7869
|
-
longitude: Number(newLocation.longitude)
|
|
7870
|
-
}
|
|
7871
|
-
]
|
|
7872
|
-
});
|
|
7873
|
-
size[i].location = newLocation;
|
|
7874
|
-
}
|
|
7875
|
-
}
|
|
7876
|
-
return el;
|
|
7877
|
-
}));
|
|
7878
|
-
response.markers = newList;
|
|
7879
|
-
return response;
|
|
7880
|
-
};
|
|
7881
7711
|
/**
|
|
7882
7712
|
* @private
|
|
7883
7713
|
* @param {?} entity
|