Exemple #1
0
  private void setDefaultText() {

    String dataPlaceHolder = selectElement.getAttribute("data-placeholder");

    if (dataPlaceHolder != null && dataPlaceHolder.length() > 0) {
      defaultText = dataPlaceHolder;
    } else if (isMultiple) {
      if (options.getPlaceholderTextMultiple() != null) {
        defaultText = options.getPlaceholderTextMultiple();
      } else if (options.getPlaceholderText() != null) {
        defaultText = options.getPlaceholderText();
      } else {
        defaultText = "Select Some Options";
      }
    } else {
      if (options.getPlaceholderTextSingle() != null) {
        defaultText = options.getPlaceholderTextSingle();
      } else if (options.getPlaceholderText() != null) {
        defaultText = options.getPlaceholderText();
      } else {
        defaultText = "Select an Option";
      }
    }

    String dataNoResultsText = selectElement.getAttribute("data-no_results_text");
    if (dataNoResultsText != null && dataNoResultsText.length() > 0) {
      resultsNoneFound = dataNoResultsText;
    } else if (options.getNoResultsText() != null) {
      resultsNoneFound = options.getNoResultsText();
    } else {
      resultsNoneFound = "No results match";
    }
  }
Exemple #2
0
  private void setDefaultValues() {
    clickTestAction =
        new Function() {
          @Override
          public boolean f(Event e) {
            return testActiveClick(e);
          }
        };

    activateAction =
        new Function() {
          @Override
          public boolean f(Event e) {
            return activateField(e);
          }
        };

    activeField = false;
    mouseOnContainer = false;
    resultsShowing = false;

    NodeList<OptionElement> optionsList = selectElement.getOptions();
    allowSingleDeselect =
        options.isAllowSingleDeselect()
            && optionsList.getLength() > 0
            && "".equals(optionsList.getItem(0).getText());

    choices = 0;

    css = Resources.INSTANCE.css();
  }
Exemple #3
0
  private void resultsBuild() {

    selectItems = new SelectParser().parse(selectElement);

    if (isMultiple && choices > 0) {
      searchChoices.find("li." + css.searchChoice()).remove();
      choices = 0;
    } else if (!isMultiple) {
      selectedItem.addClass(css.chznDefault()).find("span").text(defaultText);

      if (selectElement.getOptions().getLength() <= options.getDisableSearchThreshold()) {
        container.addClass(css.chznContainerSingleNoSearch());
      } else {
        container.removeClass(css.chznContainerSingleNoSearch());
      }
    }

    SafeHtmlBuilder content = new SafeHtmlBuilder();

    for (int i = 0; i < selectItems.length(); i++) {
      SelectItem item = selectItems.get(i);

      if (item.isGroup()) {
        SafeHtml result = resultAddGroup((GroupItem) item);
        if (result != null) {
          content.append(result);
        }
      } else {
        OptionItem optionItem = (OptionItem) item;

        if (optionItem.isEmpty()) {
          continue;
        }

        SafeHtml optionHtml = resultAddOption(optionItem);
        if (optionHtml != null) {
          content.append(optionHtml);
        }

        if (optionItem.isSelected() && isMultiple) {
          choiceBuild(optionItem);
        } else if (optionItem.isSelected() && !isMultiple) {
          selectedItem.removeClass(css.chznDefault()).find("span").text(optionItem.getText());
          if (allowSingleDeselect) {
            singleDeselectControlBuild();
          }
        }
      }
    }
    searchFieldDisabled();
    showSearchFieldDefault();
    searchFieldScale();

    searchResults.html(content.toSafeHtml().asString());
  }
Exemple #4
0
 private void keydownBackstroke() {
   if (pendingBackstroke != null) {
     choiceDestroy(pendingBackstroke.find("a").first());
     clearBackstroke();
   } else {
     pendingBackstroke = searchContainer.siblings("li." + css.searchChoice()).last();
     if (options.isSingleBackstrokeDelete()) {
       keydownBackstroke();
     } else {
       pendingBackstroke.addClass(css.searchChoiceFocus());
     }
   }
 }
Exemple #5
0
 private boolean maxSelectedOptionsReached() {
   return options.getMaxSelectedOptions() != -1 && options.getMaxSelectedOptions() <= choices;
 }
Exemple #6
0
  private void winnowResults() {

    noResultClear();

    int results = 0;

    String searchText = defaultText.equals(searchField.val()) ? "" : searchField.val().trim();
    searchText = SafeHtmlUtils.htmlEscape(searchText);

    String regexAnchor = options.isSearchContains() ? "" : "^";
    // escape reg exp special chars
    String escapedSearchText = regExpChars.replace(searchText, "\\$&");
    String test2 = "test";
    test2.substring(1);
    RegExp regex = RegExp.compile(regexAnchor + escapedSearchText, "i");
    RegExp zregex = RegExp.compile("(" + escapedSearchText + ")", "i");

    for (int i = 0; i < selectItems.length(); i++) {
      SelectItem item = selectItems.get(i);

      if (item.isDisabled() || item.isEmpty()) {
        continue;
      }

      if (item.isGroup()) {
        $('#' + item.getDomId()).css("display", "none");
      } else {
        OptionItem option = (OptionItem) item;

        if (!(isMultiple && option.isSelected())) {
          boolean found = false;
          String resultId = option.getDomId();
          GQuery result = $("#" + resultId);
          String optionContent = option.getHtml();

          if (regex.test(optionContent)) {
            found = true;
            results++;
          } else if (optionContent.indexOf(" ") >= 0 || optionContent.indexOf("[") == 0) {
            String[] parts = optionContent.replaceAll("\\[|\\]", "").split(" ");
            for (String part : parts) {
              if (regex.test(part)) {
                found = true;
                results++;
              }
            }
          }

          if (found) {
            String text;
            if (searchText.length() > 0) {
              text = zregex.replace(optionContent, "<em>$1</em>");
            } else {
              text = optionContent;
            }

            result.html(text);
            resultActivate(result);

            if (option.getGroupArrayIndex() != -1) {
              $("#" + selectItems.get(option.getGroupArrayIndex()).getDomId())
                  .css("display", "list-item");
            }
          } else {
            if (resultHighlight != null && resultId.equals(resultHighlight.attr("id"))) {
              resultClearHighlight();
            }
            resultDeactivate(result);
          }
        }
      }
    }

    if (results < 1 && searchText.length() > 0) {
      noResults(searchText);
    } else {
      winnowResultsSetHighlight();
    }
  }