001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.apache.juneau.bean.html5; 018 019import org.apache.juneau.annotation.*; 020import org.apache.juneau.internal.*; 021 022/** 023 * DTO for an HTML <a class="doclink" href="https://www.w3.org/TR/html5/forms.html#the-datalist-element"><datalist></a> 024 * element. 025 * 026 * <p> 027 * The datalist element represents a set of option elements that represent predefined options for other 028 * controls. It is used to provide a list of suggested values for input elements, allowing users to 029 * either select from the predefined options or enter their own custom value. The datalist element 030 * is typically associated with an input element through the list attribute, and the options within 031 * the datalist provide autocomplete suggestions. 032 * 033 * <h5 class='section'>Examples:</h5> 034 * <p class='bcode w800'> 035 * <jk>import static</jk> org.apache.juneau.bean.html5.HtmlBuilder.*; 036 * 037 * <jc>// Simple datalist</jc> 038 * Datalist <jv>simple</jv> = <jsm>datalist</jsm>(<js>"colors"</js>, 039 * <jsm>option</jsm>(<js>"red"</js>, <js>"Red"</js>), 040 * <jsm>option</jsm>(<js>"green"</js>, <js>"Green"</js>), 041 * <jsm>option</jsm>(<js>"blue"</js>, <js>"Blue"</js>) 042 * ); 043 * 044 * <jc>// Datalist with styling</jc> 045 * Datalist <jv>styled</jv> = <jsm>datalist</jsm>(<js>"countries"</js>, 046 * <jsm>option</jsm>(<js>"us"</js>, <js>"United States"</js>), 047 * <jsm>option</jsm>(<js>"ca"</js>, <js>"Canada"</js>), 048 * <jsm>option</jsm>(<js>"mx"</js>, <js>"Mexico"</js>) 049 * )._class(<js>"country-list"</js>); 050 * 051 * <jc>// Datalist with multiple options</jc> 052 * Datalist <jv>multiple</jv> = <jsm>datalist</jsm>(<js>"fruits"</js>, 053 * <jsm>option</jsm>(<js>"apple"</js>, <js>"Apple"</js>), 054 * <jsm>option</jsm>(<js>"banana"</js>, <js>"Banana"</js>), 055 * <jsm>option</jsm>(<js>"cherry"</js>, <js>"Cherry"</js>), 056 * <jsm>option</jsm>(<js>"date"</js>, <js>"Date"</js>), 057 * <jsm>option</jsm>(<js>"elderberry"</js>, <js>"Elderberry"</js>) 058 * ); 059 * 060 * <jc>// Datalist with complex options</jc> 061 * Datalist <jv>complex</jv> = <jsm>datalist</jsm>(<js>"products"</js>, 062 * <jsm>option</jsm>(<js>"laptop-001"</js>, <js>"Laptop Pro 15\" - $1,299"</js>), 063 * <jsm>option</jsm>(<js>"laptop-002"</js>, <js>"Laptop Air 13\" - $999"</js>), 064 * <jsm>option</jsm>(<js>"tablet-001"</js>, <js>"Tablet 10\" - $499"</js>) 065 * ); 066 * 067 * <jc>// Datalist with ID</jc> 068 * Datalist <jv>withId</jv> = <jsm>datalist</jsm>(<js>"cities"</js>, 069 * <jsm>option</jsm>(<js>"new-york"</js>, <js>"New York"</js>), 070 * <jsm>option</jsm>(<js>"los-angeles"</js>, <js>"Los Angeles"</js>), 071 * <jsm>option</jsm>(<js>"chicago"</js>, <js>"Chicago"</js>) 072 * ); 073 * 074 * <jc>// Datalist with styling</jc> 075 * Datalist <jv>styled2</jv> = <jsm>datalist</jsm>(<js>"sizes"</js>, 076 * <jsm>option</jsm>(<js>"xs"</js>, <js>"Extra Small"</js>), 077 * <jsm>option</jsm>(<js>"s"</js>, <js>"Small"</js>), 078 * <jsm>option</jsm>(<js>"m"</js>, <js>"Medium"</js>), 079 * <jsm>option</jsm>(<js>"l"</js>, <js>"Large"</js>), 080 * <jsm>option</jsm>(<js>"xl"</js>, <js>"Extra Large"</js>) 081 * ).style(<js>"display: none;"</js>); 082 * </p> 083 * 084 * <p> 085 * The following convenience methods are provided for constructing instances of this bean: 086 * <ul class='javatree'> 087 * <li class='jc'>{@link HtmlBuilder} 088 * <ul class='javatree'> 089 * <li class='jm'>{@link HtmlBuilder#datalist() datalist()} 090 * <li class='jm'>{@link HtmlBuilder#datalist(Object, Object...) datalist(Object, Object...)} 091 * </ul> 092 * </ul> 093 * </p> 094 * 095 * <h5 class='section'>See Also:</h5><ul> 096 * <li class='link'><a class="doclink" href="https://juneau.apache.org/docs/topics/JuneauBeanHtml5">juneau-bean-html5</a> 097 * </ul> 098 */ 099@Bean(typeName="datalist") 100public class Datalist extends HtmlElementContainer { 101 102 /** 103 * Creates an empty {@link Datalist} element. 104 */ 105 public Datalist() {} 106 107 /** 108 * Creates a {@link Datalist} element with the specified {@link Datalist#id(String)} attribute and child nodes. 109 * 110 * @param id The {@link Datalist#id(String)} attribute. 111 * @param children The child nodes. 112 */ 113 public Datalist(String id, Option...children) { 114 id(id).children((Object[])children); 115 } 116 117 //----------------------------------------------------------------------------------------------------------------- 118 // Overridden methods 119 //----------------------------------------------------------------------------------------------------------------- 120 @Override /* Overridden from HtmlElement */ 121 public Datalist _class(String value) { // NOSONAR - Intentional naming. 122 super._class(value); 123 return this; 124 } 125 126 @Override /* Overridden from HtmlElement */ 127 public Datalist accesskey(String value) { 128 super.accesskey(value); 129 return this; 130 } 131 132 @Override /* Overridden from HtmlElement */ 133 public Datalist contenteditable(Object value) { 134 super.contenteditable(value); 135 return this; 136 } 137 138 @Override /* Overridden from HtmlElement */ 139 public Datalist dir(String value) { 140 super.dir(value); 141 return this; 142 } 143 144 @Override /* Overridden from HtmlElement */ 145 public Datalist hidden(Object value) { 146 super.hidden(value); 147 return this; 148 } 149 150 @Override /* Overridden from HtmlElement */ 151 public Datalist id(String value) { 152 super.id(value); 153 return this; 154 } 155 156 @Override /* Overridden from HtmlElement */ 157 public Datalist lang(String value) { 158 super.lang(value); 159 return this; 160 } 161 162 @Override /* Overridden from HtmlElement */ 163 public Datalist onabort(String value) { 164 super.onabort(value); 165 return this; 166 } 167 168 @Override /* Overridden from HtmlElement */ 169 public Datalist onblur(String value) { 170 super.onblur(value); 171 return this; 172 } 173 174 @Override /* Overridden from HtmlElement */ 175 public Datalist oncancel(String value) { 176 super.oncancel(value); 177 return this; 178 } 179 180 @Override /* Overridden from HtmlElement */ 181 public Datalist oncanplay(String value) { 182 super.oncanplay(value); 183 return this; 184 } 185 186 @Override /* Overridden from HtmlElement */ 187 public Datalist oncanplaythrough(String value) { 188 super.oncanplaythrough(value); 189 return this; 190 } 191 192 @Override /* Overridden from HtmlElement */ 193 public Datalist onchange(String value) { 194 super.onchange(value); 195 return this; 196 } 197 198 @Override /* Overridden from HtmlElement */ 199 public Datalist onclick(String value) { 200 super.onclick(value); 201 return this; 202 } 203 204 @Override /* Overridden from HtmlElement */ 205 public Datalist oncuechange(String value) { 206 super.oncuechange(value); 207 return this; 208 } 209 210 @Override /* Overridden from HtmlElement */ 211 public Datalist ondblclick(String value) { 212 super.ondblclick(value); 213 return this; 214 } 215 216 @Override /* Overridden from HtmlElement */ 217 public Datalist ondurationchange(String value) { 218 super.ondurationchange(value); 219 return this; 220 } 221 222 @Override /* Overridden from HtmlElement */ 223 public Datalist onemptied(String value) { 224 super.onemptied(value); 225 return this; 226 } 227 228 @Override /* Overridden from HtmlElement */ 229 public Datalist onended(String value) { 230 super.onended(value); 231 return this; 232 } 233 234 @Override /* Overridden from HtmlElement */ 235 public Datalist onerror(String value) { 236 super.onerror(value); 237 return this; 238 } 239 240 @Override /* Overridden from HtmlElement */ 241 public Datalist onfocus(String value) { 242 super.onfocus(value); 243 return this; 244 } 245 246 @Override /* Overridden from HtmlElement */ 247 public Datalist oninput(String value) { 248 super.oninput(value); 249 return this; 250 } 251 252 @Override /* Overridden from HtmlElement */ 253 public Datalist oninvalid(String value) { 254 super.oninvalid(value); 255 return this; 256 } 257 258 @Override /* Overridden from HtmlElement */ 259 public Datalist onkeydown(String value) { 260 super.onkeydown(value); 261 return this; 262 } 263 264 @Override /* Overridden from HtmlElement */ 265 public Datalist onkeypress(String value) { 266 super.onkeypress(value); 267 return this; 268 } 269 270 @Override /* Overridden from HtmlElement */ 271 public Datalist onkeyup(String value) { 272 super.onkeyup(value); 273 return this; 274 } 275 276 @Override /* Overridden from HtmlElement */ 277 public Datalist onload(String value) { 278 super.onload(value); 279 return this; 280 } 281 282 @Override /* Overridden from HtmlElement */ 283 public Datalist onloadeddata(String value) { 284 super.onloadeddata(value); 285 return this; 286 } 287 288 @Override /* Overridden from HtmlElement */ 289 public Datalist onloadedmetadata(String value) { 290 super.onloadedmetadata(value); 291 return this; 292 } 293 294 @Override /* Overridden from HtmlElement */ 295 public Datalist onloadstart(String value) { 296 super.onloadstart(value); 297 return this; 298 } 299 300 @Override /* Overridden from HtmlElement */ 301 public Datalist onmousedown(String value) { 302 super.onmousedown(value); 303 return this; 304 } 305 306 @Override /* Overridden from HtmlElement */ 307 public Datalist onmouseenter(String value) { 308 super.onmouseenter(value); 309 return this; 310 } 311 312 @Override /* Overridden from HtmlElement */ 313 public Datalist onmouseleave(String value) { 314 super.onmouseleave(value); 315 return this; 316 } 317 318 @Override /* Overridden from HtmlElement */ 319 public Datalist onmousemove(String value) { 320 super.onmousemove(value); 321 return this; 322 } 323 324 @Override /* Overridden from HtmlElement */ 325 public Datalist onmouseout(String value) { 326 super.onmouseout(value); 327 return this; 328 } 329 330 @Override /* Overridden from HtmlElement */ 331 public Datalist onmouseover(String value) { 332 super.onmouseover(value); 333 return this; 334 } 335 336 @Override /* Overridden from HtmlElement */ 337 public Datalist onmouseup(String value) { 338 super.onmouseup(value); 339 return this; 340 } 341 342 @Override /* Overridden from HtmlElement */ 343 public Datalist onmousewheel(String value) { 344 super.onmousewheel(value); 345 return this; 346 } 347 348 @Override /* Overridden from HtmlElement */ 349 public Datalist onpause(String value) { 350 super.onpause(value); 351 return this; 352 } 353 354 @Override /* Overridden from HtmlElement */ 355 public Datalist onplay(String value) { 356 super.onplay(value); 357 return this; 358 } 359 360 @Override /* Overridden from HtmlElement */ 361 public Datalist onplaying(String value) { 362 super.onplaying(value); 363 return this; 364 } 365 366 @Override /* Overridden from HtmlElement */ 367 public Datalist onprogress(String value) { 368 super.onprogress(value); 369 return this; 370 } 371 372 @Override /* Overridden from HtmlElement */ 373 public Datalist onratechange(String value) { 374 super.onratechange(value); 375 return this; 376 } 377 378 @Override /* Overridden from HtmlElement */ 379 public Datalist onreset(String value) { 380 super.onreset(value); 381 return this; 382 } 383 384 @Override /* Overridden from HtmlElement */ 385 public Datalist onresize(String value) { 386 super.onresize(value); 387 return this; 388 } 389 390 @Override /* Overridden from HtmlElement */ 391 public Datalist onscroll(String value) { 392 super.onscroll(value); 393 return this; 394 } 395 396 @Override /* Overridden from HtmlElement */ 397 public Datalist onseeked(String value) { 398 super.onseeked(value); 399 return this; 400 } 401 402 @Override /* Overridden from HtmlElement */ 403 public Datalist onseeking(String value) { 404 super.onseeking(value); 405 return this; 406 } 407 408 @Override /* Overridden from HtmlElement */ 409 public Datalist onselect(String value) { 410 super.onselect(value); 411 return this; 412 } 413 414 @Override /* Overridden from HtmlElement */ 415 public Datalist onshow(String value) { 416 super.onshow(value); 417 return this; 418 } 419 420 @Override /* Overridden from HtmlElement */ 421 public Datalist onstalled(String value) { 422 super.onstalled(value); 423 return this; 424 } 425 426 @Override /* Overridden from HtmlElement */ 427 public Datalist onsubmit(String value) { 428 super.onsubmit(value); 429 return this; 430 } 431 432 @Override /* Overridden from HtmlElement */ 433 public Datalist onsuspend(String value) { 434 super.onsuspend(value); 435 return this; 436 } 437 438 @Override /* Overridden from HtmlElement */ 439 public Datalist ontimeupdate(String value) { 440 super.ontimeupdate(value); 441 return this; 442 } 443 444 @Override /* Overridden from HtmlElement */ 445 public Datalist ontoggle(String value) { 446 super.ontoggle(value); 447 return this; 448 } 449 450 @Override /* Overridden from HtmlElement */ 451 public Datalist onvolumechange(String value) { 452 super.onvolumechange(value); 453 return this; 454 } 455 456 @Override /* Overridden from HtmlElement */ 457 public Datalist onwaiting(String value) { 458 super.onwaiting(value); 459 return this; 460 } 461 462 @Override /* Overridden from HtmlElement */ 463 public Datalist spellcheck(Object value) { 464 super.spellcheck(value); 465 return this; 466 } 467 468 @Override /* Overridden from HtmlElement */ 469 public Datalist style(String value) { 470 super.style(value); 471 return this; 472 } 473 474 @Override /* Overridden from HtmlElement */ 475 public Datalist tabindex(Object value) { 476 super.tabindex(value); 477 return this; 478 } 479 480 @Override /* Overridden from HtmlElement */ 481 public Datalist title(String value) { 482 super.title(value); 483 return this; 484 } 485 486 @Override /* Overridden from HtmlElement */ 487 public Datalist translate(Object value) { 488 super.translate(value); 489 return this; 490 } 491 492 @Override /* Overridden from HtmlElementContainer */ 493 public Datalist child(Object value) { 494 super.child(value); 495 return this; 496 } 497 498 @Override /* Overridden from HtmlElementContainer */ 499 public Datalist children(Object...value) { 500 super.children(value); 501 return this; 502 } 503}