Объединение UI/UX Design, готового программного обеспечения и кодирования.

Будь то просто из-за дизайна, отсутствия функциональности или сочетания того и другого, каждый программист, работающий с Dynamics 365, в какой-то момент столкнется с функцией, требующей создания PCF. Все те, кто создавал компонент PCF, знают, что это может быть головной болью в первый раз (и даже во второй….).

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

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

Мы начнем с шаблонного кода PCF, который можно получить, следуя инструкциям в документе Microsoft здесь. Просто замените все ссылки на имя LinearInputControl на PasswordInputControl и пространство имен на пространство имен по вашему выбору.

Нашей отправной точкой является объявление пяти частных переменных. Особо следует отметить переменные _eye и isVisible, которые не являются стандартными. _eye станет нашей кнопкой переключения состояния, а isVisible будет логической переменной, соответствующей (как вы уже догадались) видимости текста в поле ввода.

Затем мы создадим подпапку в нашем PasswordInputControl с именем css, где мы поместим приведенный ниже код в файл с именем style.css, чтобы оформить нашу кнопку _eye как глаз.

Ниже в функции init мы добавим все наши компоненты в основной контейнер.

Что еще более важно, мы добавим прослушиватель событий с функцией toggleState (которую мы определим позже) в _eye и установим для логического значения isVisible значение false, поскольку текст в поле пароля должен начинаться как невидимый.

Все реальное состояние переключения — это переключение логического значения isVisible (false становится истинным, а true становится ложным).

После внесения этого изменения вызывается функция _notifyOutput, которая запускает функцию updateView.

UpdateView отвечает за переключение видимости на основе isVisible (см. строки 14–19)…. Мне потребовалось неприлично много времени, чтобы понять, что notifyOutputChanged вызвало updateView. Если вы новичок в этом, как и я — надеюсь, это избавило вас от некоторых проблем.

Как только этот код будет реализован, просто перейдите в папку src и выполните следующие три команды:

npm install -g
npm run build
npm start

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