Calendar/wwwroot/css
Janus C. H. Knudsen a0c0ef9e8d Refactor calendar V2 core with DI and new features
Introduces dependency injection container and composition root
Adds core services like DateService and NavigationAnimator
Simplifies CalendarOrchestrator with improved store handling
Implements mock stores and demo application for V2 calendar
2025-12-07 14:31:16 +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 Refactor calendar V2 core with DI and new features 2025-12-07 14:31:16 +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