Skip to content

Commit 7258673

Browse files
authored
Merge pull request #3160 from IgniteUI/ganastasov/simple-combo-loading-indicator-master
Add loading indicator for cascading simple combo sample master
2 parents 1f86fe4 + 724b0cf commit 7258673

File tree

3 files changed

+38
-4
lines changed

3 files changed

+38
-4
lines changed

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

+10
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

+24-2
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,46 @@ 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.regionData = [];
29+
this.isLoadingRegions = true;
30+
this.loadingTime = 2000;
31+
}
32+
setTimeout(() => {
33+
this.regionData = getCitiesByCountry([this.selectedCountry?.name])
2434
.map(c => ({name: c.region, country: c.country}))
2535
.filter((v, i, a) => a.findIndex(r => r.name === v.name) === i);
36+
this.isLoadingRegions = false;
37+
}, this.loadingTime)
2638
this.selectedRegion = null;
2739
this.selectedCity = null;
2840
this.citiesData = [];
41+
this.loadingTime = 0;
2942
}
3043

3144
public regionChanging(e: ISimpleComboSelectionChangingEventArgs) {
3245
this.selectedRegion = e.newSelection as Region;
33-
this.citiesData = getCitiesByCountry([this.selectedCountry?.name])
46+
if (e.newSelection){
47+
this.citiesData = [];
48+
this.isLoadingCities = true;
49+
this.loadingTime = 2000;
50+
}
51+
setTimeout(() => {
52+
this.citiesData = getCitiesByCountry([this.selectedCountry?.name])
3453
.filter(c => c.region === this.selectedRegion?.name);
54+
this.isLoadingCities = false;
55+
}, this.loadingTime)
3556
this.selectedCity = null;
57+
this.loadingTime = 0;
3658
}
3759
}

src/app/lists/lists.module.ts

+4-2
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)