in tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneListRenderer.java [135:194]
private void encodeOptions(
final FacesContext facesContext, final T component, final List<SelectItem> items,
final String clientId, final boolean expanded, final boolean disabled) throws IOException {
final TobagoResponseWriter writer = getResponseWriter(facesContext);
final Markup markup = component.getMarkup() != null ? component.getMarkup() : Markup.NULL;
writer.startElement(HtmlElements.DIV);
writer.writeClassAttribute(
TobagoClass.OPTIONS,
expanded ? BootstrapClass.LIST_GROUP_ITEM : TobagoClass.DROPDOWN__MENU);
writer.writeNameAttribute(clientId);
writer.startElement(HtmlElements.TABLE);
writer.writeClassAttribute(BootstrapClass.TABLE, BootstrapClass.TABLE_HOVER,
markup.contains(Markup.LARGE) ? TobagoClass.LARGE : null,
markup.contains(Markup.SMALL) ? TobagoClass.SMALL : null,
markup.contains(Markup.LARGE) ? null : BootstrapClass.TABLE_SM);
writer.startElement(HtmlElements.TBODY);
final Object value = component.getValue();
final Object submittedValue = component.getSubmittedValue();
for (SelectItem item : items) {
Object itemValue = item.getValue();
// when using selectItem tag with a literal value: use the converted value
if (itemValue instanceof String && value != null && !(value instanceof String)) {
itemValue = ComponentUtils.getConvertedValue(facesContext, component, (String) itemValue);
}
final String formattedValue = getFormattedValue(facesContext, (T) component, itemValue);
final boolean contains;
if (submittedValue != null) {
contains = submittedValue.equals(formattedValue);
} else {
contains = value != null && value.equals(itemValue);
}
writer.startElement(HtmlElements.TR);
writer.writeAttribute(DataAttributes.VALUE, formattedValue, true);
writer.writeClassAttribute(
contains ? BootstrapClass.TABLE_PRIMARY : null,
disabled || item.isDisabled() ? TobagoClass.DISABLED : null);
writer.writeAttribute(HtmlAttributes.TABINDEX, -1);
writer.startElement(HtmlElements.TD);
writer.writeAttribute(HtmlAttributes.VALUE, formattedValue, true);
writer.writeText(item.getLabel());
writer.endElement(HtmlElements.TD);
writer.endElement(HtmlElements.TR);
}
writer.endElement(HtmlElements.TBODY);
writer.startElement(HtmlElements.TFOOT);
writer.startElement(HtmlElements.TR);
writer.writeClassAttribute(TobagoClass.NO__ENTRIES, BootstrapClass.D_NONE);
writer.startElement(HtmlElements.TD);
writer.writeText("---");
writer.endElement(HtmlElements.TD);
writer.endElement(HtmlElements.TR);
writer.endElement(HtmlElements.TFOOT);
writer.endElement(HtmlElements.TABLE);
writer.endElement(HtmlElements.DIV);
}