<script lang="ts">
export let id: string;
export let value: number;
export let negative = false;
export let defaultValue = 0;
if (typeof value === "undefined") {
value = defaultValue;
}
function inputInteger(event: Event & {currentTarget: (EventTarget & HTMLInputElement)}) {
let newValue = event.currentTarget.value;
if (newValue.startsWith("0") && newValue.length > 1) {
newValue = newValue.slice(1, newValue.length)
if (newValue != "" && !isNaN(Number(newValue))) {
value = Number(newValue);
else if (negative && newValue.startsWith("-")) {
if (isNaN(Number(newValue.slice(1, newValue.length)))) {
event.currentTarget.value = value.toString();
else if (newValue === "") {
event.currentTarget.value = defaultValue.toString();
else {
</script>
<input {id} type="text" class="digitInput" style="--valuelen: {value.toString().length + 3}ch" on:input|preventDefault={inputInteger} {value}>
<style>
.digitInput {
width: var(--valuelen);
padding-left: 1ch;
</style>