improve typing in solidtime ui package

This commit is contained in:
Gregor Vostrak
2024-10-28 14:54:48 +01:00
parent 27b40d863e
commit e54df74d5d
4 changed files with 18 additions and 11 deletions

View File

@@ -6,7 +6,7 @@
"packages": { "packages": {
"": { "": {
"name": "@solidtime/ui", "name": "@solidtime/ui",
"version": "0.0.8", "version": "0.0.9",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"devDependencies": { "devDependencies": {
"@types/node": "^22.4.1", "@types/node": "^22.4.1",

View File

@@ -183,7 +183,8 @@ function onSelectChange(event: Event) {
:tasks="tasks" :tasks="tasks"
:selected=" :selected="
!!selectedTimeEntries.find( !!selectedTimeEntries.find(
(filterEntry) => filterEntry.id === subEntry.id (filterEntry: TimeEntry) =>
filterEntry.id === subEntry.id
) )
" "
@selected="emit('selected', [subEntry])" @selected="emit('selected', [subEntry])"

View File

@@ -155,7 +155,7 @@ function unselectAllTimeEntries(value: TimeEntriesGroupedByType[]) {
@select-all="selectAllTimeEntries(value)" @select-all="selectAllTimeEntries(value)"
@unselect-all="unselectAllTimeEntries(value)" @unselect-all="unselectAllTimeEntries(value)"
:checked=" :checked="
value.every((timeEntry) => value.every((timeEntry: TimeEntry) =>
selectedTimeEntries.includes(timeEntry) selectedTimeEntries.includes(timeEntry)
) )
"></TimeEntryRowHeading> "></TimeEntryRowHeading>
@@ -166,7 +166,7 @@ function unselectAllTimeEntries(value: TimeEntriesGroupedByType[]) {
:enableEstimatedTime :enableEstimatedTime
:selected-time-entries="selectedTimeEntries" :selected-time-entries="selectedTimeEntries"
@selected=" @selected="
(timeEntries) => { (timeEntries: TimeEntry[]) => {
selectedTimeEntries = [ selectedTimeEntries = [
...selectedTimeEntries, ...selectedTimeEntries,
...timeEntries, ...timeEntries,
@@ -174,11 +174,12 @@ function unselectAllTimeEntries(value: TimeEntriesGroupedByType[]) {
} }
" "
@unselected=" @unselected="
(timeEntriesToUnselect) => { (timeEntriesToUnselect: TimeEntry[]) => {
selectedTimeEntries = selectedTimeEntries.filter( selectedTimeEntries = selectedTimeEntries.filter(
(item) => (item: TimeEntry) =>
!timeEntriesToUnselect.find( !timeEntriesToUnselect.find(
(filterEntry) => filterEntry.id === item.id (filterEntry: TimeEntry) =>
filterEntry.id === item.id
) )
); );
} }
@@ -204,13 +205,13 @@ function unselectAllTimeEntries(value: TimeEntriesGroupedByType[]) {
:projects="projects" :projects="projects"
:selected=" :selected="
!!selectedTimeEntries.find( !!selectedTimeEntries.find(
(filterEntry) => filterEntry.id === entry.id (filterEntry: TimeEntry) => filterEntry.id === entry.id
) )
" "
@selected="selectedTimeEntries.push(entry)" @selected="selectedTimeEntries.push(entry)"
@unselected=" @unselected="
selectedTimeEntries = selectedTimeEntries.filter( selectedTimeEntries = selectedTimeEntries.filter(
(item) => item.id !== entry.id (item: TimeEntry) => item.id !== entry.id
) )
" "
:tasks="tasks" :tasks="tasks"

View File

@@ -128,6 +128,7 @@ watch(removeAllTags, () => {
selectedTags.value = []; selectedTags.value = [];
} }
}); });
type SelectOption = { label: string; value: string };
</script> </script>
<template> <template>
@@ -200,8 +201,12 @@ watch(removeAllTags, () => {
<div class="flex"> <div class="flex">
<SelectDropdown <SelectDropdown
v-model="timeEntryBillable" v-model="timeEntryBillable"
:get-key-from-item="(item) => item.value" :get-key-from-item="
:get-name-for-item="(item) => item.label" (item: SelectOption) => item.value
"
:get-name-for-item="
(item: SelectOption) => item.label
"
:items="[ :items="[
{ {
label: 'Keep current billable status', label: 'Keep current billable status',