Skip to content

Commit 7cddf19

Browse files
committed
Better TS types
1 parent 8d45280 commit 7cddf19

File tree

7 files changed

+16
-12
lines changed

7 files changed

+16
-12
lines changed

demo/main.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ import MyApp from './app.vue';
33
import Datagrid from '../src/datagrid.vue';
44

55
createApp(MyApp)
6-
.component('ui-datagrid', Datagrid)
6+
.component('ui-datagrid', <any>Datagrid) // HACK: vue bug for now
77
.mount('#app');

src/columns/column.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export interface ColumnDefinition {
88
render?: FunctionalComponent;
99
resizable?: boolean;
1010
sortable?: boolean;
11+
searchable?: boolean;
1112
width?: number;
1213
};
1314

src/datagrid.vue

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,17 @@
4141
</template>
4242

4343
<script lang="ts">
44-
import { onMounted, reactive, shallowReactive, shallowRef as sref, watchEffect } from 'vue';
44+
import { onMounted, reactive, shallowReactive, shallowRef as sref, watchEffect, defineComponent } from 'vue';
4545
import { AnimBody, AnimColumn, useAnimations } from "./animation";
4646
import { addFiller, autoSize, Column, ColumnDefinition, ColResizer } from './columns';
4747
import { ItemDirective, getItem } from './item';
48-
import { view } from "./reactivity/view";
4948
import ResizeDirective from './resize';
5049
import { addSelection } from './selection';
5150
import { useSorting, SortIndicator } from './sort';
51+
import { Ctor, view } from './utils';
5252
import { useVirtual, VirtualBody, VirtualScroller } from './virtual';
5353
54-
export default {
54+
export default defineComponent({
5555
components: {
5656
'anim-body': AnimBody,
5757
'col-resizer': ColResizer,
@@ -67,12 +67,12 @@ export default {
6767
},
6868
6969
props: {
70-
columns: Array,
71-
data: [Array, Promise],
72-
selected: Set,
70+
columns: { type: Array as Ctor<ColumnDefinition[]>, required: true },
71+
data: [Array as Ctor<object[]>, Promise as Ctor<Promise<object[]>>],
72+
selected: Set as Ctor<Set<object>>,
7373
},
7474
75-
setup(props: { columns?: ColumnDefinition[], data?: object[] | Promise<object[]>, selected?: Set<object> }) {
75+
setup(props) {
7676
const autoSized = sref(false);
7777
const loading = sref(true);
7878
const data = sref([] as object[]);
@@ -122,7 +122,7 @@ export default {
122122
...sorting,
123123
});
124124
}
125-
};
125+
});
126126
</script>
127127

128128
<style src='./datagrid.css'></style>

src/utils/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export { view } from './view';
2+
3+
export type Ctor<T> = new (...args: any) => T;
File renamed without changes.

src/virtual/body.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
</template>
1111

1212
<script lang="ts">
13-
import { getState } from "./state";
14-
import { view } from '../reactivity/view';
13+
import { getState } from './state';
14+
import { view } from '../utils';
1515
1616
export default {
1717
setup() {

src/virtual/scroller.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<script lang='ts'>
88
import { shallowRef as sref, onMounted } from 'vue';
99
import { getState } from './state';
10-
import { view } from '../reactivity/view';
10+
import { view } from '../utils';
1111
1212
export default {
1313
setup() {

0 commit comments

Comments
 (0)