Галерея основных компонентов Stipple.jl
|
Страница в процессе разработки. |
В статье представлена галерея основных графических компонентов, используемых в Engee при работе с веб-интерфейсами на базе фреймворка Genie.
Для создания различных информационных панелей и пользовательских интерфейсов используется Stipple.jl — реактивный UI-фреймворк для языка Julia, который входит в состав Genie и предоставляет удобный набор готовых элементов интерфейса.
Компоненты Stipple.jl основаны на библиотеке Quasar (Vue.js) и позволяют формировать интерактивные панели, кнопки, формы, таблицы и другие элементы, которые используются внутри Engee для отображения данных и построения пользовательских интерфейсов.
Ниже приведено описание основных компонентов Stipple.jl для работы в Engee, а также примеры их использования. В статье Галерея вспомогательных компонентов Stipple.jl представлены вспомогательные компоненты, которые также могут быть крайне полезны в менее популярных задачах.
Значок
Значок

Показать код
-
JULIA
-
HTML
badge("1.0.0+", color = "primary")
<q-badge color="primary" label="1.0.0+"></q-badge>
Программное использование
badge()
Компонент «значок» позволяет создавать небольшой значок для отображения контекстной информации, которую нужно выделить и сделать заметной. Часто используется вместе с другими элементами, например с аватаром пользователя, чтобы показывать количество новых сообщений или уведомлений.
Примеры:
-
Модель:
julia> @vars BadgeModel begin myicon = "bluetooth" end -
Вид:
julia> Html.div("Badge", class = "text-h6", [ badge("1.0.0+", color = "primary") ])
Аргументы
-
Содержимое
-
floating::Bool— отображать значок в правом верхнем углу относительно родительского элемента. -
transparent::Bool— включить полупрозрачный режим (примерно 0.8 opacity); полезно для «плавающих» значков. -
multiline::Bool— разрешить перенос текста на несколько строк. -
label::Union{String,Int}— основной текст значка; перекрывает слот по умолчанию. -
align::String— вертикальное выравнивание контента (например:top,middle,bottom). -
outline::Bool— контурный стиль (цветная обводка и текст без заливки).
-
-
Стиль
-
color::String— цвет фона значка из палитры Quasar (например:primary,teal-10). -
textcolor::String— цвет текста (также из палитры Quasar). -
rounded::Bool— скругленная форма значка (pill-стиль).
-
Большое число
Большое число

Показать код
-
JULIA
-
HTML
bignumber(number = "7")
<st-big-number title="" number="7"></st-big-number>
Программное использование
bignumber(
label::Union{String,Symbol} = "",
number::Union{Symbol,Number,Nothing} = nothing,
args...;
kwargs...,
)
Отображает элемент интерфейса большого числа.
Аргументы
-
label::Union{String,Symbol} -
number::Union{String,Symbol,Nothing,String} -
icon::Union{String,Symbol} -
color::Union{String,Symbol} = «positive»|«negative» -
arrow::Union{String,Symbol} = «up»|«down»
Кнопка
Кнопка

Показать код
-
JULIA
-
HTML
[
p("Click count: {{Button_count}}"),
btn("Process", @click(:Button_process)),
btn("Increase count", @click("Button_count = Button_count+1")),
]
<p>Click count: {{ Button_count }}</p>
<q-btn label="Process" @click="Button_process"></q-btn>
<q-btn label="Increase count" @click="Button_count = Button_count+1"></q-btn>
Кнопка с иконкой
![]()
Показать код
-
JULIA
-
HTML
[
btn("Mail", icon = "mail", color = "primary", class = "q-mr-sm"),
btn("Send", var"icon-right" = "send", color = "secondary", class = "q-mr-sm"),
btn("Send", icon = "mail", var"icon-right" = "send", color = "orange"),
]
<q-btn color="primary" label="Mail" icon="mail" class="q-mr-sm"></q-btn>
<q-btn color="secondary" label="Send" class="q-mr-sm" icon-right="send"></q-btn>
<q-btn color="orange" label="Send" icon="mail" icon-right="send"></q-btn>
Кнопка с подсказкой

Показать код
-
JULIA
-
HTML
[btn("Mail", icon = "mail", color = "primary", [tooltip("Send email")])]
<q-btn color="primary" label="Mail" icon="mail">
<q-tooltip>
Send email
</q-tooltip>
</q-btn>
Кнопка с индикатором выполнения

Показать код
-
JULIA
-
HTML
[
btn(
"Process",
@click(:ButtonProgress_process),
loading = :ButtonProgress_process,
color = "primary",
class = "q-mr-sm",
),
btn(
"Process",
@click(:ButtonProgress_process),
loading = :ButtonProgress_process,
percentage = :ButtonProgress_progress,
color = "green",
),
]
Реактивный код
@app begin
@in ButtonProgress_process = false
@in ButtonProgress_progress = 0.0
@onbutton ButtonProgress_process begin
for ButtonProgress_progress = 0:0.1:1
@show ButtonProgress_progress
sleep(0.5)
end
ButtonProgress_progress = 0.0
end
end
<q-btn color="primary" :loading="ButtonProgress_process" label="Process" v-on:click="ButtonProgress_process = true" class="q-mr-sm"></q-btn>
<q-btn color="green" :loading="ButtonProgress_process" :percentage="ButtonProgress_progress" label="Process" v-on:click="ButtonProgress_process = true"></q-btn>
Флажок
Флажок

Показать код
-
JULIA
-
HTML
checkbox("Checked", :Checkbox_checked)
Реактивный код
@app begin
@in Checkbox_checked = true
end
<q-checkbox label="Checked" v-model="Checkbox_checked"></q-checkbox>
Множество флажков

