// templui component calendar - version: v0.84.0 installed by templui v0.84.0 package calendar import ( "git.jmbit.de/jmb/scanfile/server/web/templui/components/icon" "git.jmbit.de/jmb/scanfile/server/web/templui/utils" "strconv" "time" ) type LocaleTag string var ( LocaleDefaultTag = LocaleTag("en-US") LocaleTagChinese = LocaleTag("zh-CN") LocaleTagFrench = LocaleTag("fr-FR") LocaleTagGerman = LocaleTag("de-DE") LocaleTagItalian = LocaleTag("it-IT") LocaleTagJapanese = LocaleTag("ja-JP") LocaleTagPortuguese = LocaleTag("pt-PT") LocaleTagSpanish = LocaleTag("es-ES") ) type Props struct { ID string Class string LocaleTag LocaleTag Value *time.Time Name string InitialMonth int // Optional: 0-11 (Default: current or from Value). Controls the initially displayed month view. InitialYear int // Optional: (Default: current or from Value). Controls the initially displayed year view. } templ Calendar(props ...Props) { {{ var p Props if len(props) > 0 { p = props[0] } if p.ID == "" { p.ID = utils.RandomID() + "-calendar" } if p.Name == "" { // Should be provided by parent (e.g., DatePicker or in standalone usage) p.Name = p.ID + "-value" // Fallback name } if p.LocaleTag == "" { p.LocaleTag = LocaleDefaultTag } initialView := time.Now() if p.Value != nil { initialView = *p.Value } initialMonth := p.InitialMonth initialYear := p.InitialYear // Use year from initialView if InitialYear prop is invalid/unset (<= 0) if initialYear <= 0 { initialYear = initialView.Year() } // Use month from initialView if InitialMonth prop is invalid OR // if InitialMonth is default 0 AND InitialYear was also defaulted (meaning neither was likely set explicitly) if (initialMonth < 0 || initialMonth > 11) || (initialMonth == 0 && p.InitialYear <= 0) { initialMonth = int(initialView.Month()) - 1 // time.Month is 1-12 } initialSelectedISO := "" if p.Value != nil { initialSelectedISO = p.Value.Format("2006-01-02") } }}