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);