Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 5 additions & 6 deletions adminforth/spa/src/adminforth.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import type { FilterParams, FrontendAPIInterface } from "./types/FrontendAPI";
import type { FrontendAPIInterface, ConfirmParams, AlertParams, } from '@/types/FrontendAPI';
import type { AdminForthFilterOperators, AdminForthResourceColumn } from '@/types/Common';
import type { FilterParams, FrontendAPIInterface, ConfirmParams, AlertParams, } from '@/types/FrontendAPI';
import type { AdminForthFilterOperators, AdminForthResourceColumnCommon } from '@/types/Common';
import { useToastStore } from '@/stores/toast';
import { useModalStore } from '@/stores/modal';
import { useCoreStore } from '@/stores/core';
Expand Down Expand Up @@ -85,7 +84,7 @@ class FrontendAPI implements FrontendAPIInterface {
}
}

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

setListFilter(filter: FilterParams): void {
if(this.listFilterValidation(filter)){
if(this.filtersStore.filters.some((f) => {return f.field === filter.field && f.operator === filter.operator})){
if(this.filtersStore.filters.some((f: any) => {return f.field === filter.field && f.operator === filter.operator})){
throw new Error(`Filter ${filter.field} with operator ${filter.operator} already exists`)
} else {
this.filtersStore.setFilter(filter)
Expand Down
4 changes: 2 additions & 2 deletions adminforth/spa/src/afcl/BarChart.vue
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ const optionsBase = {
tooltip: {
shared: true,
intersect: false,
formatter: function (value) {
formatter: function (value: any) {
return value
},
},
Expand All @@ -71,7 +71,7 @@ const optionsBase = {
fontFamily: "Inter, sans-serif",
cssClass: 'text-xs font-normal fill-gray-500 dark:fill-gray-400'
},
formatter: function (value) {
formatter: function (value: any) {
return value
}
},
Expand Down
2 changes: 1 addition & 1 deletion adminforth/spa/src/afcl/Checkbox.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
type="checkbox"
:checked="props.modelValue"
:disabled="props.disabled"
@change="$emit('update:modelValue', $event.target.checked)"
@change="$emit('update:modelValue', ($event.target as HTMLInputElement).checked)"
class="peer appearance-none min-w-4 min-h-4 bg-lightCheckboxBgUnchecked border border-lightCheckboxBorderColor rounded-sm checked:bg-lightCheckboxBgChecked
focus:ring-lightFocusRing dark:focus:ring-darkFocusRing dark:focus:ring-darkFocusRing
focus:ring-2 dark:bg-darkCheckboxBgUnchecked dark:border-darkCheckboxBorderColor dark:checked:bg-darkCheckboxBgChecked cursor-pointer"
Expand Down
4 changes: 2 additions & 2 deletions adminforth/spa/src/afcl/Dropzone.vue
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<form class="flex items-center justify-center w-full"
@dragover.prevent="dragging = true"
@dragleave.prevent="dragging = false"
@drop.prevent="dragging = false; doEmit($event.dataTransfer.files)"
@drop.prevent="dragging = false; doEmit(($event.dataTransfer as DataTransfer).files)"
>
<label :id="id" class="flex flex-col items-center justify-center w-full border-2 border-dashed rounded-lg cursor-pointer
hover:bg-lightDropzoneBackgroundHover hover:border-lightDropzoneBorderHover dark:hover:border-darkDropzoneBorderHover dark:hover:bg-darkDropzoneBackgroundHover"
Expand Down Expand Up @@ -42,7 +42,7 @@
</div>
<input :id="id" type="file" class="hidden"
:accept="props.extensions.join(', ')"
@change="doEmit($event.target.files)"
@change="$event.target && doEmit(($event.target as HTMLInputElement).files!)"
:multiple="props.multiple || false"
/>
</label>
Expand Down
2 changes: 1 addition & 1 deletion adminforth/spa/src/afcl/Input.vue
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
ref="input"
v-bind="$attrs"
:type="type"
@input="$emit('update:modelValue', type === 'number' ? Number($event.target?.value) : $event.target?.value)"
@input="$emit('update:modelValue', type === 'number' ? Number(($event.target as HTMLInputElement)?.value) : ($event.target as HTMLInputElement)?.value)"
:value="modelValue"
aria-describedby="helper-text-explanation"
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
Expand Down
2 changes: 1 addition & 1 deletion adminforth/spa/src/afcl/LinkButton.vue
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<script setup lang="ts">

const props = defineProps<{
disabled: boolean,
disabled?: boolean,
to: string,
}>();

Expand Down
10 changes: 5 additions & 5 deletions adminforth/spa/src/afcl/PieChart.vue
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@ const optionsBase = {
show: false,
fontFamily: "Inter, sans-serif",
label: "",
formatter: function (w) {
const sum = w.globals.seriesTotals.reduce((a, b) => {
formatter: function (w: any) {
const sum = w.globals.seriesTotals.reduce((a: any, b: any) => {
return a + b
}, 0)
return sum
Expand All @@ -74,7 +74,7 @@ const optionsBase = {
show: true,
fontFamily: "Inter, sans-serif",
offsetY: -20,
formatter: function (value) {
formatter: function (value: any) {
return value + "k"
},
},
Expand All @@ -100,14 +100,14 @@ const optionsBase = {
},
yaxis: {
labels: {
formatter: function (value) {
formatter: function (value: any) {
return value;
},
},
},
xaxis: {
labels: {
formatter: function (value) {
formatter: function (value: any) {
return value;
},
},
Expand Down
17 changes: 9 additions & 8 deletions adminforth/spa/src/afcl/Select.vue
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
<label v-if="!$slots.item" :for="item.value">{{ item.label }}</label>
</div>
<div v-if="!filteredItems.length" class="px-4 py-2 cursor-pointer text-lightDropdownOptionsText dark:text-darkDropdownOptionsText">
{{ options.length ? $t('No results found') : $t('No items here') }}
{{ options?.length ? $t('No results found') : $t('No items here') }}
</div>

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

<script setup lang="ts">
import { ref, computed, onMounted, onUnmounted, watch, nextTick, type Ref } from 'vue';
import { ref, computed, onMounted, onUnmounted, watch, nextTick,type PropType, type Ref } from 'vue';
import { IconCaretDownSolid } from '@iconify-prerendered/vue-flowbite';
import { useElementSize } from '@vueuse/core'

const props = defineProps({
options: Array,
modelValue: {
default: undefined,
type: Array as PropType<(string | number)[]>,
default: () => [],
},
multiple: {
type: Boolean,
Expand Down Expand Up @@ -178,14 +179,14 @@ function inputInput() {
function updateFromProps() {
if (props.modelValue !== undefined) {
if (!props.multiple) {
const el = props.options.find(item => item.value === props.modelValue);
const el = props.options?.find((item: any) => item.value === props.modelValue);
if (el) {
selectedItems.value = [el];
} else {
selectedItems.value = [];
}
} else {
selectedItems.value = props.options.filter(item => props.modelValue.includes(item.value));
selectedItems.value = props.options?.filter((item: any) => props.modelValue?.includes(item.value)) || [];
}
}
}
Expand Down Expand Up @@ -268,7 +269,7 @@ onMounted(() => {
}
});

const filteredItems = computed(() => {
const filteredItems: Ref<any[]> = computed(() => {

if (props.searchDisabled) {
return props.options || [];
Expand All @@ -295,7 +296,7 @@ const removeClickListener = () => {
document.removeEventListener('click', handleClickOutside);
};

const toogleItem = (item) => {
const toogleItem = (item: any) => {
if (selectedItems.value.includes(item)) {
selectedItems.value = selectedItems.value.filter(i => i.value !== item.value);
} else {
Expand Down
2 changes: 1 addition & 1 deletion adminforth/spa/src/afcl/Toggle.vue
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
value="" class="sr-only peer"
:disabled="props.disabled"
:checked="props.modelValue"
@change="$emit('update:modelValue', $event.target.checked)"
@change="$emit('update:modelValue', ($event.target as HTMLInputElement).checked)"
>
<div class="afcl-toggle border border-lightToggleBorderUnactive relative min-w-11 min-h-6 bg-lightToggleBgUnactive peer-focus:outline-none peer-focus:ring-4
peer-focus:ring-lightToggleRing dark:peer-focus:ring-darkToggleRing rounded-full peer dark:bg-darkToggleBgUnactive
Expand Down
Loading