currencySymbolPlacement

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

currencySymbolPlacement управляет тем, будет ли символ валюты расположен слева или справа от числа. В зависимости от конфигурации AutoNumeric может использовать следующие значения:

  • p или prefix — валютный символ располагается перед числом
  • s или suffix — валютный символ располагается после числа

Фактически параметр задаёт правило композиции строки форматирования, не изменяя само числовое значение, а только влияя на его отображение в input-элементе.

Логика формирования итогового значения

Формирование отображаемого значения происходит на этапе рендеринга числа после применения всех преобразований:

  1. Преобразование входного значения в числовой тип
  2. Применение округления согласно decimalPlaces
  3. Группировка разрядов согласно digitGroupSeparator
  4. Добавление десятичного разделителя
  5. Вставка валютного символа в соответствии с currencySymbolPlacement
  6. Добавление знака отрицательного числа (если требуется)

Порядок вставки валютного символа критически важен, поскольку он влияет на восприятие значения пользователем и может отличаться в зависимости от локальных стандартов форматирования.

Префиксное размещение валютного символа

При использовании значения prefix или p валютный символ располагается перед числом:

$ 1,234.56

В этом режиме символ валюты становится частью начала строки. Это наиболее распространённый формат в странах с использованием доллара, евро (в англоязычных интерфейсах), а также ряда других валютных систем.

Особенности префиксного режима:

  • Символ всегда фиксируется слева от числовой части
  • Между символом и числом может автоматически добавляться пробел (в зависимости от currencySymbolSpacing)
  • Отрицательные значения обычно отображаются с минусом перед символом: - $1,234.56

Важный нюанс заключается в том, что знак отрицательности обрабатывается отдельно от валютного символа, и их порядок зависит от дополнительных настроек форматирования.

Суффиксное размещение валютного символа

При значении suffix или s валютный символ отображается после числа:

1,234.56 €

Данный формат широко используется в европейских странах и ряде локализаций, где символ валюты традиционно следует за числовым значением.

Особенности суффиксного режима:

  • Валютный символ размещается после завершения числовой части
  • Пробел между числом и символом может быть обязательным в зависимости от конфигурации
  • Отрицательные значения обычно отображаются как -1,234.56 €

Суффиксное размещение особенно важно в интерфейсах, ориентированных на международные стандарты, так как оно снижает неоднозначность восприятия валюты и числа.

Взаимодействие с отрицательными числами

При использовании currencySymbolPlacement необходимо учитывать поведение отрицательных значений. AutoNumeric не связывает знак минуса с валютным символом, а рассматривает его как отдельный элемент форматирования.

Типовые варианты отображения:

  • Префикс:

    • - $1,000.00
    • $ -1,000.00 (в некоторых конфигурациях)
  • Суффикс:

    • -1,000.00 €
    • 1,000.00 - € (редко, при специфических настройках)

Конкретный порядок зависит от сочетания параметров, включая negativeSignCharacter и настройки локализации.

Влияние на UX и локализацию

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

Основные сценарии применения:

  • Финансовые панели управления
  • Банковские интерфейсы
  • Системы бухгалтерского учёта
  • Интернет-магазины с мультивалютностью
  • ERP и CRM-системы

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

Связь с другими параметрами AutoNumeric

currencySymbolPlacement не работает изолированно и тесно связан с рядом других параметров:

  • currencySymbol — определяет сам символ валюты
  • currencySymbolSpacing — задаёт наличие пробела между символом и числом
  • decimalCharacter — влияет на разделение дробной части
  • digitGroupSeparator — управляет группировкой разрядов
  • negativeSignCharacter — задаёт символ отрицательного значения

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

Типичные конфигурации

Примеры распространённых настроек:

Префиксный долларовый формат:

{
  currencySymbol: "$",
  currencySymbolPlacement: "p",
  digitGroupSeparator: ",",
  decimalCharacter: "."
}

Суффиксный евроформат:

{
  currencySymbol: "€",
  currencySymbolPlacement: "s",
  digitGroupSeparator: " ",
  decimalCharacter: ","
}

Такие конфигурации часто используются как базовые шаблоны для локализационных профилей.

Поведение при динамическом изменении

AutoNumeric поддерживает изменение параметров в рантайме. При изменении currencySymbolPlacement происходит мгновенный пересчёт отображаемого значения без изменения внутреннего числового состояния.

Это означает:

  • Внутреннее значение остаётся неизменным
  • Перерисовывается только строковое представление
  • Пользовательский ввод не теряет фокус (в большинстве режимов)

Данный механизм позволяет переключать валютные форматы без пересоздания экземпляра AutoNumeric.

Ограничения и особенности реализации

При использовании currencySymbolPlacement необходимо учитывать несколько архитектурных особенностей:

  • Параметр влияет только на отображение, но не на parse-значение
  • В некоторых комбинациях с кастомными символами возможны визуальные конфликты
  • При нестандартных локалях может потребоваться ручная настройка spacing
  • Поведение может отличаться при использовании legacy-режимов конфигурации

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