@databiosphere/findable-ui 21.4.0 → 22.0.0
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/.release-please-manifest.json +1 -1
- package/.storybook/main.ts +7 -1
- package/CHANGELOG.md +17 -0
- package/lib/components/DataDictionary/components/Entities/constants.d.ts +2 -0
- package/lib/components/DataDictionary/components/Entities/constants.js +6 -0
- package/lib/components/DataDictionary/components/Entities/entities.d.ts +2 -0
- package/lib/components/DataDictionary/components/Entities/entities.js +7 -0
- package/lib/components/DataDictionary/components/Entities/types.d.ts +4 -0
- package/lib/components/DataDictionary/components/Entities/types.js +1 -0
- package/lib/components/DataDictionary/components/Entity/constants.d.ts +2 -0
- package/lib/components/DataDictionary/components/Entity/constants.js +5 -0
- package/lib/components/DataDictionary/components/Entity/entity.d.ts +2 -0
- package/lib/components/DataDictionary/components/Entity/entity.js +14 -0
- package/lib/components/DataDictionary/components/Entity/types.d.ts +4 -0
- package/lib/components/DataDictionary/components/Entity/types.js +1 -0
- package/lib/components/DataDictionary/components/Table/columns/columnDef.d.ts +6 -0
- package/lib/components/DataDictionary/components/Table/columns/columnDef.js +33 -0
- package/lib/components/DataDictionary/components/Table/columns/columnIdentifier.d.ts +5 -0
- package/lib/components/DataDictionary/components/Table/columns/columnIdentifier.js +5 -0
- package/lib/components/DataDictionary/components/Table/columns/types.d.ts +2 -0
- package/lib/components/DataDictionary/components/Table/columns/types.js +1 -0
- package/lib/components/DataDictionary/components/Table/components/BasicCell/basicCell.d.ts +2 -0
- package/lib/components/DataDictionary/components/Table/components/BasicCell/basicCell.js +6 -0
- package/lib/components/DataDictionary/components/Table/components/BasicCell/types.d.ts +4 -0
- package/lib/components/DataDictionary/components/Table/components/BasicCell/types.js +1 -0
- package/lib/components/DataDictionary/components/Table/hook.d.ts +3 -0
- package/lib/components/DataDictionary/components/Table/hook.js +11 -0
- package/lib/components/DataDictionary/components/Table/options/core/constants.d.ts +3 -0
- package/lib/components/DataDictionary/components/Table/options/core/constants.js +7 -0
- package/lib/components/DataDictionary/components/Table/options/hook.d.ts +3 -0
- package/lib/components/DataDictionary/components/Table/options/hook.js +8 -0
- package/lib/components/DataDictionary/components/Table/options/sorting/constants.d.ts +3 -0
- package/lib/components/DataDictionary/components/Table/options/sorting/constants.js +3 -0
- package/lib/components/DataDictionary/components/Table/table.d.ts +2 -0
- package/lib/components/DataDictionary/components/Table/table.js +17 -0
- package/lib/components/DataDictionary/components/Table/table.styles.d.ts +3 -0
- package/lib/components/DataDictionary/components/Table/table.styles.js +5 -0
- package/lib/components/DataDictionary/components/Table/types.d.ts +5 -0
- package/lib/components/DataDictionary/components/Table/types.js +1 -0
- package/lib/components/DataDictionary/dataDictionary.d.ts +2 -0
- package/lib/components/DataDictionary/dataDictionary.js +9 -0
- package/lib/components/DataDictionary/dataDictionary.styles.d.ts +1 -0
- package/lib/components/DataDictionary/dataDictionary.styles.js +7 -0
- package/lib/components/DataDictionary/hooks/UseDataDictionary/hook.d.ts +2 -0
- package/lib/components/DataDictionary/hooks/UseDataDictionary/hook.js +5 -0
- package/lib/components/DataDictionary/hooks/UseDataDictionary/types.d.ts +4 -0
- package/lib/components/DataDictionary/hooks/UseDataDictionary/types.js +1 -0
- package/lib/components/Detail/detail.stories.d.ts +36 -5
- package/lib/components/Detail/detail.stories.js +27 -18
- package/lib/components/Export/components/ExportMethod/exportMethod.stories.d.ts +22 -5
- package/lib/components/Export/components/ExportMethod/exportMethod.stories.js +9 -9
- package/lib/components/Filter/components/Filter/filter.stories.d.ts +25 -5
- package/lib/components/Filter/components/Filter/filter.stories.js +25 -24
- package/lib/components/Filter/components/FilterLabel/filterLabel.stories.d.ts +31 -5
- package/lib/components/Filter/components/FilterLabel/filterLabel.stories.js +10 -8
- package/lib/components/Filter/components/FilterMenu/filterMenu.stories.d.ts +38 -5
- package/lib/components/Filter/components/FilterMenu/filterMenu.stories.js +107 -104
- package/lib/components/Filter/components/FilterTag/filterTag.stories.d.ts +16 -5
- package/lib/components/Filter/components/FilterTag/filterTag.stories.js +8 -7
- package/lib/components/Filter/components/FilterTags/filterTags.stories.d.ts +18 -5
- package/lib/components/Filter/components/FilterTags/filterTags.stories.js +40 -39
- package/lib/components/Index/components/AzulFileDownload/azulFileDownload.stories.d.ts +8 -5
- package/lib/components/Index/components/AzulFileDownload/azulFileDownload.stories.js +9 -6
- package/lib/components/Index/components/Hero/components/Summaries/summaries.stories.d.ts +13 -5
- package/lib/components/Index/components/Hero/components/Summaries/summaries.stories.js +11 -11
- package/lib/components/Index/components/Hero/hero.stories.d.ts +23 -5
- package/lib/components/Index/components/Hero/hero.stories.js +8 -6
- package/lib/components/Index/components/NTagCell/nTagCell.stories.d.ts +16 -5
- package/lib/components/Index/components/NTagCell/nTagCell.stories.js +8 -8
- package/lib/components/Index/index.stories.js +2 -1
- package/lib/components/Layout/components/BackPage/backPageView.stories.d.ts +31 -5
- package/lib/components/Layout/components/BackPage/backPageView.stories.js +27 -18
- package/lib/components/Layout/components/Footer/footer.stories.d.ts +24 -3
- package/lib/components/Layout/components/Footer/footer.stories.js +4 -3
- package/lib/components/Layout/components/Header/header.stories.js +1 -1
- package/lib/components/Layout/components/Sidebar/components/SidebarLabel/sidebarLabel.stories.d.ts +13 -5
- package/lib/components/Layout/components/Sidebar/components/SidebarLabel/sidebarLabel.stories.js +6 -6
- package/lib/components/Layout/components/Sidebar/sidebar.stories.js +2 -0
- package/lib/components/Links/links.stories.d.ts +13 -5
- package/lib/components/Links/links.stories.js +14 -14
- package/lib/components/Loading/loading.stories.d.ts +34 -5
- package/lib/components/Loading/loading.stories.js +8 -6
- package/lib/components/Project/components/CollaboratingOrganizations/collaboratingOrganizations.stories.d.ts +13 -5
- package/lib/components/Project/components/CollaboratingOrganizations/collaboratingOrganizations.stories.js +20 -20
- package/lib/components/Project/components/Contacts/contacts.stories.d.ts +13 -5
- package/lib/components/Project/components/Contacts/contacts.stories.js +18 -18
- package/lib/components/Project/components/Contributors/contributors.stories.d.ts +8 -5
- package/lib/components/Project/components/Contributors/contributors.stories.js +27 -27
- package/lib/components/Project/components/DataCurators/dataCurators.stories.d.ts +13 -5
- package/lib/components/Project/components/DataCurators/dataCurators.stories.js +7 -7
- package/lib/components/Project/components/DataReleasePolicy/dataReleasePolicy.stories.d.ts +8 -5
- package/lib/components/Project/components/DataReleasePolicy/dataReleasePolicy.stories.js +3 -4
- package/lib/components/Project/components/Description/description.stories.d.ts +8 -5
- package/lib/components/Project/components/Description/description.stories.js +6 -6
- package/lib/components/Project/components/Details/details.stories.d.ts +16 -5
- package/lib/components/Project/components/Details/details.stories.js +7 -7
- package/lib/components/Project/components/Publications/publications.stories.d.ts +8 -5
- package/lib/components/Project/components/Publications/publications.stories.js +17 -17
- package/lib/components/Project/components/SupplementaryLinks/supplementaryLinks.stories.d.ts +8 -5
- package/lib/components/Project/components/SupplementaryLinks/supplementaryLinks.stories.js +18 -18
- package/lib/components/Support/components/SupportRequest/components/SupportRequestForm/common/constants.d.ts +16 -33
- package/lib/components/Support/components/SupportRequest/components/SupportRequestForm/common/constants.js +10 -9
- package/lib/components/Support/components/SupportRequest/components/SupportRequestForm/supportRequestForm.js +26 -14
- package/lib/components/Support/components/ViewSupport/types.d.ts +6 -0
- package/lib/components/Support/components/ViewSupport/types.js +1 -0
- package/lib/components/Support/components/ViewSupport/viewSupport.d.ts +2 -9
- package/lib/components/Support/components/ViewSupport/viewSupport.js +7 -3
- package/lib/components/Table/components/Pagination/pagination.stories.d.ts +28 -5
- package/lib/components/Table/components/Pagination/pagination.stories.js +11 -7
- package/lib/components/common/Accordion/accordion.stories.d.ts +6 -3
- package/lib/components/common/Accordion/accordion.stories.js +2 -1
- package/lib/components/common/Breadcrumbs/breadcrumbs.stories.d.ts +10 -7
- package/lib/components/common/Breadcrumbs/breadcrumbs.stories.js +42 -43
- package/lib/components/common/Button/components/CallToActionButton/callToActionButton.stories.d.ts +9 -6
- package/lib/components/common/Button/components/CallToActionButton/callToActionButton.stories.js +13 -15
- package/lib/components/common/Button/components/HelpIconButton/helpIconButton.stories.d.ts +19 -2
- package/lib/components/common/Button/components/HelpIconButton/helpIconButton.stories.js +2 -2
- package/lib/components/common/Card/card.stories.d.ts +6 -3
- package/lib/components/common/Card/card.stories.js +2 -1
- package/lib/components/common/Code/code.stories.d.ts +5 -3
- package/lib/components/common/CopyToClipboard/copyToClipboard.stories.d.ts +11 -3
- package/lib/components/common/CopyToClipboard/copyToClipboard.stories.js +2 -1
- package/lib/components/common/Section/components/SectionTitle/sectionTitle.stories.d.ts +13 -5
- package/lib/components/common/Section/components/SectionTitle/sectionTitle.stories.js +6 -6
- package/lib/components/common/Socials/socials.stories.d.ts +11 -3
- package/lib/components/common/Socials/socials.stories.js +2 -1
- package/lib/components/common/StaticImage/staticImage.stories.d.ts +22 -5
- package/lib/components/common/StaticImage/staticImage.stories.js +8 -8
- package/lib/components/common/StatusIcon/statusIcon.stories.d.ts +19 -5
- package/lib/components/common/StatusIcon/statusIcon.stories.js +7 -7
- package/lib/components/common/Tag/tag.stories.d.ts +15 -5
- package/lib/components/common/Tag/tag.stories.js +7 -5
- package/lib/components/common/ToggleButtonGroup/toggleButtonGroup.stories.d.ts +18 -5
- package/lib/components/common/ToggleButtonGroup/toggleButtonGroup.stories.js +19 -19
- package/lib/styles/common/mui/typography.js +1 -0
- package/lib/views/DataDictionaryView/dataDictionaryView.d.ts +2 -0
- package/lib/views/DataDictionaryView/dataDictionaryView.js +5 -0
- package/package.json +13 -13
- package/src/components/DataDictionary/components/Entities/constants.ts +8 -0
- package/src/components/DataDictionary/components/Entities/entities.tsx +15 -0
- package/src/components/DataDictionary/components/Entities/types.ts +5 -0
- package/src/components/DataDictionary/components/Entity/constants.ts +7 -0
- package/src/components/DataDictionary/components/Entity/entity.tsx +28 -0
- package/src/components/DataDictionary/components/Entity/types.ts +5 -0
- package/src/components/DataDictionary/components/Table/columns/columnDef.ts +47 -0
- package/src/components/DataDictionary/components/Table/columns/columnIdentifier.ts +5 -0
- package/src/components/DataDictionary/components/Table/columns/types.ts +3 -0
- package/src/components/DataDictionary/components/Table/components/BasicCell/basicCell.tsx +8 -0
- package/src/components/DataDictionary/components/Table/components/BasicCell/types.ts +5 -0
- package/src/components/DataDictionary/components/Table/hook.ts +13 -0
- package/src/components/DataDictionary/components/Table/options/core/constants.ts +12 -0
- package/src/components/DataDictionary/components/Table/options/hook.ts +14 -0
- package/src/components/DataDictionary/components/Table/options/sorting/constants.ts +9 -0
- package/src/components/DataDictionary/components/Table/table.styles.ts +6 -0
- package/src/components/DataDictionary/components/Table/table.tsx +35 -0
- package/src/components/DataDictionary/components/Table/types.ts +6 -0
- package/src/components/DataDictionary/dataDictionary.styles.ts +8 -0
- package/src/components/DataDictionary/dataDictionary.tsx +16 -0
- package/src/components/DataDictionary/hooks/UseDataDictionary/hook.ts +9 -0
- package/src/components/DataDictionary/hooks/UseDataDictionary/types.ts +5 -0
- package/src/components/Detail/detail.stories.tsx +41 -36
- package/src/components/Export/components/ExportMethod/exportMethod.stories.tsx +13 -13
- package/src/components/Filter/components/Filter/filter.stories.tsx +29 -28
- package/src/components/Filter/components/FilterLabel/filterLabel.stories.tsx +14 -12
- package/src/components/Filter/components/FilterMenu/filterMenu.stories.tsx +111 -108
- package/src/components/Filter/components/FilterTag/filterTag.stories.tsx +12 -11
- package/src/components/Filter/components/FilterTags/filterTags.stories.tsx +44 -43
- package/src/components/Index/components/AzulFileDownload/azulFileDownload.stories.tsx +13 -10
- package/src/components/Index/components/Hero/components/Summaries/summaries.stories.tsx +15 -15
- package/src/components/Index/components/Hero/hero.stories.tsx +12 -8
- package/src/components/Index/components/NTagCell/nTagCell.stories.tsx +12 -12
- package/src/components/Index/index.stories.tsx +2 -1
- package/src/components/Layout/components/BackPage/backPageView.stories.tsx +42 -36
- package/src/components/Layout/components/Footer/footer.stories.tsx +6 -4
- package/src/components/Layout/components/Header/header.stories.tsx +1 -1
- package/src/components/Layout/components/Sidebar/components/SidebarLabel/sidebarLabel.stories.tsx +10 -10
- package/src/components/Layout/components/Sidebar/sidebar.stories.tsx +2 -0
- package/src/components/Links/links.stories.tsx +18 -18
- package/src/components/Loading/loading.stories.tsx +12 -10
- package/src/components/Project/components/CollaboratingOrganizations/collaboratingOrganizations.stories.tsx +24 -25
- package/src/components/Project/components/Contacts/contacts.stories.tsx +22 -22
- package/src/components/Project/components/Contributors/contributors.stories.tsx +31 -31
- package/src/components/Project/components/DataCurators/dataCurators.stories.tsx +11 -11
- package/src/components/Project/components/DataReleasePolicy/dataReleasePolicy.stories.tsx +7 -8
- package/src/components/Project/components/Description/description.stories.tsx +11 -11
- package/src/components/Project/components/Details/details.stories.tsx +11 -11
- package/src/components/Project/components/Publications/publications.stories.tsx +23 -23
- package/src/components/Project/components/SupplementaryLinks/supplementaryLinks.stories.tsx +22 -22
- package/src/components/Support/components/SupportRequest/components/SupportRequestForm/common/constants.ts +10 -9
- package/src/components/Support/components/SupportRequest/components/SupportRequestForm/supportRequestForm.tsx +44 -15
- package/src/components/Support/components/ViewSupport/types.ts +9 -0
- package/src/components/Support/components/ViewSupport/viewSupport.tsx +6 -10
- package/src/components/Table/components/Pagination/pagination.stories.tsx +15 -11
- package/src/components/common/Accordion/accordion.stories.tsx +4 -2
- package/src/components/common/Breadcrumbs/breadcrumbs.stories.tsx +46 -47
- package/src/components/common/Button/components/CallToActionButton/callToActionButton.stories.tsx +17 -20
- package/src/components/common/Button/components/HelpIconButton/helpIconButton.stories.tsx +4 -4
- package/src/components/common/Card/card.stories.tsx +4 -2
- package/src/components/common/Code/code.stories.tsx +1 -1
- package/src/components/common/CopyToClipboard/copyToClipboard.stories.tsx +4 -2
- package/src/components/common/Section/components/SectionTitle/sectionTitle.stories.tsx +10 -10
- package/src/components/common/Socials/socials.stories.tsx +4 -2
- package/src/components/common/StaticImage/staticImage.stories.tsx +12 -12
- package/src/components/common/StatusIcon/statusIcon.stories.tsx +11 -11
- package/src/components/common/Tag/tag.stories.tsx +11 -9
- package/src/components/common/ToggleButtonGroup/toggleButtonGroup.stories.tsx +23 -23
- package/src/styles/common/mui/typography.ts +1 -0
- package/src/views/DataDictionaryView/dataDictionaryView.tsx +9 -0
|
@@ -7,7 +7,7 @@ import React, {
|
|
|
7
7
|
useState,
|
|
8
8
|
} from "react";
|
|
9
9
|
import { FileRejection } from "react-dropzone";
|
|
10
|
-
import
|
|
10
|
+
import { ValidationError } from "yup";
|
|
11
11
|
import { TEXT_BODY_400 } from "../../../../../../theme/common/typography";
|
|
12
12
|
import { ButtonPrimary } from "../../../../../common/Button/components/ButtonPrimary/buttonPrimary";
|
|
13
13
|
import { Input } from "../../../../../common/Form/components/Input/input";
|
|
@@ -21,18 +21,17 @@ import {
|
|
|
21
21
|
import { SupportRequest } from "../../supportRequest";
|
|
22
22
|
import Dropzone from "../Dropzone/dropzone";
|
|
23
23
|
import {
|
|
24
|
-
CONSTRAINTS,
|
|
25
24
|
DEFAULT_FORM_STATE,
|
|
26
25
|
DRAGGING_STYLE,
|
|
27
26
|
MAX_ATTACHMENT_SIZE,
|
|
28
27
|
OPTIONS,
|
|
28
|
+
VALIDATION_SCHEMA,
|
|
29
29
|
} from "./common/constants";
|
|
30
30
|
import {
|
|
31
31
|
FORM_CONTROL_LABEL,
|
|
32
32
|
FORM_CONTROL_NAME,
|
|
33
33
|
FormState,
|
|
34
34
|
RequestValue,
|
|
35
|
-
ValidateResponse,
|
|
36
35
|
} from "./common/entities";
|
|
37
36
|
import { createSupportRequest, uploadAttachment } from "./common/utils";
|
|
38
37
|
import { Section, Title } from "./supportRequestForm.styles";
|
|
@@ -47,7 +46,23 @@ export const SupportRequestForm = ({
|
|
|
47
46
|
supportRequest,
|
|
48
47
|
}: SupportRequestFormProps): JSX.Element => {
|
|
49
48
|
const [formState, setFormState] = useState<FormState>(DEFAULT_FORM_STATE);
|
|
50
|
-
const
|
|
49
|
+
const [errorFields, setErrorFields] = useState<Set<string>>();
|
|
50
|
+
|
|
51
|
+
// Validate form state when it changes.
|
|
52
|
+
React.useEffect(() => {
|
|
53
|
+
VALIDATION_SCHEMA.validate(buildSupportRequest(formState), {
|
|
54
|
+
abortEarly: false,
|
|
55
|
+
})
|
|
56
|
+
.then(() => setErrorFields(undefined))
|
|
57
|
+
.catch((aggregateError: ValidationError) => {
|
|
58
|
+
const fields = new Set<string>();
|
|
59
|
+
for (const error of aggregateError.inner) {
|
|
60
|
+
if (error.path) fields.add(error.path);
|
|
61
|
+
}
|
|
62
|
+
setErrorFields(fields);
|
|
63
|
+
});
|
|
64
|
+
}, [formState]);
|
|
65
|
+
|
|
51
66
|
const { FIELD_ID, requestURL, uploadURL } = supportRequest;
|
|
52
67
|
|
|
53
68
|
// Delete attachment.
|
|
@@ -177,7 +192,11 @@ export const SupportRequestForm = ({
|
|
|
177
192
|
</Section>
|
|
178
193
|
<Section>
|
|
179
194
|
<Input
|
|
180
|
-
error={isFieldError(
|
|
195
|
+
error={isFieldError(
|
|
196
|
+
formState,
|
|
197
|
+
errorFields,
|
|
198
|
+
FORM_CONTROL_NAME.NAME
|
|
199
|
+
)}
|
|
181
200
|
isFilled={Boolean(formState[FORM_CONTROL_NAME.NAME])}
|
|
182
201
|
label={FORM_CONTROL_LABEL.NAME}
|
|
183
202
|
name={FORM_CONTROL_NAME.NAME}
|
|
@@ -185,7 +204,11 @@ export const SupportRequestForm = ({
|
|
|
185
204
|
onChange={onInputChange}
|
|
186
205
|
/>
|
|
187
206
|
<Input
|
|
188
|
-
error={isFieldError(
|
|
207
|
+
error={isFieldError(
|
|
208
|
+
formState,
|
|
209
|
+
errorFields,
|
|
210
|
+
FORM_CONTROL_NAME.EMAIL
|
|
211
|
+
)}
|
|
189
212
|
isFilled={Boolean(formState[FORM_CONTROL_NAME.EMAIL])}
|
|
190
213
|
label={FORM_CONTROL_LABEL.EMAIL}
|
|
191
214
|
name={FORM_CONTROL_NAME.EMAIL}
|
|
@@ -194,7 +217,11 @@ export const SupportRequestForm = ({
|
|
|
194
217
|
/>
|
|
195
218
|
<Select
|
|
196
219
|
displayEmpty={true}
|
|
197
|
-
error={isFieldError(
|
|
220
|
+
error={isFieldError(
|
|
221
|
+
formState,
|
|
222
|
+
errorFields,
|
|
223
|
+
FORM_CONTROL_NAME.TYPE
|
|
224
|
+
)}
|
|
198
225
|
isFilled={Boolean(formState[FORM_CONTROL_NAME.TYPE])}
|
|
199
226
|
label={FORM_CONTROL_LABEL.TYPE}
|
|
200
227
|
name={FORM_CONTROL_NAME.TYPE}
|
|
@@ -211,7 +238,11 @@ export const SupportRequestForm = ({
|
|
|
211
238
|
))}
|
|
212
239
|
</Select>
|
|
213
240
|
<Input
|
|
214
|
-
error={isFieldError(
|
|
241
|
+
error={isFieldError(
|
|
242
|
+
formState,
|
|
243
|
+
errorFields,
|
|
244
|
+
FORM_CONTROL_NAME.SUBJECT
|
|
245
|
+
)}
|
|
215
246
|
isFilled={Boolean(formState[FORM_CONTROL_NAME.SUBJECT])}
|
|
216
247
|
label={FORM_CONTROL_LABEL.SUBJECT}
|
|
217
248
|
name={FORM_CONTROL_NAME.SUBJECT}
|
|
@@ -221,7 +252,7 @@ export const SupportRequestForm = ({
|
|
|
221
252
|
<Input
|
|
222
253
|
error={isFieldError(
|
|
223
254
|
formState,
|
|
224
|
-
|
|
255
|
+
errorFields,
|
|
225
256
|
FORM_CONTROL_NAME.DESCRIPTION
|
|
226
257
|
)}
|
|
227
258
|
isFilled={Boolean(formState[FORM_CONTROL_NAME.DESCRIPTION])}
|
|
@@ -244,7 +275,7 @@ export const SupportRequestForm = ({
|
|
|
244
275
|
<Section>
|
|
245
276
|
<SectionActions>
|
|
246
277
|
<ButtonPrimary
|
|
247
|
-
disabled={Boolean(
|
|
278
|
+
disabled={Boolean(errorFields) || formState.submitting}
|
|
248
279
|
fullWidth
|
|
249
280
|
onClick={onSupportRequestSubmitted}
|
|
250
281
|
id="button-support-request"
|
|
@@ -280,18 +311,16 @@ function buildSupportRequest(formState: FormState): RequestValue {
|
|
|
280
311
|
/**
|
|
281
312
|
* Returns true if the given field is touched and has an error.
|
|
282
313
|
* @param formState - Form state.
|
|
283
|
-
* @param
|
|
314
|
+
* @param errorFields - Set of names of fields that have errors.
|
|
284
315
|
* @param fieldName - Field name.
|
|
285
316
|
* @returns true if the given field has an error.
|
|
286
317
|
*/
|
|
287
318
|
function isFieldError(
|
|
288
319
|
formState: FormState,
|
|
289
|
-
|
|
320
|
+
errorFields: Set<string> | undefined,
|
|
290
321
|
fieldName: FORM_CONTROL_NAME
|
|
291
322
|
): boolean {
|
|
292
|
-
|
|
293
|
-
const isTouched = Boolean(formState.touched[fieldName]);
|
|
294
|
-
return isTouched && hasError;
|
|
323
|
+
return Boolean(formState.touched[fieldName] && errorFields?.has(fieldName));
|
|
295
324
|
}
|
|
296
325
|
|
|
297
326
|
/**
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AnchorHTMLAttributes, ElementType } from "react";
|
|
2
|
+
import { BaseComponentProps } from "../../../types";
|
|
3
|
+
|
|
4
|
+
export interface ViewSupportProps
|
|
5
|
+
extends AnchorHTMLAttributes<HTMLAnchorElement>,
|
|
6
|
+
BaseComponentProps {
|
|
7
|
+
Icon?: ElementType;
|
|
8
|
+
url: string;
|
|
9
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from "react";
|
|
2
2
|
import { ContactSupportIcon } from "../../../common/CustomIcon/components/ContactSupportIcon/contactSupportIcon";
|
|
3
|
-
import { ANCHOR_TARGET } from "../../../Links/common/entities";
|
|
3
|
+
import { ANCHOR_TARGET, REL_ATTRIBUTE } from "../../../Links/common/entities";
|
|
4
|
+
import { ViewSupportProps } from "./types";
|
|
4
5
|
import { Fab } from "./viewSupport.styles";
|
|
5
6
|
|
|
6
7
|
/**
|
|
@@ -8,21 +9,16 @@ import { Fab } from "./viewSupport.styles";
|
|
|
8
9
|
* Navigates to support URL provided.
|
|
9
10
|
*/
|
|
10
11
|
|
|
11
|
-
export interface ViewSupportProps {
|
|
12
|
-
className?: string;
|
|
13
|
-
Icon?: ElementType;
|
|
14
|
-
target?: ANCHOR_TARGET;
|
|
15
|
-
url: string;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
12
|
export const ViewSupport = ({
|
|
19
13
|
className,
|
|
20
14
|
Icon = ContactSupportIcon,
|
|
15
|
+
rel = REL_ATTRIBUTE.NO_OPENER_NO_REFERRER,
|
|
21
16
|
target = ANCHOR_TARGET.BLANK,
|
|
22
17
|
url,
|
|
18
|
+
...props /* AnchorHTMLAttributes<HTMLAnchorElement> */
|
|
23
19
|
}: ViewSupportProps): JSX.Element => {
|
|
24
20
|
return (
|
|
25
|
-
<Fab className={className} href={url} target={target}>
|
|
21
|
+
<Fab className={className} href={url} rel={rel} target={target} {...props}>
|
|
26
22
|
<Icon fontSize="inherit" />
|
|
27
23
|
</Fab>
|
|
28
24
|
);
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import React from "react";
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
3
2
|
import { Pagination } from "./pagination";
|
|
4
3
|
|
|
5
|
-
|
|
4
|
+
const meta = {
|
|
6
5
|
argTypes: {
|
|
7
6
|
canNextPage: { control: "boolean" },
|
|
8
7
|
canPreviousPage: { control: "boolean" },
|
|
@@ -13,14 +12,19 @@ export default {
|
|
|
13
12
|
},
|
|
14
13
|
component: Pagination,
|
|
15
14
|
title: "Components/Table",
|
|
16
|
-
}
|
|
15
|
+
} satisfies Meta<typeof Pagination>;
|
|
17
16
|
|
|
18
|
-
|
|
19
|
-
<Pagination {...args} />
|
|
20
|
-
);
|
|
17
|
+
export default meta;
|
|
21
18
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
type Story = StoryObj<typeof meta>;
|
|
20
|
+
|
|
21
|
+
export const PaginationStory: Story = {
|
|
22
|
+
args: {
|
|
23
|
+
canNextPage: true,
|
|
24
|
+
canPreviousPage: false,
|
|
25
|
+
currentPage: 1,
|
|
26
|
+
onNextPage: () => {},
|
|
27
|
+
onPreviousPage: () => {},
|
|
28
|
+
totalPage: 25,
|
|
29
|
+
},
|
|
26
30
|
};
|
|
@@ -3,10 +3,12 @@ import { Meta, StoryObj } from "@storybook/react";
|
|
|
3
3
|
import React from "react";
|
|
4
4
|
import { Accordion } from "./accordion";
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
const meta = {
|
|
7
7
|
component: Accordion,
|
|
8
8
|
title: "Components/Common/Accordion",
|
|
9
|
-
}
|
|
9
|
+
} satisfies Meta<typeof Accordion>;
|
|
10
|
+
|
|
11
|
+
export default meta;
|
|
10
12
|
|
|
11
13
|
type Story = StoryObj<typeof Accordion>;
|
|
12
14
|
|
|
@@ -1,58 +1,57 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import React from "react";
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
3
2
|
import { Breadcrumbs } from "./breadcrumbs";
|
|
4
3
|
|
|
5
|
-
|
|
6
|
-
argTypes: {
|
|
7
|
-
children: { control: { disabled: true } },
|
|
8
|
-
},
|
|
4
|
+
const meta = {
|
|
9
5
|
component: Breadcrumbs,
|
|
10
6
|
title: "Components/Common/BreadCrumbs",
|
|
11
|
-
}
|
|
7
|
+
} satisfies Meta<typeof Breadcrumbs>;
|
|
8
|
+
|
|
9
|
+
export default meta;
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
<Breadcrumbs {...args} />
|
|
15
|
-
);
|
|
11
|
+
type Story = StoryObj<typeof meta>;
|
|
16
12
|
|
|
17
|
-
export const BreadcrumbDefaultStory =
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
13
|
+
export const BreadcrumbDefaultStory: Story = {
|
|
14
|
+
args: {
|
|
15
|
+
breadcrumbs: [
|
|
16
|
+
{
|
|
17
|
+
path: "#",
|
|
18
|
+
text: "Home",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
path: "#",
|
|
22
|
+
text: "Data Explorer",
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
},
|
|
29
26
|
};
|
|
30
27
|
|
|
31
|
-
export const BreadcrumbCustomSeparatorStory =
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
28
|
+
export const BreadcrumbCustomSeparatorStory: Story = {
|
|
29
|
+
args: {
|
|
30
|
+
Separator: " | ",
|
|
31
|
+
breadcrumbs: [
|
|
32
|
+
{
|
|
33
|
+
path: "#",
|
|
34
|
+
text: "Home",
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
path: "#",
|
|
38
|
+
text: "Data Explorer",
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
},
|
|
44
42
|
};
|
|
45
43
|
|
|
46
|
-
export const BreadcrumbWithLongerTitleStory =
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
44
|
+
export const BreadcrumbWithLongerTitleStory: Story = {
|
|
45
|
+
args: {
|
|
46
|
+
breadcrumbs: [
|
|
47
|
+
{
|
|
48
|
+
path: "#",
|
|
49
|
+
text: "Explore",
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
path: "#",
|
|
53
|
+
text: "A Single-Cell Transcriptomic Map of the Human and Mouse Pancreas Reveals Inter- and Intra-cell Population Structure",
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
},
|
|
58
57
|
};
|
package/src/components/common/Button/components/CallToActionButton/callToActionButton.stories.tsx
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import React from "react";
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
3
2
|
import { ANCHOR_TARGET } from "../../../../Links/common/entities";
|
|
4
3
|
import { CallToAction, CallToActionButton } from "./callToActionButton";
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
argTypes: {
|
|
8
|
-
children: { control: { disabled: true } },
|
|
9
|
-
},
|
|
5
|
+
const meta = {
|
|
10
6
|
component: CallToActionButton,
|
|
11
7
|
title: "Components/Common/CallToActionButton",
|
|
12
|
-
}
|
|
8
|
+
} satisfies Meta<typeof CallToActionButton>;
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
13
11
|
|
|
14
|
-
|
|
15
|
-
args
|
|
16
|
-
) => <CallToActionButton {...args} />;
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
17
13
|
|
|
18
14
|
const callToAction: CallToAction = {
|
|
19
15
|
label: "Click here",
|
|
@@ -21,16 +17,17 @@ const callToAction: CallToAction = {
|
|
|
21
17
|
url: "https://www.google.com",
|
|
22
18
|
};
|
|
23
19
|
|
|
24
|
-
export const CallToActionButtonStory =
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
20
|
+
export const CallToActionButtonStory: Story = {
|
|
21
|
+
args: {
|
|
22
|
+
callToAction,
|
|
23
|
+
className: "call-to-action-button",
|
|
24
|
+
disabled: false,
|
|
25
|
+
},
|
|
29
26
|
};
|
|
30
27
|
|
|
31
|
-
export const CallToActionButtonWithCustomComponentStory =
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
28
|
+
export const CallToActionButtonWithCustomComponentStory: Story = {
|
|
29
|
+
args: {
|
|
30
|
+
ButtonElType: "a",
|
|
31
|
+
callToAction,
|
|
32
|
+
},
|
|
36
33
|
};
|
|
@@ -2,15 +2,15 @@ import { Meta, StoryObj } from "@storybook/react";
|
|
|
2
2
|
import { ANCHOR_TARGET } from "../../../../Links/common/entities";
|
|
3
3
|
import { HelpIconButton } from "./helpIconButton";
|
|
4
4
|
|
|
5
|
-
const meta
|
|
5
|
+
const meta = {
|
|
6
6
|
argTypes: {
|
|
7
|
-
size: { control: "select" },
|
|
8
|
-
target: { control: "select" },
|
|
7
|
+
size: { control: "select", options: ["small", "medium", "large"] },
|
|
8
|
+
target: { control: "select", options: Object.values(ANCHOR_TARGET) },
|
|
9
9
|
url: { control: "text" },
|
|
10
10
|
},
|
|
11
11
|
component: HelpIconButton,
|
|
12
12
|
title: "Components/Common/HelpIconButton",
|
|
13
|
-
}
|
|
13
|
+
} satisfies Meta<typeof HelpIconButton>;
|
|
14
14
|
|
|
15
15
|
export default meta;
|
|
16
16
|
|
|
@@ -2,10 +2,12 @@ import { Meta, StoryObj } from "@storybook/react";
|
|
|
2
2
|
import logo from "../../../images/logo.svg";
|
|
3
3
|
import { Card } from "./card";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
const meta = {
|
|
6
6
|
component: Card,
|
|
7
7
|
title: "Components/Common/Card",
|
|
8
|
-
}
|
|
8
|
+
} satisfies Meta<typeof Card>;
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
9
11
|
|
|
10
12
|
type Story = StoryObj<typeof Card>;
|
|
11
13
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Meta, StoryObj } from "@storybook/react";
|
|
2
2
|
import { CopyToClipboard } from "./copyToClipboard";
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
const meta = {
|
|
5
5
|
argTypes: {
|
|
6
6
|
copyStr: {
|
|
7
7
|
description: "String to be copied",
|
|
@@ -9,7 +9,9 @@ export default {
|
|
|
9
9
|
},
|
|
10
10
|
component: CopyToClipboard,
|
|
11
11
|
title: "Components/Common/CopyToClipboard",
|
|
12
|
-
}
|
|
12
|
+
} satisfies Meta<typeof CopyToClipboard>;
|
|
13
|
+
|
|
14
|
+
export default meta;
|
|
13
15
|
|
|
14
16
|
type Story = StoryObj<typeof CopyToClipboard>;
|
|
15
17
|
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import React from "react";
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
3
2
|
import { SectionTitle } from "./sectionTitle";
|
|
4
3
|
|
|
5
|
-
|
|
4
|
+
const meta = {
|
|
6
5
|
argTypes: {
|
|
7
6
|
title: { control: "text" },
|
|
8
7
|
},
|
|
9
8
|
component: SectionTitle,
|
|
10
9
|
title: "Components/SectionContent/Title",
|
|
11
|
-
}
|
|
10
|
+
} satisfies Meta<typeof SectionTitle>;
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
<SectionTitle {...args} />
|
|
15
|
-
);
|
|
12
|
+
export default meta;
|
|
16
13
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
type Story = StoryObj<typeof meta>;
|
|
15
|
+
|
|
16
|
+
export const SectionTitleStory: Story = {
|
|
17
|
+
args: {
|
|
18
|
+
title: "Analysis Portals",
|
|
19
|
+
},
|
|
20
20
|
};
|
|
@@ -8,13 +8,15 @@ import { XIcon } from "../CustomIcon/components/XIcon/xIcon";
|
|
|
8
8
|
import { YouTubeIcon } from "../CustomIcon/components/YouTubeIcon/youTubeIcon";
|
|
9
9
|
import { Socials } from "./socials";
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
const meta = {
|
|
12
12
|
argTypes: {
|
|
13
13
|
socials: { control: "object" },
|
|
14
14
|
},
|
|
15
15
|
component: Socials,
|
|
16
16
|
title: "Components/Navigation/SocialLinks",
|
|
17
|
-
}
|
|
17
|
+
} satisfies Meta<typeof Socials>;
|
|
18
|
+
|
|
19
|
+
export default meta;
|
|
18
20
|
|
|
19
21
|
type Story = StoryObj<typeof Socials>;
|
|
20
22
|
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import React from "react";
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
3
2
|
import logo from "../../../images/logo.svg";
|
|
4
3
|
import { StaticImage } from "./staticImage";
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
const meta = {
|
|
7
6
|
argTypes: {
|
|
8
7
|
alt: { control: "text" },
|
|
9
8
|
height: { control: "number" },
|
|
@@ -12,15 +11,16 @@ export default {
|
|
|
12
11
|
},
|
|
13
12
|
component: StaticImage,
|
|
14
13
|
title: "Components/Common/Image/StaticImage",
|
|
15
|
-
}
|
|
14
|
+
} satisfies Meta<typeof StaticImage>;
|
|
16
15
|
|
|
17
|
-
|
|
18
|
-
<StaticImage {...args} />
|
|
19
|
-
);
|
|
16
|
+
export default meta;
|
|
20
17
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
type Story = StoryObj<typeof meta>;
|
|
19
|
+
|
|
20
|
+
export const StaticImageStory: Story = {
|
|
21
|
+
args: {
|
|
22
|
+
alt: "Data Explorer",
|
|
23
|
+
height: 40,
|
|
24
|
+
src: logo.src,
|
|
25
|
+
},
|
|
26
26
|
};
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import React from "react";
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
3
2
|
import { SearchOffIcon } from "../CustomIcon/components/SearchOffIcon/searchOffIcon";
|
|
4
3
|
import { PRIORITY, StatusIcon } from "./statusIcon";
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
const meta = {
|
|
7
6
|
argTypes: {
|
|
8
7
|
StatusIcon: { control: { disable: true } },
|
|
9
8
|
priority: { control: "select", options: Array.from(Object.keys(PRIORITY)) },
|
|
10
9
|
},
|
|
11
10
|
component: StatusIcon,
|
|
12
11
|
title: "Components/Common/Alert/StatusIcon",
|
|
13
|
-
}
|
|
12
|
+
} satisfies Meta<typeof StatusIcon>;
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
<StatusIcon {...args} />
|
|
17
|
-
);
|
|
14
|
+
export default meta;
|
|
18
15
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
type Story = StoryObj<typeof meta>;
|
|
17
|
+
|
|
18
|
+
export const StatusIconStory: Story = {
|
|
19
|
+
args: {
|
|
20
|
+
StatusIcon: SearchOffIcon,
|
|
21
|
+
priority: PRIORITY.LOW,
|
|
22
|
+
},
|
|
23
23
|
};
|
|
@@ -1,21 +1,23 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { Tag } from "./tag";
|
|
4
4
|
import { TagWarning } from "./tag.styles";
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
const meta = {
|
|
7
7
|
argTypes: {
|
|
8
8
|
children: { control: { disabled: true } },
|
|
9
9
|
},
|
|
10
10
|
component: Tag,
|
|
11
11
|
title: "Components/Common/Alert/Tag",
|
|
12
|
-
}
|
|
12
|
+
} satisfies Meta<typeof Tag>;
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
<TagWarning {...args}>{args.children}</TagWarning>
|
|
16
|
-
);
|
|
14
|
+
export default meta;
|
|
17
15
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
type Story = StoryObj<typeof meta>;
|
|
17
|
+
|
|
18
|
+
export const WarningTagStory: Story = {
|
|
19
|
+
args: {
|
|
20
|
+
children: "Please note",
|
|
21
|
+
},
|
|
22
|
+
render: (args) => <TagWarning {...args}>{args.children}</TagWarning>,
|
|
21
23
|
};
|