/*
 * Copyright 2019-present Open Networking Foundation
 *
 * 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 { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import {RouterModule} from '@angular/router';
import { Gui2FwLibModule } from 'gui2-fw-lib/public_api';
import { RoadmDeviceComponent } from './roadm/roadm.component';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { RoadmPortComponent } from './port/port.component';

@NgModule({
    declarations: [
        RoadmDeviceComponent,
        RoadmPortComponent,
    ],
    imports: [
        RouterModule,
        RouterModule.forChild([
            {path: '', component: RoadmDeviceComponent},
            {path: 'roadm-port-gui', component: RoadmPortComponent}]),
        Gui2FwLibModule,
        CommonModule,
        FormsModule,
        ReactiveFormsModule
    ],
    exports: [
        RoadmDeviceComponent,
        RoadmPortComponent,
    ]
})
export class RoadmGuiLibModule { }