Показать код
-
JULIA
-
HTML
[
checkbox("Orange", :selection, val = "orange", color = "orange"),
checkbox("Melon", :selection, val = "melon", color = "green"),
checkbox("Watermelon", :selection, val = "watermelon", color = "red"),
]
Реактивный код
@app begin
@in CheckboxMultiple_checked = (true, @in(selection = []))
end
<q-checkbox color="orange" val="orange" label="Orange" v-model="selection"></q-checkbox>
<q-checkbox color="green" val="melon" label="Melon" v-model="selection"></q-checkbox>
<q-checkbox color="red" val="watermelon" label="Watermelon" v-model="selection"></q-checkbox>
Программное использование
checkbox(
label::Union{String,Symbol} = "",
fieldname::Union{Symbol,Nothing} = nothing,
args...;
kwargs...,
)
Компонент «флажок» — еще один базовый элемент для ввода данных пользователем. Его можно использовать, чтобы предоставить пользователю возможность переключать опции.
Примеры:
-
Модель:
julia > @vars CheckboxModel begin valone::R{Bool} = true end -
Вид:
julia > checkbox(label = "Apples", fieldname = :valone, dense = true, size = "xl")
Аргументы
-
Поведение
-
name::String— имя контрола; полезно, если форма отправляется напрямую на URL и нужно различать поля по имени. -
indeterminatevalue::Union{String,Float64,Int,Bool}— значение модели, которое следует считать «неопределенным» (indeterminate). -
toggleorder::String— порядок переключения двух состояний (t— состояниеtrue,f— состояниеfalse). Еслиtoggle-indeterminate = true, порядок такой:indet → первое состояние → второе состояние → indet(и далее по кругу). В противном случае:indet → первое состояние → второе состояние → первое состояние → второе состояние → …. Примеры:"tf","ft". -
toggleindeterminate::Bool— еслиtrue, при клике/тапе по компоненту состояние будет проходить через «неопределенное» (indeterminate). -
keepcolor::Bool— если указано, цвет компонента (если он задан) сохраняется, даже когда переключатель снят/выключен.
-
-
Общие
-
tabindex::Union{Int,String}— значение HTML-атрибутаtabindex.
-
-
Метка
-
label::Union{String,Symbol}— текст метки, отображаемой рядом с компонентом. -
leftlabel::Bool— еслиtrue, метка (если задана) отображается слева от компонента.
-
-
Модель
-
fieldname::Symbol— имя поля модели компонента. -
val::Union{String,Float64,Int,Bool}— используется, когда модель (value) имеет типArray. Определяет значение, которое будет добавляться/удаляться при установке/снятии флажка. -
truevalue::Union{Int,Float64,String}— значение модели, которое считается состоянием «включено / отмечено». -
falsevalue::Union{Int,Float64,String}— значение модели, которое считается состоянием «выключено / не отмечено».
-
-
Состояние
-
disable::Bool— перевести компонент в неактивное (disabled) состояние.
-
-
Стиль
-
size::String— размер в единицах CSS (с указанием единицы измерения) или одно из стандартных имен размеров (xs|sm|md|lg|xl). Примеры:"16px","2rem","xs","md". -
color::String— имя цвета компонента из палитры Quasar, например:primary,teal-10. -
dark::Bool— сообщает компоненту, что фон под ним темный. -
dense::Bool— компактный режим; компонент занимает меньше места.
-
Чип
Чип

Показать код
-
JULIA
-
HTML
chip("Add to calendar", icon = "event")
<q-chip icon="event">
Add to calendar
</q-chip>
Кликабельный чип

Показать код
-
JULIA
-
HTML
[
chip(
"Add event to calendar",
icon = "event",
clickable = true,
@click(:chipClick_clicked)
),
p("Clicks: {{chipClick_clicks}}"),
]
Реактивный код
@app begin
@in chipClick_clicked = false
@out chipClick_clicks = 0
@onbutton chipClick_clicked begin
chipClick_clicks += 1
end
end
<q-chip clickable="" icon="event" v-on:click="chipClick_clicked = true">
Add event to calendar
</q-chip>
<p>
Clicks: {{chipClick_clicks}}
</p>
Программное использование
chip(args...; kwargs...)
Компонент «чип» представляет собой простую блочную сущность пользовательского интерфейса, которая компактно отображает, например, более сложные базовые данные, такие как контакт.
Чипы могут содержать такие сущности, как аватар, текст или значок, а также, по желанию, указатель. Они также могут быть закрыты или удалены, если это предусмотрено настройками.
Примеры:
-
Вид:
julia > chip("Add to calendar", icon = "event")
Аргументы
-
Содержимое
-
icon::String— имя иконки по соглашениям Quasar. Требуется установленная библиотека иконок, если не используется префиксimg:. Если указать строку"none", иконка не будет отрисована (но под нее все равно будет зарезервировано место). Примеры:map,ion-add,img:https://cdn.quasar.dev/logo/svg/quasar-logo.svg,img:path/to/some_image.png. -
iconright::String— имя иконки, отображаемой справа, по тем же правилам, что иicon. -
iconremove::String— имя иконки для действия «удалить» (кнопка удаления), по тем же правилам, что иicon. -
iconselected::String— имя иконки, отображаемой для выбранного состояния, по тем же правилам, что иicon. -
label::Union{String,Int}— текстовое содержимое компонента; перекрывает слот по умолчанию. Примеры:"Joe Doe","Book",42.
-
-
Общие
-
tabindex::Union{Int,String}— значение HTML-атрибутаtabindex(например:0,100).
-
-
Модель
-
value::Bool— модель, определяющая, должен ли chip отображаться. Значениеtrueпо умолчанию означает, что компонент виден. -
selected::Bool— модель, определяющая, выбран chip или нет. Требуется модификатор.sync.
-
-
Состояние
-
clickable::Bool— делает chip кликабельным; в этом режиме он реагирует на наведение и генерирует событиеclick. -
removable::Bool— добавляет кнопку удаления; при нажатии генерируются соответствующие события удаления. -
disable::Bool— переводит компонент в неактивное состояние (disabled).
-
-
Стиль
-
ripple::Union{Bool,Dict}— настройка материал-декора «рябь» (эффект клика). Можно отключить (false) или передать объект конфигурации (напр.true,center: true,color: "teal"). -
dense::Bool— компактный режим; компонент занимает меньше места. -
size::String— размер chip’а по имени или в единицах CSS. Примеры:xs,sm,md,lg,xl,1rem. -
dark::Bool— сообщает компоненту, что фон под ним темный (для корректного подбора цветов). -
color::String— цвет компонента из палитры Quasar, например:primary,teal-10. -
square::Bool— уменьшает скругление углов по сравнению со значением по умолчанию, делая форму ближе к квадрату. -
outline::Bool— включает «контурный» стиль: цветная рамка и текст без заливки.
-
Столбец
Стобец

Показать код
-
JULIA
-
HTML
[
row([
column(span("Hello"), size = 2, class = "bg-blue-2"),
column(span("Genie"), size = 4, class = "bg-red-2"),
]),
]
<div class="row">
<div class="bg-blue-2 column col-2">
<span>
Hello
</span>
</div>
<div class="bg-red-2 column col-4">
<span>
Genie
</span>
</div>
</div>
Поле даты
Поле даты

Показать код
-
JULIA
-
HTML
datefield(
"Start date",
:Datefield_start_date,
datepicker_props = Dict(:todaybtn => true, :nounset => true),
textfield_props = Dict(:bgcolor => "green-1"),
)
Реактивный код
@app begin
@in Datefield_start_date = today()
end
<q-input filled="" label="Start date" v-model="Datefield_start_date" clearable="" bg-color="green-1">
<q-icon name="event" class="cursor-pointer" style="height: 100%;">
<q-popup-proxy cover="" transition-show="scale" transition-hide="scale">
<q-date today-btn="" v-model="Datefield_start_date" no-unset="" mask="YYYY-MM-DD"></q-date>
</q-popup-proxy>
</q-icon>
</q-input>
Программное использование
datefield(args...; kwargs...)
Сложный тип ввода, который сочетает в себе текстовое поле со значком, средство выбора даты и всплывающее окно. Средство выбора даты по умолчанию скрыто и отображается при нажатии на значок. Всплывающее окно используется для скрытия средства выбора даты, когда пользователь нажимает за его пределами. Определен ряд общих аргументов, которые передаются в текстовое поле, значок, всплывающее окно и средство выбора даты. Кроме того, аргументы ключевых слов могут быть переданы каждому из этих компонентов по отдельности с помощью аргументов ключевых слов textfield_props, icon_props, popup_proxy_props и datepicker_props.
Примеры:
datefield(
"Start date",
:start_date,
datepicker_props = Dict(:todaybtn => true, :nounset => true),
textfield_props = Dict(:bgcolor => "green-1"),
)
Расширение
Расширение

