Calendar/wwwroot/css
Janus C. H. Knudsen 6723658fd9 Adds header drawer and event drag interactions
Introduces HeaderDrawerRenderer and HeaderDrawerLayoutEngine to support dragging events into an all-day header drawer

Enables dynamic event placement and conversion between timed and all-day events through new drag interactions
Implements flexible layout calculation for header items with column and row management

Extends DragDropManager to handle header zone interactions
Adds new event types for header drag events
2025-12-10 23:11:11 +01:00
..
src Enhances event color styling with flexible metadata system 2025-11-25 23:48:30 +01:00
v2 Adds header drawer and event drag interactions 2025-12-10 23:11:11 +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