блочно > Поле

Класс поля

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

Подпись:

export declare abstract class Field<T = any> implements IASTNodeLocationSvg, IASTNodeLocationWithBlock, IKeyboardAccessible, IRegistrable, ISerializable 

Реализует: IASTNodeLocationSvg. , IASTNodeLocationWithBlock , IКлавиатураДоступно , IРегистрируемый , ISerializable

Конструкторы

Конструктор Модификаторы Описание
(конструктор)(значение, валидатор, конфигурация) Создает новый экземпляр класса Field .

Характеристики

Свойство Модификаторы Тип Описание
borderRect_ protected SVGRectElement | нулевой Элемент границы SVG отображаемого поля.
нажмитеTarget_ protected Элемент | нулевой Элемент, к которому привязан обработчик кликов.
константы_ protected КонстантПровайдер | нулевой Константы, связанные с средством рендеринга исходного блока.
КУРСОР нить Стиль курсора мыши, когда он находится над горячей точкой, запускающей редактор.
DEFAULT_VALUE Т | нулевой

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

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

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

static

readonly

(не заявлено) Неразрывное пространство.
СЕРИАЛИЗУЕМЫЙ логическое значение Сериализуемые поля сохраняются сериализатором, а несериализуемые — нет. Редактируемые поля также должны быть сериализуемыми. По умолчанию это не так, поэтому SERIALIZABLE обратно совместим.
размер_ protected Размер
SKIP_SETUP

static

readonly

уникальный символ Значение, используемое для сигнализации, когда конструктор поля *не* должен устанавливать значение поля или запускать configure_ и вместо этого должен разрешать подклассу делать это.
источникБлок_ protected Блокировать | нулевой Заблокировать это поле прикреплено. Начинается с нуля, затем устанавливается в init.
textContent_ protected Текст | нулевой Элемент текстового содержимого отображаемого поля.
textElement_ protected SVGTextElement | нулевой Текстовый элемент SVG отображаемого поля.
валидатор_ protected ПолеВалидатор <Т> | нулевой Функция проверки вызывается, когда пользователь редактирует редактируемое поле.
ценить_ protected Т | нулевой
видимый_ protected логическое значение Поле видимо или скрыто из-за свертывания блока?

Методы

Метод Модификаторы Описание
применитьЦвет()

Обновляет поле, чтобы оно соответствовало цвету/стилю блока.

Неабстрактные подклассы могут реализовать это, если цвет поля зависит от цвета блока. Он будет автоматически вызываться в соответствующие моменты, например, при изменении родительского блока или средства визуализации.

Для получения дополнительной информации см. документацию по полям или пример FieldDropdown.

связываниеEvents_() protected Привязывайте события к полю. Может быть переопределено подклассами, если им необходимо выполнить пользовательскую обработку ввода.
configure_(конфигурация) protected Обработайте карту конфигурации, переданную в поле.
createBorderRect_() protected Создайте прямоугольный элемент границы поля. Не переопределяться подклассами. Вместо этого измените результат функции внутри initView или создайте отдельную функцию для вызова.
создатьTextElement_() protected Создайте текстовый элемент поля. Не переопределяться подклассами. Вместо этого измените результат функции внутри initView или создайте отдельную функцию для вызова.
doClassValidation_ (новое значение) protected

Проверьте изменения значения поля перед их установкой. См. **FieldDropdown** пример реализации подкласса.

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

doClassValidation_ (новое значение) protected
doValueInvalid_(_invalidValue, _fireChangeEvent) protected Используется для уведомления поля о том, что было введено недопустимое значение. Может быть переопределено подклассами, см. FieldTextInput. По умолчанию нет операций.
doValueUpdate_(новое значение) protected Используется для обновления значения поля. Может быть переопределен подклассами для индивидуального хранения значений/обновления внешних объектов.
fromJson(_options) static

Подклассы должны переопределить этот метод, чтобы создать свой подкласс Field из объекта arg JSON.

Попытка зарегистрировать подкласс поля в FieldRegistry является ошибкой, если этот подкласс не переопределил этот метод.

getAbsoluteXY_() protected Верните абсолютные координаты верхнего левого угла этого поля. Начало координат (0,0) — это верхний левый угол тела страницы.
getBorderRect() protected Получает элемент прямоугольника границы.
getClickTarget_() protected Элемент, к которому необходимо привязать обработчик кликов. Если не установлено явно, по умолчанию используется корень поля SVG. При нажатии этого элемента на редактируемое поле откроется редактор.
getConstants() Получите поставщик констант рендеринга.
getDisplayText_() protected Получите текст из этого поля для отображения в блоке. Может отличаться от getText из-за многоточия и другого форматирования.
getFlipRtl() Возвращает, следует ли перевернуть поле в RTL.
getSize()

Возвращает высоту и ширину поля.

*В общем* это должно быть единственное место, откуда вызывается render_.