Показать код
-
JULIA
-
HTML
[
expansionitem(
label = "Click here",
dense = true,
var"dense-toggle" = true,
var"expand-separator" = true,
var"header-class" = "bg-blue-1",
p(
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor.",
),
),
]
<q-expansion-item expand-separator="" label="Click here" dense="" header-class="bg-blue-1" dense-toggle="">
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor.
</p>
</q-expansion-item>
Программное использование
expansionitem(args...; kwargs...)
Компонент «расширение» позволяет скрывать содержимое, которое не имеет непосредственного отношения к пользователю. Думайте о нем как об элементах-гармошках, которые раскрываются при нажатии на них. Его также называют сворачиваемым.
По сути, это компоненты элементов, наделенные дополнительными функциональными возможностями. Таким образом, они могут быть включены в список и наследовать свойства компонентов элемента.
Примеры:
-
Модель:
julia > @vars ExpansionModel begin dummy::R{Bool} = true end -
Вид:
julia > list( bordered = true, class = "rounded-borders", [ expansionitem( expandseparator = true, icon = "perm_identity", label = "Account settings", caption = "John Doe", [ card([ cardsection( "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quidem, eius reprehenderit eos corrupti commodi magni quaerat ex numquam, dolorum officiis modi facere maiores architecto suscipit iste eveniet doloribus ullam aliquid.", ), ]), ], ), expansionitem( expandseparator = true, icon = "signal_wifi_off", label = "Wifi settings", [ card([ cardsection( "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quidem, eius reprehenderit eos corrupti commodi magni quaerat ex numquam, dolorum officiis modi facere maiores architecto suscipit iste eveniet doloribus ullam aliquid.", ), ]), ], ), expansionitem( expandseparator = true, icon = "drafts", label = "Drafts", [ card([ cardsection( "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quidem, eius reprehenderit eos corrupti commodi magni quaerat ex numquam, dolorum officiis modi facere maiores architecto suscipit iste eveniet doloribus ullam aliquid.", ), ]), ], ), ], )
Аргументы
-
Поведение
-
duration::Int— длительность анимации (в миллисекундах). Пример:duration="1000". -
default-opened::Bool— раскрывать элемент по умолчанию при первом рендере. Переопределяется моделью (ReactiveModel), если она используется. -
expandiconrotategc::Bool— применять события расширения только к иконке раскрытия, а не ко всей шапке элемента. -
group::String— регистрирует элемент в группе раскрытия. Все элементы в группе должны иметь одинаковое имя группы. Используется для создания поведения в стиле аккордеона. Пример:my-emails. -
popup::Bool— отображать раскрываемый список в режиме «popup».
-
-
Контент
-
icon::String— имя иконки по соглашениям Quasar. Если библиотека иконок не установлена — используйте префиксimg:. Если значениеnone, иконка не отрисовывается (но место под нее занимает пространство). Примеры:map,ion-add,img:https://cdn.quasar.dev/logo/svg/quasar-logo.svg,img:path/to/some_image.png. -
expandicon::String— имя иконки для состояния «развернуть». Требования аналогичны обычномуicon:. Работает только приexpandsonitem = false. -
expandedicon::String— имя иконки для состояния «свернуть». Требования те же, что дляexpandicon:. Использование отключает анимацию вращения иконки. -
label::Union{String,Symbol}— заголовок (header label). -
labellines::Union{Int,String}— обрезка по числу строк, если текст не помещается. При указании более 1 строки работает только в браузерах на основе WebKit (из-за-webkit-line-clamp). Пример:labellines="2". -
caption::String— подзаголовок (header sub-label). Пример:Unread message: 5. -
captionlines::Union{Int,String}— обрезка подзаголовка по числу строк (аналогичноlabellines). -
headerinsetlevel::Int— применять отступ на уровне заголовка (кроме случаев, когда используется слотheader). Полезно, если аватар отсутствует, но нужен выравнивающий отступ. Пример:headerinsetlevel="1". -
contentinsetlevel::Int— применять отступ к контентной части. Пример:contentinsetlevel="1". -
expandseparator::Bool— добавить разделитель между заголовком и контентом (как визуальный разграничитель).
-
-
Состояние
-
disable::Bool— отключить компонент (режим disabled).
-
-
Стиль
-
expand-icon-class::Union{Vector,String,Dict}— применить кастомные CSS-классы к иконке раскрытия. Пример:text-purple. -
dark::Bool— указать компоненту, что фон страницы темный. -
dense::Bool— компактный режим, занимает меньше вертикального пространства. -
densetoggle::Bool— применять компактный режим только к иконке раскрытия. -
headerstyle::Union{Vector,String,Dict}— применить кастомные стили к шапке компонента. Пример:'#ff0000' headerstyle=opts( backgroundColor: "#ff0000")
-
Нижний колонтитул
Нижний колонтитул

Показать код
-
JULIA
-
HTML
footer("Genie app footer", class = "bg-blue-1")
<footer class="bg-blue-1">
Genie app footer
</footer>
Заголовки
Заголовки

