mirror of
https://github.com/storytold/deckcraft.git
synced 2026-10-24 18:46:57 -06:00
`HeaderFooter::date_format` is documented as the `datetime1`…`datetime13` format for automatic dates, and nothing read it: grep found one hit, the field's own declaration. The Date placeholder was hardcoded to `datetime1`, so the footer date was always the short date, and a `dateFormat` parameter was accepted and silently dropped — the command returned Ok, so a caller could not tell. Everything else was already there: `datetime::field_text` renders all thirteen types and Insert ▸ Date & Time already offers them. Missing was the wiring from a choice to the placeholder. `design.headerFooter` now takes `dateFormat`, refuses anything outside the thirteen rather than ignoring it, stores it, creates the placeholder with that field type, and updates an existing one when the format changes — as it already did for a changed `dateText`. A fixed date still wins as plain text, and going back to automatic restores the remembered format. `datetime::DATE_KINDS` is the canonical list; `dialogs.rs` uses it rather than its own copy of the same thirteen strings, and the Header & Footer dialog gains a Format dropdown listing each type by what it would show now, enabled while the date is automatic. Not here: reading a deck does not populate `date_format`, so the dialog shows datetime1 preselected for a deck whose dates are something else until the user picks. That is a pptx read-side change and wants its own PR.