Calendar/wwwroot/css
Janus C. H. Knudsen dee977d4df Refactors header and scroll management logic
Updates ScrollManager to dynamically sync header spacer height using ResizeObserver

Removes explicit spacer animation from HeaderDrawerManager
Simplifies header and scroll interaction by moving height synchronization logic to ScrollManager
2025-12-07 23:25:02 +01:00
..
src Enhances event color styling with flexible metadata system 2025-11-25 23:48:30 +01:00
calendar-base-css.css Enhances event color styling with flexible metadata system 2025-11-25 23:48:30 +01:00
calendar-components-css.css Improves click handling on calendar elements 2025-10-07 17:36:03 +02:00
calendar-events-css.css Enhances event color styling with flexible metadata system 2025-11-25 23:48:30 +01:00
calendar-layout-css.css Refactors all-day event layout tracking logic 2025-11-11 18:08:48 +01:00
calendar-month-css.css Improves click handling on calendar elements 2025-10-07 17:36:03 +02:00
calendar-popup-css.css Improves click handling on calendar elements 2025-10-07 17:36:03 +02:00
calendar-sliding-animation.css Steps in the right direction for animated date change 2025-08-12 00:07:39 +02:00
calendar-v2.css Refactors header and scroll management logic 2025-12-07 23:25:02 +01:00
README.md WIP on master 2025-11-03 14:54:57 +01:00
test-nesting.css WIP on master 2025-11-03 14:54:57 +01:00

CSS Build Process

Dette projekt bruger PostCSS til at kompilere moderne nested CSS til browser-kompatibel CSS.

Mappestruktur

wwwroot/css/
├── src/                          # Source CSS filer med nesting
│   ├── calendar-base-css.css
│   ├── calendar-layout-css.css
│   └── ...
├── calendar-base-css.css         # Compiled CSS (genereret automatisk)
├── calendar-layout-css.css       # Compiled CSS (genereret automatisk)
└── ...

Workflow

Development

  1. Rediger CSS i src/ mappen

    • Brug moderne CSS nesting
    • Skriv nested selectors med &
    • Brug CSS custom properties
  2. Build CSS

    npm run css:build
    
  3. Watch mode (auto-rebuild)

    npm run css:watch
    

Production

npm run css:build:prod

Dette vil:

  • Kompilere nested CSS
  • Tilføje vendor prefixes (autoprefixer)
  • Minificere CSS (cssnano)
  • Fjerne comments

CSS Nesting Eksempel

Source (src/calendar-layout-css.css)

swp-allday-container {
  display: grid;
  
  swp-allday-event {
    height: 22px;
    padding: 2px 4px;
    
    &[data-type="meeting"] {
      background: var(--color-event-meeting);
      
      &.highlight {
        background: var(--color-event-meeting-hl);
      }
    }
    
    &:hover {
      opacity: 0.9;
    }
    
    swp-event-title {
      font-size: 12px;
    }
  }
}

Compiled (calendar-layout-css.css)

swp-allday-container {
  display: grid;
}

swp-allday-container swp-allday-event {
  height: 22px;
  padding: 2px 4px;
}

swp-allday-container swp-allday-event[data-type="meeting"] {
  background: var(--color-event-meeting);
}

swp-allday-container swp-allday-event[data-type="meeting"].highlight {
  background: var(--color-event-meeting-hl);
}

swp-allday-container swp-allday-event:hover {
  opacity: 0.9;
}

swp-allday-container swp-allday-event swp-event-title {
  font-size: 12px;
}

Fordele ved CSS Nesting

  1. Mindre gentagelse - Ingen behov for at gentage parent selectors
  2. Bedre læsbarhed - Strukturen matcher DOM hierarkiet
  3. Lettere vedligeholdelse - Relaterede styles er grupperet
  4. Mindre CSS - Færre bytes i source filer
  5. Bedre organisation - Logisk gruppering af styles

PostCSS Plugins

  • postcss-nesting: Konverterer nested CSS til flat CSS
  • autoprefixer: Tilføjer vendor prefixes automatisk
  • cssnano: Minificerer CSS i production mode

Vigtige Noter

⚠️ Rediger ALDRIG de compiled CSS filer direkte!

  • Alle ændringer skal laves i src/ mappen
  • De compiled filer bliver overskrevet ved hver build

⚠️ Husk at køre build før commit

  • Sørg for at både source og compiled filer er opdateret
  • Kør npm run css:build før du committer

Browser Support

PostCSS sikrer kompatibilitet med:

  • Chrome/Edge (sidste 2 versioner)
  • Firefox (sidste 2 versioner)
  • Safari (sidste 2 versioner)

Troubleshooting

CSS ændringer vises ikke

  1. Tjek at du har kørt npm run css:build
  2. Tjek at du redigerer filer i src/ mappen
  3. Hard refresh browseren (Ctrl+Shift+R)

Build fejl

  1. Tjek CSS syntax i source filerne
  2. Sørg for at alle { har matchende }
  3. Tjek at nesting er korrekt formateret