Показать код
-
JULIA
-
HTML
heading("Genie app", class = "bg-blue-1")
<header class="bg-blue-1 st-header q-pa-sm">
<h1 class="st-header__title text-h3">
Genie app
</h1>
</header>
Иконка
Иконка
![]()
Показать код
-
JULIA
-
HTML
[
icon("font_download", class = "text-primary", style = "font-size: 32px;")
icon("warning", class = "text-red", style = "font-size:4rem;")
icon("format_size", style = "color: #ccc; font-size: 1.4em;")
icon("print", class = "text-teal", style = "font-size: 4.4em;")
icon("today", class = "text-orange", style = "font-size: 2em;")
icon("style", style = "font-size: 3em;")
]
<q-icon name="font_download" class="text-primary" style="font-size: 32px;"></q-icon>
<q-icon name="warning" class="text-red" style="font-size:4rem;"></q-icon>
<q-icon name="format_size" style="color: #ccc; font-size: 1.4em;"></q-icon>
<q-icon name="print" class="text-teal" style="font-size: 4.4em;"></q-icon>
<q-icon name="today" class="text-orange" style="font-size: 2em;"></q-icon>
<q-icon name="style" style="font-size: 3em;"></q-icon>
Программное использование
icon(
name::Union{String,Symbol},
args...;
content::Union{String,Vector,Function} = "",
kwargs...,
)
Stipple поддерживает по умолчанию: Material Icons, Font Awesome, Ionicons, MDI, Eva Icons, Themify Icons, Line Awesome и Bootstrap Icons.
Кроме того, вы можете самостоятельно добавить поддержку для любой библиотеки значков.
Примеры:
-
Вид:
julia > icon("font_download", class = "text-primary", style = "font-size: 32px;") julia > icon("warning", class = "text-red", style = "font-size:4rem;") julia > icon("format_size", style = "color: #ccc; font-size: 1.4em;") julia > icon("print", class = "text-teal", style = "font-size: 4.4em;") julia > icon("today", class = "text-orange", style = "font-size: 2em;") julia > icon("style", style = "font-size: 3em;")
Аргументы
-
Содержимое
-
tag::String— HTML-тег, который будет использован для рендеринга иконки, если не задана сама иконка или используется SVG-иконка. Примеры:div,i. -
left::Bool— используется, когда иконка располагается слева от текста/контента; добавляет стандартный отступ справа от иконки. -
right::Bool— используется, когда иконка располагается справа от текста/контента; добавляет стандартный отступ слева от иконки.
-
-
Модель
-
name::String— имя иконки. Необходимо, чтобы библиотека иконок была установлена (если не используется префиксimg:). Если указать значение"none", иконка не будет отрисована (но место под нее останется зарезервированным). Примеры:map,ion-add,img:https://cdn.quasar.dev/logo/svg/quasar-logo.svg,img:path/to/some_image.png.
-
-
Стиль
-
size::String— размер в единицах CSS (с указанием единицы измерения) или одно из стандартных имен размера. Примеры:16px,2rem,xs,md. -
color::String— имя цвета компонента из палитры Quasar. Примеры:primary,teal-10.
-
Изображение
Изображение

Показать код
-
JULIA
-
HTML
imageview(
src = "https://learn.genieframework.com/assets/docs/guides/intro/genieframeworkdiagram.svg",
style = "height: 200px; width: 200px",
)
<q-img src="https://learn.genieframework.com/assets/docs/guides/intro/genieframeworkdiagram.svg" style="height: 200px; width: 200px"></q-img>
Изображение с подписью

Показать код
-
JULIA
-
HTML
imageview(
src = "https://learn.genieframework.com/assets/docs/guides/intro/genieframeworkdiagram.svg",
Html.div(class = "absolute-bottom text-subtitle1 text-center", "Caption"),
style = "height: 250px; width: 250px",
)
<q-img src="https://learn.genieframework.com/assets/docs/guides/intro/genieframeworkdiagram.svg" style="height: 250px; width: 250px">
<div class="absolute-bottom text-subtitle1 text-center">
Caption
</div>
</q-img>
Программное использование
imageview(args...; kwargs...)
Компонент imageview упрощает работу с изображениями (любого формата), а также добавляет приятный эффект загрузки и множество других функций (например, возможность устанавливать соотношение сторон).
Примеры:
-
Модель:
julia > @vars Model begin url::R{String} = "https://placeimg.com/500/300/nature" end -
Вид:
julia > imageview(src = :url, spinnercolor = "white", style = "height: 140px; max-width: 150px") julia > imageview( src = :url, style = "height: 140px; max-width: 150px", [ template( "", "v-slot:loading", [spinner(:gears, color = "white", wrap = StippleUI.NO_WRAPPER)], ), ], )
Аргументы
-
Поведение
-
transition::String— название анимации (одна из встроенных). Примеры:fade,slide-down. -
nativecontextmenu::Bool— включает нативное контекстное меню браузера для изображения.
-
-
Содержимое
-
ratio::Union{String,Int}— принудительное соблюдение соотношения сторон. Примеры:"4/3","16/9",1. -
alt::String— альтернативный текст, отображаемый, если изображение невозможно загрузить. -
basic::Bool— отключает анимации и переходы; работает быстрее. -
contain::Bool— гарантирует, что изображение полностью помещается в область отображения (даже если остаются пустые поля по краям).
-
-
Модель
-
src::String— путь к изображению. Примеры:src="img/something.png"(из публичной папки);src="assets/my-img.gif"(из assets);src="https://placeimg.com/500/300/nature"(URL) -
srcset::String— набор вариантов изображения для разных разрешений. Примеры:elva-fairy-320w.jpg 320w, elva-fairy-480w.jpg 480w -
sizes::String— CSS-условия выбора изображения. Примеры:(max-width: 320px) 280px, (max-width: 480px) 440px, 800px -
width::String— фиксированная ширина изображения (в px или %). Пример:280px,70%. -
height::String— фиксированная высота изображения. Пример:300px. -
placeholdersrc::String— статика, показываемая до загрузки изображения. Пример:src="assets/my-img.gif"src="https://placeimg.com/500/300/nature"(URL)
-
-
Стиль
-
color::String— цветовая тема компонента из палитры Quasar. Пример:primary,teal-10. -
imgclass::Union{Vector,String,Dict}— дополнительные CSS-классы для контейнера изображения. Пример:imgclass! = { 'my-special-class': <условие> } -
imgstyle::Dict— CSS-стили для контейнера изображения. Пример:imgstyle="{transform: 'rotate(45deg)'}" -
spinnercolor::String— цвет индикатора загрузки (если используется). Пример:primary,teal-10. -
spinnersize::String— размер индикатора загрузки (работает при отсутствии собственного loader-слота). Пример:16px,2rem.
-
Ввод текста
Ввод текста

Показать код
-
JULIA
-
HTML
textfield(
"Label",
:Text_text,
bottomslots = "",
counter = "",
maxlength = "12",
dense = "",
[
template(
var"v-slot:append" = "",
[
icon(
"close",
@iif("Text_text !== ''"),
@click("Text_text = ''"),
class = "cursor-pointer",
),
],
),
],
)
Реактивный код
@app begin
@in Text_text = ""
@onchange Text_text begin
println(Text_text)
end
end
<q-input maxlength="12" bottom-slots="" label="Label" v-model="Text_text" counter="" dense="">
<template v-slot:append="">
<q-icon name="close" v-if="Text_text !== ''" v-on:click="Text_text = ''" class="cursor-pointer"></q-icon>
</template>
</q-input>
Маска для ввода текста

Показать код
-
JULIA
-
HTML
textfield(
"Phone",
:TextMask_phone,
filled = "",
mask = "(###) ### - ####",
hint = "Mask: (###) ### - ####",
)
Реактивный код
@app begin
@in TextMask_phone = ""
end
<q-input filled="" hint="Mask: (###) ### - ####" label="Phone" v-model="TextMask_phone" mask="(###) ### - ####"></q-input>
Проверка правильности ввода текста

