Skip to content

Commit e61f17e

Browse files
feat(cascading simple combo): Adding loading indicator
1 parent e94fbf8 commit e61f17e

3 files changed

Lines changed: 36 additions & 4 deletions

File tree

src/app/lists/combo/simple-combo-cascading/simple-combo-cascading.component.html

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@
1717
[displayKey]="'name'"
1818
[disabled]="regionData.length === 0">
1919
</igx-simple-combo>
20+
<igx-linear-bar
21+
*ngIf="isLoadingRegions"
22+
type="info"
23+
[indeterminate]="true">
24+
</igx-linear-bar>
2025
</div>
2126
<div class="combo-section">
2227
<igx-simple-combo #city
@@ -26,5 +31,10 @@
2631
[displayKey]="'name'"
2732
[disabled]="citiesData.length === 0">
2833
</igx-simple-combo>
34+
<igx-linear-bar
35+
*ngIf="isLoadingCities"
36+
type="info"
37+
[indeterminate]="true">
38+
</igx-linear-bar>
2939
</div>
3040
</div>

src/app/lists/combo/simple-combo-cascading/simple-combo-cascading.component.ts

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,44 @@ export class SimpleComboCascadingComponent implements OnInit {
1414
public countriesData: Country[];
1515
public regionData: Region[] = [];
1616
public citiesData: City[] = [];
17+
public isLoadingRegions: boolean = false;
18+
public isLoadingCities: boolean = false;
19+
private loadingTime = 0;
20+
1721
public ngOnInit(): void {
1822
this.countriesData = getCountries(['United States', 'Japan', 'United Kingdom']);
1923
}
2024

2125
public countryChanging(e: ISimpleComboSelectionChangingEventArgs) {
2226
this.selectedCountry = e.newSelection as Country;
23-
this.regionData = getCitiesByCountry([this.selectedCountry?.name])
27+
if(e.newSelection){
28+
this.isLoadingRegions = true;
29+
this.loadingTime = 2000;
30+
}
31+
setTimeout(() => {
32+
this.regionData = getCitiesByCountry([this.selectedCountry?.name])
2433
.map(c => ({name: c.region, country: c.country}))
2534
.filter((v, i, a) => a.findIndex(r => r.name === v.name) === i);
35+
this.isLoadingRegions = false;
36+
}, this.loadingTime)
2637
this.selectedRegion = null;
2738
this.selectedCity = null;
2839
this.citiesData = [];
40+
this.loadingTime = 0;
2941
}
3042

3143
public regionChanging(e: ISimpleComboSelectionChangingEventArgs) {
3244
this.selectedRegion = e.newSelection as Region;
33-
this.citiesData = getCitiesByCountry([this.selectedCountry?.name])
45+
if(e.newSelection){
46+
this.isLoadingCities = true;
47+
this.loadingTime = 2000;
48+
}
49+
setTimeout(() => {
50+
this.citiesData = getCitiesByCountry([this.selectedCountry?.name])
3451
.filter(c => c.region === this.selectedRegion?.name);
52+
this.isLoadingCities = false;
53+
}, this.loadingTime)
3554
this.selectedCity = null;
55+
this.loadingTime = 0;
3656
}
3757
}

src/app/lists/lists.module.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ import {
1818
IgxSwitchModule,
1919
IgxToastModule,
2020
IgxTooltipModule,
21-
IgxTreeModule
21+
IgxTreeModule,
22+
IgxProgressBarModule
2223
} from 'igniteui-angular';
2324
import { IgxFinancialChartModule } from 'igniteui-angular-charts';
2425
import { ComboBindingComponent } from './combo/combo-binding/combo-binding.component';
@@ -97,7 +98,8 @@ import { ListItemSelectionComponent } from './list/list-item-selection/list-item
9798
IgxTreeModule,
9899
IgxTooltipModule,
99100
IgxFinancialChartModule,
100-
IgxSimpleComboModule
101+
IgxSimpleComboModule,
102+
IgxProgressBarModule
101103
]
102104
})
103105
export class ListsModule { }

0 commit comments

Comments
 (0)