@uva-glass/component-library 3.47.1 → 3.47.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/SearchField.module-Be9ZoU-6.js +17 -0
  2. package/dist/SearchField.module-Be9ZoU-6.js.map +1 -0
  3. package/dist/WeekSelector.module-CTDcqKel.js +17 -0
  4. package/dist/WeekSelector.module-CTDcqKel.js.map +1 -0
  5. package/dist/assets/SearchField.css +1 -1
  6. package/dist/assets/WeekSelector.css +1 -1
  7. package/dist/components/SearchField/SearchField.d.ts +3 -5
  8. package/dist/components/SearchField/SearchField.js +66 -50
  9. package/dist/components/SearchField/SearchField.js.map +1 -1
  10. package/dist/components/SearchField/SearcheField.stories.d.ts +6 -2
  11. package/dist/components/SearchField/SearcheField.stories.js +39 -34
  12. package/dist/components/SearchField/SearcheField.stories.js.map +1 -1
  13. package/dist/components/SearchField/components/ResultOptionBox.js +1 -1
  14. package/dist/components/SearchField/components/ResultsOption.d.ts +4 -2
  15. package/dist/components/SearchField/components/ResultsOption.js +36 -17
  16. package/dist/components/SearchField/components/ResultsOption.js.map +1 -1
  17. package/dist/components/SearchField/mockData.d.ts +12 -2
  18. package/dist/components/SearchField/mockData.js +60 -161
  19. package/dist/components/SearchField/mockData.js.map +1 -1
  20. package/dist/components/WeekSelector/WeekSelector.js +61 -42
  21. package/dist/components/WeekSelector/WeekSelector.js.map +1 -1
  22. package/dist/components/WeekSelector/WeekSelector.stories.js +73 -20
  23. package/dist/components/WeekSelector/WeekSelector.stories.js.map +1 -1
  24. package/dist/components/WeekSelector/components/WeekSelectorButton.js +1 -1
  25. package/dist/components/WeekSelector/components/WeekSelectorOption.js +82 -27
  26. package/dist/components/WeekSelector/components/WeekSelectorOption.js.map +1 -1
  27. package/dist/components/WeekSelector/components/WeekSelectorOptionContainer.js +1 -1
  28. package/package.json +13 -13
  29. package/dist/SearchField.module-DTDxokfU.js +0 -17
  30. package/dist/SearchField.module-DTDxokfU.js.map +0 -1
  31. package/dist/WeekSelector.module-BA7qqZsx.js +0 -17
  32. package/dist/WeekSelector.module-BA7qqZsx.js.map +0 -1