Показать код
-
JULIA
-
HTML
textfield(
"Required Field",
:TextValidation_text,
ref = "inputRef",
filled = "",
var":rules" = "[ val => val.length <= 3 || 'Please use maximum 3 characters']",
)
Реактивный код
@app begin
@in TextValidation_text = ""
end
<q-input filled="" label="Required Field" v-model="TextValidation_text" :rules="[ val => val.length <= 3 || 'Please use maximum 3 characters']" ref="inputRef"></q-input>
Программное использование
textfield(fieldname, args...; kwargs...)
Примеры:
-
Модель:
julia > @vars TextField begin name::R{String} = "" end -
Вид:
julia > textfield( "What's your name *", :name, name = "name", @if(:warin), :filled, hint = "Name and surname", "lazy-rules", rules = "[val => val && val.length > 0 || 'Please type something']", )
Аргументы
-
Общие свойства
-
type::String— тип поля. Может быть одним из:text(по умолчанию),textarea,email,tel,number,password,url. Влияет также на то, какая клавиатура будет отображаться на мобильных устройствах.
-
-
Поведение
-
name::String— имя компонента. Полезно при работе с формами. Если не задано, берется значениеfor, если оно существует. Пример:car_id. -
mask::String— маска ввода или одно из предопределенных значений масок (например,date,datetime,fulltime,phone,card). -
fillmask::Union{Bool,String}— заполнять ли маску спецсимволами (или использовать строку-значение вместоBool). Пример:true,"0_*". -
reversefillmask::Bool— заполнять маску справа налево. Пример: для маски денежных значений. -
unmaskedvalue::Bool— если включено, модель будет получать значение без служебных символов маски. -
error::Bool— есть ли у поля ошибка. -
rules::Vector— набор правил валидации. Если элемент — строка, он должен соответствовать имени встроенного правила. Пример:rules = ["fulltime", val -> length(val) < 3 || "Максимум 3 символа"] -
reactiverules::Bool— еслиtrue, правила проверяются каждый раз при обновлении модели. По умолчанию выключено (ради производительности). -
lazyrules::Union{Bool,String}— еслиtrue, валидация выполняется только после первой потери фокуса. Если"ondemand", то правила проверяются только вручную. -
loading::Bool— отображать индикатор загрузки; может настраиваться через слотloading. -
clearable::Bool— показывает иконку очистки, если значение неundefinedилиnull. -
autofocus::Bool— автоматически сфокусировать поле после отображения. -
for::String— задаетidкомпонента и привязывает к нему<label>. Еслиnameне указан, то это значение используется и дляname.
-
-
Содержимое
-
errormessage::String— текст ошибки валидации (отображается, еслиerror=true). Пример:Username must have at least 5 characters. -
noerroricon::Bool— скрыть иконку ошибки. -
label::Union{String,Symbol}— текст заголовка поля. -
stacklabel::Bool— заголовок фиксируется над полем всегда, даже если оно пустое. -
hint::String— поясняющий текст под полем. -
hidehint::Bool— скрывать подсказку, если поле не в фокусе и не имеетerror. -
prefix::String— префикс перед текстом ввода (например,$). -
suffix::String— суффикс после текста (например,@gmail.com). -
loading::Bool— отображение индикатора загрузки (если слотloadingне используется). -
clearicon::String— иконка очистки; если не указано, используется значение по умолчанию. -
labelslot::Bool— еслиtrue, вместоlabelиспользуется слотlabel. -
bottomslots::Bool— включает нижний слот (ошибки, подсказки, счетчик).
-
-
Состояние
-
disable::Bool— отключает поле. -
readonly::Bool— делает поле только для чтения.
-
-
Стиль
-
labelcolor::String— цвет заголовка (отличается отcolor, потому что действует всегда, даже когда поле не в фокусе). Пример:primary. -
color::String— цвет поля из палитры Quasar. Пример:teal-10. -
dark::Bool— фон темный. -
filled::Bool— стиль «заливки» поля. -
outline::Bool— стиль «контурного» поля. -
standout::Union{Bool,String}— стиль выделяющегося поля. -
borderless::Bool— стиль без рамок. -
hidebottomspace::Bool— убрать резервное пространство для ошибок/подсказок/счетчика. -
rounded::Bool— небольшие скругления углов. -
square::Bool— убрать скругления, полностью квадратный стиль. -
dense::Bool— компактная версия, занимает меньше места. -
itemalign::Union{Vector,String,Dict}— выравнивание содержимого. -
inputclass::Union{Vector,String,Dict}— CSS-классы для<input>. -
inputstyle::Union{Vector,String,Dict}— стили<input>, например:inputstyle = "{ backgroundColor: '#ff0000' }"
-
-
Модель
-
debounce::Union{String,Int}— задержка обновления модели в миллисекундах.Пример:500. -
maxlength::Union{String,Int}— максимальная длина строки. Пример:12.
-
Переключатель
Переключатель

Показать код
-
JULIA
-
HTML
Stipple.Html.div(
class = "q-pa-md",
[
Stipple.Html.div(
class = "q-gutter-sm",
[
radio("Line", :Radio_shape, val = "line"),
radio("Rectangle", :Radio_shape, val = "rectangle"),
radio("Ellipse", :Radio_shape, val = "ellipse"),
radio("Polygon", :Radio_shape, val = "polygon"),
],
),
Stipple.Html.div(
class = "q-px-sm",
["Your selection is: ", strong("{{Radio_shape }}")],
),
],
)
Реактивный код
@app begin
@in Radio_shape = "line"
end
<div class="q-pa-md">
<div class="q-gutter-sm">
<q-radio val="line" label="Line" v-model="Radio_shape"></q-radio>
<q-radio val="rectangle" label="Rectangle" v-model="Radio_shape"></q-radio>
<q-radio val="ellipse" label="Ellipse" v-model="Radio_shape"></q-radio>
<q-radio val="polygon" label="Polygon" v-model="Radio_shape"></q-radio>
</div>
<div class="q-px-sm">
Your selection is:
<strong>
{{Radio_shape }}
</strong>
</div>
</div>
Цветной переключатель

