paimon-moe-fork/src/components/Input.svelte

52 lines
1.2 KiB
Svelte
Raw Normal View History

2020-10-23 18:36:12 +01:00
<script>
import Icon from './Icon.svelte';
2022-01-15 17:11:59 +00:00
import { createEventDispatcher } from 'svelte';
const dispatch = createEventDispatcher();
2020-10-23 18:36:12 +01:00
2021-01-08 08:30:14 +00:00
export let className = '';
2020-10-29 23:44:51 +00:00
export let icon = null;
2020-11-08 19:57:56 +00:00
export let placeholder = '';
2021-02-03 15:21:10 +00:00
export let step = undefined;
2020-10-29 23:44:51 +00:00
export let type = 'text';
export let pattern = undefined;
2020-11-08 19:57:56 +00:00
export let min = Math.min();
export let max = Math.max();
2020-10-23 18:36:12 +01:00
export let value = '';
2020-10-29 23:44:51 +00:00
const handleInput = (event) => {
if (type === 'number') {
value = Number(event.target.value);
} else {
value = event.target.value;
}
2022-01-15 17:11:59 +00:00
dispatch('input');
2020-10-29 23:44:51 +00:00
};
2020-10-23 18:36:12 +01:00
</script>
<div
2021-04-24 02:06:44 +01:00
class="flex flex-1 relative items-center bg-background rounded-2xl h-14
focus-within:border-primary border-2 border-transparent ease-in duration-100 {className}"
2022-01-15 17:11:59 +00:00
style="min-height: 3.5rem;"
2021-04-24 02:06:44 +01:00
>
2020-10-23 18:36:12 +01:00
{#if icon}
<Icon path={icon} color="white" className="absolute ml-4 w-6 h-6" />
{/if}
<input
{placeholder}
2020-10-29 23:44:51 +00:00
{type}
{value}
{min}
{max}
2021-02-03 15:21:10 +00:00
{step}
{pattern}
2020-10-29 23:44:51 +00:00
on:change
on:input={handleInput}
2021-04-24 02:06:44 +01:00
class={`w-full ${
icon ? 'pl-12' : 'pl-4'
} min-h-full pr-4 text-white placeholder-gray-500 leading-none bg-transparent border-none focus:outline-none`}
/>
2020-10-23 18:36:12 +01:00
</div>