UNPKG

2.2 kBSCSSView Raw
1@forward './list.scss' as list-* hide List;
2@forward './multiselect.scss' as multiselect-* hide Multiselect;
3@forward './calendar.scss' as calendar-* hide Calendar;
4@forward './popup.scss' as popup-* hide Popup;
5
6@use './variables.scss' as v;
7
8@use './widget.scss';
9@use './list.scss';
10@use './listbox.scss';
11@use './combobox.scss';
12@use './dropdown-list.scss';
13@use './number-picker.scss';
14@use './calendar.scss';
15@use './date-picker.scss';
16@use './time-input.scss';
17@use './multiselect.scss';
18@use './popup.scss';
19
20$_graph: (
21 'List': (),
22 'Popup': (),
23 'Listbox': (
24 'List',
25 ),
26 'DropdownList': (
27 'List',
28 'Popup',
29 ),
30 'Combobox': (
31 'List',
32 'Popup',
33 ),
34 'Autocomplete': (
35 'List',
36 'Popup',
37 'Combobox',
38 ),
39 'Multiselect': (
40 'List',
41 'Popup',
42 ),
43 'DatePicker': (
44 'Popup',
45 'Calendar',
46 ),
47 'Calendar': (),
48 'TimeInput': (),
49 'NumberPicker': (),
50);
51
52//
53// Largely unnecessary Toposort
54// --------------------------------
55$_visited: ();
56@function _sort($node) {
57 $result: ();
58 $deps: map-get($_graph, $node);
59
60 @each $dep in $deps {
61 @if not index($_visited, $dep) {
62 $result: join($result, _sort($dep));
63 }
64 }
65 $_visited: append($_visited, $node) !global;
66 @return append($result, $node);
67}
68
69$_components: ();
70@each $node, $_ in $_graph {
71 @if index(v.$components, $node) and not index($_visited, $node) {
72 $_components: join($_components, _sort($node));
73 }
74}
75
76// @debug 'Including: #{$_components}';
77
78@each $mod in $_components {
79 @if $mod == 'List' {
80 @include list.List();
81 }
82 @if $mod == 'Popup' {
83 @include popup.Popup();
84 }
85 @if $mod == 'Listbox' {
86 @include listbox.Listbox();
87 }
88 @if $mod == 'DropdownList' {
89 @include dropdown-list.DropdownList();
90 }
91 @if $mod == 'Combobox' {
92 @include combobox.Combobox();
93 }
94 @if $mod == 'Multiselect' {
95 @include multiselect.Multiselect();
96 }
97 @if $mod == 'NumberPicker' {
98 @include number-picker.NumberPicker();
99 }
100 @if $mod == 'Calendar' {
101 @include calendar.Calendar();
102 }
103 @if $mod == 'DatePicker' {
104 @include date-picker.DateTimePicker();
105 }
106 @if $mod == 'TimeInput' {
107 @include time-input.TimeInput();
108 }
109}