Показать код
-
JULIA
-
HTML
Stipple.Html.div(
class = "q-pa-md",
[
Stipple.Html.div(
class = "q-gutter-sm",
[
radio("Line", :RadioColor_shape, val = "line", color = "teal"),
radio("Rectangle", :RadioColor_shape, val = "rectangle", color = "orange"),
radio("Ellipse", :RadioColor_shape, val = "ellipse", color = "red"),
radio("Polygon", :RadioColor_shape, val = "polygon", color = "blue"),
],
),
Stipple.Html.div(
class = "q-px-sm",
["Your selection is: ", strong("{{RadioColor_shape }}")],
),
],
)
Реактивный код
@app begin
@in RadioColor_shape = "line"
end
<div class="q-pa-md">
<div class="q-gutter-sm">
<q-radio color="teal" val="line" label="Line" v-model="RadioColor_shape"></q-radio>
<q-radio color="orange" val="rectangle" label="Rectangle" v-model="RadioColor_shape"></q-radio>
<q-radio color="red" val="ellipse" label="Ellipse" v-model="RadioColor_shape"></q-radio>
<q-radio color="blue" val="polygon" label="Polygon" v-model="RadioColor_shape"></q-radio>
</div>
<div class="q-px-sm">
Your selection is:
<strong>
{{RadioColor_shape }}
</strong>
</div>
</div>
Программное использование
radio(
label::AbstractString = "",
fieldname::Union{Symbol,Nothing} = nothing,
args...;
kwargs...,
)
Компонент «переключатель» — это еще один базовый элемент для пользовательского ввода. Вы можете использовать его, чтобы предоставить пользователю возможность выбрать вариант из нескольких вариантов.
Примеры:
-
Модель:
julia > @vars RadioModel begin shape::R{String} = "line" end -
Вид:
julia > radio("Line", :shape, val = "line") julia > radio("Rectangle", :shape, val = "rectange") julia > radio("Ellipse", :shape, val = "ellipse") julia > radio("Polygon", :shape, val = "polygon")
Аргументы
-
Поведение
-
name::String— имя элемента управления; полезно при работе с формами, отправляемыми напрямую на URL. Пример:car_id. -
keep-color::Bool— сохранять ли цвет (если задан), когда чекбокс снят.
-
-
Общее
-
tabindex::Union{Int, String}— значение HTML-атрибутаtabindex.
-
-
Модель
-
fieldname::Symbol— имя переменной, к которой выполняется привязка.
-
-
Метка
-
label::AbstractString— текст метки. -
leftlabel::Bool— если указано, метка отображается слева от чекбокса.
-
-
Состояние
-
disable::Bool— переводит компонент в состояние «недоступен».
-
-
Стиль
-
size::String— размер в единицах CSS или стандартных именах размеров (xs|sm|md|lg|xl). Пример:16px,2rem,xs,md. -
color::String— цвет компонента из палитры Quasar. Пример:primary,teal-10. -
dark::Bool— сообщает компоненту, что используется темный фон. -
dense::Bool— компактный режим, уменьшающий вертикальные отступы.
-
Диапазон
Диапазон

Показать код
-
JULIA
-
HTML
[
range(1:1:30, :Range_r, label = true),
range(1:1:30, :Range_r, vertical = true, labelalways = true),
]
Реактивный код
@app begin
@in Range_r = RangeData(1:5)
end
<q-range :min="1" v-model="Range_r" label="" :max="30" :step="1"></q-range>
<q-range vertical="" :min="1" v-model="Range_r" :max="30" label-always="" :step="1"></q-range>
Диапазон с маркерами

Показать код
-
JULIA
-
HTML
[
range(1:1:30, :Range_Markers_r, markers = true, label = true),
range(1:1:30, :Range_Markers_r, var"marker-labels" = true, color = "orange"),
range(
0:5:30,
:Range_Markers_r,
markers = true,
var":marker-labels" = "Range_Markers_labels",
color = "secondary",
),
]
Реактивный код
@app begin
@in Range_Markers_r = RangeData(0:30)
@out Range_Markers_labels =
[Dict(:value => i, :label => string(i) * "%") for i = 0:5:30]
end
<q-range :min="1" v-model="Range_Markers_r" label="" :max="30" markers="" :step="1"></q-range>
<q-range color="orange" :min="1" marker-labels="" v-model="Range_Markers_r" :max="30" :step="1"></q-range>
<q-range color="secondary" :marker-labels="Range_Markers_labels" :min="0" v-model="Range_Markers_r" :max="30" markers="" :step="5"></q-range>
Программное использование
range(start, stop, length)
range(start, stop; length, step)
range(start; length, stop, step)
range(; start, length, stop, step)
Создайте специализированный массив с равномерно расположенными элементами и оптимизированным хранилищем (AbstractRange) из аргументов. Математически диапазон однозначно определяется любыми тремя параметрами: start, step, stop и length. Допустимыми параметрами диапазона являются:
-
Диапазон вызова с любыми тремя параметрами
start,step,stop,length. -
Диапазон вызова с двумя параметрами
start,stop,length. В этом случае шаг будет приниматься равным единице. Если оба аргумента являются целыми числами, будет возвращен UnitRange. -
Диапазон вызова с одним из значений
stopилиlength. Предполагается, что значенияstartиstepравны одному.
Примеры:
julia > range(1, length = 100)
1:100
julia > range(1, stop = 100)
1:100
julia > range(1, step = 5, length = 100)
1:5:496
julia > range(1, step = 5, stop = 100)
1:5:96
julia > range(1, 10, length = 101)
1.0:0.09:10.0
julia > range(1, 100, step = 5)
1:5:96
julia > range(stop = 10, length = 5)
6:10
julia > range(stop = 10, step = 1, length = 5)
6:1:10
julia > range(start = 1, step = 1, stop = 10)
1:1:10
julia > range(; length = 10)
Base.OneTo(10)
julia > range(; stop = 6)
Base.OneTo(6)
julia > range(; stop = 6.5)
1.0:1.0:6.0
Если length не указана и stop - start не является целым числом, кратным step, то будет создан диапазон, который заканчивается перед stop.
julia > range(1, 3.5, step = 2)
1.0:2.0:3.0
Особое внимание уделяется рациональному вычислению промежуточных значений. Чтобы избежать таких накладных расходов, обратитесь к конструктору LinRange.
|
Дополнительная помощь:
Функция range возвращает Base.OneTo, когда аргументы являются целыми числами и:
-
Указано только
length; -
Указано только
stop.
Функция range возвращает UnitRange, когда аргументы являются целыми числами и:
-
Указаны только
startиstop; -
Указаны
lengthиstop.
UnitRange не создается, если задан параметр step, даже если шаг равен одному.
Ползунок
Ползунок

