import { NgModule } from '@angular/core'
import { FormsModule } from '@angular/forms'
import { PortalModule } from '@angular/cdk/portal'

// ---- Routes
import { CatalogRouting } 					from './rte.catalog'


// Material
import { MatDialogModule, MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material'
import { AddedToCartDialogComponent } 		from '@k-core/modules/shared/components/added-to-cart-dialog/cmp.added-to-cart-dialog'

// ---- Shared Modules
import { SharedModule }                     from '@k-core/modules/shared/mod.shared'
import { StoredropdownModule }				from '@k-core/modules/storeDropdown/mod.storeDropdown'


// ---- Directives
import { ClickOutsideDirective } 			from '@k-core/directives/dir.click-outside'
import { SearchPartialModule }              from '@k-core/modules/search-partial/mod.search-partial'


// ---- Components
import { B2B_CategoryOverviewComponent }        from './components/category-overview/cmp.category-overview'
import { CategoryOverviewItemComponent }    from '@k-core/modules/catalog/components/category-overview/item/cmp.category-overview__item'

import { FilterComponent }                  from '@k-core/modules/catalog/components/filter/cmp.filter'


// ---- Templates (Views)
import { B2B_CategoryOverviewView }             from './templates/category-overview/view.category-overview'


// ---- Services
import { ProductService }                   from '@k-core/services/svc.product'
import { CategoryService } 					from '@k-core/services/svc.category'
import { AfterContentPortal }               from '@k-core/modules/portals/por.afterContent'
import { B2B_BlockModule } 					from '../block/mod.block'

@NgModule({
	imports: [
		SharedModule,
		StoredropdownModule,
		SearchPartialModule,
		FormsModule,

		// Material
		PortalModule,
		B2B_BlockModule,

		CatalogRouting,
		MatDialogModule
	],
	exports: [
	],
	declarations: [
		AfterContentPortal,

		ClickOutsideDirective,
		CategoryOverviewItemComponent,
		FilterComponent,

		// Store specific
		B2B_CategoryOverviewComponent,
		B2B_CategoryOverviewView
	],
	entryComponents: [
		AddedToCartDialogComponent
	],
	providers: [
		{provide: MAT_DIALOG_DEFAULT_OPTIONS, useValue: {hasBackdrop: true}},
		CategoryService,
		ProductService
	]
})
export class CatalogModule { }