From abbb9c341f5c5bff46e5abb505989a2b6a051a59 Mon Sep 17 00:00:00 2001 From: volubyl Date: Thu, 4 May 2023 17:55:17 +0200 Subject: [PATCH] fix contribuer page --- .../components/DatasetForm/DatasetForm.svelte | 34 +++-- .../_GeographicalCoverageField.svelte | 121 ----------------- .../DatasetForm/_LicenseField.spec.ts | 83 ------------ .../DatasetForm/_LicenseField.svelte | 123 ------------------ .../DatasetForm/_LicenseFieldHintText.svelte | 10 ++ .../FormatSelector/FormatSelector.svelte | 26 ++-- .../SearchableComboBox/Basic.svelte | 52 ++++---- .../WithAddItemButton.svelte | 1 + .../lib/components/SkipLink/SkipLink.svelte | 4 +- .../src/routes/(app)/contribuer/+page.svelte | 6 +- client/src/routes/(app)/contribuer/+page.ts | 2 +- client/src/tests/e2e/contribuer.spec.ts | 10 +- 12 files changed, 89 insertions(+), 383 deletions(-) delete mode 100644 client/src/lib/components/DatasetForm/_GeographicalCoverageField.svelte delete mode 100644 client/src/lib/components/DatasetForm/_LicenseField.spec.ts delete mode 100644 client/src/lib/components/DatasetForm/_LicenseField.svelte create mode 100644 client/src/lib/components/DatasetForm/_LicenseFieldHintText.svelte diff --git a/client/src/lib/components/DatasetForm/DatasetForm.svelte b/client/src/lib/components/DatasetForm/DatasetForm.svelte index 0f774aa4..37a0f04d 100644 --- a/client/src/lib/components/DatasetForm/DatasetForm.svelte +++ b/client/src/lib/components/DatasetForm/DatasetForm.svelte @@ -16,7 +16,6 @@ import { formatHTMLDate } from "$lib/util/format"; import { account } from "src/lib/stores/auth"; import ContactEmailsField from "../ContactEmailsField/ContactEmailsField.svelte"; - import GeographicalCoverageField from "./_GeographicalCoverageField.svelte"; import Select from "../Select/Select.svelte"; import InputField from "../InputField/InputField.svelte"; import TextareaField from "../TextareaField/TextareaField.svelte"; @@ -24,12 +23,13 @@ import { handleSelectChange } from "src/lib/util/form"; import TagSelector from "../TagSelector/TagSelector.svelte"; import RadioGroupField from "../RadioGroupField/RadioGroupField.svelte"; - import LicenseField from "./_LicenseField.svelte"; + import LicenseFieldHintText from "./_LicenseFieldHintText.svelte"; import type { Catalog, ExtraFieldValue } from "src/definitions/catalogs"; import ExtraField from "./_ExtraField.svelte"; import Alert from "../Alert/Alert.svelte"; import type { DataFormat } from "src/definitions/dataformat"; import FormatSelector from "../FormatSelector/FormatSelector.svelte"; + import SearchableComboBox from "../SearchableComboBox/Basic.svelte"; export let submitLabel = "Publier la fiche de données"; export let loadingLabel = "Publication en cours..."; @@ -273,11 +273,20 @@ on:input={handleFieldChange} /> - updateValidateField("geographicalCoverage", ev.detail)} + options={geographicalCoverages.map((item) => { + return { + label: item, + value: item, + }; + })} + on:selectOption={(ev) => + updateValidateField("geographicalCoverage", ev.detail.value)} /> @@ -397,11 +406,20 @@ on:input={handleFieldChange} /> - updateValidateField("license", ev.detail)} + options={licenses.map((item) => { + return { + label: item, + value: item, + }; + })} + on:selectOption={(ev) => updateValidateField("license", ev.detail.value)} /> diff --git a/client/src/lib/components/DatasetForm/_GeographicalCoverageField.svelte b/client/src/lib/components/DatasetForm/_GeographicalCoverageField.svelte deleted file mode 100644 index 5ed30cea..00000000 --- a/client/src/lib/components/DatasetForm/_GeographicalCoverageField.svelte +++ /dev/null @@ -1,121 +0,0 @@ - - - - - diff --git a/client/src/lib/components/DatasetForm/_LicenseField.spec.ts b/client/src/lib/components/DatasetForm/_LicenseField.spec.ts deleted file mode 100644 index 0dbb87f3..00000000 --- a/client/src/lib/components/DatasetForm/_LicenseField.spec.ts +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @jest-environment jsdom - */ -import "@testing-library/jest-dom"; - -import { render, fireEvent } from "@testing-library/svelte"; -import LicenseField from "./_LicenseField.svelte"; - -describe("License field", () => { - test("should have an input", () => { - const { getByRole } = render(LicenseField); - const input = getByRole("combobox"); - expect(input).toBeInTheDocument(); - expect(input).toHaveAttribute("autocomplete", "off"); - }); - - test("should show nothing on click if no suggestions", async () => { - const { getByRole, queryAllByRole } = render(LicenseField); - await fireEvent.focus(getByRole("combobox")); - const options = queryAllByRole("option"); - expect(options.length).toBe(0); - }); - - test("should not show suggestions initially", async () => { - const { queryAllByRole } = render(LicenseField, { - props: { suggestions: ["Licence Ouverte", "ODC Open Database License"] }, - }); - const options = queryAllByRole("option"); - expect(options.length).toBe(0); - }); - - test("should show suggestions on focusing the input", async () => { - const { getByRole, getAllByRole } = render(LicenseField, { - props: { suggestions: ["Licence Ouverte", "ODC Open Database License"] }, - }); - await fireEvent.focus(getByRole("combobox")); - const suggestions = getAllByRole("option"); - expect(suggestions.length).toBe(2); - expect(suggestions[0]).toHaveTextContent("Licence Ouverte"); - expect(suggestions[1]).toHaveTextContent("ODC Open Database License"); - }); - - test("should filter suggestions by input value", async () => { - const { getByRole, getAllByRole } = render(LicenseField, { - props: { suggestions: ["Licence Ouverte", "ODC Open Database License"] }, - }); - - const input = getByRole("combobox"); - - await fireEvent.focus(input); - await fireEvent.input(input, { target: { value: "ouv" } }); - expect(input).toHaveValue("ouv"); - - const suggestions = getAllByRole("option"); - expect(suggestions.length).toBe(1); - expect(suggestions[0]).toHaveTextContent("Licence Ouverte"); - }); - - test("should choose a suggestion", async () => { - const { getByRole, getAllByRole, component } = render(LicenseField, { - props: { suggestions: ["Licence Ouverte", "ODC Open Database License"] }, - }); - - const input = getByRole("combobox"); - await fireEvent.focus(input); - - const suggestions = getAllByRole("option"); - expect(suggestions.length).toBe(2); - - let value = ""; - component.$on("input", (event) => (value = event.detail)); - await fireEvent.click(suggestions[0]); - expect(value).toBe("Licence Ouverte"); - }); - - test("should show error", async () => { - const { getByRole } = render(LicenseField, { - props: { error: "Unexpected error" }, - }); - const input = getByRole("combobox"); - expect(input).toHaveAccessibleDescription("Unexpected error"); - }); -}); diff --git a/client/src/lib/components/DatasetForm/_LicenseField.svelte b/client/src/lib/components/DatasetForm/_LicenseField.svelte deleted file mode 100644 index b3a13770..00000000 --- a/client/src/lib/components/DatasetForm/_LicenseField.svelte +++ /dev/null @@ -1,123 +0,0 @@ - - - - - diff --git a/client/src/lib/components/DatasetForm/_LicenseFieldHintText.svelte b/client/src/lib/components/DatasetForm/_LicenseFieldHintText.svelte new file mode 100644 index 00000000..3a6fa573 --- /dev/null +++ b/client/src/lib/components/DatasetForm/_LicenseFieldHintText.svelte @@ -0,0 +1,10 @@ + + Indiquez la + licence de réutilisation + associée au jeu de données. + diff --git a/client/src/lib/components/FormatSelector/FormatSelector.svelte b/client/src/lib/components/FormatSelector/FormatSelector.svelte index d5694aeb..03ee7d0b 100644 --- a/client/src/lib/components/FormatSelector/FormatSelector.svelte +++ b/client/src/lib/components/FormatSelector/FormatSelector.svelte @@ -63,18 +63,20 @@ on:selectOption={handleSelectFormat} /> -
- {#each selectedFormatOptions as format, index} - {#if format.name} - - {/if} - {/each} -
+ {#if selectedFormatOptions.length > 0} +
+ {#each selectedFormatOptions as format, index} + {#if format.name} + + {/if} + {/each} +
+ {/if}