Показать код
-
JULIA
-
HTML
slider(1:1:10, :Slider_volume)
Реактивный код
@app begin
@in Slider_volume = 4
end
<q-slider :min="1" v-model="Slider_volume" :max="10" :step="1"></q-slider>
Ползунок с иконкой
![]()
Показать код
-
JULIA
-
HTML
item([
itemsection(avatar = "", icon("volume_up", color = "teal")),
itemsection(slider(0:1:10, :SliderIcon_volume, label = "", color = "teal")),
])
Реактивный код
@app begin
@in SliderIcon_volume = 4
end
<q-item>
<q-item-section avatar="">
<q-icon color="teal" name="volume_up"></q-icon>
</q-item-section>
<q-item-section>
<q-slider color="teal" :min="0" v-model="SliderIcon_volume" label="" :max="10" :step="1"></q-slider>
</q-item-section>
</q-item>
Программное использование
slider(
range::AbstractRange{<:Union{Symbol,String,Real}},
fieldname::Union{Symbol,Nothing} = nothing,
args...;
lazy = false,
kwargs...,
)
Ползунок — это отличный способ для пользователя задать числовое значение между минимальным и максимальным значением, с необязательными шагами между допустимыми значениями. Ползунок также оснащен индикатором фокусировки (выделенная кнопка ползунка), который позволяет регулировать положение ползунка с помощью клавиатуры.
Примеры:
-
Вид:
julia > slider(1:5:100)
Аргументы
-
Поведение
-
name::String— имя элемента управления. Полезно при работе с формами, которые отправляются напрямую по URL. Пример:car_id -
snap::Bool— «прилипание» ползунка к допустимым значениям вместо свободного перемещения. Рекомендуется использовать совместно с параметромstep. -
reverse::Bool— включает обратное направление работы ползунка (инверсия). -
vertical::Bool— отображает ползунок в вертикальном направлении. -
labelalways::Bool— всегда отображать подпись элемента.
-
-
Содержимое
-
label::Bool— всплывающая подпись, отображаемая при клике/касании ползунка и его перемещении. -
markers::Union{Bool, Int}— отображать маркеры на шкале. Можно показать маркер для каждого возможного значения модели или указать шаг при помощи числа. Пример:markers="5" -
dragrange::Bool— пользователь может перемещать диапазон целиком, а не только отдельные ползунки. -
dragonlyrange::Bool— пользователь может перемещать только диапазон, но не отдельные ползунки.
-
-
Общее
-
tabindex::Union{Int, String}— значение HTML-атрибутаtabindex. Пример:100
-
-
Подписи
-
labelcolorleft::String— цвет фона левой подписи из цветовой палитры Quasar. Пример:primary,teal-10 -
labeltextcolorleft::String— цвет текста левой подписи из цветовой палитры Quasar. -
labelcolorright::String— цвет фона правой подписи из цветовой палитры Quasar. -
labeltextcolorright::String— цвет текста правой подписи из цветовой палитры Quasar. -
labelvalueleft::Union{String, Int}— переопределяет подпись для минимального значения. Пример:model.min + "px" -
labelvalueright::Union{String, Int}— переопределяет подпись для максимального значения. Пример:model.max + "px"
-
-
Модель
-
range::AbstractRange{T}— диапазон значений, доступных для выбора. Используется форматmin:step:max. Также можно использовать символы или строки для ссылки на поля модели. Пример:range="1:2:max"myvalue -
lazy::Bool— если установлено вtrue, значение модели обновляется только после отпускания ползунка.
-
-
Состояние
-
disable::Bool— переводит компонент в отключенное состояние (недоступен для взаимодействия). -
readonly::Bool— переводит компонент в режим «только для чтения».
-
-
Стиль
-
color::String— основной цвет компонента из цветовой палитры Quasar. Пример:primary,teal-10 -
labelcolor::String— цвет подписи из цветовой палитры Quasar. -
thumbpath::String— путь к изображению для кастомного «ползунка». Пример:M5 5 h10 v10 h-10 v-10 -
dark::Bool— указывает, что компонент используется на темном фоне. -
dense::Bool— компактный режим отображения (занимает меньше пространства).
-
Вкладки
Вкладки

Показать код
-
JULIA
-
HTML
[
tabgroup(
:tab_selected,
inlinelabel = true,
class = "bg-primary text-white shadow-2",
[
tab(name = "photos", icon = "photos", label = "Photos"),
tab(name = "videos", icon = "slow_motion_video", label = "Videos"),
tab(name = "movies", icon = "movie", label = "Movies"),
],
),
tabpanels(
:tab_selected,
animated = true,
var"transition-prev" = "scale",
var"transition-next" = "scale",
[
tabpanel(name = "photos", [p("Photos content")]),
tabpanel(name = "videos", [p("Videos content")]),
tabpanel(name = "movies", [p("Movies content")]),
],
),
]
Реактивный код
@app begin
@in tab_selected = "photos"
end
<q-tabs inline-label="" v-model="tab_selected" class="bg-primary text-white shadow-2">
<q-tab name="photos" icon="photos" label="Photos"></q-tab>
<q-tab name="videos" icon="slow_motion_video" label="Videos"></q-tab>
<q-tab name="movies" icon="movie" label="Movies"></q-tab>
</q-tabs>
<q-tab-panels transition-prev="scale" v-model="tab_selected" transition-next="scale" animated="">
<q-tab-panel name="photos">
<p>
Photos content
</p>
</q-tab-panel>
<q-tab-panel name="videos">
<p>
Videos content
</p>
</q-tab-panel>
<q-tab-panel name="movies">
<p>
Movies content
</p>
</q-tab-panel>
</q-tab-panels>
Программное использование
tabgroup(fieldname::Union{Symbol,Nothing} = nothing, args...; kwargs...)
Компонент «вкладки» — это удобный способ отображения меню. Он очень хорошо сочетается со списком в виде выпадающего содержимого, но ни в коем случае не ограничивается им.
Примеры:
-
Модель:
julia > @vars TabModel begin tab_m::R{String} = "tab" end -
Вид:
julia > tabgroup( :tab_m, inlinelabel = true, class = "bg-primary text-white shadow-2", [ tab(name = "photos", icon = "photos", label = "Photos"), tab(name = "videos", icon = "slow_motion_video", label = "Videos"), tab(name = "movies", icon = "movie", label = "Movies"), ], )
Аргументы
-
Поведение
-
target::Union{Bool, String}— контрольная точка (breakpoint) в пикселях, при которой контейнер вкладок автоматически переключается в режим выравниванияjustify. Значение по умолчанию:600. Пример:breakpoint != "500"
-
-
Содержимое
-
vertical::Bool— вертикальное отображение вкладок (вкладки располагаются друг под другом, а не горизонтально). -
outsiderarrows::Bool— резервирует место для стрелок прокрутки по краям вкладок (стрелки становятся полупрозрачными, когда неактивны). -
mobilearrows::Bool— принудительно отображать стрелки прокрутки на мобильных устройствах. -
align::String— горизонтальное выравнивание вкладок внутри контейнера. Допустимые значения:left,center,right,justify. Значение по умолчанию:center. Пример:align = "right" -
breakpoint::Union{Int, String}— ширина контейнера вкладок (в пикселях), при которой вкладки автоматически переходят в режимjustify. Значение по умолчанию:600. Пример:breakpoint != "500" -
lefticon::String— имя иконки для замены стандартной стрелки прокрутки влево, используемой при переполнении вкладок. Пример:arrow_left -
righticon::String— имя иконки для замены стандартной стрелки прокрутки вправо, используемой при переполнении вкладок. Пример:arrow_right -
stretch::Bool— при использовании во flex-контейнере вкладки растягиваются по высоте родителя. -
shrink::Bool— по умолчанию вкладки растягиваются по доступной ширине. При включении этого параметра вкладки перестают растягиваться. Полезно и иногда обязательно при размещении вкладок вtoolbar. -
switchindicator::Bool— переключает позицию индикатора активной вкладки (слева — для вертикального режима, сверху — для горизонтального). -
narrowindicator::Bool— делает индикатор шириной по содержимому вкладки (текст или иконка), а не по всей ширине вкладки. -
inlinelabel::Bool— текст вкладки отображается в одну строку с иконкой (если она используется). -
nocaps::Bool— отключает автоматическое преобразование текста вкладок в верхний регистр (по умолчанию все вкладки отображаются заглавными буквами).
-
-
Стиль
-
activeclass::String— CSS-класс, применяемый к активной вкладке. -
activecolor::String— цвет текста активной вкладки из палитры Color Palette. Примеры:teal-10,primary -
activebgcolor::String— цвет фона активной вкладки. Примеры:teal-10,primary -
indicatorcolor::String— цвет индикатора (подчеркивания) активной вкладки. Примеры:teal-10,primary -
contentclass::String— CSS-класс, применяемый к контейнеру содержимого вкладок. -
dense::Bool— компактный режим отображения (занимает меньше пространства).
-
Таблицы
Таблица

