Я хотел бы добавить указатель даты в текстовое поле как часть построителя выражений. Например. Вы можете ввести что-то вроде:
date <= │
(где │
- курсор)
, затем щелкните триггер календаря, и когда дата выбрана, она вставит дату в курсор:
date <= 2019-04-23│
Я посмотрел, как реализован инструмент выбора даты, и там есть много вещей, которые мне нужно будет скопировать.
Итак, мы подумали о том, чтобы прокрутить скрытое поле даты, что-то вроде этого:
Ext.create('Ext.form.Panel', {
title: 'Expression Builder',
width: 400,
bodyPadding: 10,
renderTo: Ext.getBody(),
items: [{
xtype: 'textfield',
fieldLabel: 'Expression',
allowBlank: true,
triggers: {
calendar: {
cls: 'x-fa fa-calendar',
handler: function (me) {
var itemId = me.id + '-aux-datefield';
var datefield = Ext.ComponentQuery.query('#' + itemId)[0] ||
Ext.create({
itemId: itemId,
xtype: 'datefield',
hideLabel: true,
floating: true,
renderTo: me.getEl(),
alignTarget: me.id,
defaultAlign: 'tr-tr'
});
datefield.onTriggerClick();
}
}
}
}]
});
Дело в том, что если поле даты скрыто с помощью hidden: true
, сборщик не будет отображаться. Используя что-то подлое, как style: 'display: none'
, сборщик выравнивается по левому верхнему углу области просмотра. Настройка maxHeight
и maxWidth
на что-то маленькое и поле даты изменяет размеры.
Это только одна из многих проблем, есть обработка событий, вставка в курсор, уничтожение поля и т. Д., Так что это тоже будет много работы.
Мне интересно, кто-нибудь делал что-то подобное, и, может быть, есть более простой способ?