блочно > Поле

Полевой класс

Абстрактный класс для редактируемого поля.

Подпись:

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 | нуль Константы, связанные с рендерером исходного блока.
ЗНАЧЕНИЕ_ПО УМОЛЧАНИЮ Т | ноль

Чтобы перезаписать значение по умолчанию, установленное в **Поле**, напрямую обновите прототип.

Пример: FieldImage.prototype.DEFAULT_VALUE = null;

РЕДАКТИРОВАНО булев Редактируемые поля обычно показывают некий пользовательский интерфейс, указывающий, что они редактируемые. Они также будут сохранены сериализатором.
включено_ protected булев Можно ли изменить значение поля с помощью редактора в редактируемом блоке?
fieldGroup_ protected SVGGElement | нулевой Элемент группы SVG визуализированного поля.
isDirty_ protected булев Нужно ли перерисовывать этот блок?
maxDisplayLength число Максимальное количество символов текста для отображения перед добавлением многоточия.
имя? нить (Необязательно) Имя поля. Уникально в пределах каждого блока. Статические метки обычно не имеют имени.
НБСП

static

readonly

(не объявлено) Неразрывный пробел.
СЕРИАЛИЗУЕМЫЙ булев Сериализуемые поля сохраняются сериализатором, несериализуемые — нет. Редактируемые поля также должны быть сериализуемыми. По умолчанию это не так, поэтому SERIALIZABLE обратно совместим.
размер_ protected Размер Получает размер этого поля. Поскольку getSize() и updateSize() имеют побочные эффекты, это действует как прокладка для подклассов, которые хотят скорректировать границы поля при установке/получении размера без запуска нежелательного рендеринга или других побочных эффектов. Обратите внимание, что подклассы должны переопределять *оба* get и set, если любой из них переопределен; реализация может просто вызывать напрямую через super, но он должен существовать согласно спецификации JS.
ПРОПУСТИТЬ_НАСТРОЙКУ

static

readonly

уникальный символ Значение, используемое для сигнализации о том, что конструктор поля *не* должен устанавливать значение поля или запускать 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** для примера реализации подкласса.

**ПРИМЕЧАНИЕ:** Проверка возвращает один вариант между T , null и undefined . Реализация **Field** никогда не вернет undefined , но для подкласса допустимо возвращать undefined если новое значение совместимо с T .

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 Обновляет размер поля на основе текста.