!function(){"use strict";var e={d:function(t,n){for(var o in n)e.o(n,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:n[o]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r:function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{getElementSetting:function(){return u},getElementStyles:function(){return c},getElements:function(){return y},getSelectedElements:function(){return g},getVariantByMeta:function(){return d},getWidgetsCache:function(){return p},isElementInContainer:function(){return v},updateSettings:function(){return E},updateStyle:function(){return _},useElementSetting:function(){return s},useElementStyleProp:function(){return m},useElementStyles:function(){return a},useElementType:function(){return f},useElementsDomRef:function(){return i},useSelectedElement:function(){return w}});var n=window.elementorV2.editorV1Adapters;function o(){const e=window;return e.elementor?.documents?.getCurrent?.()?.container??null}var r="data-atomic";function i(){return(0,n.__privateUseListenTo)([(0,n.windowEvent)("elementor/preview/atomic-widget/render"),(0,n.windowEvent)("elementor/preview/atomic-widget/destroy"),(0,n.windowEvent)("elementor/editor/element-rendered"),(0,n.windowEvent)("elementor/editor/element-destroyed")],(()=>function(){const e=o();return e?.view?[...e.view.el.querySelectorAll(`[${r}]`)]:[]}()))}function l(e){const t=window,n=t.elementor?.getContainer?.(e);return n??null}var u=(e,t)=>{const n=l(e),o=n?.settings?.get(t);return o??null},s=(e,t)=>(0,n.__privateUseListenTo)((0,n.commandEndEvent)("document/elements/set-settings"),(()=>u(e,t)),[e,t]),c=e=>{const t=l(e);return t?.model.get("styles")||null},m=({elementID:e,styleDefID:t,meta:o,propName:r})=>(0,n.__privateUseListenTo)((0,n.commandEndEvent)("document/atomic-widgets/styles"),(()=>{if(!t)return null;const n=c(e)?.[t];if(!n)return null;const i=d(n,o);return i?.props[r]??null}),[e,t,r,o]);function d(e,t){return e.variants.find((e=>e.meta.breakpoint===t.breakpoint&&e.meta.state===t.state))}function a(e){return(0,n.__privateUseListenTo)((0,n.commandEndEvent)("document/atomic-widgets/styles"),(()=>c(e)??{}),[e])}function p(){const e=window;return e?.elementor?.widgetsCache||null}function f(e){return(0,n.__privateUseListenTo)((0,n.commandEndEvent)("editor/documents/load"),(()=>{if(!e)return null;const t=p(),n=t?.[e];return n?.atomic_controls&&n?.atomic_props_schema?{key:e,controls:n.atomic_controls,propsSchema:n.atomic_props_schema,title:n.title}:null}),[e])}function g(){const e=window;return(e.elementor?.selection?.getElements?.()??[]).reduce(((e,t)=>{const n=t.model.get("widgetType")||t.model.get("elType");return n&&e.push({id:t.model.get("id"),type:n}),e}),[])}function w(){const e=(0,n.__privateUseListenTo)([(0,n.commandEndEvent)("document/elements/select"),(0,n.commandEndEvent)("document/elements/deselect")],g),[t]=e,o=f(t?.type);return 1===e.length&&o?{element:t,elementType:o}:{element:null,elementType:null}}function y(e){const t=e?l(e):o();if(!t)return[];const n=t.children?.flatMap((e=>y(e.id)))??[];return[t,...n]}var v=(e,t)=>t.model.get("id")===e.id&&t.model.get("widgetType")===e.type||!!(t.children&&t.children.length>0)&&t.children.some((t=>v(e,t))),E=({id:e,props:t})=>{const o=l(e);(0,n.__privateRunCommand)("document/elements/settings",{container:o,settings:{...t}})},_=async({elementID:e,styleDefID:t,meta:o,props:r,bind:i,label:u})=>{const s=l(e);await(0,n.__privateRunCommand)("document/atomic-widgets/styles",{container:s,styleDefID:t,bind:i,meta:o,props:r,label:u})};(window.elementorV2=window.elementorV2||{}).editorElements=t}();/*! elementor - v3.27.0 - 18-02-2025 */ "use strict"; (self["webpackChunkelementorFrontend"] = self["webpackChunkelementorFrontend"] || []).push([["floating-bars"],{ /***/ "../modules/floating-buttons/assets/js/floating-bars/frontend/classes/floatin-bar-dom.js": /*!***********************************************************************************************!*\ !*** ../modules/floating-buttons/assets/js/floating-bars/frontend/classes/floatin-bar-dom.js ***! \***********************************************************************************************/ /***/ ((__unused_webpack_module, exports) => { Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; class FloatingBarDomHelper { constructor($element) { this.$element = $element; } maybeMoveToTop() { const el = this.$element[0]; const widget = el.querySelector('.e-floating-bars'); if (elementorFrontend.isEditMode()) { widget.classList.add('is-sticky'); return; } if (el.dataset.widget_type.startsWith('floating-bars') && widget.classList.contains('has-vertical-position-top') && !widget.classList.contains('is-sticky')) { const wpAdminBar = document.getElementById('wpadminbar'); const elementToInsert = el.closest('.elementor'); if (wpAdminBar) { wpAdminBar.after(elementToInsert); } else { document.body.prepend(elementToInsert); } } } } exports["default"] = FloatingBarDomHelper; /***/ }), /***/ "../modules/floating-buttons/assets/js/floating-bars/frontend/handlers/floating-bars.js": /*!**********************************************************************************************!*\ !*** ../modules/floating-buttons/assets/js/floating-bars/frontend/handlers/floating-bars.js ***! \**********************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; __webpack_require__(/*! core-js/modules/es.array.includes.js */ "../node_modules/core-js/modules/es.array.includes.js"); __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js"); __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js"); var _base = _interopRequireDefault(__webpack_require__(/*! elementor-frontend/handlers/base */ "../assets/dev/js/frontend/handlers/base.js")); var _floatinBarDom = _interopRequireDefault(__webpack_require__(/*! ../classes/floatin-bar-dom */ "../modules/floating-buttons/assets/js/floating-bars/frontend/classes/floatin-bar-dom.js")); var _clickTracking = _interopRequireDefault(__webpack_require__(/*! ../../../shared/frontend/handlers/click-tracking */ "../modules/floating-buttons/assets/js/shared/frontend/handlers/click-tracking.js")); class FloatingBarsHandler extends _base.default { getDefaultSettings() { return { selectors: { main: '.e-floating-bars', closeButton: '.e-floating-bars__close-button', ctaButton: '.e-floating-bars__cta-button' }, constants: { ctaEntranceAnimation: 'style_cta_button_animation', ctaEntranceAnimationDelay: 'style_cta_button_animation_delay', hasEntranceAnimation: 'has-entrance-animation', visible: 'visible', isSticky: 'is-sticky', hasVerticalPositionTop: 'has-vertical-position-top', hasVerticalPositionBottom: 'has-vertical-position-bottom', isHidden: 'is-hidden', animated: 'animated' } }; } getDefaultElements() { const selectors = this.getSettings('selectors'); return { main: this.$element[0].querySelector(selectors.main), mainAll: this.$element[0].querySelectorAll(selectors.main), closeButton: this.$element[0].querySelector(selectors.closeButton), ctaButton: this.$element[0].querySelector(selectors.ctaButton) }; } onElementChange(property) { const changedProperties = ['advanced_vertical_position']; if (changedProperties.includes(property)) { this.initDefaultState(); } } getResponsiveSetting(controlName) { const currentDevice = elementorFrontend.getCurrentDeviceMode(); return elementorFrontend.utils.controls.getResponsiveControlValue(this.getElementSettings(), controlName, '', currentDevice); } bindEvents() { if (this.elements.closeButton) { this.elements.closeButton.addEventListener('click', this.closeFloatingBar.bind(this)); } if (this.elements.ctaButton) { this.elements.ctaButton.addEventListener('animationend', this.handleAnimationEnd.bind(this)); } if (this.elements.main) { window.addEventListener('keyup', this.onDocumentKeyup.bind(this)); } if (this.hasStickyElements()) { window.addEventListener('resize', this.handleStickyElements.bind(this)); } } isStickyTop() { const { isSticky, hasVerticalPositionTop } = this.getSettings('constants'); return this.elements.main.classList.contains(isSticky) && this.elements.main.classList.contains(hasVerticalPositionTop); } isStickyBottom() { const { isSticky, hasVerticalPositionBottom } = this.getSettings('constants'); return this.elements.main.classList.contains(isSticky) && this.elements.main.classList.contains(hasVerticalPositionBottom); } hasStickyElements() { const stickyElements = document.querySelectorAll('.elementor-sticky'); return stickyElements.length > 0; } focusOnLoad() { this.elements.main.setAttribute('tabindex', '0'); this.elements.main.focus({ focusVisible: true }); } applyBodyPadding() { const mainHeight = this.elements.main.offsetHeight; document.body.style.paddingTop = `${mainHeight}px`; } removeBodyPadding() { document.body.style.paddingTop = '0'; } handleWPAdminBar() { const wpAdminBar = elementorFrontend.elements.$wpAdminBar; if (wpAdminBar.length) { this.elements.main.style.top = `${wpAdminBar.height()}px`; } } handleStickyElements() { const mainHeight = this.elements.main.offsetHeight; const wpAdminBar = elementorFrontend.elements.$wpAdminBar; const stickyElements = document.querySelectorAll('.elementor-sticky:not(.elementor-sticky__spacer)'); if (0 === stickyElements.length) { return; } stickyElements.forEach(stickyElement => { const dataSettings = stickyElement.getAttribute('data-settings'); const stickyPosition = JSON.parse(dataSettings)?.sticky; const isTop = '0px' === stickyElement.style.top || 'top' === stickyPosition; const isBottom = '0px' === stickyElement.style.bottom || 'bottom' === stickyPosition; if (this.isStickyTop() && isTop) { if (wpAdminBar.length) { stickyElement.style.top = `${mainHeight + wpAdminBar.height()}px`; } else { stickyElement.style.top = `${mainHeight}px`; } } else if (this.isStickyBottom() && isBottom) { stickyElement.style.bottom = `${mainHeight}px`; } if (elementorFrontend.isEditMode()) { if (isTop) { stickyElement.style.top = this.isStickyTop() ? `${mainHeight}px` : '0px'; } else if (isBottom) { stickyElement.style.bottom = this.isStickyBottom() ? `${mainHeight}px` : '0px'; } } }); document.querySelectorAll('.elementor-sticky__spacer').forEach(stickySpacer => { const dataSettings = stickySpacer.getAttribute('data-settings'); const stickyPosition = JSON.parse(dataSettings)?.sticky; const isTop = '0px' === stickySpacer.style.top || 'top' === stickyPosition; if (this.isStickyTop() && isTop) { stickySpacer.style.marginBottom = `${mainHeight}px`; } }); } closeFloatingBar() { const { isHidden } = this.getSettings('constants'); if (!elementorFrontend.isEditMode()) { this.elements.main.classList.add(isHidden); if (this.hasStickyElements()) { this.handleStickyElements(); } else if (this.isStickyTop()) { this.removeBodyPadding(); } } } initEntranceAnimation() { const { animated, ctaEntranceAnimation, ctaEntranceAnimationDelay, hasEntranceAnimation } = this.getSettings('constants'); const entranceAnimationClass = this.getResponsiveSetting(ctaEntranceAnimation); const entranceAnimationDelay = this.getResponsiveSetting(ctaEntranceAnimationDelay) || 0; const setTimeoutDelay = entranceAnimationDelay + 500; this.elements.ctaButton.classList.add(animated); this.elements.ctaButton.classList.add(entranceAnimationClass); setTimeout(() => { this.elements.ctaButton.classList.remove(hasEntranceAnimation); }, setTimeoutDelay); } handleAnimationEnd() { this.removeEntranceAnimationClasses(); this.focusOnLoad(); } removeEntranceAnimationClasses() { if (!this.elements.ctaButton) { return; } const { animated, ctaEntranceAnimation, visible } = this.getSettings('constants'); const entranceAnimationClass = this.getResponsiveSetting(ctaEntranceAnimation); this.elements.ctaButton.classList.remove(animated); this.elements.ctaButton.classList.remove(entranceAnimationClass); this.elements.ctaButton.classList.add(visible); } onDocumentKeyup(event) { // Bail if not ESC key if (event.keyCode !== 27 || !this.elements.main) { return; } /* eslint-disable @wordpress/no-global-active-element */ if (this.elements.main.contains(document.activeElement)) { this.closeFloatingBar(); } /* eslint-enable @wordpress/no-global-active-element */ } initDefaultState() { const { hasEntranceAnimation } = this.getSettings('constants'); if (this.isStickyTop()) { this.handleWPAdminBar(); } if (this.hasStickyElements()) { this.handleStickyElements(); } else if (this.isStickyTop()) { this.applyBodyPadding(); } if (this.elements.main && !this.elements.ctaButton.classList.contains(hasEntranceAnimation) && !elementorFrontend.isEditMode()) { this.focusOnLoad(); } } setupInnerContainer() { this.elements.main.closest('.e-con-inner').classList.add('e-con-inner--floating-bars'); this.elements.main.closest('.e-con').classList.add('e-con--floating-bars'); } onInit() { const { hasEntranceAnimation } = this.getSettings('constants'); super.onInit(...arguments); this.clickTrackingHandler = new _clickTracking.default({ $element: this.$element }); const domHelper = new _floatinBarDom.default(this.$element); domHelper.maybeMoveToTop(); if (this.elements.ctaButton && this.elements.ctaButton.classList.contains(hasEntranceAnimation)) { this.initEntranceAnimation(); } this.initDefaultState(); this.setupInnerContainer(); } } exports["default"] = FloatingBarsHandler; /***/ }), /***/ "../modules/floating-buttons/assets/js/shared/frontend/handlers/click-tracking.js": /*!****************************************************************************************!*\ !*** ../modules/floating-buttons/assets/js/shared/frontend/handlers/click-tracking.js ***! \****************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; __webpack_require__(/*! core-js/modules/es.array.push.js */ "../node_modules/core-js/modules/es.array.push.js"); __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js"); __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js"); var _base = _interopRequireDefault(__webpack_require__(/*! elementor-frontend/handlers/base */ "../assets/dev/js/frontend/handlers/base.js")); class ClickTrackingHandler extends _base.default { clicks = []; getDefaultSettings() { return { selectors: { contentWrapper: '.e-contact-buttons__content-wrapper', contactButtonCore: '.e-contact-buttons__send-button', contentWrapperFloatingBars: '.e-floating-bars', floatingBarCTAButton: '.e-floating-bars__cta-button', elementorWrapper: '[data-elementor-type="floating-buttons"]' } }; } getDefaultElements() { const selectors = this.getSettings('selectors'); return { contentWrapper: this.$element[0].querySelector(selectors.contentWrapper), contentWrapperFloatingBars: this.$element[0].querySelector(selectors.contentWrapperFloatingBars) }; } bindEvents() { if (this.elements.contentWrapper) { this.elements.contentWrapper.addEventListener('click', this.onChatButtonTrackClick.bind(this)); } if (this.elements.contentWrapperFloatingBars) { this.elements.contentWrapperFloatingBars.addEventListener('click', this.onChatButtonTrackClick.bind(this)); } window.addEventListener('beforeunload', () => { if (this.clicks.length > 0) { this.sendClicks(); } }); } onChatButtonTrackClick(event) { const targetElement = event.target || event.srcElement; const selectors = this.getSettings('selectors'); if (targetElement.matches(selectors.contactButtonCore) || targetElement.closest(selectors.contactButtonCore) || targetElement.matches(selectors.floatingBarCTAButton) || targetElement.closest(selectors.floatingBarCTAButton)) { this.getDocumentIdAndTrack(targetElement, selectors); } } getDocumentIdAndTrack(targetElement, selectors) { const documentId = targetElement.closest(selectors.elementorWrapper).dataset.elementorId; this.trackClick(documentId); } trackClick(documentId) { if (!documentId) { return; } this.clicks.push(documentId); if (this.clicks.length >= 10) { this.sendClicks(); } } sendClicks() { const formData = new FormData(); formData.append('action', 'elementor_send_clicks'); formData.append('_nonce', elementorFrontendConfig?.nonces?.floatingButtonsClickTracking); this.clicks.forEach(documentId => formData.append('clicks[]', documentId)); fetch(elementorFrontendConfig?.urls?.ajaxurl, { method: 'POST', body: formData }).then(() => { this.clicks = []; }); } } exports["default"] = ClickTrackingHandler; /***/ }) }]); //# sourceMappingURL=floating-bars.7efeeb8b098e55999ff1.bundle.js.map VCT Flooring

Stylish Flooring Solutions for Every Space!

We specialize in transforming spaces with premium vinyl, carpet, and tile flooring solutions. Whether it’s your home or business, our expert craftsmanship ensures style, durability, and perfection in every project.

Stylish Flooring Solutions for Every Space!

We specialize in transforming spaces with premium vinyl, carpet, and tile flooring solutions. Whether it’s your home or business, our expert craftsmanship ensures style, durability, and perfection in every project.

Our mission

Expert Flooring Solutions for Every Unique Space

VCT Flooring brings you expert vinyl, carpet, tile, epoxy, and polished concrete floors—built to last and designed to impress.

Our Mission

Deliver exceptional, durable flooring solutions tailored to every client’s needs.

Our Vision

To become the leading flooring provider, inspiring stylish transformations.

Our Motto

Quality floors, expert craftsmanship, transforming spaces with every step.

Our Mission

We’re here to build lasting relationships and deliver exceptional, durable flooring.

Our Vision

Our vision is to excel with great service and satisfied customers.

Our Motto

Strong Floors, Lasting Impression, Exceptional Service.

Our Services

Comprehensive Flooring Solutions for You

At VCT Flooring, we specialize in vinyl, carpet, tile installation, epoxy flooring, and concrete polishing—customized to perfectly suit your style and needs.

Tile Flooring

Upgrade your space with beautiful tile designs—perfect for kitchens, bathrooms, and more, offering style & durability.

Carpet Flooring

Add warmth and comfort to any room with our stylish carpet flooring, offering softness, durability, and design.

Vinyl Flooring

Upgrade your space with durable, low-maintenance vinyl flooring, offering stylish designs & long-lasting performance.

Epoxy Flooring

Enhance your space with sleek, durable epoxy flooring, offering a high-performance finish that’s perfect for both residential & commercial areas.

Concrete Polishing

Achieve a modern, refined look with our concrete polishing services, delivering a durable, glossy finish that enhances any space with style & strength.

About Us

Trusted Experts in Flooring
for Every Space

Trusted Experts in Flooring for Every Space

At VCT Flooring, we’re passionate about delivering flooring that’s as beautiful as it is durable. With 20+ years of experience, we focus on providing solutions that suit your style and needs. We provide a range of flooring services, including tile, carpet, vinyl, epoxy, and polished concrete. 

We’re not your average flooring team—we’re here to make your experience exceptional, from the first step to the final finish. We’ll make sure you’re well taken care of and get the flooring solution you’ve always dreamed of.

Our mission is simple: to transform your spaces with premium-quality flooring that combines style, functionality, and durability. Whether you’re looking for the timeless appeal of vinyl, the cozy comfort of carpet, or the modern elegance of tile, we have the perfect solution for you.

Why Choose Us

Flooring You’ll Love, Quality You Can Trust

Quality Flooring Services You Can Trust

At VCT Flooring, we create floors that wow—combining stunning style, unbeatable durability, and smart functionality. Here’s why everyone trusts VCT to transform their spaces:

Professional Craftsmanship

Professional Craftsmanship

Every detail matters to us. Our skilled team delivers flawless results every time.

Wide Range of Options

Wide Range of Options

From cozy carpets to sleek tiles, we’ve got options to match your style, budget, and lifestyle.

Customer-Centric Approach

Customer-Centric Approach

We listen, collaborate, and bring your dream floors to life—exceeding expectations at every step.

Our Gallery

Explore Our Flooring Transformations

Dive into our gallery and see how we’ve transformed spaces with beautiful vinyl, cozy carpets, timeless tiles, sleek epoxy floors, and polished concrete. Find the perfect look for your next project!

testimonials

What Our Happy Customers
Are Saying

What Our Happy Customers Are Saying

Hear from our happy customers about their experience with VCT Flooring—authentic stories of top-notch quality, expert service, and stunning transformations!

"City Flooring transformed my living room with stunning vinyl flooring. Their team was professional, efficient, and detail-oriented. I’m thrilled with the results and highly recommend their services to anyone looking for quality work."

Sarah M.

"We chose City Flooring for our office carpet installation, and they exceeded our expectations. The team was punctual, friendly, and completed the job perfectly. The new carpet adds warmth and professionalism to our space."

James T.

"I couldn’t be happier with my new kitchen tile flooring! City Flooring provided excellent service, from consultation to installation. Their attention to detail and quality craftsmanship truly made a difference in my home."

Priya R.

Free Estimate

Transforming Spaces with Stunning Floors

Schedule a consultation with VCT flooring experts and start turning your vision into reality today!

Phone

(555) 123-4567

Email

info@cityflooring.com

Name
Name
Address

faq's

Answers to Your Flooring Questions

Explore FAQs about our flooring services, materials, installation process, and how we make sure you’re thrilled with every step.

Vinyl flooring can last from 10-20 years, depending on the quality & thickness of the wear layer. High-quality vinyl plank and tile can even last up to 25 years with proper care. However, factors like foot traffic and installation quality can greatly affect its lifespan.

A carpet usually lasts between 5 to 15 years, depending on its quality, foot traffic, and maintenance. With proper care, high-quality carpets can last even longer

Yes, carpets can be installed over existing floors, such as tile, laminate, or hardwood, as long as the current floor is clean, level, and in good condition. This can be a cost-effective way to refresh a room without removing the old flooring, but it's important to ensure the surface is stable and free from unevenness before installation.

Epoxy flooring typically lasts 10 to 20 years, depending on how well it’s installed, cared for, and the amount of foot traffic it handles.

With proper installation, sealing, and maintenance, a polished concrete floor can last over a century, even in the toughest commercial settings. Its lifespan significantly exceeds that of other flooring options like carpet, vinyl tile, and wood laminates.               

At VCT Flooring, we’re experts in providing top-quality flooring solutions custom-fit to your needs, backed by over 20 years of industry experience.

 

Scroll to Top