Показать код
-
JULIA
-
HTML
table(:Table_data, flat = true, bordered = true, title = "Treats")
Реактивный код
@app begin
@out Table_data = DataTable(
DataFrame(
name = [
"Frozen Yogurt",
"Ice cream sandwich",
"Eclair",
"Cupcake",
"Gingerbread",
"Jelly bean",
"Lollipop",
"Honeycomb",
"Donut",
"KitKat",
],
calories = [159, 237, 262, 305, 356, 375, 392, 408, 452, 518],
fat = [6.0, 9.0, 16.0, 3.7, 16.0, 0.0, 0.2, 3.2, 25.0, 26.0],
carbs = [24, 37, 23, 67, 49, 94, 98, 87, 51, 65],
),
)
end
<q-table flat="" bordered="" :columns="Table_data.columns" v-model="Table_data" title="Treats" :data="Table_data.data" row-key="__id"></q-table>
Разбивка таблицы на страницы

Показать код
-
JULIA
-
HTML
table(
:TablePagination_data,
pagination = :TablePagination_tpagination,
flat = true,
bordered = true,
title = "Treats",
)
Реактивный код
@app begin
@out TablePagination_data = DataTable(
DataFrame(
name = [
"Frozen Yogurt",
"Ice cream sandwich",
"Eclair",
"Cupcake",
"Gingerbread",
"Jelly bean",
"Lollipop",
"Honeycomb",
"Donut",
"KitKat",
],
calories = [159, 237, 262, 305, 356, 375, 392, 408, 452, 518],
fat = [6.0, 9.0, 16.0, 3.7, 16.0, 0.0, 0.2, 3.2, 25.0, 26.0],
carbs = [24, 37, 23, 67, 49, 94, 98, 87, 51, 65],
),
)
@in TablePagination_tpagination = DataTablePagination(rows_per_page = 3)
end
<q-table flat="" bordered="" :pagination="TablePagination_tpagination" :columns="TablePagination_data.columns" v-model="TablePagination_data" title="Treats" :data="TablePagination_data.data" row-key="__id"></q-table>
Таблица с поиском

Показать код
-
JULIA
-
HTML
table(
:TableSearch_data,
flat = true,
bordered = true,
title = "Treats",
var"row-key" = "name",
filter = :TableSearch_dfilter,
hideheader = "",
template(
var"v-slot:top-right" = "",
textfield(
"",
:TableSearch_dfilter,
dense = true,
debounce = "300",
placeholder = "Search",
[template(var"v-slot:append" = true, icon("search"))],
),
),
)
Реактивный код
@app begin
@out TableSearch_data = DataTable(
DataFrame(
name = [
"Frozen Yogurt",
"Ice cream sandwich",
"Eclair",
"Cupcake",
"Gingerbread",
"Jelly bean",
"Lollipop",
"Honeycomb",
"Donut",
"KitKat",
],
calories = [159, 237, 262, 305, 356, 375, 392, 408, 452, 518],
fat = [6.0, 9.0, 16.0, 3.7, 16.0, 0.0, 0.2, 3.2, 25.0, 26.0],
carbs = [24, 37, 23, 67, 49, 94, 98, 87, 51, 65],
),
)
@in TableSearch_dfilter = ""
end
<q-table flat="" bordered="" :columns="TableSearch_data.columns" v-model="TableSearch_data" title="Treats" hide-header="" :data="TableSearch_data.data" :filter="TableSearch_dfilter" row-key="name">
<template v-slot:top-right="">
<q-input debounce="300" label="" v-model="TableSearch_dfilter" placeholder="Search" dense="">
<template v-slot:append="">
<q-icon name="search"></q-icon>
</template>
</q-input>
</template>
</q-table>
Расположение сетки таблицы

Показать код
-
JULIA
-
HTML
table(:TableGrid_data, flat = true, bordered = true, grid = true, title = "Treats")
Реактивный код
@app begin
@out TableGrid_data = DataTable(
DataFrame(
name = [
"Frozen Yogurt",
"Ice cream sandwich",
"Eclair",
"Cupcake",
"Gingerbread",
"Jelly bean",
"Lollipop",
"Honeycomb",
"Donut",
"KitKat",
],
calories = [159, 237, 262, 305, 356, 375, 392, 408, 452, 518],
fat = [6.0, 9.0, 16.0, 3.7, 16.0, 0.0, 0.2, 3.2, 25.0, 26.0],
carbs = [24, 37, 23, 67, 49, 94, 98, 87, 51, 65],
),
)
end
<q-table flat="" bordered="" grid="" :columns="TableGrid_data.columns" v-model="TableGrid_data" title="Treats" :data="TableGrid_data.data" row-key="__id"></q-table>
Программное использование
table(fieldname::Symbol, args...; kwargs...)
Примеры:
-
Модель:
julia > @vars TableModel begin data::R{DataTable} = DataTable( DataFrame(rand(100000, 2), ["x1", "x2"]), DataTableOptions(columns = [Column("x1"), Column("x2", align = :right)]), ) data_pagination::DataTablePagination = DataTablePagination(rows_per_page = 50) end -
Вид:
julia > table( :data; pagination = :data_pagination, style = "height: 350px;", title = "Random numbers", )
Стилизация может быть достигнута с помощью атрибутов cell_class, cell_style, inner_class, inner_style, change_class, change_style, inner_change_class, inner_change_style.
ui() =
table(:table, edit = ["name", "email", "age"], cell_type = ["text", "text", "number"])
ui() = table(:table, cell_class = "text-blue-10 bg-blue-2")
Более подробную информацию о стилизации и более сложных стилях можно найти в разделе cell_templates.
Ручную стилизацию также можно применить следующим образом:
table(
:table,
template(
@slot(:body - cell, :props),
[
StippleUI.td(
textfield(
"",
R"props.row[props.col.name]",
:dense,
:borderless,
inputstyle = "font-weight: 400; font-size: 0.9rem; padding-top: 0; padding-bottom: 0",
),
),
],
),
)
Обратите внимание на использование макроса @slot, который доступен начиная с Stipple версии 0.28.7. В противном случае используйте var"v-slot:body-cell" = "props".
|