Appsmith
March 10, 2024
Реализация кастомного инпута с тэгами в Appsmith
На сегодняшний день Appsmith не имеет готового решения с выбором тэгов внутри инпута. Есть решение — Tagger.
Необходимо поместить Custom widget в рабочую область и перейти в режим редактирования. После этого вносим в табы следующие строки кода:
HTML (подключаем скрипт и стили для библиотеки Tagger)
<script src="https://unpkg.com/@jcubic/tagger@0.x.x/tagger.js"></script> <link rel="stylesheet" href="https://unpkg.com/@jcubic/tagger@0.x.x/tagger.css"> <div class="tagContainer"> <div class="label">Tags</div> <input type="text" value="First tag" name="tags"/> </div>
Style (кастомизируем UI на свой вкус)
.label{
font-family: montserrat;
color: #4C5664;
font-size: 0.9rem;
margin: 0px 0px 10px
}
.tagContainer{
padding: 10px
}
.tagger {
border-radius: var(--appsmith-theme-borderRadius);
}
.tagger .tagger-new {
width: 1px;
}
.tagger > ul > li:not(.tagger-new) > :first-child {
background-color: var(--appsmith-theme-primaryColor);
border-color: #4C5664 !important
}
.tagger > ul > li:not(.tagger-new) > :first-child a, span {
color: var(--appsmith-theme-backgroundColor) !important;
}JavaScript (реализуем добавление тэгов)
var input = document.querySelector('[name="tags"]');
appsmith.onReady(() => {
var tags = tagger(input, {
allow_duplicates: false,
allow_spaces: true,
wrap: true,
completion: {
list: appsmith.model.tags
}
});
input.addEventListener('input', () => {
appsmith.updateModel({selectedTags:input.value})
});
appsmith.updateModel({selectedTags:input.value})
});Результат
Теперь можно добавлять и удалять неограниченное количество тэгов