System.register(["@angular/core","@angular/material/core","@angular/cdk/coercion","@angular/common","rxjs","rxjs/operators","@angular/common/http","@angular/platform-browser"],function(t){"use strict";var e,n,o,i,s,r,a,c,l,h,u,g,f,m,d,_,p,v,I,S,C,E,F,w,R;return{setters:[function(t){e=t,t.Injectable,n=t.Optional,t.Inject,o=t.SkipSelf,i=t.ErrorHandler,s=t.InjectionToken,r=t.inject,t.Component,t.ViewEncapsulation,t.ChangeDetectionStrategy,t.Attribute,t.Input,t.NgModule,a=t.SecurityContext},function(t){c=t.mixinColor,l=t.MatCommonModule},function(t){h=t.coerceBooleanProperty},function(t){u=t.DOCUMENT},function(t){g=t.of,f=t.throwError,m=t.forkJoin,d=t.Subscription},function(t){_=t.tap,p=t.map,v=t.catchError,I=t.finalize,S=t.share,C=t.take},function(t){E=t,F=t.HttpClient},function(t){w=t,R=t.DomSanitizer}],execute:function(){t({ICON_REGISTRY_PROVIDER_FACTORY:M,MAT_ICON_LOCATION_FACTORY:D,getMatIconFailedToSanitizeLiteralError:x,getMatIconFailedToSanitizeUrlError:A,getMatIconNameNotFoundError:N,getMatIconNoHttpProviderError:y});function N(t){return Error(`Unable to find icon with the name "${t}"`)}function y(){return Error("Could not find HttpClient provider for use with Angular Material icons. Please include the HttpClientModule from @angular/common/http in your app imports.")}function A(t){return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL via Angular's DomSanitizer. Attempted URL was "${t}".`)}function x(t){return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by Angular's DomSanitizer. Attempted literal was "${t}".`)}class b{constructor(t,e,n){this.url=t,this.svgText=e,this.options=n}}class T{constructor(t,e,n,o){this._httpClient=t,this._sanitizer=e,this._errorHandler=o,this._svgIconConfigs=new Map,this._iconSetConfigs=new Map,this._cachedIconsByUrl=new Map,this._inProgressUrlFetches=new Map,this._fontCssClassesByAlias=new Map,this._resolvers=[],this._defaultFontSetClass=["material-icons","mat-ligature-font"],this._document=n}addSvgIcon(t,e,n){return this.addSvgIconInNamespace("",t,e,n)}addSvgIconLiteral(t,e,n){return this.addSvgIconLiteralInNamespace("",t,e,n)}addSvgIconInNamespace(t,e,n,o){return this._addSvgIconConfig(t,e,new b(n,null,o))}addSvgIconResolver(t){return this._resolvers.push(t),this}addSvgIconLiteralInNamespace(t,e,n,o){const i=this._sanitizer.sanitize(a.HTML,n);if(!i)throw x(n);const s=i;return this._addSvgIconConfig(t,e,new b("",s,o))}addSvgIconSet(t,e){return this.addSvgIconSetInNamespace("",t,e)}addSvgIconSetLiteral(t,e){return this.addSvgIconSetLiteralInNamespace("",t,e)}addSvgIconSetInNamespace(t,e,n){return this._addSvgIconSetConfig(t,new b(e,null,n))}addSvgIconSetLiteralInNamespace(t,e,n){const o=this._sanitizer.sanitize(a.HTML,e);if(!o)throw x(e);const i=o;return this._addSvgIconSetConfig(t,new b("",i,n))}registerFontClassAlias(t,e=t){return this._fontCssClassesByAlias.set(t,e),this}classNameForFontAlias(t){return this._fontCssClassesByAlias.get(t)||t}setDefaultFontSetClass(...t){return this._defaultFontSetClass=t,this}getDefaultFontSetClass(){return this._defaultFontSetClass}getSvgIconFromUrl(t){const e=this._sanitizer.sanitize(a.RESOURCE_URL,t);if(!e)throw A(t);const n=this._cachedIconsByUrl.get(e);return n?g(L(n)):this._loadSvgIconFromConfig(new b(t,null)).pipe(_(t=>this._cachedIconsByUrl.set(e,t)),p(t=>L(t)))}getNamedSvgIcon(t,e=""){const n=O(e,t);let o=this._svgIconConfigs.get(n);if(o)return this._getSvgFromConfig(o);if(o=this._getIconConfigFromResolvers(e,t),o)return this._svgIconConfigs.set(n,o),this._getSvgFromConfig(o);const i=this._iconSetConfigs.get(e);return i?this._getSvgFromIconSetConfigs(t,i):f(N(n))}ngOnDestroy(){this._resolvers=[],this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}_getSvgFromConfig(t){return t.svgText?g(L(this._svgElementFromConfig(t))):this._loadSvgIconFromConfig(t).pipe(p(t=>L(t)))}_getSvgFromIconSetConfigs(t,e){const n=this._extractIconWithNameFromAnySet(t,e);if(n)return g(n);const o=e.filter(t=>!t.svgText).map(t=>this._loadSvgIconSetFromConfig(t).pipe(v(e=>{const n=`Loading icon set URL: ${this._sanitizer.sanitize(a.RESOURCE_URL,t.url)} failed: ${e.message}`;return this._errorHandler.handleError(new Error(n)),g(null)})));return m(o).pipe(p(()=>{const n=this._extractIconWithNameFromAnySet(t,e);if(!n)throw N(t);return n}))}_extractIconWithNameFromAnySet(t,e){for(let n=e.length-1;n>=0;n--){const o=e[n];if(o.svgText&&o.svgText.toString().indexOf(t)>-1){const e=this._svgElementFromConfig(o),n=this._extractSvgIconFromSet(e,t,o.options);if(n)return n}}return null}_loadSvgIconFromConfig(t){return this._fetchIcon(t).pipe(_(e=>t.svgText=e),p(()=>this._svgElementFromConfig(t)))}_loadSvgIconSetFromConfig(t){return t.svgText?g(null):this._fetchIcon(t).pipe(_(e=>t.svgText=e))}_extractSvgIconFromSet(t,e,n){const o=t.querySelector(`[id="${e}"]`);if(!o)return null;const i=o.cloneNode(!0);if(i.removeAttribute("id"),"svg"===i.nodeName.toLowerCase())return this._setSvgAttributes(i,n);if("symbol"===i.nodeName.toLowerCase())return this._setSvgAttributes(this._toSvgElement(i),n);const s=this._svgElementFromString("");return s.appendChild(i),this._setSvgAttributes(s,n)}_svgElementFromString(t){const e=this._document.createElement("DIV");e.innerHTML=t;const n=e.querySelector("svg");if(!n)throw Error(" tag not found");return n}_toSvgElement(t){const e=this._svgElementFromString(""),n=t.attributes;for(let t=0;tt),I(()=>this._inProgressUrlFetches.delete(i)),S());return this._inProgressUrlFetches.set(i,r),r}_addSvgIconConfig(t,e,n){return this._svgIconConfigs.set(O(t,e),n),this}_addSvgIconSetConfig(t,e){const n=this._iconSetConfigs.get(t);return n?n.push(e):this._iconSetConfigs.set(t,[e]),this}_svgElementFromConfig(t){if(!t.svgElement){const e=this._svgElementFromString(t.svgText);this._setSvgAttributes(e,t.options),t.svgElement=e}return t.svgElement}_getIconConfigFromResolvers(t,e){for(let n=0;ne?e.pathname+e.search:""}}const k=["clip-path","color-profile","src","cursor","fill","filter","marker","marker-start","marker-mid","marker-end","mask","stroke"],H=k.map(t=>`[${t}]`).join(", "),$=/^url\(['"]?#(.*?)['"]?\)$/;class W extends j{constructor(t,e,n,o,i,s){super(t),this._iconRegistry=e,this._location=o,this._errorHandler=i,this._inline=!1,this._previousFontSetClass=[],this._currentIconFetch=d.EMPTY,s&&(s.color&&(this.color=this.defaultColor=s.color),s.fontSet&&(this.fontSet=s.fontSet)),n||t.nativeElement.setAttribute("aria-hidden","true")}get inline(){return this._inline}set inline(t){this._inline=h(t)}get svgIcon(){return this._svgIcon}set svgIcon(t){t!==this._svgIcon&&(t?this._updateSvgIcon(t):this._svgIcon&&this._clearSvgElement(),this._svgIcon=t)}get fontSet(){return this._fontSet}set fontSet(t){const e=this._cleanupFontValue(t);e!==this._fontSet&&(this._fontSet=e,this._updateFontIconClasses())}get fontIcon(){return this._fontIcon}set fontIcon(t){const e=this._cleanupFontValue(t);e!==this._fontIcon&&(this._fontIcon=e,this._updateFontIconClasses())}_splitIconName(t){if(!t)return["",""];const e=t.split(":");switch(e.length){case 1:return["",e[0]];case 2:return e;default:throw Error(`Invalid icon name: "${t}"`)}}ngOnInit(){this._updateFontIconClasses()}ngAfterViewChecked(){const t=this._elementsWithExternalReferences;if(t&&t.size){const t=this._location.getPathname();t!==this._previousPath&&(this._previousPath=t,this._prependPathToReferences(t))}}ngOnDestroy(){this._currentIconFetch.unsubscribe(),this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear()}_usingFontIcon(){return!this.svgIcon}_setSvgElement(t){this._clearSvgElement();const e=this._location.getPathname();this._previousPath=e,this._cacheChildrenWithExternalReferences(t),this._prependPathToReferences(e),this._elementRef.nativeElement.appendChild(t)}_clearSvgElement(){const t=this._elementRef.nativeElement;let e=t.childNodes.length;for(this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear();e--;){const n=t.childNodes[e];1===n.nodeType&&"svg"!==n.nodeName.toLowerCase()||n.remove()}}_updateFontIconClasses(){if(!this._usingFontIcon())return;const t=this._elementRef.nativeElement,e=(this.fontSet?this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/):this._iconRegistry.getDefaultFontSetClass()).filter(t=>t.length>0);this._previousFontSetClass.forEach(e=>t.classList.remove(e)),e.forEach(e=>t.classList.add(e)),this._previousFontSetClass=e,this.fontIcon===this._previousFontIconClass||e.includes("mat-ligature-font")||(this._previousFontIconClass&&t.classList.remove(this._previousFontIconClass),this.fontIcon&&t.classList.add(this.fontIcon),this._previousFontIconClass=this.fontIcon)}_cleanupFontValue(t){return"string"==typeof t?t.trim().split(" ")[0]:t}_prependPathToReferences(t){const e=this._elementsWithExternalReferences;e&&e.forEach((e,n)=>{e.forEach(e=>{n.setAttribute(e.name,`url('${t}#${e.value}')`)})})}_cacheChildrenWithExternalReferences(t){const e=t.querySelectorAll(H),n=this._elementsWithExternalReferences=this._elementsWithExternalReferences||new Map;for(let t=0;t{const i=e[t],s=i.getAttribute(o),r=s?s.match($):null;if(r){let t=n.get(i);t||(t=[],n.set(i,t)),t.push({name:o,value:r[1]})}})}_updateSvgIcon(t){if(this._svgNamespace=null,this._svgName=null,this._currentIconFetch.unsubscribe(),t){const[e,n]=this._splitIconName(t);e&&(this._svgNamespace=e),n&&(this._svgName=n),this._currentIconFetch=this._iconRegistry.getNamedSvgIcon(n,e).pipe(C(1)).subscribe(t=>this._setSvgElement(t),t=>{const o=`Error retrieving icon ${e}:${n}! ${t.message}`;this._errorHandler.handleError(new Error(o))})}}}t("MatIcon",W),W.\u0275fac=function(t){return new(t||W)(e.\u0275\u0275directiveInject(e.ElementRef),e.\u0275\u0275directiveInject(T),e.\u0275\u0275injectAttribute("aria-hidden"),e.\u0275\u0275directiveInject(z),e.\u0275\u0275directiveInject(e.ErrorHandler),e.\u0275\u0275directiveInject(P,8))},W.\u0275cmp=e.\u0275\u0275defineComponent({type:W,selectors:[["mat-icon"]],hostAttrs:["role","img",1,"mat-icon","notranslate"],hostVars:8,hostBindings:function(t,n){2&t&&(e.\u0275\u0275attribute("data-mat-icon-type",n._usingFontIcon()?"font":"svg")("data-mat-icon-name",n._svgName||n.fontIcon)("data-mat-icon-namespace",n._svgNamespace||n.fontSet)("fontIcon",n._usingFontIcon()?n.fontIcon:null),e.\u0275\u0275classProp("mat-icon-inline",n.inline)("mat-icon-no-color","primary"!==n.color&&"accent"!==n.color&&"warn"!==n.color))},inputs:{color:"color",inline:"inline",svgIcon:"svgIcon",fontSet:"fontSet",fontIcon:"fontIcon"},exportAs:["matIcon"],features:[e.\u0275\u0275InheritDefinitionFeature],ngContentSelectors:["*"],decls:1,vars:0,template:function(t,n){1&t&&(e.\u0275\u0275projectionDef(),e.\u0275\u0275projection(0))},styles:[".mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}"],encapsulation:2,changeDetection:0});class B{}t("MatIconModule",B),B.\u0275fac=function(t){return new(t||B)},B.\u0275mod=e.\u0275\u0275defineNgModule({type:B}),B.\u0275inj=e.\u0275\u0275defineInjector({imports:[l,l]})}}}); Expert Cleaning Services in Phoenix - Casas Bonitas Covid-19 Info Services Commercial Cleaning Chandler AZ Mesa AZ Phoenix AZ Commercial Janitorial Services Truck Services About Us Our Employees News We’re Hiring Open Positions Apply Online (480) 389-7578 (480) 389-7578 Covid-19 Info Services Commercial Cleaning Chandler AZ Mesa AZ Phoenix AZ Commercial Janitorial Services Truck Services About Us Our Employees News We’re Hiring Open Positions Apply Online Professional Cleaning Services Quality Cleaning & Support services for your Business, Office, and School spaces. We serve each environment with an eye for detail, a heart for care, and an obsession for consistent results. Contact UsView Services Commercial CleaningTruck ServicesHousekeepingFacilities Maintenance Commercial Cleaning Services TrustwortyOur team is made up of Level 1 certified employees, and quality people who are vetted from the top down.Quality CareWe care for each space as if it were our own, providing exceptional cleaning specific to the setting.ExperiencedWe’ve been in the business of serving the Arizona valley for over 19 years. We’re proud to say we have this whole cleaning thing down to a science!Satisfaction GuaranteedWe promise to provide you with exceptional cleaning services. If you’re unhappy with our work, let us know. We will work hard to make it right. Services Carpet CleaningMove In & Out CleaningWindow CleaningTrash RemovalOutdoor FurnitureBusiness MovingPower Washing Happy Customers “Our contracted custodian through Casa Bonitas is amazing and we have yet to have a negative experience with him. He is always available, whether it be a scheduled appointment or a last minute change in plans. He truly relieves so much stress in the setting up and breaking down of our events each week.”“Our housekeeper from Casas Bonitas is amazingggg! She always goes above and beyond when it comes to cleaning our home. I love how she picks up on all the little details that previous cleaning ladies would completely overlook. 10/10 recommend!”“Our housekeeper from Casas Bonitas is amazingggg! She always goes above and beyond when it comes to cleaning our home. I love how she picks up on all the little details that previous cleaning ladies would completely overlook. 10/10 recommend!”“Our housekeeper from Casas Bonitas is amazingggg! She always goes above and beyond when it comes to cleaning our home. I love how she picks up on all the little details that previous cleaning ladies would completely overlook. 10/10 recommend!” F.A.Q. How do I get started with Casas Bonitas cleaning services?To get started please fill out the contact form to the left. Someone will then reach out to you to schedule an appointment to come out and assess the space. During our assessment we will go through the work requested for each room. After the assessment we will provide you with a quote to complete the requested cleaning services. What type of commercial spaces do you clean?We’re so happy you asked! We provide services for offices, schools, and medical facilities. If the space you’re inquiring about isn’t listed here, reach out to us and we’ll see what we can do! I don’t see pricing listed, how much would a cleaning cost?Pricing for our cleaning services vary depending on the size of the space, level of cleaning required, and several other factors. We create customized packages tailored to your specific needs. Please contact us and we’ll send someone out to provide you with a quote. Do you work alone or with a team?For our commercial customers, we build out a custom team specific to your cleaning project. Our team will always show up with a minimum of two people to clean the space. This helps us work effectively and efficiently! Do you conduct employee background checks?Absolutely! All of our employees hold a State Issued Level One fingerprint card – which includes an FBI background check. In addition, all employees are e-verified, and we as a company are completely bonded and insured. Contact Us Call us at (480) 389-7578 or fill outOnline Contact Form
Quality Cleaning & Support services for your Business, Office, and School spaces. We serve each environment with an eye for detail, a heart for care, and an obsession for consistent results.
Our team is made up of Level 1 certified employees, and quality people who are vetted from the top down.
We care for each space as if it were our own, providing exceptional cleaning specific to the setting.
We’ve been in the business of serving the Arizona valley for over 19 years. We’re proud to say we have this whole cleaning thing down to a science!
We promise to provide you with exceptional cleaning services. If you’re unhappy with our work, let us know. We will work hard to make it right.
Carpet Cleaning
Move In & Out Cleaning
Window Cleaning
Trash Removal
Outdoor Furniture
Business Moving
Power Washing
“Our contracted custodian through Casa Bonitas is amazing and we have yet to have a negative experience with him. He is always available, whether it be a scheduled appointment or a last minute change in plans. He truly relieves so much stress in the setting up and breaking down of our events each week.”
“Our housekeeper from Casas Bonitas is amazingggg! She always goes above and beyond when it comes to cleaning our home. I love how she picks up on all the little details that previous cleaning ladies would completely overlook. 10/10 recommend!”
To get started please fill out the contact form to the left. Someone will then reach out to you to schedule an appointment to come out and assess the space. During our assessment we will go through the work requested for each room. After the assessment we will provide you with a quote to complete the requested cleaning services.
We’re so happy you asked! We provide services for offices, schools, and medical facilities. If the space you’re inquiring about isn’t listed here, reach out to us and we’ll see what we can do!
Pricing for our cleaning services vary depending on the size of the space, level of cleaning required, and several other factors. We create customized packages tailored to your specific needs. Please contact us and we’ll send someone out to provide you with a quote.
For our commercial customers, we build out a custom team specific to your cleaning project. Our team will always show up with a minimum of two people to clean the space. This helps us work effectively and efficiently!
Absolutely! All of our employees hold a State Issued Level One fingerprint card – which includes an FBI background check. In addition, all employees are e-verified, and we as a company are completely bonded and insured.