Skip to content

Commit f2aec6a

Browse files
authored
Merge pull request #329 from devforth/AdminForth/765
fix: fix typescript errors
2 parents 72397cb + ccb5ca7 commit f2aec6a

23 files changed

+807
-586
lines changed

adminforth/spa/src/adminforth.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import type { FilterParams, FrontendAPIInterface } from "./types/FrontendAPI";
2-
import type { FrontendAPIInterface, ConfirmParams, AlertParams, } from '@/types/FrontendAPI';
3-
import type { AdminForthFilterOperators, AdminForthResourceColumn } from '@/types/Common';
1+
import type { FilterParams, FrontendAPIInterface, ConfirmParams, AlertParams, } from '@/types/FrontendAPI';
2+
import type { AdminForthFilterOperators, AdminForthResourceColumnCommon } from '@/types/Common';
43
import { useToastStore } from '@/stores/toast';
54
import { useModalStore } from '@/stores/modal';
65
import { useCoreStore } from '@/stores/core';
@@ -85,7 +84,7 @@ class FrontendAPI implements FrontendAPIInterface {
8584
}
8685
}
8786

88-
confirm(params: ConfirmParams): Promise<void> {
87+
confirm(params: ConfirmParams): Promise<boolean> {
8988
return new Promise((resolve, reject) => {
9089
this.modalStore.setModalContent({
9190
content: params.message,
@@ -112,7 +111,7 @@ class FrontendAPI implements FrontendAPIInterface {
112111
throw new Error(`Cannot use ${this.setListFilter.name} filter on a list page`)
113112
} else {
114113
console.log(this.coreStore.resourceColumnsWithFilters,'core store')
115-
const filterField = this.coreStore.resourceColumnsWithFilters.find((col: AdminForthResourceColumn) => col.name === filter.field)
114+
const filterField = this.coreStore.resourceColumnsWithFilters.find((col: AdminForthResourceColumnCommon) => col.name === filter.field)
116115
if(!filterField){
117116
throw new Error(`Field ${filter.field} is not available for filtering`)
118117
}
@@ -123,7 +122,7 @@ class FrontendAPI implements FrontendAPIInterface {
123122

124123
setListFilter(filter: FilterParams): void {
125124
if(this.listFilterValidation(filter)){
126-
if(this.filtersStore.filters.some((f) => {return f.field === filter.field && f.operator === filter.operator})){
125+
if(this.filtersStore.filters.some((f: any) => {return f.field === filter.field && f.operator === filter.operator})){
127126
throw new Error(`Filter ${filter.field} with operator ${filter.operator} already exists`)
128127
} else {
129128
this.filtersStore.setFilter(filter)

adminforth/spa/src/afcl/BarChart.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ const optionsBase = {
6060
tooltip: {
6161
shared: true,
6262
intersect: false,
63-
formatter: function (value) {
63+
formatter: function (value: any) {
6464
return value
6565
},
6666
},
@@ -71,7 +71,7 @@ const optionsBase = {
7171
fontFamily: "Inter, sans-serif",
7272
cssClass: 'text-xs font-normal fill-gray-500 dark:fill-gray-400'
7373
},
74-
formatter: function (value) {
74+
formatter: function (value: any) {
7575
return value
7676
}
7777
},

adminforth/spa/src/afcl/Checkbox.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
type="checkbox"
77
:checked="props.modelValue"
88
:disabled="props.disabled"
9-
@change="$emit('update:modelValue', $event.target.checked)"
9+
@change="$emit('update:modelValue', ($event.target as HTMLInputElement).checked)"
1010
class="peer appearance-none min-w-4 min-h-4 bg-lightCheckboxBgUnchecked border border-lightCheckboxBorderColor rounded-sm checked:bg-lightCheckboxBgChecked
1111
focus:ring-lightFocusRing dark:focus:ring-darkFocusRing dark:focus:ring-darkFocusRing
1212
focus:ring-2 dark:bg-darkCheckboxBgUnchecked dark:border-darkCheckboxBorderColor dark:checked:bg-darkCheckboxBgChecked cursor-pointer"

adminforth/spa/src/afcl/Dropzone.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<form class="flex items-center justify-center w-full"
44
@dragover.prevent="dragging = true"
55
@dragleave.prevent="dragging = false"
6-
@drop.prevent="dragging = false; doEmit($event.dataTransfer.files)"
6+
@drop.prevent="dragging = false; doEmit(($event.dataTransfer as DataTransfer).files)"
77
>
88
<label :id="id" class="flex flex-col items-center justify-center w-full border-2 border-dashed rounded-lg cursor-pointer
99
hover:bg-lightDropzoneBackgroundHover hover:border-lightDropzoneBorderHover dark:hover:border-darkDropzoneBorderHover dark:hover:bg-darkDropzoneBackgroundHover"
@@ -42,7 +42,7 @@
4242
</div>
4343
<input :id="id" type="file" class="hidden"
4444
:accept="props.extensions.join(', ')"
45-
@change="doEmit($event.target.files)"
45+
@change="$event.target && doEmit(($event.target as HTMLInputElement).files!)"
4646
:multiple="props.multiple || false"
4747
/>
4848
</label>

adminforth/spa/src/afcl/Input.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
ref="input"
1313
v-bind="$attrs"
1414
:type="type"
15-
@input="$emit('update:modelValue', type === 'number' ? Number($event.target?.value) : $event.target?.value)"
15+
@input="$emit('update:modelValue', type === 'number' ? Number(($event.target as HTMLInputElement)?.value) : ($event.target as HTMLInputElement)?.value)"
1616
:value="modelValue"
1717
aria-describedby="helper-text-explanation"
1818
class="afcl-input inline-flex bg-lightInputBackground border border-lightInputBorder text-lightInputText text-sm rounded-0 focus:ring-lightPrimary focus:border-lightPrimary dark:focus:ring-darkPrimary dark:focus:border-darkPrimary

adminforth/spa/src/afcl/LinkButton.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<script setup lang="ts">
1919
2020
const props = defineProps<{
21-
disabled: boolean,
21+
disabled?: boolean,
2222
to: string,
2323
}>();
2424

adminforth/spa/src/afcl/PieChart.vue

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ const optionsBase = {
6363
show: false,
6464
fontFamily: "Inter, sans-serif",
6565
label: "",
66-
formatter: function (w) {
67-
const sum = w.globals.seriesTotals.reduce((a, b) => {
66+
formatter: function (w: any) {
67+
const sum = w.globals.seriesTotals.reduce((a: any, b: any) => {
6868
return a + b
6969
}, 0)
7070
return sum
@@ -74,7 +74,7 @@ const optionsBase = {
7474
show: true,
7575
fontFamily: "Inter, sans-serif",
7676
offsetY: -20,
77-
formatter: function (value) {
77+
formatter: function (value: any) {
7878
return value + "k"
7979
},
8080
},
@@ -100,14 +100,14 @@ const optionsBase = {
100100
},
101101
yaxis: {
102102
labels: {
103-
formatter: function (value) {
103+
formatter: function (value: any) {
104104
return value;
105105
},
106106
},
107107
},
108108
xaxis: {
109109
labels: {
110-
formatter: function (value) {
110+
formatter: function (value: any) {
111111
return value;
112112
},
113113
},

adminforth/spa/src/afcl/Select.vue

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
<label v-if="!$slots.item" :for="item.value">{{ item.label }}</label>
5353
</div>
5454
<div v-if="!filteredItems.length" class="px-4 py-2 cursor-pointer text-lightDropdownOptionsText dark:text-darkDropdownOptionsText">
55-
{{ options.length ? $t('No results found') : $t('No items here') }}
55+
{{ options?.length ? $t('No results found') : $t('No items here') }}
5656
</div>
5757

5858
<div v-if="$slots['extra-item']" class="px-4 py-2 dark:text-gray-400">
@@ -76,7 +76,7 @@
7676
<label v-if="!$slots.item" :for="item.value">{{ item.label }}</label>
7777
</div>
7878
<div v-if="!filteredItems.length" class="px-4 py-2 cursor-pointer text-lightDropdownOptionsText dark:text-darkDropdownOptionsText">
79-
{{ options.length ? $t('No results found') : $t('No items here') }}
79+
{{ options?.length ? $t('No results found') : $t('No items here') }}
8080
</div>
8181
<div v-if="$slots['extra-item']" class="px-4 py-2 dark:text-darkDropdownOptionsText">
8282
<slot name="extra-item"></slot>
@@ -114,14 +114,15 @@
114114
</template>
115115

116116
<script setup lang="ts">
117-
import { ref, computed, onMounted, onUnmounted, watch, nextTick, type Ref } from 'vue';
117+
import { ref, computed, onMounted, onUnmounted, watch, nextTick,type PropType, type Ref } from 'vue';
118118
import { IconCaretDownSolid } from '@iconify-prerendered/vue-flowbite';
119119
import { useElementSize } from '@vueuse/core'
120120
121121
const props = defineProps({
122122
options: Array,
123123
modelValue: {
124-
default: undefined,
124+
type: Array as PropType<(string | number)[]>,
125+
default: () => [],
125126
},
126127
multiple: {
127128
type: Boolean,
@@ -178,14 +179,14 @@ function inputInput() {
178179
function updateFromProps() {
179180
if (props.modelValue !== undefined) {
180181
if (!props.multiple) {
181-
const el = props.options.find(item => item.value === props.modelValue);
182+
const el = props.options?.find((item: any) => item.value === props.modelValue);
182183
if (el) {
183184
selectedItems.value = [el];
184185
} else {
185186
selectedItems.value = [];
186187
}
187188
} else {
188-
selectedItems.value = props.options.filter(item => props.modelValue.includes(item.value));
189+
selectedItems.value = props.options?.filter((item: any) => props.modelValue?.includes(item.value)) || [];
189190
}
190191
}
191192
}
@@ -268,7 +269,7 @@ onMounted(() => {
268269
}
269270
});
270271
271-
const filteredItems = computed(() => {
272+
const filteredItems: Ref<any[]> = computed(() => {
272273
273274
if (props.searchDisabled) {
274275
return props.options || [];
@@ -295,7 +296,7 @@ const removeClickListener = () => {
295296
document.removeEventListener('click', handleClickOutside);
296297
};
297298
298-
const toogleItem = (item) => {
299+
const toogleItem = (item: any) => {
299300
if (selectedItems.value.includes(item)) {
300301
selectedItems.value = selectedItems.value.filter(i => i.value !== item.value);
301302
} else {

adminforth/spa/src/afcl/Toggle.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
value="" class="sr-only peer"
66
:disabled="props.disabled"
77
:checked="props.modelValue"
8-
@change="$emit('update:modelValue', $event.target.checked)"
8+
@change="$emit('update:modelValue', ($event.target as HTMLInputElement).checked)"
99
>
1010
<div class="afcl-toggle border border-lightToggleBorderUnactive relative min-w-11 min-h-6 bg-lightToggleBgUnactive peer-focus:outline-none peer-focus:ring-4
1111
peer-focus:ring-lightToggleRing dark:peer-focus:ring-darkToggleRing rounded-full peer dark:bg-darkToggleBgUnactive

0 commit comments

Comments
 (0)