mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-06-05 22:09:38 +02:00
feat: ✨ Aggiunto componente FilledDateTextField
This commit is contained in:
36
resources/ts/Components/FilledDateTextField.tsx
Normal file
36
resources/ts/Components/FilledDateTextField.tsx
Normal file
@@ -0,0 +1,36 @@
|
||||
import '@material/web/textfield/filled-text-field.js';
|
||||
import '@material/web/iconbutton/standard-icon-button.js';
|
||||
|
||||
import {FilledTextField} from '@material/web/textfield/lib/filled-text-field';
|
||||
import {mdiCalendarMonthOutline} from '@mdi/js';
|
||||
import MdIcon from '@osm/Components/MdIcon';
|
||||
import {Property} from 'csstype';
|
||||
import {Vnode} from 'mithril';
|
||||
import {
|
||||
Attributes,
|
||||
Component
|
||||
} from 'mithril-utilities';
|
||||
import {KebabCasedProperties} from 'type-fest';
|
||||
|
||||
export interface FilledDateTextFieldAttributes extends Attributes, Omit<KebabCasedProperties<FilledTextField>, 'style'> {}
|
||||
|
||||
export default class FilledDateTextField<A extends FilledDateTextFieldAttributes> extends Component<A> {
|
||||
element!: FilledTextField;
|
||||
view(vnode: Vnode<A>) {
|
||||
vnode.attrs.type ??= 'date';
|
||||
return (
|
||||
<md-filled-text-field {...vnode.attrs}>
|
||||
{vnode.children}
|
||||
<md-standard-icon-button slot="trailingicon" onclick={this.openDatePicker.bind(this)}>
|
||||
<MdIcon icon={mdiCalendarMonthOutline}/>
|
||||
</md-standard-icon-button>
|
||||
</md-filled-text-field>
|
||||
);
|
||||
}
|
||||
|
||||
openDatePicker(event: MouseEvent & {redraw?: boolean}) {
|
||||
event.redraw = false;
|
||||
// @ts-expect-error - Input is private
|
||||
(this.element.input as HTMLInputElement).showPicker();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user