72 lines
1.6 KiB
JavaScript
72 lines
1.6 KiB
JavaScript
import BaseStyle from 'primevue/base/style';
|
|
|
|
const css = `
|
|
@layer primevue {
|
|
.p-listbox-list-wrapper {
|
|
overflow: auto;
|
|
}
|
|
|
|
.p-listbox-list {
|
|
list-style-type: none;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
.p-listbox-item {
|
|
cursor: pointer;
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.p-listbox-item-group {
|
|
cursor: auto;
|
|
}
|
|
|
|
.p-listbox-filter-container {
|
|
position: relative;
|
|
}
|
|
|
|
.p-listbox-filter-icon {
|
|
position: absolute;
|
|
top: 50%;
|
|
margin-top: -0.5rem;
|
|
}
|
|
|
|
.p-listbox-filter {
|
|
width: 100%;
|
|
}
|
|
}
|
|
`;
|
|
|
|
const classes = {
|
|
root: ({ instance, props }) => [
|
|
'p-listbox p-component',
|
|
{
|
|
'p-focus': instance.focused,
|
|
'p-disabled': props.disabled
|
|
}
|
|
],
|
|
header: 'p-listbox-header',
|
|
filterContainer: 'p-listbox-filter-container',
|
|
filterInput: 'p-listbox-filter p-inputtext p-component',
|
|
filterIcon: 'p-listbox-filter-icon',
|
|
wrapper: 'p-listbox-list-wrapper',
|
|
list: 'p-listbox-list',
|
|
itemGroup: 'p-listbox-item-group',
|
|
item: ({ instance, option, index, getItemOptions }) => [
|
|
'p-listbox-item',
|
|
{
|
|
'p-highlight': instance.isSelected(option),
|
|
'p-focus': instance.focusedOptionIndex === instance.getOptionIndex(index, getItemOptions),
|
|
'p-disabled': instance.isOptionDisabled(option)
|
|
}
|
|
],
|
|
emptyMessage: 'p-listbox-empty-message'
|
|
};
|
|
|
|
export default BaseStyle.extend({
|
|
name: 'listbox',
|
|
css,
|
|
classes
|
|
});
|