v-sistec-features 1.0.0 → 1.1.1
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 +1 -0
- package/dist/v-sistec-features.css +1 -1
- package/dist/vDataTable.js +838 -0
- package/package.json +14 -6
- package/src/DatatableVue/components/PaginationDatatable.vue +222 -0
- package/src/DatatableVue/components/SearchDatatable.vue +159 -0
- package/src/DatatableVue/components/VColumn.vue +94 -0
- package/src/DatatableVue/components/VDataTable.vue +721 -0
- package/src/DatatableVue/composables/useImagePreview.ts +61 -0
- package/src/DatatableVue/index.ts +7 -0
- package/src/DatatableVue/keys.ts +32 -0
- package/dist/vite.svg +0 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { ref, computed, type CSSProperties } from 'vue';
|
|
2
|
+
|
|
3
|
+
export function useImagePreview() {
|
|
4
|
+
|
|
5
|
+
const isHovering = ref<boolean>(false);
|
|
6
|
+
const previewSrc = ref<string>('');
|
|
7
|
+
const previewX = ref<number>(0);
|
|
8
|
+
const previewY = ref<number>(0);
|
|
9
|
+
|
|
10
|
+
const previewStyle = computed<CSSProperties>(() => ({
|
|
11
|
+
position: 'fixed',
|
|
12
|
+
zIndex: 9999,
|
|
13
|
+
pointerEvents: 'none',
|
|
14
|
+
top: `${previewY.value + 15}px`,
|
|
15
|
+
left: `${previewX.value + 15}px`,
|
|
16
|
+
}));
|
|
17
|
+
|
|
18
|
+
function updatePreviewPosition(event: MouseEvent): void {
|
|
19
|
+
const cursorX = event.clientX;
|
|
20
|
+
const cursorY = event.clientY;
|
|
21
|
+
const viewportHeight = window.innerHeight;
|
|
22
|
+
const offset = 15;
|
|
23
|
+
const previewHeight = 300; // Altura máxima estimada
|
|
24
|
+
|
|
25
|
+
let newY = cursorY + offset;
|
|
26
|
+
|
|
27
|
+
if (newY + previewHeight > viewportHeight) {
|
|
28
|
+
newY = cursorY - previewHeight - offset;
|
|
29
|
+
if (newY < 0) {
|
|
30
|
+
newY = 0;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
previewX.value = cursorX;
|
|
34
|
+
previewY.value = newY;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function handleMouseOver(event: MouseEvent, src: string): void {
|
|
38
|
+
isHovering.value = true;
|
|
39
|
+
previewSrc.value = src;
|
|
40
|
+
updatePreviewPosition(event);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function handleMouseMove(event: MouseEvent): void {
|
|
44
|
+
if (isHovering.value) {
|
|
45
|
+
updatePreviewPosition(event);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function handleMouseLeave(): void {
|
|
50
|
+
isHovering.value = false;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return {
|
|
54
|
+
isHovering,
|
|
55
|
+
previewSrc,
|
|
56
|
+
previewStyle,
|
|
57
|
+
handleMouseOver,
|
|
58
|
+
handleMouseMove,
|
|
59
|
+
handleMouseLeave,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// src/keys.ts
|
|
2
|
+
import type { InjectionKey, Slot } from 'vue'
|
|
3
|
+
|
|
4
|
+
export interface ColumnConfiguration {
|
|
5
|
+
field: string | null;
|
|
6
|
+
header: string;
|
|
7
|
+
type: 'text' | 'img' | 'date' | 'html';
|
|
8
|
+
class_column: string;
|
|
9
|
+
class_row: string;
|
|
10
|
+
class_item: string;
|
|
11
|
+
transform_function: ((value: any) => any) | null;
|
|
12
|
+
bodySlot?: Slot;
|
|
13
|
+
limite_text?: number;
|
|
14
|
+
deactivate_img_preview?: boolean;
|
|
15
|
+
format?: 'complete' | 'simple';
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// A API que o VDataTable "fornece" para os filhos
|
|
19
|
+
export interface DataTableApi {
|
|
20
|
+
addColumn: (config: ColumnConfiguration) => void;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// A chave de injeção do DataTableApi
|
|
24
|
+
export const dataTableApiKey: InjectionKey<DataTableApi> = Symbol('v-datatable-key')
|
|
25
|
+
|
|
26
|
+
export interface PaginationObject {
|
|
27
|
+
current_page: number;
|
|
28
|
+
count: number;
|
|
29
|
+
limit_per_page: number;
|
|
30
|
+
search: string;
|
|
31
|
+
filter: string;
|
|
32
|
+
}
|
package/dist/vite.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
|