vue-slim-tables 0.0.6 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,3 +1,52 @@
1
- # vue-slim-table
1
+ # Vue Slim Tables
2
2
 
3
- ...comming soon
3
+ ### Installation & basic usage
4
+ ```sh
5
+ yarn add vue-slim-tables
6
+ // or
7
+ npm install vue-slim-tables
8
+ ```
9
+
10
+ ```html
11
+ <template>
12
+ <VueSlimTables :columns="columns" remote="/users" />
13
+ </template>
14
+
15
+ <script>
16
+ export default {
17
+ created() {
18
+ this.columns = [
19
+ { key: 'id', title: 'ID' },
20
+ { key: 'name', title: 'Name' },
21
+ { key: 'phone', title: 'Phone' }
22
+ ]
23
+ }
24
+ }
25
+ </script>
26
+ ```
27
+
28
+ ### Props
29
+ | Prop | Type | Required | Description |
30
+ | - | - | - | - |
31
+ | columns | Array | true | Array of column objects described below |
32
+ | source | [String, Function] | true | `string` is for async fetching rows<br/>`function` for more complicated async load |
33
+ | perPage | Number | false | Number or rows to display |
34
+
35
+ #### Column object
36
+ | Key | Type | Required | Description |
37
+ | - | - | - | - |
38
+ | key | String | true | `Uniq` key that used for ordering and slots |
39
+ | title | String | true | Displayed in thead |
40
+ | orderable | Boolean | false | Ordering by column `key` |
41
+
42
+ ### Slots
43
+ | Slot | Props | Description |
44
+ | - | - | - |
45
+ | #head:${column.key} | { column } | Rewrite column thead with custom html |
46
+ | #row | { row, index, columns } | Rewrite whole row |
47
+ | #row:empty | - | Rewrite empty table row markup |
48
+ | #row:loading | - | Rewrite loading table rows markup |
49
+ | #cell:${column.key} | { row, index, column, value } | Rewrite cell with custom html |
50
+ | #pagination | { page, rows } | Rewrite pagination with your own implementation |
51
+ | #thead:before | { columns } | Ability to render content before base header |
52
+ | #thead:after | { columns } | Ability to render content after base header |
package/dist/style.css ADDED
@@ -0,0 +1 @@
1
+ @charset "UTF-8";@keyframes moving-gradient{0%{background-position:-250px 0}to{background-position:250px 0}}.vst-th{line-height:20px}.vst-orderable div{display:flex;justify-content:space-between;align-items:center}.vst-orderable div:hover{cursor:pointer}.vst-orderable div:hover .vst-orderable-toggle{color:#555!important}.vst-orderable div .vst-orderable-toggle{font-size:20px;color:#ccc!important}.vst-orderable div .vst-orderable-toggle:after{content:" \2194";display:inline-block;transform:rotate(-90deg)}.vst-orderable div .vst-orderable-toggle.desc:after{content:" \2191";transform:rotate(0)}.vst-orderable div .vst-orderable-toggle.asc:after{content:" \2193";transform:rotate(0)}.vst-loading-row div{height:1.5rem;background:linear-gradient(to right,#eee 20%,#ddd 50%,#eee 80%);background-size:500px 1.5rem;animation-name:moving-gradient;animation-duration:1s;animation-iteration-count:infinite;animation-timing-function:linear;animation-fill-mode:forwards}.vst tr td.vst-loading-row-1 div{animation-delay:-1s}.vst tr td.vst-loading-row-2 div{animation-delay:-.9s}.vst tr td.vst-loading-row-3 div{animation-delay:-.8s}.vst tr td.vst-loading-row-4 div{animation-delay:-.7s}.vst tr td.vst-loading-row-5 div{animation-delay:-.6s}.vst tr td.vst-loading-row-6 div{animation-delay:-.5s}.vst tr td.vst-loading-row-7 div{animation-delay:-.4s}.vst tr td.vst-loading-row-8 div{animation-delay:-.3s}.vst tr td.vst-loading-row-9 div{animation-delay:-.2s}.vst tr td.vst-loading-row-10 div{animation-delay:-.1s}.vst-pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.vst-pagination a{position:relative;display:block;padding:8px 12px;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.vst-pagination a:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.vst-page-item.disabled .vst-page-link{pointer-events:none;color:#6c757d;cursor:auto;background-color:#fff}.vst-page-item .vst-page-link{cursor:pointer}
@@ -0,0 +1,14 @@
1
+ declare const _sfc_main: import("vue").DefineComponent<{
2
+ columnsLength: {
3
+ type: NumberConstructor;
4
+ required: true;
5
+ };
6
+ }, {
7
+ randNum: number;
8
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
9
+ columnsLength: {
10
+ type: NumberConstructor;
11
+ required: true;
12
+ };
13
+ }>>, {}>;
14
+ export default _sfc_main;
@@ -0,0 +1,83 @@
1
+ import { ShallowRef } from 'vue';
2
+ interface TableColumn {
3
+ key: string;
4
+ title: string;
5
+ orderable?: boolean;
6
+ }
7
+ interface TableOrders {
8
+ [key: string]: 'asc' | 'desc';
9
+ }
10
+ interface TableFetchParams {
11
+ per_page: number;
12
+ page: number;
13
+ order?: Array<{
14
+ field: string;
15
+ direction: 'asc' | 'desc';
16
+ }>;
17
+ }
18
+ declare const _sfc_main: import("vue").DefineComponent<{
19
+ columns: {
20
+ type: ArrayConstructor;
21
+ required: true;
22
+ };
23
+ source: {
24
+ type: (StringConstructor | FunctionConstructor)[];
25
+ required: true;
26
+ };
27
+ perPage: {
28
+ type: NumberConstructor;
29
+ required: false;
30
+ default: number;
31
+ };
32
+ }, {
33
+ props: {
34
+ columns: Array<TableColumn>;
35
+ source: string | ((_: TableFetchParams) => Promise<Array<unknown>> | Array<unknown>);
36
+ perPage: number;
37
+ };
38
+ orders: ShallowRef<TableOrders>;
39
+ fetchData: (params: TableFetchParams) => Promise<any>;
40
+ onOrderClick: (key: string) => void;
41
+ page: import("vue").Ref<number>;
42
+ isSyncing: import("vue").ComputedRef<boolean>;
43
+ isSynced: import("vue").ComputedRef<boolean>;
44
+ prevPage: () => void;
45
+ nextPage: () => void;
46
+ reload: () => void;
47
+ refetch: () => void;
48
+ rows: {
49
+ value: {
50
+ [x: string]: any;
51
+ }[];
52
+ };
53
+ LoadingRow: import("vue").DefineComponent<{
54
+ columnsLength: {
55
+ type: NumberConstructor;
56
+ required: true;
57
+ };
58
+ }, {
59
+ randNum: number;
60
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
61
+ columnsLength: {
62
+ type: NumberConstructor;
63
+ required: true;
64
+ };
65
+ }>>, {}>;
66
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
67
+ columns: {
68
+ type: ArrayConstructor;
69
+ required: true;
70
+ };
71
+ source: {
72
+ type: (StringConstructor | FunctionConstructor)[];
73
+ required: true;
74
+ };
75
+ perPage: {
76
+ type: NumberConstructor;
77
+ required: false;
78
+ default: number;
79
+ };
80
+ }>>, {
81
+ perPage: number;
82
+ }>;
83
+ export default _sfc_main;
@@ -0,0 +1,2 @@
1
+ import VueSlimTable from './components/table.vue';
2
+ export default VueSlimTable;
@@ -0,0 +1,23 @@
1
+ interface UseFiltetableArgs {
2
+ initialFilters: {
3
+ [key: string]: any;
4
+ };
5
+ loadItems: any;
6
+ }
7
+ declare const useFilterable: ({ initialFilters, loadItems }: UseFiltetableArgs) => {
8
+ page: import("vue").Ref<number>;
9
+ items: {
10
+ value: {
11
+ [x: string]: any;
12
+ }[];
13
+ };
14
+ syncState: import("vue").Ref<string>;
15
+ nextPage: () => void;
16
+ prevPage: () => void;
17
+ isSyncing: import("vue").ComputedRef<boolean>;
18
+ isSynced: import("vue").ComputedRef<boolean>;
19
+ isFailed: import("vue").ComputedRef<boolean>;
20
+ reload: () => void;
21
+ refetch: () => void;
22
+ };
23
+ export default useFilterable;