getSourceBlock() Получите блок, к которому прикреплено это поле.
getSvgRoot() Получает элемент группы для этого редактируемого поля. Используется для измерения размера и позиционирования.
getText_() protected Хук разработчика для переопределения возвращаемого текста этого поля. Переопределить, если текстовое представление значения этого поля не является просто строковым преобразованием его значения. Верните значение null, чтобы прибегнуть к приведению строки.
получитьТекст() Получите текст из этого поля. Переопределите getText_, чтобы обеспечить поведение, отличное от простого преобразования значения в строку.
getTextContent() protected Получает текстовое содержимое.
получитьТекстЭлемент() protected Получает текстовый элемент.
getTooltip() Возвращает текст всплывающей подсказки для этого поля.
getValidator() Получает функцию проверки для редактируемых полей или значение NULL, если оно не установлено.
получить значение() Получите текущее значение поля.
initModel() Инициализирует модель поля после ее установки в блок. По умолчанию нет операций.
инициализация() protected Создайте пользовательский интерфейс блока для этого поля.
isClickable() Проверьте, определяет ли это поле функцию showEditor_.
isClickableInFlyout (autoClosingFlyout) Проверьте, должно ли поле быть кликабельным, пока блок находится во всплывающем меню. По умолчанию поля доступны для щелчка в всегда открытых всплывающих окнах, таких как простая панель инструментов, но не в автоматически закрывающихся всплывающих окнах, таких как панель инструментов категорий. Подклассы могут переопределить эту функцию, чтобы изменить такое поведение. Обратите внимание, что isClickable также должен возвращать true, чтобы это имело какой-либо эффект.
isCurrentlyEditable() Проверьте, доступно ли в настоящее время это поле для редактирования. Некоторые поля никогда не РЕДАКТИРУЮТСЯ (например, текстовые метки). Другие поля могут быть РЕДАКТИРОВАНЫ, но могут существовать в нередактируемых блоках или быть в данный момент отключены.
isEnabled() Проверьте, можно ли изменить значение этого поля с помощью редактора, если исходный блок доступен для редактирования.
isFullBlockField() protected

Определяет, должно ли это поле занимать весь блок или нет.

Будьте осторожны при переопределении этой функции. Это может работать не так, как вы ожидаете/намереваетесь, потому что поведение было своего рода взломано. Если вы думаете о переопределении этой функции, напишите на форуме о своем предполагаемом поведении, чтобы узнать, есть ли другой подход.

isSerializable() Проверьте, должно ли это поле быть сериализовано средством визуализации XML. Обрабатывает логику обратной совместимости и несоответствующих состояний.
isTabNavigable() Возвращает, доступна ли по полю навигация с помощью табуляции.
isVisible() Определяет, отображается ли это редактируемое поле.
loadLegacyState (вызовКласс, состояние) Загружает данное состояние, используя старые перехватчики XML, если они должны использоваться. Возвращает true, чтобы указать, что загрузка была обработана, в противном случае — false.
onLocationChange (_) Уведомляет поле о том, что оно изменило местоположение.
onMouseDown_(e) protected Обработка события pointerdown в поле.
onShortcut (_shortcut) Обрабатывает данное сочетание клавиш.
позицияBorderRect_() protected Расположите прямоугольник границы поля после изменения размера.
PositionTextElement_(xOffset, contentWidth) protected Разместите текстовый элемент поля после изменения размера. Это обрабатывает позиционирование как LTR, так и RTL.
оказывать_() protected

Используется getSize() для перемещения/изменения размера любых элементов DOM и получения нового размера.

Весь рендеринг, влияющий на размер/форму блока, должен выполняться здесь и запускаться с помощью getSize().

перепозиционированиеForWindowResize()

Хук разработчика для изменения положения WidgetDiv во время изменения размера окна. Вам необходимо определить этот крючок, если в вашем поле есть WidgetDiv, который должен перемещаться при изменении размера окна. Например, поля ввода текста определяют этот крючок, чтобы входной WidgetDiv мог перемещаться в событии изменения размера окна. Это особенно важно, когда модальный ввод отключен, поскольку устройства Android будут вызывать событие изменения размера окна при открытии программной клавиатуры.

Если вы хотите, чтобы WidgetDiv скрывал себя, а не менял положение, верните false. Это поведение по умолчанию.

DropdownDivs уже обрабатывают собственную логику позиционирования, поэтому вам не нужно переопределять эту функцию, если в вашем поле есть только DropdownDiv.

saveLegacyState (вызовКласс) protected Возвращает строковую версию состояния XML, если ее следует использовать. В противном случае возвращается значение null, чтобы сигнализировать, что поле должно использовать собственную сериализацию.
setEnabled (включено) Установите, можно ли изменить значение этого поля с помощью редактора, если исходный блок доступен для редактирования.
setSourceBlock(блок) Прикрепите это поле к блоку.
setTooltip (новая подсказка) Устанавливает всплывающую подсказку для этого поля.
setValidator (обработчик)

Устанавливает новую функцию проверки для редактируемых полей или очищает ранее установленный валидатор.

Функция валидатора принимает новое значение поля и возвращает проверенное значение. Проверенное значение может быть входным значением, измененной версией входного значения или нулевым значением, чтобы отменить изменение.

Если функция ничего не возвращает (или возвращает неопределенное значение), новое значение принимается как допустимое. Это сделано для того, чтобы поля могли использовать проверенную функцию в качестве уведомления о событии изменения на уровне поля.

setValue(newValue, fireChangeEvent) Используется для изменения значения поля. Обрабатывает проверки и события. Подклассы должны переопределять doClassValidation_ и doValueUpdate_, а не этот метод.
showEditor_(_e) protected Хук разработчика для создания редактора поля. По умолчанию это неактивный режим, и его необходимо переопределить для создания редактора.
обновлениеEditable() Добавьте или удалите пользовательский интерфейс, указывающий, доступно ли это поле для редактирования или нет.
updateSize_(поле) protected Обновляет размер поля на основе текста.