@wgalleti/primevue-components 0.6.0 → 0.7.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/dist/WProgressFlow.vue_vue_type_script_setup_true_lang-B70Uk-1x.cjs +12 -0
- package/dist/WProgressFlow.vue_vue_type_script_setup_true_lang-B70Uk-1x.cjs.map +1 -0
- package/dist/WProgressFlow.vue_vue_type_script_setup_true_lang-BVlG1in1.js +3024 -0
- package/dist/WProgressFlow.vue_vue_type_script_setup_true_lang-BVlG1in1.js.map +1 -0
- package/dist/components/crud/WCrudColumnRenderer.vue.d.ts +1 -1
- package/dist/components/crud/WCrudFormDialog.vue.d.ts +7 -11
- package/dist/components/crud/WCrudView.vue.d.ts +7 -2
- package/dist/components/form/WAutoCompleteFK.vue.d.ts +2 -1
- package/dist/components/form/WFormRenderer.vue.d.ts +1 -1
- package/dist/components/form/WImageCropper.vue.d.ts +57 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/ui/WKpiGrid.vue.d.ts +1 -1
- package/dist/components.cjs +2 -0
- package/dist/components.cjs.map +1 -0
- package/dist/components.d.ts +2 -0
- package/dist/components.js +23 -0
- package/dist/components.js.map +1 -0
- package/dist/composables/useCrudManager.d.ts +1 -1
- package/dist/composables.cjs +2 -0
- package/dist/composables.cjs.map +1 -0
- package/dist/composables.d.ts +2 -0
- package/dist/composables.js +12 -0
- package/dist/composables.js.map +1 -0
- package/dist/index.cjs +1 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +122 -3541
- package/dist/index.js.map +1 -1
- package/dist/plugin-BKa0eSEM.js +7 -0
- package/dist/plugin-BKa0eSEM.js.map +1 -0
- package/dist/plugin-D1YvyKXX.cjs +2 -0
- package/dist/plugin-D1YvyKXX.cjs.map +1 -0
- package/dist/primevue-components.css +1 -1
- package/dist/types/action.d.ts +19 -0
- package/dist/types/column.d.ts +30 -0
- package/dist/types/componentMeta.d.ts +33 -0
- package/dist/types/field.d.ts +95 -0
- package/dist/types/index.d.ts +11 -14
- package/dist/types/kpi.d.ts +13 -0
- package/dist/types/labels.d.ts +17 -0
- package/dist/types/manager.d.ts +93 -0
- package/dist/types/plugin.d.ts +24 -2
- package/dist/types.cjs +2 -0
- package/dist/types.cjs.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.js +23 -0
- package/dist/types.js.map +1 -0
- package/dist/useApi-B692TOWz.js +383 -0
- package/dist/useApi-B692TOWz.js.map +1 -0
- package/dist/useApi-BIlKLud-.cjs +2 -0
- package/dist/useApi-BIlKLud-.cjs.map +1 -0
- package/dist/useApiError-BEbEk2Kq.cjs +3 -0
- package/dist/useApiError-BEbEk2Kq.cjs.map +1 -0
- package/dist/useApiError-C7rPzGrF.js +375 -0
- package/dist/useApiError-C7rPzGrF.js.map +1 -0
- package/dist/utils/csv.d.ts +1 -1
- package/dist/utils/fieldMapper.d.ts +2 -1
- package/package.json +49 -12
- package/dist/types/components/crud/WCrudColumnRenderer.vue.d.ts +0 -8
- package/dist/types/components/crud/WCrudFormDialog.vue.d.ts +0 -52
- package/dist/types/components/crud/WCrudView.vue.d.ts +0 -127
- package/dist/types/components/form/WAutoCompleteFK.vue.d.ts +0 -54
- package/dist/types/components/form/WFormRenderer.vue.d.ts +0 -44
- package/dist/types/components/form/WMoneyInput.vue.d.ts +0 -28
- package/dist/types/components/form/WTransferList.vue.d.ts +0 -25
- package/dist/types/components/index.d.ts +0 -18
- package/dist/types/components/ui/WActionBar.vue.d.ts +0 -25
- package/dist/types/components/ui/WDetailHeader.vue.d.ts +0 -24
- package/dist/types/components/ui/WEmptyState.vue.d.ts +0 -13
- package/dist/types/components/ui/WFormSection.vue.d.ts +0 -19
- package/dist/types/components/ui/WInfoCard.vue.d.ts +0 -11
- package/dist/types/components/ui/WKpiCard.vue.d.ts +0 -32
- package/dist/types/components/ui/WKpiGrid.vue.d.ts +0 -31
- package/dist/types/components/ui/WPageHeader.vue.d.ts +0 -22
- package/dist/types/components/ui/WProgressFlow.vue.d.ts +0 -28
- package/dist/types/components/ui/WSectionHeader.vue.d.ts +0 -22
- package/dist/types/components/ui/WStatusTag.vue.d.ts +0 -10
- package/dist/types/composables/index.d.ts +0 -6
- package/dist/types/composables/useApi.d.ts +0 -2
- package/dist/types/composables/useApiError.d.ts +0 -4
- package/dist/types/composables/useAppConfirm.d.ts +0 -4
- package/dist/types/composables/useAppToast.d.ts +0 -6
- package/dist/types/composables/useCrudManager.d.ts +0 -2
- package/dist/types/composables/useFormatters.d.ts +0 -19
- package/dist/types/crud.d.ts +0 -221
- package/dist/types/data-providers/axiosDataProvider.d.ts +0 -3
- package/dist/types/data-providers/index.d.ts +0 -2
- package/dist/types/data-providers/supabaseDataProvider.d.ts +0 -54
- package/dist/types/types/api.d.ts +0 -60
- package/dist/types/types/crud.d.ts +0 -221
- package/dist/types/types/dataProvider.d.ts +0 -28
- package/dist/types/types/index.d.ts +0 -6
- package/dist/types/types/plugin.d.ts +0 -24
- package/dist/types/utils/cep.d.ts +0 -14
- package/dist/types/utils/csv.d.ts +0 -13
- package/dist/types/utils/dates.d.ts +0 -5
- package/dist/types/utils/fieldMapper.d.ts +0 -20
- package/dist/types/utils/masks.d.ts +0 -8
package/dist/types/crud.d.ts
DELETED
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
import { ComputedRef, Ref } from 'vue';
|
|
2
|
-
import { PaginationState, SortState } from './api';
|
|
3
|
-
export type ColumnType = 'text' | 'boolean' | 'date' | 'datetime' | 'number' | 'currency' | 'image' | 'custom';
|
|
4
|
-
export interface ColumnDef {
|
|
5
|
-
field: string;
|
|
6
|
-
header: string;
|
|
7
|
-
type?: ColumnType;
|
|
8
|
-
style?: string;
|
|
9
|
-
align?: 'left' | 'center' | 'right';
|
|
10
|
-
sortable?: boolean;
|
|
11
|
-
format?: (value: unknown, rowData?: Record<string, unknown>) => string;
|
|
12
|
-
visible?: boolean;
|
|
13
|
-
decimals?: number;
|
|
14
|
-
tagValue?: (value: unknown, rowData?: Record<string, unknown>) => string;
|
|
15
|
-
tagSeverity?: (value: unknown, rowData?: Record<string, unknown>) => string;
|
|
16
|
-
}
|
|
17
|
-
export type FieldType = 'text' | 'email' | 'password' | 'number' | 'currency' | 'date' | 'datetime' | 'select' | 'autocomplete' | 'fk' | 'switch' | 'textarea' | 'color' | 'cpf_cnpj' | 'mask' | 'image' | 'cep' | 'transfer';
|
|
18
|
-
export interface SelectOption {
|
|
19
|
-
[key: string]: unknown;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Filtro em cascata (drill-down) de um campo FK: torna a busca dependente do valor
|
|
23
|
-
* de outro campo do formulário, aplicando-o como filtro na requisição à API.
|
|
24
|
-
*/
|
|
25
|
-
export interface FieldDependency {
|
|
26
|
-
/** Campo do formulário cujo valor alimenta o filtro (ex.: 'unidade_producao'). */
|
|
27
|
-
field: string;
|
|
28
|
-
/** Nome do parâmetro enviado à API. Default: o próprio `field`. */
|
|
29
|
-
param?: string;
|
|
30
|
-
/** Se true, a busca só ocorre quando o valor de origem estiver preenchido
|
|
31
|
-
* (cascata obrigatória). Default: true. */
|
|
32
|
-
required?: boolean;
|
|
33
|
-
}
|
|
34
|
-
export interface FieldDef {
|
|
35
|
-
field: string;
|
|
36
|
-
label: string;
|
|
37
|
-
type?: FieldType;
|
|
38
|
-
required?: boolean;
|
|
39
|
-
/** Largura do campo no grid do form (ver `columns` do WFormRenderer):
|
|
40
|
-
* - omitido ou 'full' → linha inteira
|
|
41
|
-
* - 0.5 → metade da linha (independe do nº de colunas)
|
|
42
|
-
* - inteiro ≥ 1 → ocupa N colunas do grid (limitado ao total de colunas) */
|
|
43
|
-
colSpan?: number | 'full';
|
|
44
|
-
defaultValue?: unknown | (() => unknown);
|
|
45
|
-
disabled?: boolean | ((formData: Record<string, unknown>, isEditing: boolean) => boolean);
|
|
46
|
-
disabledOnEdit?: boolean;
|
|
47
|
-
visible?: boolean | ((formData: Record<string, unknown>, isEditing: boolean) => boolean);
|
|
48
|
-
placeholder?: string;
|
|
49
|
-
validate?: (value: unknown) => string | null;
|
|
50
|
-
autofocus?: boolean | 'create' | 'edit';
|
|
51
|
-
options?: SelectOption[] | Ref<SelectOption[]>;
|
|
52
|
-
optionLabel?: string;
|
|
53
|
-
optionValue?: string;
|
|
54
|
-
showClear?: boolean;
|
|
55
|
-
/** For 'transfer' fields — option keys to match against when searching
|
|
56
|
-
* (defaults to [optionLabel]). */
|
|
57
|
-
searchFields?: string[];
|
|
58
|
-
endpoint?: string;
|
|
59
|
-
endpointParams?: Record<string, string | number | boolean>;
|
|
60
|
-
/** Filtro em cascata: torna esta FK dependente do valor de outro(s) campo(s) do
|
|
61
|
-
* formulário, aplicando-o(s) como filtro na busca da API (ex.: um "local" que só
|
|
62
|
-
* lista os da "unidade_producao" selecionada). Com `required` (default true), a
|
|
63
|
-
* busca só ocorre após o campo de origem estar preenchido. */
|
|
64
|
-
dependsOn?: FieldDependency | FieldDependency[];
|
|
65
|
-
/** Placeholder da FK enquanto uma cascata obrigatória (`dependsOn`) não estiver
|
|
66
|
-
* preenchida — ex.: "Selecione a unidade primeiro". */
|
|
67
|
-
blockedPlaceholder?: string;
|
|
68
|
-
crudFields?: FieldDef[];
|
|
69
|
-
crudColumns?: ColumnDef[];
|
|
70
|
-
min?: number;
|
|
71
|
-
max?: number;
|
|
72
|
-
minFractionDigits?: number;
|
|
73
|
-
maxFractionDigits?: number;
|
|
74
|
-
prefix?: string;
|
|
75
|
-
suffix?: string;
|
|
76
|
-
/** For 'currency' fields — render WMoneyInput (digit entry filled from the
|
|
77
|
-
* right, like a calculator/POS) instead of the default InputNumber. */
|
|
78
|
-
fillFromRight?: boolean;
|
|
79
|
-
/** Fixed decimal places for 'currency' fillFromRight mode (default: 2). */
|
|
80
|
-
decimals?: number;
|
|
81
|
-
dateFormat?: string;
|
|
82
|
-
hourFormat?: '12' | '24';
|
|
83
|
-
mask?: string;
|
|
84
|
-
rows?: number;
|
|
85
|
-
switchLabel?: string;
|
|
86
|
-
feedback?: boolean;
|
|
87
|
-
accept?: string;
|
|
88
|
-
/** For type 'cep' — maps ViaCEP response fields to form field names.
|
|
89
|
-
* Keys are ViaCEP response names (logradouro, bairro, localidade, uf, complemento).
|
|
90
|
-
* Values are the form field names to populate. Omit keys to skip fields. */
|
|
91
|
-
cepFields?: {
|
|
92
|
-
logradouro?: string;
|
|
93
|
-
bairro?: string;
|
|
94
|
-
localidade?: string;
|
|
95
|
-
uf?: string;
|
|
96
|
-
complemento?: string;
|
|
97
|
-
};
|
|
98
|
-
/** Optional visual grouping. Fields with the same group.id render together
|
|
99
|
-
* under a titled section. Ungrouped fields render in a default section at the top.
|
|
100
|
-
* `order` controls the display order of groups; defaults to the order of first occurrence. */
|
|
101
|
-
fieldGroup?: {
|
|
102
|
-
id: string;
|
|
103
|
-
title: string;
|
|
104
|
-
description?: string;
|
|
105
|
-
order?: number;
|
|
106
|
-
/** Nº de colunas do grid deste grupo — sobrepõe o `columns` do form. */
|
|
107
|
-
columns?: number;
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
export interface RowAction<T = Record<string, unknown>> {
|
|
111
|
-
action: string;
|
|
112
|
-
icon: string;
|
|
113
|
-
tooltip?: string;
|
|
114
|
-
severity?: 'secondary' | 'success' | 'info' | 'warn' | 'danger' | 'contrast';
|
|
115
|
-
visible?: (data: T) => boolean;
|
|
116
|
-
disabled?: (data: T) => boolean;
|
|
117
|
-
handler?: (data: T) => void;
|
|
118
|
-
}
|
|
119
|
-
export interface CrudLabels {
|
|
120
|
-
createTitle: string;
|
|
121
|
-
editTitle: string;
|
|
122
|
-
viewTitle?: string;
|
|
123
|
-
createButton: string;
|
|
124
|
-
saveButton: string;
|
|
125
|
-
updateButton: string;
|
|
126
|
-
cancelButton: string;
|
|
127
|
-
deleteConfirmTitle: string;
|
|
128
|
-
deleteConfirmMessage: string;
|
|
129
|
-
searchPlaceholder: string;
|
|
130
|
-
emptyMessage: string;
|
|
131
|
-
successCreate: string;
|
|
132
|
-
successUpdate: string;
|
|
133
|
-
successDelete: string;
|
|
134
|
-
}
|
|
135
|
-
export declare const DEFAULT_CRUD_LABELS: CrudLabels;
|
|
136
|
-
export interface KpiItem {
|
|
137
|
-
icon: string;
|
|
138
|
-
label: string;
|
|
139
|
-
value: string | number;
|
|
140
|
-
color?: string;
|
|
141
|
-
severity?: 'primary' | 'success' | 'warning' | 'danger' | 'info';
|
|
142
|
-
hint?: string;
|
|
143
|
-
loading?: boolean;
|
|
144
|
-
trend?: {
|
|
145
|
-
value: string;
|
|
146
|
-
direction?: 'up' | 'down' | 'neutral';
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
export interface CrudManagerConfig<T> {
|
|
150
|
-
endpoint: string;
|
|
151
|
-
columns: ColumnDef[];
|
|
152
|
-
form: FieldDef[];
|
|
153
|
-
/** Nº de colunas do grid do form dialog (default 2). Campos usam `colSpan`
|
|
154
|
-
* para ocupar frações do grid; grupos podem sobrepor via `fieldGroup.columns`. */
|
|
155
|
-
formColumns?: number;
|
|
156
|
-
pk?: string;
|
|
157
|
-
pageSize?: number;
|
|
158
|
-
searchDebounce?: number;
|
|
159
|
-
/** When editing, send only the changed fields (diff) instead of the whole
|
|
160
|
-
* record. Defaults to `true`. Set `false` to always send the full payload. */
|
|
161
|
-
partialUpdate?: boolean;
|
|
162
|
-
/** After a successful create/update, re-fetch the current page so the list
|
|
163
|
-
* reflects the backend (derived fields, ordering) without losing pagination,
|
|
164
|
-
* search or filter position. Defaults to `true`. Set `false` to keep the
|
|
165
|
-
* optimistic in-place update instead. */
|
|
166
|
-
refetchOnSave?: boolean;
|
|
167
|
-
canCreate?: boolean;
|
|
168
|
-
canEdit?: boolean;
|
|
169
|
-
canDelete?: boolean;
|
|
170
|
-
rowActions?: RowAction<T>[];
|
|
171
|
-
filterParams?: () => Record<string, unknown>;
|
|
172
|
-
transformPayload?: (payload: Record<string, unknown>, isEditing: boolean) => Record<string, unknown>;
|
|
173
|
-
createDefaults?: () => Record<string, unknown>;
|
|
174
|
-
onAfterSave?: (data: T, isEditing: boolean) => void;
|
|
175
|
-
onAfterDelete?: (item: T) => void;
|
|
176
|
-
labels?: Partial<CrudLabels>;
|
|
177
|
-
}
|
|
178
|
-
export interface CrudManagerReturn<T> {
|
|
179
|
-
items: Ref<T[]>;
|
|
180
|
-
extras: Ref<Record<string, unknown>>;
|
|
181
|
-
loading: Ref<boolean>;
|
|
182
|
-
saving: Ref<boolean>;
|
|
183
|
-
search: Ref<string>;
|
|
184
|
-
dialogVisible: Ref<boolean>;
|
|
185
|
-
editingItem: Ref<T | null>;
|
|
186
|
-
formData: Record<string, unknown>;
|
|
187
|
-
pagination: PaginationState;
|
|
188
|
-
sort: SortState;
|
|
189
|
-
isEditing: ComputedRef<boolean>;
|
|
190
|
-
isViewing: ComputedRef<boolean>;
|
|
191
|
-
viewMode: Ref<boolean>;
|
|
192
|
-
dialogTitle: ComputedRef<string>;
|
|
193
|
-
isFirstPage: ComputedRef<boolean>;
|
|
194
|
-
isLastPage: ComputedRef<boolean>;
|
|
195
|
-
init(): Promise<void>;
|
|
196
|
-
fetchItems(params?: Record<string, unknown>): Promise<void>;
|
|
197
|
-
fetchAll(pageSize?: number): Promise<T[]>;
|
|
198
|
-
refresh(): Promise<void>;
|
|
199
|
-
setSearch(value: string): void;
|
|
200
|
-
onSearch(event: Event): void;
|
|
201
|
-
onPage(event: {
|
|
202
|
-
page: number;
|
|
203
|
-
rows: number;
|
|
204
|
-
}): void;
|
|
205
|
-
onSort(event: {
|
|
206
|
-
sortField?: string | null;
|
|
207
|
-
sortOrder?: 1 | -1 | 0 | null;
|
|
208
|
-
}): void;
|
|
209
|
-
openCreateDialog(): void;
|
|
210
|
-
openEditDialog(item: T): void;
|
|
211
|
-
openViewDialog(item: T): void;
|
|
212
|
-
openDuplicateDialog(item: T): void;
|
|
213
|
-
save(): Promise<T | null>;
|
|
214
|
-
confirmDelete(item: T): void;
|
|
215
|
-
setFormField(field: string, value: unknown): void;
|
|
216
|
-
resetForm(): void;
|
|
217
|
-
goToPage(page: number): void;
|
|
218
|
-
firstPage(): void;
|
|
219
|
-
lastPage(): void;
|
|
220
|
-
config: CrudManagerConfig<T>;
|
|
221
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import type { DataProvider } from '@/types/dataProvider';
|
|
2
|
-
type SupabaseResult<T> = {
|
|
3
|
-
data: T | null;
|
|
4
|
-
error: {
|
|
5
|
-
message: string;
|
|
6
|
-
code?: string;
|
|
7
|
-
details?: string;
|
|
8
|
-
hint?: string;
|
|
9
|
-
} | null;
|
|
10
|
-
count?: number | null;
|
|
11
|
-
};
|
|
12
|
-
type SupabaseFilterBuilder<T> = PromiseLike<SupabaseResult<T>> & {
|
|
13
|
-
select(columns?: string, options?: {
|
|
14
|
-
count?: 'exact' | 'planned' | 'estimated';
|
|
15
|
-
}): SupabaseFilterBuilder<T>;
|
|
16
|
-
eq(column: string, value: unknown): SupabaseFilterBuilder<T>;
|
|
17
|
-
ilike(column: string, pattern: string): SupabaseFilterBuilder<T>;
|
|
18
|
-
or(filters: string): SupabaseFilterBuilder<T>;
|
|
19
|
-
order(column: string, options?: {
|
|
20
|
-
ascending?: boolean;
|
|
21
|
-
}): SupabaseFilterBuilder<T>;
|
|
22
|
-
range(from: number, to: number): SupabaseFilterBuilder<T>;
|
|
23
|
-
single(): Promise<SupabaseResult<T>>;
|
|
24
|
-
};
|
|
25
|
-
type SupabaseTable = {
|
|
26
|
-
select<T = unknown>(columns?: string, options?: {
|
|
27
|
-
count?: 'exact' | 'planned' | 'estimated';
|
|
28
|
-
}): SupabaseFilterBuilder<T>;
|
|
29
|
-
insert<T = unknown>(payload: unknown): SupabaseFilterBuilder<T>;
|
|
30
|
-
update<T = unknown>(payload: unknown): SupabaseFilterBuilder<T>;
|
|
31
|
-
delete<T = unknown>(): SupabaseFilterBuilder<T>;
|
|
32
|
-
};
|
|
33
|
-
export interface SupabaseDataProviderClient {
|
|
34
|
-
from(table: string): SupabaseTable;
|
|
35
|
-
}
|
|
36
|
-
export interface SupabaseResourceConfig {
|
|
37
|
-
table: string;
|
|
38
|
-
pk?: string;
|
|
39
|
-
select?: string;
|
|
40
|
-
searchFields?: string[];
|
|
41
|
-
defaultOrdering?: string;
|
|
42
|
-
defaultFilters?: Record<string, unknown>;
|
|
43
|
-
softDelete?: boolean | Record<string, unknown>;
|
|
44
|
-
mapListItem?: (item: Record<string, unknown>) => Record<string, unknown>;
|
|
45
|
-
mapPayload?: (payload: Record<string, unknown>, operation: 'create' | 'update') => Record<string, unknown>;
|
|
46
|
-
}
|
|
47
|
-
export interface CreateSupabaseDataProviderOptions {
|
|
48
|
-
client: SupabaseDataProviderClient;
|
|
49
|
-
resources?: Record<string, SupabaseResourceConfig | string>;
|
|
50
|
-
defaultSelect?: string;
|
|
51
|
-
allowedTables?: string[];
|
|
52
|
-
}
|
|
53
|
-
export declare function createSupabaseDataProvider(options: CreateSupabaseDataProviderOptions): DataProvider;
|
|
54
|
-
export {};
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import type { Ref } from 'vue';
|
|
2
|
-
/**
|
|
3
|
-
* Formato padrao de resposta paginada da API (DRF).
|
|
4
|
-
*/
|
|
5
|
-
export interface PaginatedResponse<T> {
|
|
6
|
-
data: T[];
|
|
7
|
-
page: number;
|
|
8
|
-
page_size: number;
|
|
9
|
-
rows: number;
|
|
10
|
-
extras?: Record<string, unknown>;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Estado reativo de paginacao.
|
|
14
|
-
*/
|
|
15
|
-
export interface PaginationState {
|
|
16
|
-
page: number;
|
|
17
|
-
pageSize: number;
|
|
18
|
-
rows: number;
|
|
19
|
-
totalPages: number;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Estado de ordenacao server-side.
|
|
23
|
-
*/
|
|
24
|
-
export interface SortState {
|
|
25
|
-
field: string | null;
|
|
26
|
-
order: 1 | -1 | 0;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Opcoes do useApi composable.
|
|
30
|
-
*/
|
|
31
|
-
export interface UseApiOptions {
|
|
32
|
-
endpoint: string;
|
|
33
|
-
pageSize?: number;
|
|
34
|
-
searchDebounce?: number;
|
|
35
|
-
immediate?: boolean;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Retorno do useApi composable.
|
|
39
|
-
*/
|
|
40
|
-
export interface UseApiReturn<T> {
|
|
41
|
-
items: Ref<T[]>;
|
|
42
|
-
loading: Ref<boolean>;
|
|
43
|
-
search: Ref<string>;
|
|
44
|
-
pagination: PaginationState;
|
|
45
|
-
extras: Ref<Record<string, unknown>>;
|
|
46
|
-
sort: SortState;
|
|
47
|
-
fetchItems(params?: Record<string, unknown>): Promise<void>;
|
|
48
|
-
refresh(): Promise<void>;
|
|
49
|
-
setSearch(value: string): void;
|
|
50
|
-
setFilter(key: string, value: unknown): void;
|
|
51
|
-
clearFilters(): void;
|
|
52
|
-
onPage(event: {
|
|
53
|
-
page: number;
|
|
54
|
-
rows: number;
|
|
55
|
-
}): void;
|
|
56
|
-
onSort(event: {
|
|
57
|
-
sortField: string;
|
|
58
|
-
sortOrder: 1 | -1 | 0;
|
|
59
|
-
}): void;
|
|
60
|
-
}
|
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
import type { ComputedRef, Ref } from 'vue';
|
|
2
|
-
import type { PaginationState, SortState } from './api';
|
|
3
|
-
export type ColumnType = 'text' | 'boolean' | 'date' | 'datetime' | 'number' | 'currency' | 'image' | 'custom';
|
|
4
|
-
export interface ColumnDef {
|
|
5
|
-
field: string;
|
|
6
|
-
header: string;
|
|
7
|
-
type?: ColumnType;
|
|
8
|
-
style?: string;
|
|
9
|
-
align?: 'left' | 'center' | 'right';
|
|
10
|
-
sortable?: boolean;
|
|
11
|
-
format?: (value: unknown, rowData?: Record<string, unknown>) => string;
|
|
12
|
-
visible?: boolean;
|
|
13
|
-
decimals?: number;
|
|
14
|
-
tagValue?: (value: unknown, rowData?: Record<string, unknown>) => string;
|
|
15
|
-
tagSeverity?: (value: unknown, rowData?: Record<string, unknown>) => string;
|
|
16
|
-
}
|
|
17
|
-
export type FieldType = 'text' | 'email' | 'password' | 'number' | 'currency' | 'date' | 'datetime' | 'select' | 'autocomplete' | 'fk' | 'switch' | 'textarea' | 'color' | 'cpf_cnpj' | 'mask' | 'image' | 'cep' | 'transfer';
|
|
18
|
-
export interface SelectOption {
|
|
19
|
-
[key: string]: unknown;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Filtro em cascata (drill-down) de um campo FK: torna a busca dependente do valor
|
|
23
|
-
* de outro campo do formulário, aplicando-o como filtro na requisição à API.
|
|
24
|
-
*/
|
|
25
|
-
export interface FieldDependency {
|
|
26
|
-
/** Campo do formulário cujo valor alimenta o filtro (ex.: 'unidade_producao'). */
|
|
27
|
-
field: string;
|
|
28
|
-
/** Nome do parâmetro enviado à API. Default: o próprio `field`. */
|
|
29
|
-
param?: string;
|
|
30
|
-
/** Se true, a busca só ocorre quando o valor de origem estiver preenchido
|
|
31
|
-
* (cascata obrigatória). Default: true. */
|
|
32
|
-
required?: boolean;
|
|
33
|
-
}
|
|
34
|
-
export interface FieldDef {
|
|
35
|
-
field: string;
|
|
36
|
-
label: string;
|
|
37
|
-
type?: FieldType;
|
|
38
|
-
required?: boolean;
|
|
39
|
-
/** Largura do campo no grid do form (ver `columns` do WFormRenderer):
|
|
40
|
-
* - omitido ou 'full' → linha inteira
|
|
41
|
-
* - 0.5 → metade da linha (independe do nº de colunas)
|
|
42
|
-
* - inteiro ≥ 1 → ocupa N colunas do grid (limitado ao total de colunas) */
|
|
43
|
-
colSpan?: number | 'full';
|
|
44
|
-
defaultValue?: unknown | (() => unknown);
|
|
45
|
-
disabled?: boolean | ((formData: Record<string, unknown>, isEditing: boolean) => boolean);
|
|
46
|
-
disabledOnEdit?: boolean;
|
|
47
|
-
visible?: boolean | ((formData: Record<string, unknown>, isEditing: boolean) => boolean);
|
|
48
|
-
placeholder?: string;
|
|
49
|
-
validate?: (value: unknown) => string | null;
|
|
50
|
-
autofocus?: boolean | 'create' | 'edit';
|
|
51
|
-
options?: SelectOption[] | Ref<SelectOption[]>;
|
|
52
|
-
optionLabel?: string;
|
|
53
|
-
optionValue?: string;
|
|
54
|
-
showClear?: boolean;
|
|
55
|
-
/** For 'transfer' fields — option keys to match against when searching
|
|
56
|
-
* (defaults to [optionLabel]). */
|
|
57
|
-
searchFields?: string[];
|
|
58
|
-
endpoint?: string;
|
|
59
|
-
endpointParams?: Record<string, string | number | boolean>;
|
|
60
|
-
/** Filtro em cascata: torna esta FK dependente do valor de outro(s) campo(s) do
|
|
61
|
-
* formulário, aplicando-o(s) como filtro na busca da API (ex.: um "local" que só
|
|
62
|
-
* lista os da "unidade_producao" selecionada). Com `required` (default true), a
|
|
63
|
-
* busca só ocorre após o campo de origem estar preenchido. */
|
|
64
|
-
dependsOn?: FieldDependency | FieldDependency[];
|
|
65
|
-
/** Placeholder da FK enquanto uma cascata obrigatória (`dependsOn`) não estiver
|
|
66
|
-
* preenchida — ex.: "Selecione a unidade primeiro". */
|
|
67
|
-
blockedPlaceholder?: string;
|
|
68
|
-
crudFields?: FieldDef[];
|
|
69
|
-
crudColumns?: ColumnDef[];
|
|
70
|
-
min?: number;
|
|
71
|
-
max?: number;
|
|
72
|
-
minFractionDigits?: number;
|
|
73
|
-
maxFractionDigits?: number;
|
|
74
|
-
prefix?: string;
|
|
75
|
-
suffix?: string;
|
|
76
|
-
/** For 'currency' fields — render WMoneyInput (digit entry filled from the
|
|
77
|
-
* right, like a calculator/POS) instead of the default InputNumber. */
|
|
78
|
-
fillFromRight?: boolean;
|
|
79
|
-
/** Fixed decimal places for 'currency' fillFromRight mode (default: 2). */
|
|
80
|
-
decimals?: number;
|
|
81
|
-
dateFormat?: string;
|
|
82
|
-
hourFormat?: '12' | '24';
|
|
83
|
-
mask?: string;
|
|
84
|
-
rows?: number;
|
|
85
|
-
switchLabel?: string;
|
|
86
|
-
feedback?: boolean;
|
|
87
|
-
accept?: string;
|
|
88
|
-
/** For type 'cep' — maps ViaCEP response fields to form field names.
|
|
89
|
-
* Keys are ViaCEP response names (logradouro, bairro, localidade, uf, complemento).
|
|
90
|
-
* Values are the form field names to populate. Omit keys to skip fields. */
|
|
91
|
-
cepFields?: {
|
|
92
|
-
logradouro?: string;
|
|
93
|
-
bairro?: string;
|
|
94
|
-
localidade?: string;
|
|
95
|
-
uf?: string;
|
|
96
|
-
complemento?: string;
|
|
97
|
-
};
|
|
98
|
-
/** Optional visual grouping. Fields with the same group.id render together
|
|
99
|
-
* under a titled section. Ungrouped fields render in a default section at the top.
|
|
100
|
-
* `order` controls the display order of groups; defaults to the order of first occurrence. */
|
|
101
|
-
fieldGroup?: {
|
|
102
|
-
id: string;
|
|
103
|
-
title: string;
|
|
104
|
-
description?: string;
|
|
105
|
-
order?: number;
|
|
106
|
-
/** Nº de colunas do grid deste grupo — sobrepõe o `columns` do form. */
|
|
107
|
-
columns?: number;
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
export interface RowAction<T = Record<string, unknown>> {
|
|
111
|
-
action: string;
|
|
112
|
-
icon: string;
|
|
113
|
-
tooltip?: string;
|
|
114
|
-
severity?: 'secondary' | 'success' | 'info' | 'warn' | 'danger' | 'contrast';
|
|
115
|
-
visible?: (data: T) => boolean;
|
|
116
|
-
disabled?: (data: T) => boolean;
|
|
117
|
-
handler?: (data: T) => void;
|
|
118
|
-
}
|
|
119
|
-
export interface CrudLabels {
|
|
120
|
-
createTitle: string;
|
|
121
|
-
editTitle: string;
|
|
122
|
-
viewTitle?: string;
|
|
123
|
-
createButton: string;
|
|
124
|
-
saveButton: string;
|
|
125
|
-
updateButton: string;
|
|
126
|
-
cancelButton: string;
|
|
127
|
-
deleteConfirmTitle: string;
|
|
128
|
-
deleteConfirmMessage: string;
|
|
129
|
-
searchPlaceholder: string;
|
|
130
|
-
emptyMessage: string;
|
|
131
|
-
successCreate: string;
|
|
132
|
-
successUpdate: string;
|
|
133
|
-
successDelete: string;
|
|
134
|
-
}
|
|
135
|
-
export declare const DEFAULT_CRUD_LABELS: CrudLabels;
|
|
136
|
-
export interface KpiItem {
|
|
137
|
-
icon: string;
|
|
138
|
-
label: string;
|
|
139
|
-
value: string | number;
|
|
140
|
-
color?: string;
|
|
141
|
-
severity?: 'primary' | 'success' | 'warning' | 'danger' | 'info';
|
|
142
|
-
hint?: string;
|
|
143
|
-
loading?: boolean;
|
|
144
|
-
trend?: {
|
|
145
|
-
value: string;
|
|
146
|
-
direction?: 'up' | 'down' | 'neutral';
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
export interface CrudManagerConfig<T> {
|
|
150
|
-
endpoint: string;
|
|
151
|
-
columns: ColumnDef[];
|
|
152
|
-
form: FieldDef[];
|
|
153
|
-
/** Nº de colunas do grid do form dialog (default 2). Campos usam `colSpan`
|
|
154
|
-
* para ocupar frações do grid; grupos podem sobrepor via `fieldGroup.columns`. */
|
|
155
|
-
formColumns?: number;
|
|
156
|
-
pk?: string;
|
|
157
|
-
pageSize?: number;
|
|
158
|
-
searchDebounce?: number;
|
|
159
|
-
/** When editing, send only the changed fields (diff) instead of the whole
|
|
160
|
-
* record. Defaults to `true`. Set `false` to always send the full payload. */
|
|
161
|
-
partialUpdate?: boolean;
|
|
162
|
-
/** After a successful create/update, re-fetch the current page so the list
|
|
163
|
-
* reflects the backend (derived fields, ordering) without losing pagination,
|
|
164
|
-
* search or filter position. Defaults to `true`. Set `false` to keep the
|
|
165
|
-
* optimistic in-place update instead. */
|
|
166
|
-
refetchOnSave?: boolean;
|
|
167
|
-
canCreate?: boolean;
|
|
168
|
-
canEdit?: boolean;
|
|
169
|
-
canDelete?: boolean;
|
|
170
|
-
rowActions?: RowAction<T>[];
|
|
171
|
-
filterParams?: () => Record<string, unknown>;
|
|
172
|
-
transformPayload?: (payload: Record<string, unknown>, isEditing: boolean) => Record<string, unknown>;
|
|
173
|
-
createDefaults?: () => Record<string, unknown>;
|
|
174
|
-
onAfterSave?: (data: T, isEditing: boolean) => void;
|
|
175
|
-
onAfterDelete?: (item: T) => void;
|
|
176
|
-
labels?: Partial<CrudLabels>;
|
|
177
|
-
}
|
|
178
|
-
export interface CrudManagerReturn<T> {
|
|
179
|
-
items: Ref<T[]>;
|
|
180
|
-
extras: Ref<Record<string, unknown>>;
|
|
181
|
-
loading: Ref<boolean>;
|
|
182
|
-
saving: Ref<boolean>;
|
|
183
|
-
search: Ref<string>;
|
|
184
|
-
dialogVisible: Ref<boolean>;
|
|
185
|
-
editingItem: Ref<T | null>;
|
|
186
|
-
formData: Record<string, unknown>;
|
|
187
|
-
pagination: PaginationState;
|
|
188
|
-
sort: SortState;
|
|
189
|
-
isEditing: ComputedRef<boolean>;
|
|
190
|
-
isViewing: ComputedRef<boolean>;
|
|
191
|
-
viewMode: Ref<boolean>;
|
|
192
|
-
dialogTitle: ComputedRef<string>;
|
|
193
|
-
isFirstPage: ComputedRef<boolean>;
|
|
194
|
-
isLastPage: ComputedRef<boolean>;
|
|
195
|
-
init(): Promise<void>;
|
|
196
|
-
fetchItems(params?: Record<string, unknown>): Promise<void>;
|
|
197
|
-
fetchAll(pageSize?: number): Promise<T[]>;
|
|
198
|
-
refresh(): Promise<void>;
|
|
199
|
-
setSearch(value: string): void;
|
|
200
|
-
onSearch(event: Event): void;
|
|
201
|
-
onPage(event: {
|
|
202
|
-
page: number;
|
|
203
|
-
rows: number;
|
|
204
|
-
}): void;
|
|
205
|
-
onSort(event: {
|
|
206
|
-
sortField?: string | null;
|
|
207
|
-
sortOrder?: 1 | -1 | 0 | null;
|
|
208
|
-
}): void;
|
|
209
|
-
openCreateDialog(): void;
|
|
210
|
-
openEditDialog(item: T): void;
|
|
211
|
-
openViewDialog(item: T): void;
|
|
212
|
-
openDuplicateDialog(item: T): void;
|
|
213
|
-
save(): Promise<T | null>;
|
|
214
|
-
confirmDelete(item: T): void;
|
|
215
|
-
setFormField(field: string, value: unknown): void;
|
|
216
|
-
resetForm(): void;
|
|
217
|
-
goToPage(page: number): void;
|
|
218
|
-
firstPage(): void;
|
|
219
|
-
lastPage(): void;
|
|
220
|
-
config: CrudManagerConfig<T>;
|
|
221
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
export interface DataProviderListParams {
|
|
2
|
-
page?: number;
|
|
3
|
-
page_size?: number;
|
|
4
|
-
search?: string;
|
|
5
|
-
ordering?: string;
|
|
6
|
-
[key: string]: unknown;
|
|
7
|
-
}
|
|
8
|
-
export interface DataProviderListResponse<T = Record<string, unknown>> {
|
|
9
|
-
data: T[];
|
|
10
|
-
page: number;
|
|
11
|
-
page_size: number;
|
|
12
|
-
rows: number;
|
|
13
|
-
extras?: Record<string, unknown>;
|
|
14
|
-
}
|
|
15
|
-
export interface DataProviderResponse<T = unknown> {
|
|
16
|
-
data: T;
|
|
17
|
-
}
|
|
18
|
-
export interface DataProviderRequestConfig {
|
|
19
|
-
params?: Record<string, unknown>;
|
|
20
|
-
headers?: Record<string, string>;
|
|
21
|
-
}
|
|
22
|
-
export interface DataProvider {
|
|
23
|
-
list<T = Record<string, unknown>>(endpoint: string, params?: DataProviderListParams): Promise<DataProviderListResponse<T>>;
|
|
24
|
-
get<T = Record<string, unknown>>(endpoint: string, id: string | number, config?: DataProviderRequestConfig): Promise<DataProviderResponse<T>>;
|
|
25
|
-
create<T = Record<string, unknown>>(endpoint: string, payload: Record<string, unknown> | FormData, config?: DataProviderRequestConfig): Promise<DataProviderResponse<T>>;
|
|
26
|
-
update<T = Record<string, unknown>>(endpoint: string, id: string | number, payload: Record<string, unknown> | FormData, config?: DataProviderRequestConfig): Promise<DataProviderResponse<T>>;
|
|
27
|
-
delete(endpoint: string, id: string | number): Promise<void>;
|
|
28
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export type { PaginatedResponse, PaginationState, SortState, UseApiOptions, UseApiReturn, } from './api';
|
|
2
|
-
export type { ColumnDef, ColumnType, FieldDef, FieldType, SelectOption, RowAction, CrudLabels, KpiItem, CrudManagerConfig, CrudManagerReturn, } from './crud';
|
|
3
|
-
export { DEFAULT_CRUD_LABELS } from './crud';
|
|
4
|
-
export type { WPluginOptions, WPluginConfig } from './plugin';
|
|
5
|
-
export { W_AXIOS_KEY, W_CONFIG_KEY, W_DATA_PROVIDER_KEY } from './plugin';
|
|
6
|
-
export type { DataProvider, DataProviderListParams, DataProviderListResponse, DataProviderRequestConfig, DataProviderResponse, } from './dataProvider';
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { AxiosInstance } from 'axios';
|
|
2
|
-
import type { DataProvider } from './dataProvider';
|
|
3
|
-
export interface WPluginOptions {
|
|
4
|
-
axios?: AxiosInstance;
|
|
5
|
-
dataProvider?: DataProvider;
|
|
6
|
-
defaultPageSize?: number;
|
|
7
|
-
dateFormat?: string;
|
|
8
|
-
dateTimeFormat?: string;
|
|
9
|
-
locale?: string;
|
|
10
|
-
currency?: string;
|
|
11
|
-
registerComponents?: boolean;
|
|
12
|
-
}
|
|
13
|
-
export interface WPluginConfig {
|
|
14
|
-
axios?: AxiosInstance;
|
|
15
|
-
dataProvider: DataProvider;
|
|
16
|
-
defaultPageSize: number;
|
|
17
|
-
dateFormat: string;
|
|
18
|
-
dateTimeFormat: string;
|
|
19
|
-
locale: string;
|
|
20
|
-
currency: string;
|
|
21
|
-
}
|
|
22
|
-
export declare const W_AXIOS_KEY: unique symbol;
|
|
23
|
-
export declare const W_DATA_PROVIDER_KEY: unique symbol;
|
|
24
|
-
export declare const W_CONFIG_KEY: unique symbol;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export interface ViaCepResponse {
|
|
2
|
-
cep: string;
|
|
3
|
-
logradouro: string;
|
|
4
|
-
complemento: string;
|
|
5
|
-
bairro: string;
|
|
6
|
-
localidade: string;
|
|
7
|
-
uf: string;
|
|
8
|
-
ibge: string;
|
|
9
|
-
gia: string;
|
|
10
|
-
ddd: string;
|
|
11
|
-
siafi: string;
|
|
12
|
-
erro?: true;
|
|
13
|
-
}
|
|
14
|
-
export declare function lookupCep(cep: string): Promise<ViaCepResponse | null>;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { ColumnDef } from '@/types/crud';
|
|
2
|
-
export interface ToCsvOptions {
|
|
3
|
-
/** Field separator (default: ';' — friendly to pt-BR Excel). */
|
|
4
|
-
separator?: string;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Serialize rows into a CSV string respecting the given (visible) columns.
|
|
8
|
-
* Uses the column `format` callback when present, prepends a UTF-8 BOM so
|
|
9
|
-
* Excel renders accents correctly, and defaults to `;` as the separator.
|
|
10
|
-
*/
|
|
11
|
-
export declare function toCsv(rows: Record<string, unknown>[], columns: ColumnDef[], options?: ToCsvOptions): string;
|
|
12
|
-
/** Trigger a browser download of a CSV string. */
|
|
13
|
-
export declare function downloadCsv(csv: string, filename?: string): void;
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export declare function parseDate(value: string | Date | null | undefined): Date | null;
|
|
2
|
-
export declare function toDateString(value: Date | string | null | undefined): string | null;
|
|
3
|
-
export declare function toDateTimeString(value: Date | string | null | undefined): string | null;
|
|
4
|
-
export declare function formatDateValue(value: string | Date | null | undefined, format?: string): string;
|
|
5
|
-
export declare function formatDateTimeValue(value: string | Date | null | undefined): string;
|