Полевой класс
Абстрактный класс для редактируемого поля.
Подпись:
export declare abstract class Field<T = any> implements IKeyboardAccessible, IRegistrable, ISerializable, IFocusableNode
Реализует: IKeyboardAccessible , IРегистрируемый , ISerializable , IFocusableNode
Конструкторы
Конструктор | Модификаторы | Описание |
---|---|---|
(конструктор)(значение, валидатор, конфигурация) | Создает новый экземпляр класса Field |
Характеристики
Свойство | Модификаторы | Тип | Описание |
---|---|---|---|
borderRect_ | protected | SVGRectElement | null | Элемент границы SVG визуализированного поля. |
clickTarget_ | protected | Элемент | нулевой | Элемент, к которому привязан обработчик щелчков. |
константы_ | protected | ConstantProvider | нуль | Константы, связанные с рендерером исходного блока. |
ЗНАЧЕНИЕ_ПО УМОЛЧАНИЮ | Т | ноль | Чтобы перезаписать значение по умолчанию, установленное в **Поле**, напрямую обновите прототип. Пример: | |
РЕДАКТИРОВАНО | булев | Редактируемые поля обычно показывают некий пользовательский интерфейс, указывающий, что они редактируемые. Они также будут сохранены сериализатором. | |
включено_ | protected | булев | Можно ли изменить значение поля с помощью редактора в редактируемом блоке? |
fieldGroup_ | protected | SVGGElement | нулевой | Элемент группы SVG визуализированного поля. |
isDirty_ | protected | булев | Нужно ли перерисовывать этот блок? |
maxDisplayLength | число | Максимальное количество символов текста для отображения перед добавлением многоточия. | |
имя? | нить | (Необязательно) Имя поля. Уникально в пределах каждого блока. Статические метки обычно не имеют имени. | |
НБСП | | (не объявлено) | Неразрывный пробел. |
СЕРИАЛИЗУЕМЫЙ | булев | Сериализуемые поля сохраняются сериализатором, несериализуемые — нет. Редактируемые поля также должны быть сериализуемыми. По умолчанию это не так, поэтому SERIALIZABLE обратно совместим. | |
размер_ | protected | Размер | Получает размер этого поля. Поскольку getSize() и updateSize() имеют побочные эффекты, это действует как прокладка для подклассов, которые хотят скорректировать границы поля при установке/получении размера без запуска нежелательного рендеринга или других побочных эффектов. Обратите внимание, что подклассы должны переопределять *оба* get и set, если любой из них переопределен; реализация может просто вызывать напрямую через super, но он должен существовать согласно спецификации JS. |
ПРОПУСТИТЬ_НАСТРОЙКУ | | уникальный символ | Значение, используемое для сигнализации о том, что конструктор поля *не* должен устанавливать значение поля или запускать configure_, а должен разрешить подклассу сделать это вместо этого. |
sourceBlock_ | protected | Блок | нуль | Блок, к которому прикреплено это поле. Начинается как null, затем устанавливается в init. |
текстКонтент_ | protected | Текст | нуль | Элемент текстового содержимого отображаемого поля. |
текстовый элемент_ | protected | SVGTextElement | нулевой | Текстовый элемент SVG визуализированного поля. |
валидатор_ | protected | FieldValidator <Т> | ноль | Функция проверки вызывается, когда пользователь редактирует редактируемое поле. |
ценить_ | protected | Т | ноль | |
видимый_ | protected | булев | Видно ли поле или скрыто из-за сворачивания блока? |
Методы
Метод | Модификаторы | Описание |
---|---|---|
применитьЦвет() | Обновляет поле в соответствии с цветом/стилем блока. Неабстрактные подклассы могут захотеть реализовать это, если цвет поля зависит от цвета блока. Он будет автоматически вызываться в соответствующие моменты, например, при изменении родительского блока или рендерера. Дополнительную информацию см. в документации по полю или в примере FieldDropdown. | |
bindEvents_() | protected | Привязать события к полю. Может быть переопределено подклассами, если им нужно выполнить пользовательскую обработку ввода. |
canBeFocused() | См. IFocusableNode.canBeFocused. | |
настроить_(config) | protected | Обработать карту конфигурации, переданную на место. |
создатьBorderRect_() | protected | Создайте элемент прямоугольника границы поля. Не переопределяется подклассами. Вместо этого измените результат функции внутри initView или создайте отдельную функцию для вызова. |
создатьТекстовыйЭлемент_() | protected | Создайте элемент текстового поля. Не переопределяемый подклассами. Вместо этого измените результат функции внутри initView или создайте отдельную функцию для вызова. |
распоряжаться() | Удалить все объекты DOM и события, относящиеся к этому редактируемому полю. | |
doClassValidation_(новоеЗначение) | protected | Проверьте изменения значения поля перед их установкой. См. **FieldDropdown** для примера реализации подкласса. **ПРИМЕЧАНИЕ:** Проверка возвращает один вариант между |
doClassValidation_(новоеЗначение) | protected | |
doValueInvalid_(_invalidValue, _fireChangeEvent) | protected | Используется для уведомления поля о том, что введено недопустимое значение. Может быть переопределено подклассами, см. FieldTextInput. По умолчанию не является операцией. |
doValueUpdate_(новоеЗначение) | protected | Используется для обновления значения поля. Может быть переопределено подклассами для создания пользовательского хранилища значений/обновления внешних вещей. |
forceRerender() | Принудительно перерисовать блок, в котором установлено это поле, что перерисует это поле и скорректирует любые изменения размера. Другие поля в том же блоке не будут перерисовываться, поскольку их размеры уже были записаны. | |
fromJson(_опции) | static | Подклассы должны перереализовать этот метод для создания своего подкласса Field из объекта JSON arg. Попытка зарегистрировать подкласс поля в FieldRegistry, если этот подкласс не переопределил этот метод, является ошибкой. |
fromXml(элемент_поля) | Устанавливает значение поля на основе указанного элемента XML. Должен вызываться только Blockly.Xml. | |
получитьАбсолютXY_() | protected | Верните абсолютные координаты верхнего левого угла этого поля. Начало координат (0,0) — верхний левый угол тела страницы. |
получитьBorderRect() | protected | Получает элемент прямоугольника границы. |
получитьClickTarget_() | protected | Элемент, к которому привязывается обработчик щелчков. Если явно не задано, по умолчанию используется корень SVG поля. При щелчке по этому элементу в редактируемом поле откроется редактор. |
получитьКонстанты() | Получите поставщика констант рендерера. | |
получитьDisplayText_() | protected | Получить текст из этого поля для отображения в блоке. Может отличаться от getText из-за многоточия и другого форматирования. |
получитьFlipRtl() | Возвращает, следует ли переворачивать поле в RTL. | |
получитьFocusableElement() | См. IFocusableNode.getFocusableElement. | |
получитьFocusableTree() | См. IFocusableNode.getFocusableTree. | |
получитьРазмер() | Возвращает высоту и ширину поля. Это *вообще* должно быть единственным местом, откуда вызывается render_. | |
получитьИсходныйБлок() | Получить блок, к которому прикреплено это поле. | |
получитьSvgRoot() | Получает элемент группы для этого редактируемого поля. Используется для измерения размера и позиционирования. | |
получитьТекст_() | protected | Хук разработчика для переопределения возвращаемого текста этого поля. Переопределяет, если текстовое представление значения этого поля не является просто строковым преобразованием его значения. Верните null, чтобы прибегнуть к строковому преобразованию. |
получитьТекст() | Получить текст из этого поля. Переопределите getText_, чтобы обеспечить поведение, отличное от простого приведения значения к строке. | |
получитьТекстКонтент() | protected | Получает текстовое содержимое. |
получитьТекстЭлемент() | protected | Получает текстовый элемент. |
получитьTooltip() | Возвращает текст подсказки для этого поля. | |
получитьВалидатор() | Получает функцию проверки для редактируемых полей или null, если не задано. | |
получитьЗначение() | Получить текущее значение поля. | |
initModel() | Инициализирует модель поля после его установки на блок. По умолчанию не выполняется. | |
initView() | protected | Создайте блок пользовательского интерфейса для этого поля. |
isClickable() | Проверьте, определяет ли это поле функцию showEditor_. | |
isClickableInFlyout(автозакрывающийсяFlyout) | Проверьте, должно ли поле быть кликабельным, когда блок находится во всплывающем окне. По умолчанию поля кликабельны в всегда открытых всплывающих окнах, таких как простая панель инструментов, но не в автоматически закрывающихся всплывающих окнах, таких как панель инструментов категории. Подклассы могут переопределять эту функцию, чтобы изменить это поведение. Обратите внимание, что isClickable также должен возвращать true, чтобы это имело какой-либо эффект. | |
isCurrentlyEditable() | Проверьте, доступно ли это поле для редактирования. Некоторые поля никогда не подлежат ИЗМЕНЕНИЮ (например, текстовые метки). Другие поля могут быть ИЗМЕНЯЕМЫМИ, но могут существовать в нередактируемых блоках или быть отключенными в данный момент. | |
isEnabled() | Проверьте, можно ли изменить значение этого поля с помощью редактора, если исходный блок доступен для редактирования. | |
isSerializable() | Проверьте, должно ли это поле быть сериализовано XML-рендерером. Обрабатывает логику для обратной совместимости и несоответствующих состояний. | |
isVisible() | Проверяет, видимо ли это редактируемое поле или нет. | |
loadLegacyState(вызывающийКласс, состояние) | Загружает заданное состояние, используя старые хуки XML, если они должны использоваться. Возвращает true, чтобы указать, что загрузка была обработана, в противном случае false. | |
loadState(состояние) | Устанавливает состояние поля на основе заданного значения состояния. Должен вызываться только системой сериализации. | |
onLocationChange(_) | Уведомляет поле об изменении местоположения. | |
onMouseDown_(e) | protected | Обработка события pointerdown на поле. |
onNodeBlur() | См. IFocusableNode.onNodeBlur. | |
onNodeFocus() | См. IFocusableNode.onNodeFocus. | |
onShortcut(_shortcut) | Обрабатывает заданное сочетание клавиш. | |
positionBorderRect_() | protected | Разместите прямоугольник границы поля после изменения размера. |
positionTextElement_(xOffset, contentWidth) | protected | Позиционировать текстовый элемент поля после изменения размера. Это обрабатывает как позиционирование LTR, так и RTL. |
ссылкиПеременные() | Ссылается ли это поле на какие-либо переменные Blockly. Если это правда, то может потребоваться иная обработка во время сериализации и десериализации. Подклассы могут переопределять это. | |
refreshVariableName() | Обновите имя переменной, на которую ссылается это поле, если это поле ссылается на переменные. | |
оказывать_() | protected | Используется getSize() для перемещения/изменения размера любых элементов DOM и получения нового размера. Весь рендеринг, влияющий на размер/форму блока, должен выполняться здесь и запускаться с помощью getSize(). |
repositionForWindowResize() | Хук разработчика для изменения положения WidgetDiv во время изменения размера окна. Вам необходимо определить этот хук, если в вашем поле есть WidgetDiv, который должен изменить свое положение при изменении размера окна. Например, поля ввода текста определяют этот хук, чтобы входной WidgetDiv мог изменить свое положение при событии изменения размера окна. Это особенно важно, когда отключены модальные входы, так как устройства Android будут запускать событие изменения размера окна при открытии программной клавиатуры. Если вы хотите, чтобы WidgetDiv скрывался вместо изменения положения, верните false. Это поведение по умолчанию. DropdownDiv уже обрабатывают собственную логику позиционирования, поэтому вам не нужно переопределять эту функцию, если в вашем поле есть только DropdownDiv. | |
сохранитьLegacyState(вызывающийКласс) | protected | Возвращает строковую версию состояния XML, если она должна использоваться. В противном случае возвращается null, чтобы указать, что поле должно использовать собственную сериализацию. |
saveState(_doFullSerialization) | Сохраняет значение этого поля как нечто, что может быть сериализовано в JSON. Должен вызываться только системой сериализации. | |
setEnabled(включено) | Укажите, можно ли изменить значение этого поля с помощью редактора, если исходный блок доступен для редактирования. | |
setSourceBlock(блок) | Прикрепите это поле к блоку. | |
setTooltip(новыйПодсказка) | Устанавливает подсказку для этого поля. | |
setValidator(обработчик) | Устанавливает новую функцию проверки для редактируемых полей или очищает ранее установленный валидатор. Функция валидатора принимает новое значение поля и возвращает проверенное значение. Проверенное значение может быть входным значением, измененной версией входного значения или null для отмены изменения. Если функция ничего не возвращает (или возвращает undefined), новое значение принимается как допустимое. Это сделано для того, чтобы разрешить полям использовать проверенную функцию в качестве уведомления об изменении на уровне поля. | |
setValue(newValue, fireChangeEvent) | Используется для изменения значения поля. Обрабатывает проверку и события. Подклассы должны переопределять doClassValidation_ и doValueUpdate_, а не этот метод. | |
showEditor_(_e) | protected | Хук разработчика для создания редактора для поля. По умолчанию это не операция, и ее нужно переопределить для создания редактора. |
toXml(элемент_поля) | Сериализует значение этого поля в XML. Должен вызываться только Blockly.Xml. | |
обновитьРедактируемый() | Добавьте или удалите пользовательский интерфейс, указывающий, доступно ли это поле для редактирования или нет. | |
updateSize_(маржа) | protected | Обновляет размер поля на основе текста. |