@@ -1,234 +1,133 @@
1
1
  const e = [
2
2
  {
3
3
  __typename: "EduPrepCourseSearchHit",
4
- code: "6414M0208Y",
5
- id: "oh:course:6414M0208Y",
4
+ code: "6614ZM038Y",
5
+ id: "oh:course:6614ZM038Y",
6
6
  name: {
7
- EN: "Tax Accounting",
8
- NL: "Tax Accounting"
9
- },
10
- programmeType: "DEGREE",
11
- programmeCode: "EMA_FEC"
12
- },
13
- {
14
- __typename: "EduPrepCourseSearchHit",
15
- code: "3354TAXAVY",
16
- id: "oh:course:3354TAXAVY",
17
- name: {
18
- EN: "Tax Accounting I",
19
- NL: "Tax Accounting I"
20
- },
21
- programmeType: "DEGREE",
22
- programmeCode: "RMA_FISREC"
23
- },
24
- {
25
- __typename: "EduPrepCourseSearchHit",
26
- code: "3354TAX2VY",
27
- id: "oh:course:3354TAX2VY",
28
- name: {
29
- EN: "Tax Accounting II",
30
- NL: "Tax Accounting II"
31
- },
32
- programmeType: "DEGREE",
33
- programmeCode: "RMA_FISREC"
34
- },
35
- {
36
- __typename: "EduPrepCourseSearchHit",
37
- code: "6614ZD028Y",
38
- id: "oh:course:6614ZD028Y",
39
- name: {
40
- EN: "Financial Accounting",
41
- NL: "Financial Accounting"
42
- },
43
- programmeType: "DEGREE",
44
- programmeCode: "EMA_BA"
45
- },
46
- {
47
- __typename: "EduPrepCourseSearchHit",
48
- code: "6614ZH027Y",
49
- id: "oh:course:6614ZH027Y",
50
- name: {
51
- EN: "Financial Accounting",
52
- NL: "Financial Accounting"
7
+ EN: "Digital Business",
8
+ NL: "Digital Business"
53
9
  },
54
10
  programmeType: "DEGREE",
55
11
  programmeCode: "EMA_BA"
56
12
  },
57
13
  {
58
14
  __typename: "EduPrepCourseSearchHit",
59
- code: "6614ZI011Y",
60
- id: "oh:course:6614ZI011Y",
61
- name: {
62
- EN: "Management Accounting",
63
- NL: "Management Accounting"
64
- },
65
- programmeType: "DEGREE",
66
- programmeCode: "EMA_EMAS"
67
- },
68
- {
69
- __typename: "EduPrepCourseSearchHit",
70
- code: "6012B0806Y",
71
- id: "oh:course:6012B0806Y",
15
+ code: "6013B0522Y",
16
+ id: "oh:course:6013B0522Y",
72
17
  name: {
73
- EN: "Accounting and Control",
74
- NL: "Accounting and Control"
75
- },
76
- programmeType: "DEGREE",
77
- programmeCode: "EBA_ANALY"
78
- },
79
- {
80
- __typename: "EduPrepCourseSearchHit",
81
- code: "6013B0511Y",
82
- id: "oh:course:6013B0511Y",
83
- name: {
84
- EN: "Financial Accounting 2",
85
- NL: "Financial Accounting 2"
18
+ EN: "Business Analytics",
19
+ NL: "Business Analytics"
86
20
  },
87
21
  programmeType: "DEGREE",
88
22
  programmeCode: "EBA_BUSAD"
89
23
  },
90
24
  {
91
25
  __typename: "EduPrepCourseSearchHit",
92
- code: "133221146Y",
93
- id: "oh:course:133221146Y",
26
+ code: "6314M0573Y",
27
+ id: "oh:course:6314M0573Y",
94
28
  name: {
95
- EN: "Language Contact",
96
- NL: "Language Contact"
29
+ EN: "Business Seminar 1",
30
+ NL: "Business Seminar 1"
97
31
  },
98
32
  programmeType: "DEGREE",
99
- programmeCode: "HBA_SL"
33
+ programmeCode: "EMA_BAD"
100
34
  },
101
35
  {
102
36
  __typename: "EduPrepCourseSearchHit",
103
- code: "184410096Y",
104
- id: "oh:course:184410096Y",
37
+ code: "6314M0574Y",
38
+ id: "oh:course:6314M0574Y",
105
39
  name: {
106
- EN: "Language Assessment",
107
- NL: "Language Assessment"
40
+ EN: "Business Seminar 2",
41
+ NL: "Business Seminar 2"
108
42
  },
109
43
  programmeType: "DEGREE",
110
- programmeCode: "HMA_TW"
44
+ programmeCode: "EMA_BAD"
111
45
  },
112
46
  {
113
47
  __typename: "EduPrepCourseSearchHit",
114
- code: "6614ZD020Y",
115
- id: "oh:course:6614ZD020Y",
48
+ code: "6614ZB008Y",
49
+ id: "oh:course:6614ZB008Y",
116
50
  name: {
117
- EN: "Language Technology",
118
- NL: "Language Technology"
51
+ EN: "New Business Models",
52
+ NL: "New Business Models"
119
53
  },
120
54
  programmeType: "DEGREE",
121
- programmeCode: "EMA_BA"
55
+ programmeCode: "EMA_EPMS"
122
56
  },
123
57
  {
124
58
  __typename: "EduPrepCourseSearchHit",
125
- code: "17842A016Y",
126
- id: "oh:course:17842A016Y",
59
+ code: "5394QUIB3Y",
60
+ id: "oh:course:5394QUIB3Y",
127
61
  name: {
128
- EN: "Masterlanguage course",
129
- NL: "Masterlanguage course"
62
+ EN: "Quantum in Business",
63
+ NL: "Quantum in Business"
130
64
  },
131
65
  programmeType: "DEGREE",
132
- programmeCode: "HMA_LS"
66
+ programmeCode: "NMA_QCS"
133
67
  },
134
68
  {
135
- __typename: "EduPrepCourseSearchHit",
136
- code: "136213116Y",
137
- id: "oh:course:136213116Y",
69
+ __typename: "EduPrepProgrammeSearchHit",
70
+ code: "EBA_ANALY",
71
+ id: "oh:programme:EBA_ANALY",
138
72
  name: {
139
- EN: "Language and Cognition",
140
- NL: "Language and Cognition"
73
+ EN: "B Business Analytics",
74
+ NL: "B Business Analytics"
141
75
  },
142
- programmeType: "DEGREE",
143
- programmeCode: "HBA_FI"
76
+ programmeType: "DEGREE"
144
77
  },
145
78
  {
146
- __typename: "EduPrepCourseSearchHit",
147
- code: "133221166Y",
148
- id: "oh:course:133221166Y",
79
+ __typename: "EduPrepProgrammeSearchHit",
80
+ code: "EMA_BE",
81
+ id: "oh:programme:EMA_BE",
149
82
  name: {
150
- EN: "The World in Languages",
151
- NL: "The World in Languages"
83
+ EN: "M Business Economics",
84
+ NL: "M Business Economics"
152
85
  },
153
- programmeType: "DEGREE",
154
- programmeCode: "HBA_SL"
86
+ programmeType: "DEGREE"
155
87
  },
156
88
  {
157
89
  __typename: "EduPrepCourseSearchHit",
158
- code: "6013B0539Y",
159
- id: "oh:course:6013B0539Y",
90
+ code: "6314M0341Y",
91
+ id: "oh:course:6314M0341Y",
160
92
  name: {
161
- EN: "Dutch Language Skills 1a",
162
- NL: "Dutch Language Skills 1a"
93
+ EN: "Business Negotiations",
94
+ NL: "Business Negotiations"
163
95
  },
164
96
  programmeType: "DEGREE",
165
- programmeCode: "EBA_BUSAD"
97
+ programmeCode: "EMA_BAD"
166
98
  },
167
99
  {
168
100
  __typename: "EduPrepCourseSearchHit",
169
- code: "133219002Y",
170
- id: "oh:course:133219002Y",
101
+ code: "6614ZB043Y",
102
+ id: "oh:course:6614ZB043Y",
171
103
  name: {
172
- EN: "BA thesis Slavic Languages and Cultures",
173
- NL: "Bachelorscriptie Slavische talen en culturen"
104
+ EN: "Business Negotiations",
105
+ NL: "Business Negotiations"
174
106
  },
175
107
  programmeType: "DEGREE",
176
- programmeCode: "HBA_SL"
108
+ programmeCode: "EMA_EPMS"
177
109
  },
178
110
  {
179
111
  __typename: "EduPrepCourseSearchHit",
180
- code: "133219026Y",
181
- id: "oh:course:133219026Y",
112
+ code: "6614ZM051Y",
113
+ id: "oh:course:6614ZM051Y",
182
114
  name: {
183
- EN: "Slavic Research Lab",
184
- NL: "Slavisch onderzoekslab"
115
+ EN: "Business Negotiations",
116
+ NL: "Business Negotiations"
185
117
  },
186
118
  programmeType: "DEGREE",
187
- programmeCode: "HBA_SL"
188
- },
189
- {
190
- __typename: "EduPrepCourseSearchHit",
191
- code: "133221006Y",
192
- id: "oh:course:133221006Y",
193
- name: {
194
- EN: "Czech Language Acquisition 5",
195
- NL: "Taalvaardigheid Tsjechisch 5"
196
- },
197
- programmeType: "DEGREE",
198
- programmeCode: "HBA_SL"
199
- },
200
- {
201
- __typename: "EduPrepCourseSearchHit",
202
- code: "133221016Y",
203
- id: "oh:course:133221016Y",
204
- name: {
205
- EN: "Czech Language Acquisition 6",
206
- NL: "Taalvaardigheid Tsjechisch 6"
207
- },
208
- programmeType: "DEGREE",
209
- programmeCode: "HBA_SL"
210
- },
211
- {
212
- __typename: "EduPrepCourseSearchHit",
213
- code: "133221018Y",
214
- id: "oh:course:133221018Y",
215
- name: {
216
- EN: "Study Abroad Slavonic Languages and Cultures",
217
- NL: "Buitenlandverblijf Slavische talen en culturen"
218
- },
219
- programmeType: "DEGREE",
220
- programmeCode: "HBA_SL"
119
+ programmeCode: "EMA_BA"
221
120
  },
222
121
  {
223
122
  __typename: "EduPrepCourseSearchHit",
224
- code: "133221046Y",
225
- id: "oh:course:133221046Y",
123
+ code: "6614ZM044Y",
124
+ id: "oh:course:6614ZM044Y",
226
125
  name: {
227
- EN: "The World in Languages",
228
- NL: "De wereld in talen"
126
+ EN: "Scaling-up Businesses",
127
+ NL: "Scaling-up Businesses"
229
128
  },
230
129
  programmeType: "DEGREE",
231
- programmeCode: "HBA_SL"
130
+ programmeCode: "EMA_BA"
232
131
  }
233
132
  ];
