vaadin/vaadin-date-picker

How to enlarge calendar fonts

qweluke opened this issue · 3 comments

Description

So I am using Stencil.js to build my web comonent and I wanted to use datepicker but it seems that ther's this weird issue with font-size in calendar dropdown and I don't know how to fix it
I think it might be some kind of issue with em fonts as I am not able to define root size so I would like to switch them to px..

As for now I am using this styles:

<vaadin-date-picker
     min={this.form.checkInDate || this.yesterdayDate}
     value={this.form.checkOutDate}
     id="end"/>

:host {
  --lumo-font-size-m: 14px; //changes text size in input only
  --vaadin-text-field-default-width: 100%;
  --lumo-contrast-10pct: #fff;
  --lumo-border-radius: 6px;

  font-size: 62.5%; // not working
}

Expected outcome

Actual outcome

https://i.imgur.com/L50wpxw.jpg

Browsers Affected

all

The date-picker overlay is teleported under document.body, in order to avoid any problems with z-index on positioned ancestors. So you need to override custom CSS properties under html:

html  {
  --lumo-font-size-m: 1.25rem;
}

OK, I have added styles via JS and it is working now

@Component({
    tag: 'my-fancy-component'
})
export class MyApp {

    @Prop({ context: 'store' }) store: Store;
    @Prop() lang: string;
    @Prop() subid: string;

    componentWillLoad() {

        //hotfix for calendar dropdown dates size
        document.documentElement.style.setProperty('--lumo-font-size-xxs', '12px');
        document.documentElement.style.setProperty('--lumo-font-size-xs', '13px');
        document.documentElement.style.setProperty('--lumo-font-size-s', '14px');
        document.documentElement.style.setProperty('--lumo-font-size-m', '16px');
        document.documentElement.style.setProperty('--lumo-font-size-l', '18px');
        document.documentElement.style.setProperty('--lumo-font-size-xl', '28px');
        document.documentElement.style.setProperty('--lumo-font-size-xl', '28px');
        document.documentElement.style.setProperty('--lumo-font-size-xxl', '40px');


        document.documentElement.style.setProperty('--lumo-size-xs', '26px');
        document.documentElement.style.setProperty('--lumo-size-s', '30px');
        document.documentElement.style.setProperty('--lumo-size-m', '36px');
        document.documentElement.style.setProperty('--lumo-size-l', '44px');
        document.documentElement.style.setProperty('--lumo-size-xl', '56px');
)
}

I recommend using https://demo.vaadin.com/lumo-editor/ to customise Lumo variables.
Especially, the "Typography" tab provides you a set of control to adjust the font sizes.

Note that Lumo recommends to use rem units over px. You can use following sizes:

html {
  --lumo-font-size: 1rem;
  --lumo-font-size-xxxl: 3rem;
  --lumo-font-size-xxl: 2.25rem;
  --lumo-font-size-xl: 1.75rem;
  --lumo-font-size-l: 1.375rem;
  --lumo-font-size-m: 1.125rem;
  --lumo-font-size-s: 1rem;
  --lumo-font-size-xs: 0.875rem;
  --lumo-font-size-xxs: 0.8125rem;
}

You can add these properties via JS as you do in the above example, if that works better for you.