@aarhus-university/au-lib-react-components 9.11.18 → 10.0.1
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.
- package/.eslintrc.js +44 -0
- package/README.md +19 -20
- package/babel.config.js +7 -6
- package/build/umd/all.css +1 -1
- package/build/umd/all.css.map +1 -1
- package/build/umd/all.js +1 -1
- package/build/umd/all.js.map +1 -1
- package/build/umd/alphabox.js +1 -1
- package/build/umd/alphabox.js.map +1 -1
- package/build/umd/databox.js +1 -2
- package/build/umd/databox.js.map +1 -1
- package/build/umd/diagramme.js +1 -1
- package/build/umd/diagramme.js.map +1 -1
- package/build/umd/flowbox.js +1 -1
- package/build/umd/flowbox.js.map +1 -1
- package/build/umd/universe.js +1 -1
- package/build/umd/universe.js.map +1 -1
- package/package.json +66 -60
- package/src/components/{delphinus/AUAlertComponent.js → AUAlertComponent.tsx} +70 -85
- package/src/components/{AutoSuggestComponent.js → AUAutoSuggestComponent.js} +45 -19
- package/src/components/AUCalendarComponent.tsx +493 -0
- package/src/components/AUContentToggleComponent.tsx +33 -0
- package/src/components/AUDatepickerComponent.tsx +117 -0
- package/src/components/AUMobilePrefixComponent.tsx +15 -0
- package/src/components/{delphinus/AUModalComponent.js → AUModalComponent.tsx} +80 -94
- package/src/components/{form/AUReceiptComponent.js → AUReceiptComponent.tsx} +33 -40
- package/src/components/AUSpinnerComponent.tsx +67 -0
- package/src/components/{delphinus/AUSubNavComponent.js → AUSubNavComponent.tsx} +38 -53
- package/src/components/{form/AUSubmitButtonContainerComponent.js → AUSubmitButtonContainerComponent.tsx} +31 -39
- package/src/components/{delphinus/AUTabbedContentComponent.js → AUTabbedContentComponent.tsx} +145 -150
- package/src/components/{delphinus/AUTableComponent.js → AUTableComponent.tsx} +24 -28
- package/src/components/{delphinus/AUToastComponent.js → AUToastComponent.tsx} +104 -91
- package/src/components/{delphinus/AUToolbarComponent.js → AUToolbarComponent.tsx} +45 -48
- package/src/components/profile/AUProfileActions.js +128 -128
- package/src/components/profile/AUProfileAvatarComponent.js +83 -83
- package/src/components/profile/AUProfileAvatarV2Component.js +91 -91
- package/src/components/profile/AUProfileAvatarV3Component.tsx +42 -0
- package/src/components/profile/AUProfileContainerComponent.js +283 -283
- package/src/components/profile/AUProfileHooks.js +30 -30
- package/src/components/profile/AUProfileItemComponent.js +54 -54
- package/src/components/profile/AUProfileLanguageComponent.js +131 -131
- package/src/components/profile/{AUProfileLoginComponent.js → AUProfileLoginComponent.tsx} +3 -18
- package/src/components/profile/AUProfileMailComponent.js +307 -307
- package/src/components/profile/AUProfileMobileComponent.js +164 -164
- package/src/components/profile/AUProfileNameComponent.js +253 -253
- package/src/components/profile/AUProfileNextOfKinComponent.js +216 -216
- package/src/components/profile/AUProfileReducer.js +230 -230
- package/src/components/profile/AUProfileWidgetComponent.js +95 -95
- package/src/components/profile/AUProfileWidgetV2Component.js +116 -116
- package/src/components/profile/{AUProfileWidgetV3Component.js → AUProfileWidgetV3Component.tsx} +122 -130
- package/src/components/wrapping/AUEmbedComponent.js +47 -47
- package/src/{components → layout-2016/components}/alphabox/AlphaBoxComponent.js +28 -25
- package/src/{components → layout-2016/components}/alphabox/AlphaBoxContentComponent.js +25 -14
- package/src/{components → layout-2016/components/common}/AUCollapsibleComponent.js +1 -22
- package/src/{components → layout-2016/components/common}/AUSpinnerComponent.js +2 -24
- package/src/{components → layout-2016/components}/databox/DataBoxAlphabetComponent.js +1 -1
- package/src/{components → layout-2016/components}/databox/DataBoxAssociationComponent.js +2 -2
- package/src/{components → layout-2016/components}/databox/DataBoxButtonComponent.js +7 -3
- package/src/{components → layout-2016/components}/databox/DataBoxComponent.js +2 -2
- package/src/{components → layout-2016/components}/databox/DataBoxGroupingComponent.js +2 -0
- package/src/{components → layout-2016/components}/databox/DataBoxSearchResultComponent.js +1 -5
- package/src/{components → layout-2016/components}/databox/DataBoxStackedAssociationComponent.js +1 -5
- package/src/{components → layout-2016/components}/databox/DataBoxSuggestionComponent.js +0 -0
- package/src/{components → layout-2016/components/diagramme}/AUDiagrammeComponent.js +5 -6
- package/src/{components → layout-2016/components}/flowbox/FlowBoxComponent.js +8 -8
- package/src/{components → layout-2016/components}/flowbox/FlowBoxPhoneComponent.js +3 -5
- package/src/{components → layout-2016/components}/profile/AUProfileAvatar2016Component.js +6 -2
- package/src/{components → layout-2016/components}/universe/StaffTopComponent.js +4 -3
- package/src/{components → layout-2016/components}/universe/StudentTopComponent.js +0 -0
- package/src/{components → layout-2016/components}/universe/UniverseContainerComponent.js +11 -8
- package/src/layout-2016/lib/all.js +3 -0
- package/src/{lib → layout-2016/lib}/au-alphabox.js +1 -3
- package/src/{lib → layout-2016/lib}/au-databox.js +6 -9
- package/src/{lib → layout-2016/lib}/au-diagramme.js +2 -4
- package/src/{lib → layout-2016/lib}/au-flowbox.js +1 -3
- package/src/{lib → layout-2016/lib}/universe.js +0 -0
- package/src/lib/{helpers.js → helpers.ts} +33 -58
- package/src/{components/delphinus/hooks.js → lib/hooks.ts} +33 -28
- package/src/lib/{i18n.js → i18n.ts} +600 -601
- package/src/lib/{tracking.js → tracking.ts} +69 -65
- package/src/lib/{wrapping.js → wrapping.ts} +21 -16
- package/src/styles/_settings.scss +10 -10
- package/src/styles/alphabox.scss +222 -208
- package/src/styles/app.scss +7 -13
- package/src/styles/autosuggest.scss +57 -57
- package/src/styles/databox.scss +563 -563
- package/src/styles/diagramme.scss +119 -119
- package/src/styles/flowbox.scss +72 -72
- package/src/styles/maps.scss +395 -395
- package/tsconfig.json +47 -0
- package/types/common/interfaces/gui.d.ts +52 -0
- package/types/common/interfaces/model.d.ts +29 -0
- package/types/common/main.d.ts +5 -0
- package/types/common/package.json +5 -0
- package/types/common/payloads.d.ts +0 -0
- package/types/common/props.d.ts +165 -0
- package/{src/config/webpack.umd.config.js → webpack.config.js} +20 -16
- package/.eslintrc +0 -19
- package/build/dev.html +0 -329
- package/build/umd/auAuth.js +0 -2
- package/build/umd/auAuth.js.map +0 -1
- package/build/umd/databox.js.LICENSE.txt +0 -5
- package/build/umd/news.js +0 -2
- package/build/umd/news.js.map +0 -1
- package/src/all.js +0 -3
- package/src/app.js +0 -263
- package/src/components/AUAlertComponent.js +0 -158
- package/src/components/AUAmountComponent.js +0 -84
- package/src/components/AUBannerComponent.js +0 -99
- package/src/components/AUCalendarComponent.js +0 -393
- package/src/components/AUDatepickerComponent.js +0 -105
- package/src/components/AUFilterCheckboxComponent.js +0 -122
- package/src/components/AUFocusComponent.js +0 -55
- package/src/components/AUModalComponent.js +0 -94
- package/src/components/AUPaginationComponent.js +0 -103
- package/src/components/context/AUUserContextComponent.js +0 -91
- package/src/components/context/ImpersonateComponent.js +0 -54
- package/src/components/delphinus/AUCalendarComponent.js +0 -487
- package/src/components/delphinus/AUContentToggleComponent.js +0 -32
- package/src/components/delphinus/AUDatepickerComponent.js +0 -164
- package/src/components/delphinus/AULoginComponent.js +0 -65
- package/src/components/delphinus/AUSpinnerComponent.js +0 -114
- package/src/components/form/AUMobilePrefixComponent.js +0 -18
- package/src/components/news/EventLayout1Component.js +0 -94
- package/src/components/news/EventLayout2Component.js +0 -90
- package/src/components/news/EventLayout3Component.js +0 -68
- package/src/components/news/NewsCategoriesComponent.js +0 -21
- package/src/components/news/NewsCollageBannerComponent.js +0 -71
- package/src/components/news/NewsCollageBannerRSSComponent.js +0 -79
- package/src/components/news/NewsColumnsComponent.js +0 -125
- package/src/components/news/NewsLanguageChangeComponent.js +0 -74
- package/src/components/news/NewsLayout1Component.js +0 -80
- package/src/components/news/NewsLayout2Component.js +0 -80
- package/src/components/news/NewsLayout3Component.js +0 -81
- package/src/components/news/NewsLayout4Component.js +0 -80
- package/src/components/news/NewsLayout5Component.js +0 -61
- package/src/components/news/NewsLayout6Component.js +0 -55
- package/src/components/news/NewsLayout7Component.js +0 -58
- package/src/components/news/NewsLayout8Component.js +0 -57
- package/src/components/news/NewsListComponent.js +0 -291
- package/src/components/news/NewsPopUpComponent.js +0 -591
- package/src/components/news/NewsRSSComponent.js +0 -74
- package/src/components/news/NewsSocialComponent.js +0 -104
- package/src/components/news/NewsSubHeaderComponent.js +0 -19
- package/src/components/password/AUChangePasswordComponent.js +0 -177
- package/src/components/password/AUCurrentPasswordComponent.js +0 -72
- package/src/components/password/AUNewPasswordComponent.js +0 -143
- package/src/components/password/AUPasswordActions.js +0 -101
- package/src/components/password/AUPasswordHooks.js +0 -47
- package/src/components/password/AUPasswordReducer.js +0 -78
- package/src/components/password/AUPasswordRequirementsComponent.js +0 -29
- package/src/components/profile/AUProfileAvatarV3Component.js +0 -80
- package/src/config/webpack.dev.config.js +0 -47
- package/src/index.js +0 -6
- package/src/lib/au-auth.js +0 -227
- package/src/lib/au-news.js +0 -371
- package/src/lib/menu.js +0 -10
- package/src/lib/urlHandler.js +0 -63
- package/src/lib/validation.js +0 -181
- package/src/styles/alert.scss +0 -39
- package/src/styles/calendar.scss +0 -112
- package/src/styles/filtercheckbox.scss +0 -5
- package/src/styles/modal.scss +0 -35
- package/src/styles/pagination.scss +0 -11
- package/src/styles/spinner.scss +0 -30
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/* eslint-env browser */
|
|
2
2
|
/* NO IMPORTS! */
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
// eslint-disable-next-line no-control-regex
|
|
5
|
+
const emailRegex = /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/;
|
|
5
6
|
|
|
6
7
|
const sortAlphaObj = (a, b) => {
|
|
7
8
|
if (typeof a.name !== 'undefined' && typeof b.name !== 'undefined') {
|
|
@@ -10,7 +11,7 @@ const sortAlphaObj = (a, b) => {
|
|
|
10
11
|
return 0;
|
|
11
12
|
};
|
|
12
13
|
|
|
13
|
-
const isElementInViewport = (element) => {
|
|
14
|
+
const isElementInViewport = (element: HTMLElement): boolean => {
|
|
14
15
|
if (element === null) {
|
|
15
16
|
return false;
|
|
16
17
|
}
|
|
@@ -23,7 +24,7 @@ const isElementInViewport = (element) => {
|
|
|
23
24
|
&& rect.top < (window.innerHeight || document.documentElement.clientHeight);
|
|
24
25
|
};
|
|
25
26
|
|
|
26
|
-
const isElementPartlyInViewport = (element) => {
|
|
27
|
+
const isElementPartlyInViewport = (element: HTMLElement): boolean => {
|
|
27
28
|
let top = element.offsetTop;
|
|
28
29
|
let left = element.offsetLeft;
|
|
29
30
|
const width = element.offsetWidth;
|
|
@@ -31,7 +32,7 @@ const isElementPartlyInViewport = (element) => {
|
|
|
31
32
|
|
|
32
33
|
let offsetElement = element;
|
|
33
34
|
while (offsetElement.offsetParent) {
|
|
34
|
-
offsetElement = element.offsetParent;
|
|
35
|
+
offsetElement = element.offsetParent as HTMLElement;
|
|
35
36
|
top += element.offsetTop;
|
|
36
37
|
left += element.offsetLeft;
|
|
37
38
|
}
|
|
@@ -44,7 +45,14 @@ const isElementPartlyInViewport = (element) => {
|
|
|
44
45
|
);
|
|
45
46
|
};
|
|
46
47
|
|
|
47
|
-
const setCookie = (
|
|
48
|
+
const setCookie = (
|
|
49
|
+
cookieName: string,
|
|
50
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
51
|
+
value: any,
|
|
52
|
+
maxAge: number | null = null,
|
|
53
|
+
exdays: number | null = null,
|
|
54
|
+
path = ';path=/;domain=au.dk',
|
|
55
|
+
): void => {
|
|
48
56
|
let cookieValue = encodeURI(value);
|
|
49
57
|
if (exdays != null) {
|
|
50
58
|
const exdate = new Date();
|
|
@@ -57,8 +65,8 @@ const setCookie = (cookieName, value, maxAge = null, exdays = null, path = ';pat
|
|
|
57
65
|
document.cookie = `${cookieName}=${cookieValue}${path}`;
|
|
58
66
|
};
|
|
59
67
|
|
|
60
|
-
const getCookie = (cookieName) => {
|
|
61
|
-
let cookieValue = document.cookie;
|
|
68
|
+
const getCookie = (cookieName: string): string | null => {
|
|
69
|
+
let cookieValue: string | null = document.cookie;
|
|
62
70
|
let cookieStart = cookieValue.indexOf(` ${cookieName}=`);
|
|
63
71
|
if (cookieStart === -1) {
|
|
64
72
|
cookieStart = cookieValue.indexOf(`${cookieName}=`);
|
|
@@ -76,7 +84,7 @@ const getCookie = (cookieName) => {
|
|
|
76
84
|
return cookieValue;
|
|
77
85
|
};
|
|
78
86
|
|
|
79
|
-
const addToSessionStorage = (key, data) => {
|
|
87
|
+
const addToSessionStorage = (key: string, data: unknown): unknown => {
|
|
80
88
|
if (window.sessionStorage) {
|
|
81
89
|
sessionStorage.setItem(key, JSON.stringify(data));
|
|
82
90
|
}
|
|
@@ -84,7 +92,7 @@ const addToSessionStorage = (key, data) => {
|
|
|
84
92
|
return data;
|
|
85
93
|
};
|
|
86
94
|
|
|
87
|
-
const getFromSessionStorage = (key) => {
|
|
95
|
+
const getFromSessionStorage = (key: string): unknown | null => {
|
|
88
96
|
if (window.sessionStorage) {
|
|
89
97
|
const data = sessionStorage.getItem(key);
|
|
90
98
|
if (data) {
|
|
@@ -95,7 +103,7 @@ const getFromSessionStorage = (key) => {
|
|
|
95
103
|
return null;
|
|
96
104
|
};
|
|
97
105
|
|
|
98
|
-
const addToLocalStorage = (key, data) => {
|
|
106
|
+
const addToLocalStorage = (key: string, data: unknown): unknown => {
|
|
99
107
|
if (window.localStorage) {
|
|
100
108
|
localStorage.setItem(key, JSON.stringify(data));
|
|
101
109
|
}
|
|
@@ -103,7 +111,7 @@ const addToLocalStorage = (key, data) => {
|
|
|
103
111
|
return data;
|
|
104
112
|
};
|
|
105
113
|
|
|
106
|
-
const getFromLocalStorage = (key) => {
|
|
114
|
+
const getFromLocalStorage = (key: string): unknown | null => {
|
|
107
115
|
if (window.localStorage) {
|
|
108
116
|
const data = localStorage.getItem(key);
|
|
109
117
|
if (data) {
|
|
@@ -114,35 +122,8 @@ const getFromLocalStorage = (key) => {
|
|
|
114
122
|
return null;
|
|
115
123
|
};
|
|
116
124
|
|
|
117
|
-
const setContextInSession = (key, data, clearPrevious = true) => {
|
|
118
|
-
if (clearPrevious) {
|
|
119
|
-
Object.entries(window.sessionStorage).forEach((entry) => {
|
|
120
|
-
const entryKey = entry[0];
|
|
121
|
-
if (entryKey.includes('user-context')) {
|
|
122
|
-
window.sessionStorage.removeItem(entryKey);
|
|
123
|
-
}
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
window.sessionStorage.setItem(`user-context-${key}`, data);
|
|
127
|
-
};
|
|
128
|
-
|
|
129
|
-
const getContextFromSession = (key = '', any = false) => {
|
|
130
|
-
if (any) {
|
|
131
|
-
let foundContext = null;
|
|
132
|
-
Object.entries(window.sessionStorage).forEach((entry) => {
|
|
133
|
-
const entryKey = entry[0];
|
|
134
|
-
if (entryKey.includes('user-context')) {
|
|
135
|
-
foundContext = window.sessionStorage.getItem(entryKey);
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
return foundContext;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
return window.sessionStorage.getItem(`user-context-${key}`);
|
|
142
|
-
};
|
|
143
|
-
|
|
144
125
|
// Credits: http://blog.vishalon.net/index.php/javascript-getting-and-setting-caret-position-in-textarea/
|
|
145
|
-
const setCaretPosition = (element, pos) => {
|
|
126
|
+
const setCaretPosition = (element: HTMLInputElement, pos: number): void => {
|
|
146
127
|
// Modern browsers
|
|
147
128
|
if (element && element.setSelectionRange) {
|
|
148
129
|
element.focus();
|
|
@@ -150,16 +131,19 @@ const setCaretPosition = (element, pos) => {
|
|
|
150
131
|
}
|
|
151
132
|
};
|
|
152
133
|
|
|
153
|
-
const splitPhoneNumber = (
|
|
154
|
-
|
|
134
|
+
const splitPhoneNumber = (
|
|
135
|
+
countryCodes: AU.ICountryCode[],
|
|
136
|
+
phoneNumber: string,
|
|
137
|
+
): AU.IPhoneNumber => {
|
|
138
|
+
const countryCodeFound = (code: string) => countryCodes.filter(
|
|
155
139
|
(x) => x.code === parseInt(code, 10),
|
|
156
140
|
).length > 0;
|
|
157
141
|
|
|
158
|
-
const findPrefix = () => {
|
|
142
|
+
const findPrefix = (): string => {
|
|
159
143
|
if (countryCodes.length > 0) {
|
|
160
144
|
const skip = '';
|
|
161
145
|
let count = 1;
|
|
162
|
-
let prefix = countryCodes.find((x) => x.important)
|
|
146
|
+
let prefix = `${countryCodes.find((x) => x.important)?.code}`;
|
|
163
147
|
while (count < phoneNumber.length) {
|
|
164
148
|
const split = phoneNumber.substring(skip.length, skip.length + count);
|
|
165
149
|
if (countryCodeFound(split)) {
|
|
@@ -179,25 +163,21 @@ const splitPhoneNumber = (countryCodes, phoneNumber) => {
|
|
|
179
163
|
};
|
|
180
164
|
};
|
|
181
165
|
|
|
182
|
-
const prettyPrintPhone = (countryCodes, phone) => {
|
|
166
|
+
const prettyPrintPhone = (countryCodes: AU.ICountryCode[], phone: string) => {
|
|
183
167
|
if (phone) {
|
|
184
168
|
const { prefix, number } = splitPhoneNumber(countryCodes, phone);
|
|
185
|
-
|
|
169
|
+
if (prefix) {
|
|
170
|
+
return `${prefix} ${number?.match(/\d{1,2}/g)?.join(' ')}`;
|
|
171
|
+
}
|
|
172
|
+
return number?.match(/\d{1,2}/g)?.join(' ');
|
|
186
173
|
}
|
|
187
174
|
return '';
|
|
188
175
|
};
|
|
189
176
|
|
|
190
|
-
const getAccessToken = (auAuth, serviceScope, callback) => {
|
|
191
|
-
auAuth.getAccessToken([serviceScope]).then((accessToken) => {
|
|
192
|
-
callback(accessToken.accessToken);
|
|
193
|
-
});
|
|
194
|
-
};
|
|
195
|
-
|
|
196
|
-
const parseError = (errorArray) => errorArray.map((e) => e.errorMessage).join(', ');
|
|
197
|
-
|
|
198
177
|
const scrollTo = (x = 0, y = 0) => window.scrollTo(x, y);
|
|
199
178
|
|
|
200
179
|
export {
|
|
180
|
+
emailRegex,
|
|
201
181
|
sortAlphaObj,
|
|
202
182
|
isElementInViewport,
|
|
203
183
|
isElementPartlyInViewport,
|
|
@@ -208,12 +188,7 @@ export {
|
|
|
208
188
|
addToSessionStorage,
|
|
209
189
|
getFromSessionStorage,
|
|
210
190
|
setCaretPosition,
|
|
211
|
-
getAccessToken,
|
|
212
|
-
serviceScopeProfile,
|
|
213
191
|
splitPhoneNumber,
|
|
214
192
|
prettyPrintPhone,
|
|
215
|
-
parseError,
|
|
216
193
|
scrollTo,
|
|
217
|
-
setContextInSession,
|
|
218
|
-
getContextFromSession,
|
|
219
194
|
};
|
|
@@ -1,28 +1,33 @@
|
|
|
1
|
-
/* eslint-disable import/prefer-default-export */
|
|
2
|
-
import { useState, useEffect } from 'react';
|
|
3
|
-
import { showModal, hideModal } from '@aarhus-university/au-designsystem-delphinus/source/js/components/modal-view';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
1
|
+
/* eslint-disable import/prefer-default-export */
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
3
|
+
import { showModal, hideModal } from '@aarhus-university/au-designsystem-delphinus/source/js/components/modal-view';
|
|
4
|
+
|
|
5
|
+
const useModal = (
|
|
6
|
+
domId: string,
|
|
7
|
+
initialState: boolean,
|
|
8
|
+
showCondition = true,
|
|
9
|
+
hideCondition = false,
|
|
10
|
+
closeable = true,
|
|
11
|
+
): [IModal, (modal: IModal) => void] => {
|
|
12
|
+
const [modal, setModal] = useState<IModal>({ modal: initialState, sender: null });
|
|
13
|
+
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
if (modal.modal && modal.sender && showCondition) {
|
|
16
|
+
showModal(domId, modal.sender, () => {
|
|
17
|
+
setModal({ modal: false, sender: null });
|
|
18
|
+
}, closeable);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (modal.modal && modal.sender && hideCondition) {
|
|
22
|
+
hideModal(domId, modal.sender, () => {
|
|
23
|
+
setModal({ modal: false, sender: null });
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
return [modal, setModal];
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export {
|
|
32
|
+
useModal,
|
|
33
|
+
};
|