234
133
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"mockData.js","sources":["../../../src/components/SearchField/mockData.ts"],"sourcesContent":["export const MOCK_DATA = [\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '6414M0208Y',\r\n id: 'oh:course:6414M0208Y',\r\n name: {\r\n EN: 'Tax Accounting',\r\n NL: 'Tax Accounting',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'EMA_FEC',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '3354TAXAVY',\r\n id: 'oh:course:3354TAXAVY',\r\n name: {\r\n EN: 'Tax Accounting I',\r\n NL: 'Tax Accounting I',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'RMA_FISREC',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '3354TAX2VY',\r\n id: 'oh:course:3354TAX2VY',\r\n name: {\r\n EN: 'Tax Accounting II',\r\n NL: 'Tax Accounting II',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'RMA_FISREC',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '6614ZD028Y',\r\n id: 'oh:course:6614ZD028Y',\r\n name: {\r\n EN: 'Financial Accounting',\r\n NL: 'Financial Accounting',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'EMA_BA',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '6614ZH027Y',\r\n id: 'oh:course:6614ZH027Y',\r\n name: {\r\n EN: 'Financial Accounting',\r\n NL: 'Financial Accounting',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'EMA_BA',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '6614ZI011Y',\r\n id: 'oh:course:6614ZI011Y',\r\n name: {\r\n EN: 'Management Accounting',\r\n NL: 'Management Accounting',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'EMA_EMAS',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '6012B0806Y',\r\n id: 'oh:course:6012B0806Y',\r\n name: {\r\n EN: 'Accounting and Control',\r\n NL: 'Accounting and Control',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'EBA_ANALY',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '6013B0511Y',\r\n id: 'oh:course:6013B0511Y',\r\n name: {\r\n EN: 'Financial Accounting 2',\r\n NL: 'Financial Accounting 2',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'EBA_BUSAD',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '133221146Y',\r\n id: 'oh:course:133221146Y',\r\n name: {\r\n EN: 'Language Contact',\r\n NL: 'Language Contact',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'HBA_SL',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '184410096Y',\r\n id: 'oh:course:184410096Y',\r\n name: {\r\n EN: 'Language Assessment',\r\n NL: 'Language Assessment',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'HMA_TW',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '6614ZD020Y',\r\n id: 'oh:course:6614ZD020Y',\r\n name: {\r\n EN: 'Language Technology',\r\n NL: 'Language Technology',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'EMA_BA',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '17842A016Y',\r\n id: 'oh:course:17842A016Y',\r\n name: {\r\n EN: 'Masterlanguage course',\r\n NL: 'Masterlanguage course',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'HMA_LS',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '136213116Y',\r\n id: 'oh:course:136213116Y',\r\n name: {\r\n EN: 'Language and Cognition',\r\n NL: 'Language and Cognition',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'HBA_FI',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '133221166Y',\r\n id: 'oh:course:133221166Y',\r\n name: {\r\n EN: 'The World in Languages',\r\n NL: 'The World in Languages',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'HBA_SL',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '6013B0539Y',\r\n id: 'oh:course:6013B0539Y',\r\n name: {\r\n EN: 'Dutch Language Skills 1a',\r\n NL: 'Dutch Language Skills 1a',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'EBA_BUSAD',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '133219002Y',\r\n id: 'oh:course:133219002Y',\r\n name: {\r\n EN: 'BA thesis Slavic Languages and Cultures',\r\n NL: 'Bachelorscriptie Slavische talen en culturen',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'HBA_SL',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '133219026Y',\r\n id: 'oh:course:133219026Y',\r\n name: {\r\n EN: 'Slavic Research Lab',\r\n NL: 'Slavisch onderzoekslab',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'HBA_SL',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '133221006Y',\r\n id: 'oh:course:133221006Y',\r\n name: {\r\n EN: 'Czech Language Acquisition 5',\r\n NL: 'Taalvaardigheid Tsjechisch 5',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'HBA_SL',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '133221016Y',\r\n id: 'oh:course:133221016Y',\r\n name: {\r\n EN: 'Czech Language Acquisition 6',\r\n NL: 'Taalvaardigheid Tsjechisch 6',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'HBA_SL',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '133221018Y',\r\n id: 'oh:course:133221018Y',\r\n name: {\r\n EN: 'Study Abroad Slavonic Languages and Cultures',\r\n NL: 'Buitenlandverblijf Slavische talen en culturen',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'HBA_SL',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '133221046Y',\r\n id: 'oh:course:133221046Y',\r\n name: {\r\n EN: 'The World in Languages',\r\n NL: 'De wereld in talen',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'HBA_SL',\r\n },\r\n];\r\n"],"names":["MOCK_DATA"],"mappings":"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"}
1
+ {"version":3,"file":"mockData.js","sources":["../../../src/components/SearchField/mockData.ts"],"sourcesContent":["export const MOCK_DATA = [\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '6614ZM038Y',\r\n id: 'oh:course:6614ZM038Y',\r\n name: {\r\n EN: 'Digital Business',\r\n NL: 'Digital Business',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'EMA_BA',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '6013B0522Y',\r\n id: 'oh:course:6013B0522Y',\r\n name: {\r\n EN: 'Business Analytics',\r\n NL: 'Business Analytics',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'EBA_BUSAD',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '6314M0573Y',\r\n id: 'oh:course:6314M0573Y',\r\n name: {\r\n EN: 'Business Seminar 1',\r\n NL: 'Business Seminar 1',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'EMA_BAD',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '6314M0574Y',\r\n id: 'oh:course:6314M0574Y',\r\n name: {\r\n EN: 'Business Seminar 2',\r\n NL: 'Business Seminar 2',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'EMA_BAD',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '6614ZB008Y',\r\n id: 'oh:course:6614ZB008Y',\r\n name: {\r\n EN: 'New Business Models',\r\n NL: 'New Business Models',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'EMA_EPMS',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '5394QUIB3Y',\r\n id: 'oh:course:5394QUIB3Y',\r\n name: {\r\n EN: 'Quantum in Business',\r\n NL: 'Quantum in Business',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'NMA_QCS',\r\n },\r\n {\r\n __typename: 'EduPrepProgrammeSearchHit',\r\n code: 'EBA_ANALY',\r\n id: 'oh:programme:EBA_ANALY',\r\n name: {\r\n EN: 'B Business Analytics',\r\n NL: 'B Business Analytics',\r\n },\r\n programmeType: 'DEGREE',\r\n },\r\n {\r\n __typename: 'EduPrepProgrammeSearchHit',\r\n code: 'EMA_BE',\r\n id: 'oh:programme:EMA_BE',\r\n name: {\r\n EN: 'M Business Economics',\r\n NL: 'M Business Economics',\r\n },\r\n programmeType: 'DEGREE',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '6314M0341Y',\r\n id: 'oh:course:6314M0341Y',\r\n name: {\r\n EN: 'Business Negotiations',\r\n NL: 'Business Negotiations',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'EMA_BAD',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '6614ZB043Y',\r\n id: 'oh:course:6614ZB043Y',\r\n name: {\r\n EN: 'Business Negotiations',\r\n NL: 'Business Negotiations',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'EMA_EPMS',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '6614ZM051Y',\r\n id: 'oh:course:6614ZM051Y',\r\n name: {\r\n EN: 'Business Negotiations',\r\n NL: 'Business Negotiations',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'EMA_BA',\r\n },\r\n {\r\n __typename: 'EduPrepCourseSearchHit',\r\n code: '6614ZM044Y',\r\n id: 'oh:course:6614ZM044Y',\r\n name: {\r\n EN: 'Scaling-up Businesses',\r\n NL: 'Scaling-up Businesses',\r\n },\r\n programmeType: 'DEGREE',\r\n programmeCode: 'EMA_BA',\r\n },\r\n];\r\n"],"names":["MOCK_DATA"],"mappings":"AAAO,MAAMA,IAAY;AAAA,EACvB;AAAA,IACE,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,IAEN,eAAe;AAAA,IACf,eAAe;AAAA,EAAA;AAAA,EAEjB;AAAA,IACE,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,IAEN,eAAe;AAAA,IACf,eAAe;AAAA,EAAA;AAAA,EAEjB;AAAA,IACE,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,IAEN,eAAe;AAAA,IACf,eAAe;AAAA,EAAA;AAAA,EAEjB;AAAA,IACE,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,IAEN,eAAe;AAAA,IACf,eAAe;AAAA,EAAA;AAAA,EAEjB;AAAA,IACE,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,IAEN,eAAe;AAAA,IACf,eAAe;AAAA,EAAA;AAAA,EAEjB;AAAA,IACE,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,IAEN,eAAe;AAAA,IACf,eAAe;AAAA,EAAA;AAAA,EAEjB;AAAA,IACE,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,IAEN,eAAe;AAAA,EAAA;AAAA,EAEjB;AAAA,IACE,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,IAEN,eAAe;AAAA,EAAA;AAAA,EAEjB;AAAA,IACE,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,IAEN,eAAe;AAAA,IACf,eAAe;AAAA,EAAA;AAAA,EAEjB;AAAA,IACE,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,IAEN,eAAe;AAAA,IACf,eAAe;AAAA,EAAA;AAAA,EAEjB;AAAA,IACE,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,IAEN,eAAe;AAAA,IACf,eAAe;AAAA,EAAA;AAAA,EAEjB;AAAA,IACE,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,IAEN,eAAe;AAAA,IACf,eAAe;AAAA,EAAA;AAEnB;"}
@@ -1,54 +1,73 @@
1
- import { jsxs as P, jsx as c } from "react/jsx-runtime";
2
- import { useState as l, useRef as f, useMemo as S, useLayoutEffect as y } from "react";
3
- import { WeekSelectorButton as E } from "./components/WeekSelectorButton.js";
4
- import { WeekSelectorOptionContainer as N } from "./components/WeekSelectorOptionContainer.js";
5
- import { WeekSelectorOption as T } from "./components/WeekSelectorOption.js";
6
- import { s as W } from "../../WeekSelector.module-BA7qqZsx.js";
7
- import { useOnClickOutside as j } from "../hooks/useOnClickOutside.js";
8
- const V = ({
9
- weeks: o,
10
- currentPeriod: d = 0,
11
- defaultSelection: p,
12
- weekPrefix: h,
13
- optionsHeader: b,
14
- periodLabels: O,
15
- onSelectWeek: g
1
+ import { jsxs as L, jsx as a } from "react/jsx-runtime";
2
+ import { useState as f, useRef as h, useMemo as w, useEffect as y, useLayoutEffect as S } from "react";
3
+ import { WeekSelectorButton as T } from "./components/WeekSelectorButton.js";
4
+ import { WeekSelectorOptionContainer as j } from "./components/WeekSelectorOptionContainer.js";
5
+ import { WeekSelectorOption as z } from "./components/WeekSelectorOption.js";
6
+ import { s as P } from "../../WeekSelector.module-CTDcqKel.js";
7
+ import { useOnClickOutside as x } from "../hooks/useOnClickOutside.js";
8
+ const K = ({
9
+ weeks: n,
10
+ currentPeriod: s = 0,
11
+ defaultSelection: r,
12
+ weekPrefix: O,
13
+ optionsHeader: g,
14
+ periodLabels: C,
15
+ onSelectWeek: k
16
16
  }) => {
17
- const [u, C] = l(p ?? null), [t, i] = l(!1), n = f(null), r = f(null), [w, k] = l(void 0), R = S(() => Object.keys(o ?? {}), [o]), v = () => `${h} ${u ?? p ?? "?"}`, a = () => {
18
- if (!n.current || !r.current)
17
+ const [m, c] = f(null), [o, l] = f(!1), i = h(null), p = h(null), [N, R] = f(void 0), v = w(() => Object.keys(n ?? {}), [n]), B = () => {
18
+ if (r) {
19
+ for (const e in n)
20
+ if (n[e].some((t) => t.calendarWeekNumber === r && !t.isBlocked) && Number(e) > s) {
21
+ c(r);
22
+ return;
23
+ }
24
+ }
25
+ for (const e in n) {
26
+ const t = n[e].find((u) => !u.isBlocked);
27
+ if (t && Number(e) > s) {
28
+ c(t.calendarWeekNumber);
29
+ return;
30
+ }
31
+ }
32
+ };
33
+ y(() => {
34
+ B();
35
+ }, []);
36
+ const W = () => `${O} ${m ?? r ?? "?"}`, d = () => {
37
+ if (!i.current || !p.current)
19
38
  return;
20
- const e = n.current.getBoundingClientRect(), s = r.current.getBoundingClientRect(), B = window.innerHeight - e.bottom, L = e.top;
21
- let m = e.height;
22
- B < s.height && L > s.height && (m = -s.height), k(m);
39
+ const e = i.current.getBoundingClientRect(), t = p.current.getBoundingClientRect(), u = window.innerHeight - e.bottom, E = e.top;
40
+ let b = e.height;
41
+ u < t.height && E > t.height && (b = -t.height), R(b);
23
42
  };
24
- return y(() => {
25
- a();
43
+ return S(() => {
44
+ d();
26
45
  const e = () => {
27
- t && a();
46
+ o && d();
28
47
  };
29
- return window.addEventListener("resize", e), !t && n.current?.children[0] instanceof HTMLElement && n.current.children[0].focus(), () => {
48
+ return window.addEventListener("resize", e), !o && i.current?.children[0] instanceof HTMLElement && i.current.children[0].focus(), () => {
30
49
  window.removeEventListener("resize", e);
31
50
  };
32
- }, [t]), j(n, i.bind(null, !1)), /* @__PURE__ */ P("div", { className: W["week-selector"], tabIndex: -1, ref: n, children: [
33
- /* @__PURE__ */ c(E, { label: v(), onClick: () => i(!t) }),
34
- t && /* @__PURE__ */ c(
35
- N,
51
+ }, [o]), x(i, l.bind(null, !1)), /* @__PURE__ */ L("div", { className: P["week-selector"], tabIndex: -1, ref: i, children: [
52
+ /* @__PURE__ */ a(T, { label: W(), onClick: () => l(!o) }),
53
+ o && /* @__PURE__ */ a(
54
+ j,
36
55
  {
37
- header: b,
38
- periodLabels: O,
39
- isVisible: t,
40
- topPosition: w,
41
- ref: r,
42
- children: R.map((e) => /* @__PURE__ */ c(
43
- T,
56
+ header: g,
57
+ periodLabels: C,
58
+ isVisible: o,
59
+ topPosition: N,
60
+ ref: p,
61
+ children: v.map((e) => /* @__PURE__ */ a(
62
+ z,
44
63
  {
45
64
  periodIndex: e,
46
- weeks: o,
47
- disabled: Number(e) <= d,
48
- selectedOption: u,
49
- setSelectedOption: C,
50
- onSelectWeek: g,
51
- setIsOpen: i
65
+ weeks: n,
66
+ disabled: Number(e) <= s,
67
+ selectedOption: m,
68
+ setSelectedOption: c,
69
+ onSelectWeek: k,
70
+ setIsOpen: l
52
71
  },
53
72
  e
54
73
  ))
@@ -57,6 +76,6 @@ const V = ({
57
76
  ] });
58
77
  };
59
78
  export {
60
- V as WeekSelector
79
+ K as WeekSelector
61
80
  };
62
81
  //# sourceMappingURL=WeekSelector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WeekSelector.js","sources":["../../../src/components/WeekSelector/WeekSelector.tsx"],"sourcesContent":["import { useLayoutEffect, useMemo, useRef, useState } from 'react';\r\n\r\nimport type { RefObject } from 'react';\r\n\r\nimport { WeekSelectorButton } from './components/WeekSelectorButton';\r\nimport { WeekSelectorOptionContainer } from './components/WeekSelectorOptionContainer';\r\nimport { WeekSelectorOption } from './components/WeekSelectorOption';\r\n\r\nimport styles from 'components/WeekSelector/WeekSelector.module.css';\r\nimport { useOnClickOutside } from 'components/hooks/useOnClickOutside';\r\n\r\nexport type PeriodWeek = {\r\n academicWeekNumber: number;\r\n calendarWeekNumber: number;\r\n isBlocked: boolean;\r\n period: number;\r\n startDate: string;\r\n endDate: string;\r\n weekNumber: number;\r\n};\r\n\r\nexport interface WeekSelectorProps {\r\n /** Object with periodnumbers with array of weeks in period */\r\n weeks: Record<string, PeriodWeek[]>;\r\n /** Current period to disable previous periods */\r\n currentPeriod?: number;\r\n /** Default selected week */\r\n defaultSelection?: number;\r\n /** Prefix for the week button label */\r\n weekPrefix: string;\r\n /** Labels for each period */\r\n periodLabels: string[];\r\n /** Header text for the options container */\r\n optionsHeader: string;\r\n /** Callback function when a week is selected */\r\n onSelectWeek: (weeknumber: number) => void;\r\n}\r\n\r\nexport const WeekSelector = ({\r\n weeks,\r\n currentPeriod = 0,\r\n defaultSelection,\r\n weekPrefix,\r\n optionsHeader,\r\n periodLabels,\r\n onSelectWeek,\r\n}: WeekSelectorProps) => {\r\n const [selectedOption, setSelectedOption] = useState<number | null>(defaultSelection ?? null);\r\n const [isOpen, setIsOpen] = useState<boolean>(false);\r\n const wrapperRef = useRef<HTMLDivElement>(null);\r\n const optionContainerRef = useRef<HTMLDivElement>(null);\r\n const [optionContainerOpenTopPosition, setOptionContainerOpenTopPosition] = useState<number | undefined>(undefined);\r\n\r\n const periodKeys = useMemo(() => Object.keys(weeks ?? {}), [weeks]);\r\n\r\n const getButtonLabel = () => {\r\n const weekNumber = selectedOption ?? defaultSelection ?? '?';\r\n return `${weekPrefix} ${weekNumber}`;\r\n };\r\n\r\n const getTopPositionOptionContainer = () => {\r\n if (!wrapperRef.current || !optionContainerRef.current) {\r\n return;\r\n }\r\n const buttonRect = wrapperRef.current.getBoundingClientRect();\r\n const optionContainerRect = optionContainerRef.current.getBoundingClientRect();\r\n const spaceBelow = window.innerHeight - buttonRect.bottom;\r\n const spaceAbove = buttonRect.top;\r\n let topPosition = buttonRect.height;\r\n\r\n if (spaceBelow < optionContainerRect.height && spaceAbove > optionContainerRect.height) {\r\n topPosition = -optionContainerRect.height;\r\n }\r\n\r\n setOptionContainerOpenTopPosition(topPosition);\r\n };\r\n\r\n useLayoutEffect(() => {\r\n getTopPositionOptionContainer();\r\n\r\n const handleResize = () => {\r\n if (isOpen) {\r\n getTopPositionOptionContainer();\r\n }\r\n };\r\n\r\n window.addEventListener('resize', handleResize);\r\n\r\n if (!isOpen && wrapperRef.current?.children[0] instanceof HTMLElement) {\r\n wrapperRef.current.children[0].focus();\r\n }\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, [isOpen]);\r\n\r\n useOnClickOutside(wrapperRef as RefObject<HTMLElement>, setIsOpen.bind(null, false));\r\n\r\n return (\r\n <div className={styles['week-selector']} tabIndex={-1} ref={wrapperRef}>\r\n <WeekSelectorButton label={getButtonLabel()} onClick={() => setIsOpen(!isOpen)} />\r\n\r\n {isOpen && (\r\n <WeekSelectorOptionContainer\r\n header={optionsHeader}\r\n periodLabels={periodLabels}\r\n isVisible={isOpen}\r\n topPosition={optionContainerOpenTopPosition}\r\n ref={optionContainerRef}\r\n >\r\n {periodKeys.map((periodIndex) => (\r\n <WeekSelectorOption\r\n key={periodIndex}\r\n periodIndex={periodIndex}\r\n weeks={weeks}\r\n disabled={Number(periodIndex) <= currentPeriod}\r\n selectedOption={selectedOption}\r\n setSelectedOption={setSelectedOption}\r\n onSelectWeek={onSelectWeek}\r\n setIsOpen={setIsOpen}\r\n />\r\n ))}\r\n </WeekSelectorOptionContainer>\r\n )}\r\n </div>\r\n );\r\n};\r\n"],"names":["WeekSelector","weeks","currentPeriod","defaultSelection","weekPrefix","optionsHeader","periodLabels","onSelectWeek","selectedOption","setSelectedOption","useState","isOpen","setIsOpen","wrapperRef","useRef","optionContainerRef","optionContainerOpenTopPosition","setOptionContainerOpenTopPosition","periodKeys","useMemo","getButtonLabel","getTopPositionOptionContainer","buttonRect","optionContainerRect","spaceBelow","spaceAbove","topPosition","useLayoutEffect","handleResize","useOnClickOutside","jsxs","styles","jsx","WeekSelectorButton","WeekSelectorOptionContainer","periodIndex","WeekSelectorOption"],"mappings":";;;;;;;AAsCO,MAAMA,IAAe,CAAC;AAAA,EAC3B,OAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,kBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AACF,MAAyB;AACvB,QAAM,CAACC,GAAgBC,CAAiB,IAAIC,EAAwBP,KAAoB,IAAI,GACtF,CAACQ,GAAQC,CAAS,IAAIF,EAAkB,EAAK,GAC7CG,IAAaC,EAAuB,IAAI,GACxCC,IAAqBD,EAAuB,IAAI,GAChD,CAACE,GAAgCC,CAAiC,IAAIP,EAA6B,MAAS,GAE5GQ,IAAaC,EAAQ,MAAM,OAAO,KAAKlB,KAAS,CAAA,CAAE,GAAG,CAACA,CAAK,CAAC,GAE5DmB,IAAiB,MAEd,GAAGhB,CAAU,IADDI,KAAkBL,KAAoB,GACvB,IAG9BkB,IAAgC,MAAM;AAC1C,QAAI,CAACR,EAAW,WAAW,CAACE,EAAmB;AAC7C;AAEF,UAAMO,IAAaT,EAAW,QAAQ,sBAAA,GAChCU,IAAsBR,EAAmB,QAAQ,sBAAA,GACjDS,IAAa,OAAO,cAAcF,EAAW,QAC7CG,IAAaH,EAAW;AAC9B,QAAII,IAAcJ,EAAW;AAE7B,IAAIE,IAAaD,EAAoB,UAAUE,IAAaF,EAAoB,WAC9EG,IAAc,CAACH,EAAoB,SAGrCN,EAAkCS,CAAW;AAAA,EAC/C;AAEA,SAAAC,EAAgB,MAAM;AACpB,IAAAN,EAAA;AAEA,UAAMO,IAAe,MAAM;AACzB,MAAIjB,KACFU,EAAA;AAAA,IAEJ;AAEA,kBAAO,iBAAiB,UAAUO,CAAY,GAE1C,CAACjB,KAAUE,EAAW,SAAS,SAAS,CAAC,aAAa,eACxDA,EAAW,QAAQ,SAAS,CAAC,EAAE,MAAA,GAE1B,MAAM;AACX,aAAO,oBAAoB,UAAUe,CAAY;AAAA,IACnD;AAAA,EACF,GAAG,CAACjB,CAAM,CAAC,GAEXkB,EAAkBhB,GAAsCD,EAAU,KAAK,MAAM,EAAK,CAAC,GAGjF,gBAAAkB,EAAC,SAAI,WAAWC,EAAO,eAAe,GAAG,UAAU,IAAI,KAAKlB,GAC1D,UAAA;AAAA,IAAA,gBAAAmB,EAACC,GAAA,EAAmB,OAAOb,EAAA,GAAkB,SAAS,MAAMR,EAAU,CAACD,CAAM,GAAG;AAAA,IAE/EA,KACC,gBAAAqB;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,QAAQ7B;AAAA,QACR,cAAAC;AAAA,QACA,WAAWK;AAAA,QACX,aAAaK;AAAA,QACb,KAAKD;AAAA,QAEJ,UAAAG,EAAW,IAAI,CAACiB,MACf,gBAAAH;AAAA,UAACI;AAAA,UAAA;AAAA,YAEC,aAAAD;AAAA,YACA,OAAAlC;AAAA,YACA,UAAU,OAAOkC,CAAW,KAAKjC;AAAA,YACjC,gBAAAM;AAAA,YACA,mBAAAC;AAAA,YACA,cAAAF;AAAA,YACA,WAAAK;AAAA,UAAA;AAAA,UAPKuB;AAAA,QAAA,CASR;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GAEJ;AAEJ;"}
1
+ {"version":3,"file":"WeekSelector.js","sources":["../../../src/components/WeekSelector/WeekSelector.tsx"],"sourcesContent":["import { useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\r\n\r\nimport type { RefObject } from 'react';\r\n\r\nimport { WeekSelectorButton } from './components/WeekSelectorButton';\r\nimport { WeekSelectorOptionContainer } from './components/WeekSelectorOptionContainer';\r\nimport { WeekSelectorOption } from './components/WeekSelectorOption';\r\n\r\nimport styles from 'components/WeekSelector/WeekSelector.module.css';\r\nimport { useOnClickOutside } from 'components/hooks/useOnClickOutside';\r\n\r\nexport type PeriodWeek = {\r\n academicWeekNumber: number;\r\n calendarWeekNumber: number;\r\n isBlocked: boolean;\r\n period: number;\r\n startDate: string;\r\n endDate: string;\r\n weekNumber: number;\r\n};\r\n\r\nexport interface WeekSelectorProps {\r\n /** Object with periodnumbers with array of weeks in period */\r\n weeks: Record<string, PeriodWeek[]>;\r\n /** Current period to disable previous periods */\r\n currentPeriod?: number;\r\n /** Default selected week */\r\n defaultSelection?: number;\r\n /** Prefix for the week button label */\r\n weekPrefix: string;\r\n /** Labels for each period */\r\n periodLabels: string[];\r\n /** Header text for the options container */\r\n optionsHeader: string;\r\n /** Callback function when a week is selected */\r\n onSelectWeek: (weeknumber: number) => void;\r\n}\r\n\r\nexport const WeekSelector = ({\r\n weeks,\r\n currentPeriod = 0,\r\n defaultSelection,\r\n weekPrefix,\r\n optionsHeader,\r\n periodLabels,\r\n onSelectWeek,\r\n}: WeekSelectorProps) => {\r\n const [selectedOption, setSelectedOption] = useState<number | null>(null);\r\n const [isOpen, setIsOpen] = useState<boolean>(false);\r\n const wrapperRef = useRef<HTMLDivElement>(null);\r\n const optionContainerRef = useRef<HTMLDivElement>(null);\r\n const [optionContainerOpenTopPosition, setOptionContainerOpenTopPosition] = useState<number | undefined>(undefined);\r\n\r\n const periodKeys = useMemo(() => Object.keys(weeks ?? {}), [weeks]);\r\n\r\n const checkIfDefaultSelectionIsValid = () => {\r\n if (defaultSelection) {\r\n for (const period in weeks) {\r\n if (\r\n weeks[period].some((week) => week.calendarWeekNumber === defaultSelection && !week.isBlocked) &&\r\n Number(period) > currentPeriod\r\n ) {\r\n setSelectedOption(defaultSelection);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n for (const period in weeks) {\r\n const firstAvailableWeek = weeks[period].find((week) => !week.isBlocked);\r\n if (firstAvailableWeek && Number(period) > currentPeriod) {\r\n setSelectedOption(firstAvailableWeek.calendarWeekNumber);\r\n return;\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n checkIfDefaultSelectionIsValid();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const getButtonLabel = () => {\r\n const weekNumber = selectedOption ?? defaultSelection ?? '?';\r\n return `${weekPrefix} ${weekNumber}`;\r\n };\r\n\r\n const getTopPositionOptionContainer = () => {\r\n if (!wrapperRef.current || !optionContainerRef.current) {\r\n return;\r\n }\r\n const buttonRect = wrapperRef.current.getBoundingClientRect();\r\n const optionContainerRect = optionContainerRef.current.getBoundingClientRect();\r\n const spaceBelow = window.innerHeight - buttonRect.bottom;\r\n const spaceAbove = buttonRect.top;\r\n let topPosition = buttonRect.height;\r\n\r\n if (spaceBelow < optionContainerRect.height && spaceAbove > optionContainerRect.height) {\r\n topPosition = -optionContainerRect.height;\r\n }\r\n\r\n setOptionContainerOpenTopPosition(topPosition);\r\n };\r\n\r\n useLayoutEffect(() => {\r\n getTopPositionOptionContainer();\r\n\r\n const handleResize = () => {\r\n if (isOpen) {\r\n getTopPositionOptionContainer();\r\n }\r\n };\r\n\r\n window.addEventListener('resize', handleResize);\r\n\r\n if (!isOpen && wrapperRef.current?.children[0] instanceof HTMLElement) {\r\n wrapperRef.current.children[0].focus();\r\n }\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, [isOpen]);\r\n\r\n useOnClickOutside(wrapperRef as RefObject<HTMLElement>, setIsOpen.bind(null, false));\r\n\r\n return (\r\n <div className={styles['week-selector']} tabIndex={-1} ref={wrapperRef}>\r\n <WeekSelectorButton label={getButtonLabel()} onClick={() => setIsOpen(!isOpen)} />\r\n\r\n {isOpen && (\r\n <WeekSelectorOptionContainer\r\n header={optionsHeader}\r\n periodLabels={periodLabels}\r\n isVisible={isOpen}\r\n topPosition={optionContainerOpenTopPosition}\r\n ref={optionContainerRef}\r\n >\r\n {periodKeys.map((periodIndex) => (\r\n <WeekSelectorOption\r\n key={periodIndex}\r\n periodIndex={periodIndex}\r\n weeks={weeks}\r\n disabled={Number(periodIndex) <= currentPeriod}\r\n selectedOption={selectedOption}\r\n setSelectedOption={setSelectedOption}\r\n onSelectWeek={onSelectWeek}\r\n setIsOpen={setIsOpen}\r\n />\r\n ))}\r\n </WeekSelectorOptionContainer>\r\n )}\r\n </div>\r\n );\r\n};\r\n"],"names":["WeekSelector","weeks","currentPeriod","defaultSelection","weekPrefix","optionsHeader","periodLabels","onSelectWeek","selectedOption","setSelectedOption","useState","isOpen","setIsOpen","wrapperRef","useRef","optionContainerRef","optionContainerOpenTopPosition","setOptionContainerOpenTopPosition","periodKeys","useMemo","checkIfDefaultSelectionIsValid","period","week","firstAvailableWeek","useEffect","getButtonLabel","getTopPositionOptionContainer","buttonRect","optionContainerRect","spaceBelow","spaceAbove","topPosition","useLayoutEffect","handleResize","useOnClickOutside","jsxs","styles","jsx","WeekSelectorButton","WeekSelectorOptionContainer","periodIndex","WeekSelectorOption"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { jsxs as n, jsx as r } from "react/jsx-runtime";
1
+ import { jsxs as r, jsx as t } from "react/jsx-runtime";
2
2
  import { mockWeeks as i } from "./mockdata.js";
3
3
  import { WeekSelector as e } from "./WeekSelector.js";
4
4
  const c = `<WeekSelector
@@ -9,7 +9,7 @@ const c = `<WeekSelector
9
9
  periodLabels={string[]};
10
10
  optionsHeader={string};
11
11
  onSelectWeek={(weeknumber: {number}) => void};
12
- />`, m = {
12
+ />`, S = {
13
13
  title: "Molecules/WeekSelector",
14
14
  component: e,
15
15
  argTypes: {
@@ -26,11 +26,11 @@ const c = `<WeekSelector
26
26
  inspectComponent: e,
27
27
  codeString: c
28
28
  }
29
- }, d = (t) => {
30
- const o = (l) => {
31
- t.onSelectWeek(l);
29
+ }, d = (o) => {
30
+ const n = (l) => {
31
+ o.onSelectWeek(l);
32
32
  };
33
- return /* @__PURE__ */ n(
33
+ return /* @__PURE__ */ r(
34
34
  "div",
35
35
  {
36
36
  style: {
@@ -42,27 +42,80 @@ const c = `<WeekSelector
42
42
  flexDirection: "column"
43
43
  },
44
44
  children: [
45
- /* @__PURE__ */ r(e, { ...t, currentPeriod: 1, onSelectWeek: o }),
46
- /* @__PURE__ */ r(e, { ...t, defaultSelection: 45, currentPeriod: 2, onSelectWeek: o }),
47
- /* @__PURE__ */ r(e, { ...t, defaultSelection: 6, currentPeriod: 3, onSelectWeek: o }),
48
- /* @__PURE__ */ r(e, { ...t, defaultSelection: 13, currentPeriod: 4, onSelectWeek: o }),
49
- /* @__PURE__ */ r(e, { ...t, defaultSelection: 23, currentPeriod: 5, onSelectWeek: o }),
50
- /* @__PURE__ */ r(e, { ...t, defaultSelection: 28, currentPeriod: 6, onSelectWeek: o }),
51
- /* @__PURE__ */ r(e, { ...t, defaultSelection: 36, onSelectWeek: o })
45
+ /* @__PURE__ */ t(e, { ...o, currentPeriod: 1, onSelectWeek: n }),
46
+ /* @__PURE__ */ t(
47
+ e,
48
+ {
49
+ ...o,
50
+ defaultSelection: 45,
51
+ currentPeriod: 2,
52
+ onSelectWeek: n,
53
+ optionsHeader: "Kies een planning - Blok 2"
54
+ }
55
+ ),
56
+ /* @__PURE__ */ t(
57
+ e,
58
+ {
59
+ ...o,
60
+ defaultSelection: 6,
61
+ currentPeriod: 3,
62
+ onSelectWeek: n,
63
+ optionsHeader: "Kies een planning - Blok 3"
64
+ }
65
+ ),
66
+ /* @__PURE__ */ t(
67
+ e,
68
+ {
69
+ ...o,
70
+ defaultSelection: 13,
71
+ currentPeriod: 4,
72
+ onSelectWeek: n,
73
+ optionsHeader: "Kies een planning - Blok 4"
74
+ }
75
+ ),
76
+ /* @__PURE__ */ t(
77
+ e,
78
+ {
79
+ ...o,
80
+ defaultSelection: 23,
81
+ currentPeriod: 5,
82
+ onSelectWeek: n,
83
+ optionsHeader: "Kies een planning - Blok 5"
84
+ }
85
+ ),
86
+ /* @__PURE__ */ t(
87
+ e,
88
+ {
89
+ ...o,
90
+ defaultSelection: 28,
91
+ currentPeriod: 6,
92
+ onSelectWeek: n,
93
+ optionsHeader: "Kies een planning - Blok 6"
94
+ }
95
+ ),
96
+ /* @__PURE__ */ t(
97
+ e,
98
+ {
99
+ ...o,
100
+ defaultSelection: 36,
101
+ onSelectWeek: n,
102
+ optionsHeader: "Kies een planning - Zomer"
103
+ }
104
+ )
52
105
  ]
53
106
  }
54
107
  );
55
- }, k = {
108
+ }, s = {
56
109
  weeks: i,
57
110
  weekPrefix: "week",
58
111
  periodLabels: ["Blok 1", "Blok 2", "Blok 3", "Blok 4", "Blok 5", "Blok 6", "Zomer"],
59
- optionsHeader: "Kies een planning - Block 1"
60
- }, s = d.bind({});
61
- s.args = {
62
- ...k
112
+ optionsHeader: "Kies een planning - Blok 1"
113
+ }, a = d.bind({});
114
+ a.args = {
115
+ ...s
63
116
  };
64
117
  export {
65
- s as WeekSelectorExample,
66
- m as default
118
+ a as WeekSelectorExample,
119
+ S as default
67
120
  };
68
121
  //# sourceMappingURL=WeekSelector.stories.js.map