Versiopäivitysohje
Ohje Kela Design Systemin versiopäivityksiin.
Ohje Kela Design Systemin versiopäivityksiin.
Ohjeeseen on koottu merkittävimmät suurten (major) versioiden päivityksiin liittyvät rikkovat muutokset. Lisätietoja julkaisukäytännöistä. Muita muutoksia voi tutkia versiohistoriasta.
6.0.3 (ei pakollinen, mutta suositeltu).<a>-linkit Link-komponentilla.hasLegacyColumns-propin käyttö md={6}-propilla tai aseta columns dynaamisesti.labelWeekNumberHeader: viikkonumeron otsikkolabelNav: kuukauden vaihto -painikkeiden navigaatioalueen otsikkoenum-jäsenten nimet alkamaan isolla alkukirjaimella, jos niitä on importoitu sovellukseen.
DatePickerV2ErrorType.invalidFormat → DatePickerV2ErrorType.InvalidFormatenum-tyypit:
DatePickerV2ErrorTypeDateRangePickerV2ErrorTypeDateRangePickerV2InputTypeFocusRingFocusRingTypeTimeValidatorErrorTypetext-truncate.min.css-tiedosto sovellukseen, jos tyylitiedostot on tuotu sovellukseen yksitellen.useCollapse-hook uudella useCollapseV2-hookilla.body-propin sisältö children-elementille.
disableCloseRead-propin toiminnasta on tullut oletus.kds-dropdown__menu--show → kds-dropdown__menu--open (jos käytössä on vain CSS-tyylit).className-prop iconClassName-propiksi, jos CSS-luokan täytyy olla suoraan SVG-elementillä.size="xs" → size="relative" (tai poista size-prop), jos Spinnerin koon tulee skaalautua ympäröivän elementin tekstin koon mukaisesti.IconProps-tyypitystä käytetään sovelluksessa.
type="ui|deco".IconProps:n voi korvata IconUiProps- tai IconDecoProps-tyypityksillä.relative, xxs, xs, smxl, xxlborder-width-small, border-width-medium, border-width-large → border-width-sm, border-width-md, border-width-lgbox-shadow-small, box-shadow-medium, box-shadow-large → box-shadow-sm, box-shadow-md, box-shadow-lgbreakpoint-xxl → breakpoint-2xlduration-small, duration-medium, duration-large → duration-sm, duration-md, duration-lgfont-family → font-family-kelafocus-color-dark, focus-color-light → Teemamuuttujat (värit) (color-focus-inner, color-focus-outer)focus-ring-offset-dark, focus-ring-offset-light, focus-ring-inset-dark, focus-ring-inset-light → Teemamuuttujat (kohdistus)css/themes/legacy/kela.min.css ja css/themes/legacy/kela-dark.min.csscss/themes/legacy/kanta.min.css ja css/themes/legacy/kanta-dark.min.cssreact- ja react-dom-kirjastot vähintään versioon 19.2.3.sass-kirjasto vähintään versioon 1.95.0, jos värityökalut ovat käytössä.5.9.3 (ei pakollinen, mutta suositeltu).node16, nodenext tai bundler (suositus).Modal, DatePickerV2, DateRangePickerV2 tai Sidebar-komponentit ja selaintuen tulee kattaa Safari < 14.1 / iOS < 14.5.scss design-muuttujien polku: dist/tokens/tokens → tokens/base/scsswarning-yellow → kela-warning-yellowsuccess-green → kela-success-greenwarning-red → kela-danger-reddark-orange → korvaavaa palettia ei oledark-red → korvaavaa palettia ei oledark-purple → kela-purpledark-turquoise → kela-turquoisebright-blue → korvaavaa palettia ei olebright-lime → korvaavaa palettia ei olekanta-warning-red → kanta-danger-redcolor-black-100 → color-blackcolor-black-90 → color-black-softlegacy-variables-kanta.min.css ja legacy-variables-kela.min.css ja korvaa poistuneet muuttujat teemamuuttujilla.css/themes/legacy-polusta, jos version 16.x.x CSS-teemamuuttujia on käytetty sovelluksessa räätälöidyn ulkoasun toteuttamiseen.
css/themes/legacy/kela.min.css ja css/themes/legacy/kela-dark.min.csscss/themes/legacy/kanta.min.css ja css/themes/legacy/kanta-dark.min.cssmainbar.css → main-bar.css (jos tyylitiedostot on importoitu yksitellen).id-attribuutit ModalHeader- ja ModalContent-komponenteilta.
id:n voi antaa Modal-komponentille, jolloin alikomponenttien id:t muodostuvat kaavalla [id]-header ja [id]-body.toggle-prop, onClose-propilla.toggle-prop, onClose-propilla.Table-komponentti ja sen alikomponentit vastaavilla TableV2-komponenteilla.
ListGroup-komponentti vastaavankaltaisella toteutuksella. Katso alta ListGroup-komponentin korvaaminen.await waitFor(() => { expect(screen.queryByRole("list")).not.toBeInTheDocument(); });caret-prop käyttämään arvoja up ja down ja poista caretUp-prop.div-elementiksi, jos lista pitää sisällään block-elementtejä.
<DescriptionList itemContentAs="div"> tai <DescriptionListItem contentAs="div">.DescriptionListItem:n sisällön voi pyrkiä muuttamaan inline-elementeiksi validin HTML-rakenteen säilyttämiseksi.Esimerkki, joka käyttää LinkBox-komponenttia koko alueen kokoisen linkin luomiseen.
<List unstyled className="kds-m-0"><ListItem className="kds-mb-0 kds--mt-px"><LinkBox className="kds-focus-ring-inset" href="#" appearance="outline" textColor="dark">Linkki 1</LinkBox></ListItem><ListItem className="kds-mb-0 kds--mt-px"><LinkBox className="kds-focus-ring-inset" href="#" appearance="outline" textColor="dark">Linkki 2</LinkBox></ListItem></List>
Esimerkki, joka käyttää LinkWithInfo-komponenttia ja apuluokkia reunaviivojen tekemiseen.
<List unstyled className="kds-m-0"><ListItem className="kds-m-0 kds--mt-px kds-border kds-border-solid kds-border-default"><LinkWithInfo href="#" className="kds-p-4 sm:kds-px-6 kds-w-full" infoText="Linkin lisätieto">Linkki 1</LinkWithInfo></ListItem><ListItem className="kds-m-0 kds--mt-px kds-border kds-border-solid kds-border-default"><LinkWithInfo href="#" className="kds-p-4 sm:kds-px-6 kds-w-full" infoText="Linkin lisätieto">Linkki 2</LinkWithInfo></ListItem></List>
react- ja react-dom-kirjastot vähintään versioon 19.1.0.IconDeco-alkuisesti (esim. IconNetwork → IconDecoNetwork).IconUi-alkuisesti (esim. IconLock → IconUiLock).aria-hidden={undefined} kuvitusikoneille, käyttöliittymäkuvakkeille ja logoille, jos niiden nimeäminen on toteutettu jotenkin muuten kuin aria-label-, aria-labelledby- tai aria-describedby-attribuuteilla.Handelsbanken-logo käytöstä.filterItems-funktiolla, jos tarvitset normalisoinnille Unicode-merkkejä U+0300 – U+036F laajempaa tukea.variant="outline" → appearance="outline".InputGroup-, InputLabel-, InputText-komponentit ja anna nimilappu, ohjetekstit ja virheilmoitukset suoraan komponentin propeille.input-kentän toimintaa.select- ja multiline-propit element-propilla.size-prop myös painikkeille ja poista sm- ja lg-arvot ButtonGroup-komponentilta.ButtonToolbar-komponentti ButtonGroup-komponentilla (isToolbar-prop).Combobox-komponentti ComboboxV2-komponentilla.Media-komponentti Card-komponentilla tai CSS:n flex-tyyleillä.expect(await screen.findByRole("dialog")).toBeTruthy()await waitFor(() => { expect(screen.queryByRole("dialog")).not.toBeInTheDocument(); });autoSize-prop seuraavilta komponenteilta, jos se on käytössä:
const throttled = useThrottle(callback, 250); → const { throttled } = useThrottle(callback, 250);const debounced = useDebounce(callback, 250); → const { debounced } = useDebounce(callback, 250);cancel-funktio useEffectin cleanup:sta (kutsutaan nyt hookin toimesta automaattisesti).dist/css/legacy/legacy-utils.min.css-tiedostosta tulleet Bootstrapin CSS-apuluokat nykyisillä CSS-apuluokilla tai muilla vastaavilla.
legacy-utils.min.css-tiedoston voi kopioida sovellukseen KDS:n vanhemmasta versiosta, jolloin muutoksia ei tarvita.dist/css/themes/kela.min.css tai dist/css/themes/kanta.min.css tulleet teemamuuttujat uusilla vastaavilla, jos niitä on käytetty sovelluksessa.dist/css/legacy/legacy-variables-kanta.min.css ja dist/css/legacy/legacy-variables-kela.min.css.util-prop className-propilla, jos se on käytössä apuluokkien välittämiseen.interface → type tyypitysmuutoksen aiheuttamat virheet komponenttien exportoiduissa tyypityksissä, jos niitä on hyödynnetty tai laajennettu sovelluksessa.Page-komponentti:
Page-komponentissa olleen kohdistuselementin toteuttamiseen.navLinks-prop lapsielementeillä (children).SidebarNavItem ja SidebarNavHeading Nav-komponenteilla.sticky-prop arvoon true, jos haluat pitää ne jatkossakin sisällön päällä kelluvina.MainBarSearch-komponentti MainBarSearchV2-komponentilla.MainBarAction-komponentin labelUtil-prop labelClassName-propilla.TitleBarAction-komponentin labelUtil-prop labelClassName-propilla.DropdownToggle-komponentin labelUtil-prop labelClassName-propilla, silloin kuin DropdownToggle käyttää kyseisiä komponentteja as-propilla.type-prop seuraavasti:
type="info" → variant="primary" icon={<IconQuestionCircle />}type="notice" → variant="danger" icon={<IconExclamationCircle />}type="example" → variant="warning" icon={<IconBulb />}deco-hakemistosta.DatePicker- ja DateRangePicker-komponentit DatePickerV2- ja DateRangePickerV2-komponenteilla.value- ja defaultValue-oletusarvoista etunollat, esim. date-fns format(new Date(), "d.M.yyyy").showLeadingZeros={true}, jos päivämäärien etunollat halutaan pitää käytössä.role="group".as="section" ja aria-labelledby, jotka tulevat nyt oletuksena.headingAs-propilla sivun rakenteen mukainen otsikkotaso (h1-h6) ja muuta sen sisällä olevat elementit span-elementeiksi.
AccordionToggle:n sisällä on käytetty otsikkoa, tulee se muuttaa malliin <Heading as="span" size={3}>, jolloin size määrittää visuaalisen koon ja as on aina span-elementti.collapseTitleAs-propilla sivun rakenteen mukainen otsikkotaso (h1-h6).headingAs-propilla sivun rakenteen mukainen otsikkotaso (h1-h6).useCollapse-komponenteilla rakennetuille toteutuksille sivun rakenteen mukaiset otsikkotasot tarvittaessa.select ja multiline, element-propilla, jolle annetaan arvoksi input, textarea tai select.onChange-käsittelijän tulee nyt vastata renderöitävää elementtiä (element="textarea" → onChange={(e: React.ChangeEvent<HTMLTextAreaElement>) => setValue(e.target.value)}).copyrightText, links ja isLegacy.useSort(data, locale, options) → useSort(data, { locale: "fi", options }).data as MyData[] konversiot voi poistaa.IconLeftArrowCircle → IconArrowCircleLeftIconRightArrowCircle → IconArrowCircleRightIconLaptopClock → IconLaptopLockother-hakemisto) kuvitusikoneilla (deco-hakemisto) alla olevan taulukon mukaisesti.size="xs" → size="relative" arvolla, jos xs-arvo muuttaa ikonin tai kuvakkeen kokoa.| Poistuva kuvitusikoni | Korvaava kuvitusikoni | Korvaava käyttöliittymäkuvake |
|---|---|---|
| ArrowLeftCircle | ArrowCircleLeft | |
| ArrowRightCircle | ArrowCircleRight | |
| Attachment | Attachment | |
| Bell | Bell | |
| BellCircle | BellCircle | |
| Bicycle | Bicycle | TransportBike |
| Brochyre | Brochure | |
| Bus | - | TransportBus |
| Calendar | CalendarTime | |
| Calendar2 | Calendar | |
| Car | Car | |
| Chat | ChatMessaging | |
| Chatbot | Chatbot | |
| CheckCircle | CheckmarkCircle | |
| Clock | Clock | |
| Cog | Settings | |
| Envelope | Envelope | |
| Envelope2 | EnvelopeOpen | |
| EnvelopeCircle | EnvelopeCircle | |
| ErCircle | HealthMetrics | |
| Exclamation | ExclamationCircle | |
| FamilyCircle | FamilyCircle | |
| FaqCircle | PaperQuestionCircle | |
| Ferry | - | TransportFerry |
| Film | LaptopVideo | |
| Flag | Flag | |
| Globe | Global | |
| GlobeCircle | Global | |
| HandCircle | - | - |
| HandshakeCircle | - | - |
| Heart2Circle | HandHeart | |
| HeartCircle | HeartCircle | |
| Home | House | |
| Home2 | House / Couple / Family | |
| InfoCircle | InfoCircle | |
| Kela | Kela | |
| KelaCircle | KelaCircle | |
| KelaPopup | Kela | |
| Laptop | LaptopQuestion | |
| Laptop2 | Laptop | |
| Laptop2Circle | LaptopCircle | |
| LightBulb | Bulb | |
| LocationDot | - | - |
| LocationKela | - | - |
| LocationMarker | - | - |
| LocationServicePoint | - | - |
| Lock | Locked | |
| LockOpen | LockOpen | |
| Math | Math | |
| MathCircle | MathCircle | |
| Metro | - | TransportMetro |
| MobileCircle | MobileDeviceCircle | |
| MoneyCircle | MoneyCircle | |
| NetworkCircle | Network | |
| Paper | Paper | |
| Papers | Papers | |
| Person | Person | |
| Persons | Persons | |
| PersonsCircle | PersonsCircle | |
| PiggyBankCircle | Purse | |
| PillCircle | PillsCircle | |
| Placeholder | Placeholder | - |
| PlasterCircle | HealthcareCircle | |
| QuestionCircle | QuestionCircle | |
| QuotesCircle | QuotesCircle | |
| Send | SendPlane | |
| SendBoxed | SendPlane | |
| SocialNetworkCircle | Partnership | |
| StetoscopeCircle | PersonDoctor | |
| TelcoCircle | LaptopMeeting | |
| Telephone | Telephone | |
| TelephoneCircle | TelephoneCircle | |
| ThumbUpCircle | ThumbUp | |
| Train | - | TransportTrain |
| Tram | - | TransportTram |
| VanCircle | VanCircle | |
| VideoCircle | LaptopVideo | |
| Walk | Walk | |
| Write | Write |
maxWidth="xl"-prop, jos haluat pitää elementin leveyden ennallaan.maxWidth="xl"-prop, jos haluat pitää elementin leveyden ennallaan.logo-proppia käyttäen.flush-prop.useLegacyMenu-prop ja kääri dropdownin sisältö DropdownMenuGroup-komponenttiin, joka tekee ul-listan.$breakpoint-xs, BREAKPOINT_XS, --kds-t-breakpoint-xs design-muuttujat, base-muuttujalla (xs = 428, base = 0), jos käytössä.--kds-dropdown-z-index-teemamuuttuja --kds-z-dropdown-muuttujalla, jos käytössä.form-prop, gx={2}-propilla.horizontal="xs" => horizontal, asettaaksesi painikkeet jokaisella näyttökoolla vierekkäin.borderless-prop, appearance="borderless"-propilla.variant="secondary" => variant="primary-medium"variant="light" => variant="primary-light"highlightValue => variant="danger-light"Table ja Tabs-komponenttien small, medium, large ja xlarge propit size="sm|md|lg|xl"-propeilla.