651f959d7553ee0256b1e0b37ffa83d64709511d lrnassar Mon Mar 16 17:57:16 2026 -0700 Adding accessible labels to form controls across main CGI pages. Extends cheapcgi and hui libraries with aria-label support for track visibility dropdowns, and adds <label> elements to hgBlat, hgTables, hgPcr, and hgGateway form controls. Also adds Form Control Labels section to accessibility page. refs #37253 diff --git src/lib/cheapcgi.c src/lib/cheapcgi.c index d6884a937d0..288b1c4c02e 100644 --- src/lib/cheapcgi.c +++ src/lib/cheapcgi.c @@ -2098,72 +2098,82 @@ cgiMakeDoubleVarInRange(varName,initialVal,title,width,minStr,NULL); } void cgiMakeDoubleVarWithMax(char *varName, double initialVal, char *title, int width, double max) { char maxLimit[20]; char *maxStr=NULL; if ((int)max != NO_VALUE) { safef(maxLimit,sizeof(maxLimit),"%g",max); maxStr = maxLimit; } cgiMakeDoubleVarInRange(varName,initialVal,title,width,NULL,maxStr); } -void cgiMakeDropListClassWithIdStyleAndJavascript(char *name, char *id, char *menu[], - int menuSize, char *checked, char *class, char *style, struct slPair *events) -/* Make a drop-down list with name, id, text class, style and javascript. */ +void cgiMakeDropListClassWithIdStyleJavascriptAndLabel(char *name, char *id, char *menu[], + int menuSize, char *checked, char *class, char *style, struct slPair *events, + char *ariaLabel) +/* Make a drop-down list with name, id, text class, style, javascript and optional aria-label. */ { int i; char *selString; if (checked == NULL) checked = menu[0]; printf("<SELECT"); if (name) printf(" NAME='%s'", name); if (events && !id) // use name as id id = name; if (id) printf(" id='%s'", id); if (class) printf(" class='%s'", class); if (events) { struct slPair *e; for(e = events; e; e = e->next) { jsOnEventById(e->name, id, e->val); } } if (style) printf(" style='%s'", style); +if (ariaLabel) + printf(" aria-label=\"%s\"", ariaLabel); printf(">\n"); for (i=0; i<menuSize; ++i) { if (sameWord(menu[i], checked)) selString = " SELECTED"; else selString = ""; char* opt = menu[i]; printf("<OPTION%s value='%s'>%c%s</OPTION>\n", selString, opt, toupper((unsigned char)opt[0]), opt+1); } printf("</SELECT>\n"); } +void cgiMakeDropListClassWithIdStyleAndJavascript(char *name, char *id, char *menu[], + int menuSize, char *checked, char *class, char *style, struct slPair *events) +/* Make a drop-down list with name, id, text class, style and javascript. */ +{ +cgiMakeDropListClassWithIdStyleJavascriptAndLabel(name, id, menu, menuSize, checked, class, style, events, NULL); +} + void cgiMakeDropListClassWithStyleAndJavascript(char *name, char *menu[], int menuSize, char *checked, char *class, char *style, struct slPair *events) /* Make a drop-down list with names, text class, style and javascript. */ { cgiMakeDropListClassWithIdStyleAndJavascript(name,NULL,menu,menuSize,checked,class,style,events); } void cgiMakeDropListClassWithStyle(char *name, char *menu[], int menuSize, char *checked, char *class, char *style) /* Make a drop-down list with names, text class and style. */ { cgiMakeDropListClassWithStyleAndJavascript(name,menu,menuSize,checked,class,style,NULL); } void cgiMakeDropListClass(char *name, char *menu[],