1 module uim.bootstrap.bs5.basic.components.forms.customcontrols.select;
2 
3 import uim.bootstrap; 
4 
5 class DBS5CustomSelect : DH5Select {
6 	mixin(H5This!("Select", ["custom-select"]));
7 
8 	mixin(MyContent!("option", "H5Option"));
9 	O options(this O)(string[] values, string selected = "", string disabled = "") {
10 		foreach(value; values) {
11 			if (value == selected) {
12 				if (value == disabled) 	this.option(["selected":"selected", "disabled":"disabled"], value); 
13 				else this.option(["selected":"selected"], value);
14 			}
15 			else if (value == disabled) this.option(["disabled":"disabled"], value);
16 			else this.option(value);
17 		}
18 		return cast(O)this;	
19 	}
20 	O options(this O)(string[string] values, string selectedKey = "", string disabledKey = "") {
21 		foreach(k; values.keys.sort) {
22 			if (k == selectedKey) {
23 				if (k == disabledKey) 	this.option(["selected":"selected", "disabled":"disabled"], k); 
24 				else this.option(["selected":"selected"], k);
25 			}
26 			else if (k == disabledKey) this.option(["disabled":"disabled"], k);
27 			else this.option(["value":k], values[k]);
28 		}
29 		return cast(O)this;	
30 	}
31 	O options(this O)(string[] values, string[] selected, string[] disabled = null) {
32 		foreach(value; values) {
33 			if (selected.has(value)) {
34 				if (disabled.has(value)) 	this.option(["selected":"selected", "disabled":"disabled"], value); 
35 				else this.option(["selected":"selected"], value);
36 			}
37 			else if (disabled.has(value)) this.option(["disabled":"disabled"], value);
38 			else this.option(value);
39 		}
40 		return cast(O)this;	
41 	}
42 	O options(this O)(string[string] values, string[] selectedKeys, string[] disabledKeys = null) {
43 		foreach(k; values.keys.sort) {
44 			if (selectedKeys.has(k)) {
45 				if (disabledKeys.has(k)) this.option(["selected":"selected", "disabled":"disabled"], k); 
46 				else this.option(["selected":"selected"], k);
47 			}
48 			else if (disabledKeys.has(k)) this.option(["disabled":"disabled"], k);
49 			else this.option(["value":k], values[k]);
50 		}
51 		return cast(O)this;	
52 	}
53 }
54 mixin(H5Calls!("BS5CustomSelect"));
55 
56 unittest {
57 	
58 	
59 }