GWT 2.7 и GWT Material Design 1.5.3 DatePicker

Используя MaterialButton, я пытаюсь показать панель календаря на экране. У меня есть такой код:

    @UiField
    MaterialDatePicker editDateCtrl;
    @UiField
    MaterialButton addDateCtrl;

    @UiHandler("addDateCtrl")
    void onClick(ClickEvent ev) {
//      GQuery.console.log(GQuery.$(ev.getSource()).siblings(".input-field"));
//      GQuery.$(ev.getSource()).siblings(".input-field").first().find("input").click();
//      GQuery.$(this.editDateCtrl.getElement());
//      GQuery.$("#gwt-debug-actionBtn").click();
        editDateCtrl.fireEvent(new FocusEvent() {});
    }

Я пытался использовать событие фокуса, событие щелчка, и ничего не работает. Получение элемента с использованием простого JavaScript (jQuery) и вызов obj.click()/obj.focus() также не дает результатов. API этого элемента управления даже не содержит метод show() или что-то подобное (не в той версии, которую я сейчас использую).

1 ответ

Решение

Я должен был использовать GQuery/JSNI. MaterialDatePicker содержит элемент ввода, который имеет атрибут aria-owns, оцениваемый по идентификатору всплывающего окна календаря, которое я хотел показать. Чтобы появилось всплывающее окно, вам нужно добавить в него несколько стилей.

Вот код:

String pickerId = GQuery.$(editDateCtrl).find("input").attr("aria-owns");
GQuery.$("#" + pickerId).addClass("picker--focused picker--opened");
GQuery.$("#" + pickerId).attr("aria-hidden", false);
Другие вопросы по тегам