@sjsf/daisyui5-theme
Version:
The daisyUI v5 based theme for svelte-jsonschema-form
135 lines (134 loc) • 3.91 kB
JavaScript
import { s, DEFAULT_SPECS } from 'theme-testing/specs';
import './extra-widgets/cally-date-picker-include';
import './extra-widgets/checkboxes-include';
import './extra-widgets/file-include';
import './extra-widgets/filter-radio-buttons-include.js';
import './extra-widgets/multi-select-include';
import './extra-widgets/radio-buttons-include';
import './extra-widgets/radio-include';
import './extra-widgets/range-include';
import './extra-widgets/rating-include';
import './extra-widgets/switch-include';
import './extra-widgets/textarea-include';
import './extra-widgets/date-picker-include.js';
export const specs = {
...DEFAULT_SPECS,
callyDatePicker: [
s.text,
{
'ui:components': { textWidget: 'daisyui5CallyDatePickerWidget' },
'ui:options': { useLabel: false }
},
{
onchange: 'changeCallyDatePicker'
}
],
datePicker: [
s.text,
{ 'ui:components': { textWidget: 'datePickerWidget' } },
{
oninput: 'inputDate',
onchange: 'changeDate',
onblur: 'visitDate'
}
],
filterRadioButtons: [
s.enumeration,
{
'ui:components': {
stringField: 'enumField',
selectWidget: 'daisyui5FilterRadioButtonsWidget'
},
'ui:options': { useLabel: false }
},
{
oninput: 'inputRadio',
onchange: 'changeRadio',
onblur: 'visitRadio'
}
],
multiSelect: [
s.uniqueArray,
{
'ui:components': {
arrayField: 'multiEnumField',
checkboxesWidget: 'multiSelectWidget'
},
'ui:options': { useLabel: true }
},
{
oninput: 'inputMultiSelect',
onchange: 'changeMultiSelect'
// Disabled due chrome bug (works in firefox)
// TODO: Enable this test after playwright browsers update
// onblur: 'visitMultiSelect'
}
],
radioButtons: [
s.enumeration,
{
'ui:components': {
stringField: 'enumField',
selectWidget: 'radioButtonsWidget'
},
'ui:options': { useLabel: false }
},
{
oninput: 'inputRadio',
onchange: 'changeRadio',
onblur: 'visitRadio'
}
],
radio: [
s.enumeration,
{
'ui:components': {
stringField: 'enumField',
selectWidget: 'radioWidget'
},
'ui:options': { useLabel: false }
},
{
oninput: 'inputRadio',
onchange: 'changeRadio',
onblur: 'visitRadio'
}
],
range: [
s.number,
{ 'ui:components': { numberWidget: 'rangeWidget' } },
{
oninput: 'inputSlider',
onchange: 'changeSlider',
onblur: 'visitSlider'
}
],
rating: [
s.number,
{ 'ui:components': { numberWidget: 'ratingWidget' }, 'ui:options': { useLabel: false } },
{
oninput: 'inputRadio',
onchange: 'changeRadio',
onblur: 'visitRadio'
}
],
switch: [
s.boolean,
{ 'ui:components': { checkboxWidget: 'switchWidget' } },
{
oninput: 'inputCheckbox',
onchange: 'changeCheckbox',
onblur: 'visitCheckbox'
}
],
textarea: [
s.text,
{ 'ui:components': { textWidget: 'textareaWidget' } },
{
oninput: 'inputText',
onchange: 'changeText',
onblur: 'visitText'
}
]
};
export const extraWidgets = Object.keys(import.meta.glob('./extra-widgets/*.svelte')).map((widget) => widget.substring(16, widget.length - 7));