From 95e95100b413b0d92e25ad1b3b940eb77e19c784 Mon Sep 17 00:00:00 2001 From: Sampo Tawast Date: Wed, 13 Sep 2023 11:41:31 +0300 Subject: [PATCH 1/6] feat!: restructure frontend of application step 2 --- .../applicant/public/locales/en/common.json | 58 +- .../applicant/public/locales/fi/common.json | 58 +- .../applicant/public/locales/sv/common.json | 58 +- .../step1/companyInfo/CompanyInfo.tsx | 56 +- .../__tests__/CompanyInfo.test.tsx | 4 - .../step2/ApplicationFormStep2.tsx | 696 +++++++----------- .../step2/useApplicationFormStep2.ts | 54 +- .../application/step2/utils/validation.ts | 210 ++---- .../step3/ApplicationFormStep3.tsx | 11 +- .../step3/useApplicationFormStep3.ts | 21 +- .../step5/employeeView/EmployeeView.tsx | 7 - .../src/hooks/useDependentFieldsEffect.ts | 54 +- .../applicant/src/hooks/useFormActions.tsx | 2 + .../handler/public/locales/fi/common.json | 4 +- .../employeeSection/EmployeeSection.tsx | 7 - frontend/benefit/shared/src/constants.ts | 6 + .../benefit/shared/src/types/application.d.ts | 13 +- .../forms/section/FormSection.sc.ts | 2 + 18 files changed, 564 insertions(+), 757 deletions(-) diff --git a/frontend/benefit/applicant/public/locales/en/common.json b/frontend/benefit/applicant/public/locales/en/common.json index 90da4ba9b2..9cbe46e209 100644 --- a/frontend/benefit/applicant/public/locales/en/common.json +++ b/frontend/benefit/applicant/public/locales/en/common.json @@ -150,10 +150,6 @@ "yes": "Yes", "no": "No" }, - "associationImmediateManagerCheck": { - "label": "Immediate manager for the person to be hired", - "placeholder": "The employer has a proper workspace and a manager (who has supervisory responsibility and is not pay-subsidised) for the person to be hired." - }, "deMinimisAid": { "label": "Has the employer received de minimis aid during the current year or the previous two tax years?", "yes": "Yes", @@ -185,16 +181,17 @@ } }, "employee": { - "heading1": "Person to be employed with the Helsinki benefit", - "heading1Short": "Person to be hired", - "heading2": "Pay subsidy decision", + "heading1": "TODO", + "heading1Short": "TODO", + "heading2": "TODO", "heading3": "Type of benefit applied for", "heading3Long": "Form and date of the applied benefit", - "heading4": "Applied for the period", + "heading4": "TODO", + "heading4Sub1": "TODO", "heading5Employment": "Employment relationship", "heading5Assignment": "Commission", "heading5EmploymentSub1": "Salary costs", - "salaryExpensesExplanation": "The gross salary and indirect labour costs are indicated in EUR per month, holiday bonus as a lump sum", + "salaryExpensesExplanation": "TODO", "tooltips": { "heading5Employment": "Collective agreement applied: e.g. Collective Agreement for the Commercial Sector. If there is no binding collective agreement in the sector, put in a dash.", "heading5EmploymentSub1": "The gross salary is the salary paid to the subsidised employee before the deduction of the employee’s statutory contributions (the employee’s unemployment insurance and pension insurance contributions) and taxes. If the subsidised employee is paid remuneration bonuses (e.g. evening, night or shift work bonus), take the estimated amount into account in the gross salary. The employers’ statutory indirect labour costs include social security expenses, pension insurance, accident insurance and unemployment insurance premiums as well as the mandatory group life insurance premium.\r\n\r\nIndirect labour costs refer to the amount of the employer’s statutory indirect labour costs paid for the salary per month.\r\n\r\nThe holiday bonus is a salary cost to be covered by the subsidy when it is paid for holiday pay during the subsidy period. Estimate the amount of holiday bonus to be paid during the subsidy period. Holiday compensation is not covered by the Helsinki benefit.", @@ -222,6 +219,10 @@ "noAvailableBenefitTypes": { "label": "No types of benefit available", "content": "A company or an association that is not engaged in economic activity can only apply for the Helsinki benefit for salary. Pay subsidy granted for the employment relationship is a prerequisite for the Helsinki benefit for salary." + }, + "apprenticeshipDidYouKnow": { + "label": "TODO", + "content": "TODO" } }, "messages": { @@ -254,10 +255,15 @@ "no": "No", "error": "To be eligible for the subsidy, the municipality of residence must be Helsinki." }, + "associationImmediateManagerCheck": { + "label": "Immediate manager for the person to be hired", + "placeholder": "The employer has a proper workspace and a manager (who has supervisory responsibility and is not pay-subsidised) for the person to be hired." + }, "paySubsidyGranted": { - "label": "Has pay subsidy been granted for the employment relationship?", - "yes": "Yes", - "no": "No" + "label": "TODO", + "paySubsidyDefault": "TODO", + "paySubsidyAged": "TODO", + "paySubsidyNone": "TODO" }, "paySubsidyPercent": { "label": "Pay subsidy percent in the decision" @@ -281,28 +287,36 @@ "placeholder": "Job title" }, "workingHours": { - "label": "Working hours per week", + "label": "Working hours", "placeholder": "Hours", - "view": "Working hours: {{workingHours}} hours per week" + "view": "Working hours: {{workingHours}} hours per week", + "helperText": "hours per week" }, "collectiveBargainingAgreement": { "label": "Collective agreement applied", - "placeholder": "Collective agreement applied" + "placeholder": "Collective agreement applied", + "tooltip": "TODO" }, "monthlyPay": { "label": "Gross salary", "placeholder": "Gross salary", - "view": "Gross salary {{monthlyPay}} EUR per month" + "view": "Gross salary {{monthlyPay}} EUR per month", + "helperText": "TODO", + "tooltip": "TODO" }, "otherExpenses": { "label": "Indirect labour costs", "placeholder": "Indirect labour costs", - "view": "Indirect labour costs {{otherExpenses}} EUR per month" + "view": "Indirect labour costs {{otherExpenses}} EUR per month", + "helperText": "TODO", + "tooltip": "TODO" }, "vacationMoney": { "label": "Holiday bonus", "placeholder": "Holiday bonus", - "view": "Holiday bonus {{vacationMoney}} EUR" + "view": "Holiday bonus {{vacationMoney}} EUR", + "helperText": "TODO", + "tooltip": "TODO" }, "commissionDescription": { "label": "Description of the commission", @@ -350,7 +364,7 @@ "remove": "Delete the attachment" }, "summary": { - "heading1": "Please review the application before submitting." + "heading1": "missing translation" }, "credentials": { "heading1": "Processing of the personal data of the person to be employed", @@ -535,8 +549,12 @@ "page": "Page", "terms": "Terms.PDF" }, + "tooltip": { + "ariaLabel": "Show help text", + "ariaButtonLabel": "Show help text" + }, "utility": { - "and": "ja", + "and": "and", "yes": "Yes", "no": "No", "close": "Close", diff --git a/frontend/benefit/applicant/public/locales/fi/common.json b/frontend/benefit/applicant/public/locales/fi/common.json index 26c28393f2..e350a27504 100644 --- a/frontend/benefit/applicant/public/locales/fi/common.json +++ b/frontend/benefit/applicant/public/locales/fi/common.json @@ -150,10 +150,6 @@ "yes": "Kyllä", "no": "Ei" }, - "associationImmediateManagerCheck": { - "label": "Lähiesihenkilö palkattavalle henkilölle", - "placeholder": "Työnantajalla on asianmukaiset työtilat ja työnjohdollinen, ei-palkkatuettu esihenkilö palkattavalle henkilölle." - }, "deMinimisAid": { "label": "Onko työnantajalle myönnetty kuluvan vuoden ja kahden edellisen verovuoden aikana de minimis -tukea?", "yes": "Kyllä", @@ -185,21 +181,22 @@ } }, "employee": { - "heading1": "Henkilö, jonka työllistämiseen Helsinki-lisää haetaan", - "heading1Short": "Palkattava henkilö", - "heading2": "Palkkatukipäätös", + "heading1": "Työllistettävä henkilö", + "heading1Short": "Työllistettävä henkilö", + "heading2": "Työsuhteeseen myönnetyt valtion tuet", "heading3": "Haettava tukimuoto", "heading3Long": "Haettava tukimuoto ja ajankohta", - "heading4": "Haetaan ajalle", + "heading4": "Mille ajalle haet Helsinki-lisää?", + "heading4Sub1": "Voit hakea Helsinki-lisää työsuhteen keston ajaksi, mutta enintään 12 kuukaudeksi.", "heading5Employment": "Työsuhde", "heading5Assignment": "Toimeksianto", "heading5EmploymentSub1": "Palkkauskustannukset", - "salaryExpensesExplanation": "Bruttopalkka ja sivukulut ilmoitetaan euroina kuukaudessa, lomaraha kertasummana", + "salaryExpensesExplanation": "Ilmoita bruttopalkka, sivukulut ja lomaraha euroina kuukaudessa.", "tooltips": { "heading5Employment": "Sovellettava työehtosopimus: esim. Kaupan työehtosopimus. Jos alalla ei ole velvoittavaa työehtosopimusta, merkitse viiva.", "heading5EmploymentSub1": "Bruttopalkalla tarkoitetaan tuella palkattavalle maksettavaa palkkaa ennen työntekijän lakisääteisten maksujen (työntekijän työttömyysvakuutus- ja eläkevakuutusmaksu) ja verojen pidätystä. Jos tuella palkattavalle maksetaan palkan lisiä (esim. ilta-, yö- tai vuorotyölisä), ota niiden arvioitu määrä huomioon bruttopalkassa. Työnantajan lakisääteisiin sivukuluihin luetaan sosiaaliturva-, työeläkevakuutus-, tapaturmavakuutus- ja työttömyysvakuutusmaksu sekä pakollinen ryhmähenkivakuutusmaksu.\r\n\r\nSivukulut tarkoittavat palkasta maksettavien työnantajan lakisääteisten sivukulujen määrä kuukaudessa.\r\n\r\nLomaraha on tuella katettava palkkauskustannus silloin, kun se maksetaan tukijakson aikana pidetystä vuosilomapalkasta. Arvioi tukijakson aikana maksettavan lomarahan määrä. Lomakorvaus ei ole Helsinki-lisällä katettava korvaus.", "heading5Assignment": "Palkkauskustannukset tooltip text", - "heading2": "Palkkatuki on työttömän työnhakijan työllistymisen edistämiseksi tarkoitettu rahallinen tuki, jonka TE-palvelut voi myöntää työnantajalle palkkauskustannuksiin.", + "heading2": "Palkkatuki ja ja 55-vuotta täyttäneiden työllistämistuki ovat työttömän työnhakijan työllistymisen edistämiseksi tarkoitettuja rahallisia tukia.", "heading3": "Työllistämisen Helsinki-lisä on tarkoitettu ohjaus-, perehdytys-, työväline-, työvaate- ja työtilakustannuksiin silloin, kun niihin ei makseta muuta tukea. Palkan Helsinki-lisä on tarkoitettu työllistetyn henkilön palkkauskustannuksiin (=bruttopalkka, lakisääteiset sivukulut ja lomaraha). Toimeksiannon Helsinki-lisä on tarkoitettu yksittäisen työn tai projektin suorittamiseen." }, "notifications": { @@ -222,6 +219,10 @@ "noAvailableBenefitTypes": { "label": "Ei haettavia tukimuotoja", "content": "Yhteisö, joka ei harjoita taloudellista toimintaa voi hakea ainoastaan Palkan Helsinki-lisää. Palkan Helsinki-lisän edellytyksenä on työsuhteeseen myönnetty palkkatuki." + }, + "apprenticeshipDidYouKnow": { + "label": "Oppisopimukseen Helsinki-lisää voidaan myöntää koko oppisopimuksen ajaksi.", + "content": "Voit hakea Helsinki-lisää enintään 12 kuukauden jaksoissa. Tee uusi hakemus 12 kuukauden Helsinki-lisän tukijakson jälkeen." } }, "messages": { @@ -248,16 +249,21 @@ "placeholder": "040 1234567" }, "isLivingInHelsinki": { - "label": "Työllistetyn kotikunta on Helsinki", + "label": "Onko työllistettävän kotikunta Helsinki työsuhteen alkaessa?", "placeholder": "Kyllä, työllistettävä on kirjoilla Helsingissä viimeistään työsuhteen alkaessa", "yes": "Kyllä", "no": "Ei", "error": "Jotta tukea voidaan myöntää, kotikunnan tulee olla Helsinki." }, + "associationImmediateManagerCheck": { + "label": "Onko työllistettävälle osoitettu työnjohdollinen esihenkilö?", + "placeholder": "Kyllä, työllistettävällä on työnjohdollinen esihenkilö." + }, "paySubsidyGranted": { - "label": "Onko työsuhteeseen myönnetty palkkatuki?", - "yes": "Kyllä", - "no": "Ei" + "label": "Onko työsuhteeseen myönnetty jokin seuraavista tuista?", + "paySubsidyDefault": "Palkkatuki", + "paySubsidyAged": "55 vuotta täyttäneiden työllistämistuki", + "paySubsidyNone": "Työsuhteeseen ei ole myönnetty mitään edeltävistä tuista" }, "paySubsidyPercent": { "label": "Päätöksessä oleva palkkatukiprosentti" @@ -281,28 +287,36 @@ "placeholder": "Tehtävänimike" }, "workingHours": { - "label": "Työaika tuntia viikossa", + "label": "Työaika", "placeholder": "Tunteja", - "view": "Työaika: {{workingHours}} tuntia viikossa" + "view": "Työaika: {{workingHours}} tuntia viikossa", + "helperText": "tuntia viikossa" }, "collectiveBargainingAgreement": { "label": "Sovellettava työehtosopimus", - "placeholder": "Työehtosopimus" + "placeholder": "Työehtosopimus", + "tooltip": "Sovellettava työehtosopimus: esim. Kaupan työehtosopimus. Jos alalla ei ole velvoittavaa työehtosopimusta, merkitse viiva." }, "monthlyPay": { "label": "Bruttopalkka", "placeholder": "Palkka", - "view": "Bruttopalkka {{monthlyPay}} euroa kuukaudessa" + "view": "Bruttopalkka {{monthlyPay}} euroa kuukaudessa", + "helperText": "euroa kuukaudessa", + "tooltip": "Bruttopalkka tarkoittaa palkkasummaa ennen verojen ja lakisääteisten maksujen vähentämistä. Bruttopalkka on merkitty työsopimukseen. Mikäli osana palkkaa maksetaan lisiä, kuten ilta-, yö- tai vuorolisiä, laske arvio lisien määristä mukaan bruttopalkkaan." }, "otherExpenses": { "label": "Sivukulut", "placeholder": "Sivukulut", - "view": "Sivukulut {{otherExpenses}} euroa kuukaudessa" + "view": "Sivukulut {{otherExpenses}} euroa kuukaudessa", + "helperText": "euroa kuukaudessa", + "tooltip": "Sivukulut tarkoittavat palkasta maksettavien työnantajan lakisääteisten sivukulujen määrää kuukaudessa. Sivukuluihin kuuluu sosiaaliturva-, työeläkevakuutus-, tapaturmavakuutus- ja työttömyysvakuutusmaksu sekä pakollinen ryhmähenkivakuutusmaksu. Ilmoita sivukulujen määrä euroina kuukaudessa." }, "vacationMoney": { "label": "Lomaraha", "placeholder": "Lomaraha", - "view": "Lomaraha {{vacationMoney}} euroa" + "view": "Lomaraha {{vacationMoney}} euroa", + "helperText": "euroa kuukaudessa", + "tooltip": "Lomaraha on tuella katettava palkkauskustannus silloin, kun se maksetaan tukijakson aikana pidetystä vuosilomapalkasta. Lomakorvaus ei ole Helsinki-lisällä katettava korvaus. Ilmoita lomarahan määrä euroina kuukaudessa." }, "commissionDescription": { "label": "Toimeksiannon kuvaus", @@ -535,6 +549,10 @@ "page": "Sivu", "terms": "Ehdot.PDF" }, + "tooltip": { + "ariaLabel": "Näytä ohjeteksti", + "ariaButtonLabel": "Näytä ohjeteksti" + }, "utility": { "and": "ja", "yes": "Kyllä", diff --git a/frontend/benefit/applicant/public/locales/sv/common.json b/frontend/benefit/applicant/public/locales/sv/common.json index f8c8007910..4c9d547205 100644 --- a/frontend/benefit/applicant/public/locales/sv/common.json +++ b/frontend/benefit/applicant/public/locales/sv/common.json @@ -150,10 +150,6 @@ "yes": "Ja", "no": "Nej" }, - "associationImmediateManagerCheck": { - "label": "Närmaste chef till personen som anställs", - "placeholder": "Arbetsgivaren har ändamålsenliga arbetslokaler och en till arbetsledningen hörande, ej lönesubventionerad chef för personen som anställs." - }, "deMinimisAid": { "label": "Har arbetsgivaren beviljats de minimis-stöd under det innevarande året eller under de två föregående skatteåren?", "yes": "Ja", @@ -185,16 +181,17 @@ } }, "employee": { - "heading1": "Person för vars anställning man ansöker om Helsingforstillägg", - "heading1Short": "Person som ska anställas", - "heading2": "Beslut om lönesubvention", + "heading1": "TODO", + "heading1Short": "TODO", + "heading2": "TODO", "heading3": "Den stödform som söks", "heading3Long": "Form och datum för stöd som ska sökas", - "heading4": "Ansöks för perioden", + "heading4": "TODO", + "heading4Sub1": "TODO", "heading5Employment": "Anställningsförhållande", "heading5Assignment": "Uppdrag", "heading5EmploymentSub1": "Lönekostnader", - "salaryExpensesExplanation": "Bruttolön och bikostnader anges i euro per månad, semesterpenning som ett engångsbelopp", + "salaryExpensesExplanation": "TODO", "tooltips": { "heading5Employment": "Kollektivavtal som tillämpas: t.ex. kollektivavtal för handeln. Sätt streck om branschen inte har ett bindande kollektivavtal.", "heading5EmploymentSub1": "Med bruttolön avses lönen till den person som anställs med subventionen före innehållande av arbetsgivarens lagstadgade kostnader (arbetslöshets- och pensionsförsäkringspremier för arbetstagaren) och skatter. Om den person som anställs med subventionen får lönetillägg (t.ex. kvälls-, natt- eller skiftarbetstillägg), ska det uppskattade beloppet från dessa beaktas i bruttolönen. Till arbetsgivarens lagstadgade bikostnader räknas socialskyddsavgifterna och premierna för arbetspensionsförsäkringen, olycksfallsförsäkringen och arbetslöshetsförsäkringen samt den obligatoriska grupplivförsäkringen.\r\n\r\nMed bikostnader avses arbetsgivarens lagstadgade bikostnader per månad.\r\n\r\nSemesterpenning är en lönekostnad som kan täckas med subventionen till den del som semesterpenning betalas för semesterlön som används under subventionsperioden. Uppskatta semesterpenningen som betalas under subventionsperioden. Semesterpenning kan inte täckas med Helsingforstillägg.", @@ -222,6 +219,10 @@ "noAvailableBenefitTypes": { "label": "Inga ansökningsbara stödformer", "content": "En sammanslutning som inte bedriver ekonomisk verksamhet kan endast ansöka om Helsingforstillägg för lön. Förutsättningen för att få Helsingforstillägg för lön är att lönesubvention har beviljats för anställningen." + }, + "apprenticeshipDidYouKnow": { + "label": "TODO", + "content": "TODO" } }, "messages": { @@ -254,10 +255,15 @@ "no": "Nej", "error": "Stöd kan beviljas endast om hemkommunen är Helsingfors." }, + "associationImmediateManagerCheck": { + "label": "Närmaste chef till personen som anställs", + "placeholder": "Arbetsgivaren har ändamålsenliga arbetslokaler och en till arbetsledningen hörande, ej lönesubventionerad chef för personen som anställs." + }, "paySubsidyGranted": { - "label": "Har lönesubvention beviljats för anställningsförhållandet?", - "yes": "Ja", - "no": "Nej" + "label": "TODO", + "paySubsidyDefault": "TODO", + "paySubsidyAged": "TODO", + "paySubsidyNone": "TODO" }, "paySubsidyPercent": { "label": "Lönesubventionsprocent enligt beslutet" @@ -281,28 +287,36 @@ "placeholder": "Titel" }, "workingHours": { - "label": "Arbetstid timmar på vecka", + "label": "Arbetstid", "placeholder": "Timmar", - "view": "Arbetstid timmar: {{workingHours}} timmar på vecka" + "view": "Arbetstid timmar: {{workingHours}} timmar på vecka", + "helperText": "timmar på vecka" }, "collectiveBargainingAgreement": { "label": "Kollektivavtal som tillämpas", - "placeholder": "Kollektivavtal som tillämpas" + "placeholder": "Kollektivavtal som tillämpas", + "tooltip": "TODO" }, "monthlyPay": { "label": "Bruttolön", "placeholder": "Bruttolön", - "view": "Bruttolön {{monthlyPay}} euro per månad" + "view": "Bruttolön {{monthlyPay}} euro per månad", + "helperText": "TODO", + "tooltip": "TODO" }, "otherExpenses": { "label": "Bikostnader", "placeholder": "Bikostnader", - "view": "Bikostnader {{otherExpenses}} euro per månad" + "view": "Bikostnader {{otherExpenses}} euro per månad", + "helperText": "TODO", + "tooltip": "TODO" }, "vacationMoney": { "label": "Semesterpenning", "placeholder": "Semesterpenning", - "view": "Semesterpenning {{vacationMoney}} euro" + "view": "Semesterpenning {{vacationMoney}} euro", + "helperText": "TODO", + "tooltip": "TODO" }, "commissionDescription": { "label": "Beskrivning av uppdraget", @@ -350,7 +364,7 @@ "remove": "Ta bort bilaga" }, "summary": { - "heading1": "Ole hyvä ja tarkista hakemus" + "heading1": "missing translation" }, "credentials": { "heading1": "Behandling av den anställdas personuppgifter", @@ -535,8 +549,12 @@ "page": "Sida", "terms": "Terms.PDF" }, + "tooltip": { + "ariaLabel": "Visa hjälptext", + "ariaButtonLabel": "Visa hjälptext" + }, "utility": { - "and": "ja", + "and": "och", "yes": "Ja", "no": "Nej", "close": "Stäng", diff --git a/frontend/benefit/applicant/src/components/applications/forms/application/step1/companyInfo/CompanyInfo.tsx b/frontend/benefit/applicant/src/components/applications/forms/application/step1/companyInfo/CompanyInfo.tsx index 8f308c31c2..aef4dc4e01 100644 --- a/frontend/benefit/applicant/src/components/applications/forms/application/step1/companyInfo/CompanyInfo.tsx +++ b/frontend/benefit/applicant/src/components/applications/forms/application/step1/companyInfo/CompanyInfo.tsx @@ -80,38 +80,68 @@ const CompanyInfo: React.FC = ({ ) : (
<$CompanyInfoRow> - <$CompanyInfoLabel>Työnantajan nimi + <$CompanyInfoLabel> + {t(`${translationsBase}.fields.companyName`)} + <$CompanyInfoValue> {data.name} - +
@@ -122,7 +152,11 @@ const CompanyInfo: React.FC = ({ translateBackendErrorMessage(t, error) ) : ( <$HintText> - +