@orbe-agro/client-core 5.6.118 → 5.6.119
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/@types/base/@types/filters/index.d.ts +60 -0
- package/dist/@types/base/@types/filters/index.d.ts.map +1 -0
- package/dist/@types/base/@types/index.d.ts +1 -0
- package/dist/@types/base/@types/index.d.ts.map +1 -1
- package/dist/@types/base/components/filters/DynamicFilterField.d.ts +23 -0
- package/dist/@types/base/components/filters/DynamicFilterField.d.ts.map +1 -0
- package/dist/@types/base/components/filters/DynamicFilterPanel.d.ts +30 -0
- package/dist/@types/base/components/filters/DynamicFilterPanel.d.ts.map +1 -0
- package/dist/@types/base/components/filters/index.d.ts +3 -0
- package/dist/@types/base/components/filters/index.d.ts.map +1 -0
- package/dist/@types/base/components/index.d.ts +1 -0
- package/dist/@types/base/components/index.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/centralNfe/centralNfe.d.ts +4 -0
- package/dist/@types/base/configs/endpoints.config/centralNfe/centralNfe.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/centralNfe/config/nfe.d.ts +4 -0
- package/dist/@types/base/configs/endpoints.config/centralNfe/config/nfe.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/endpoints.navigation.d.ts +5 -0
- package/dist/@types/base/configs/endpoints.config/endpoints.navigation.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/originacao/config/saldoTicket.d.ts +1 -0
- package/dist/@types/base/configs/endpoints.config/originacao/config/saldoTicket.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/originacao/originacao.d.ts +1 -0
- package/dist/@types/base/configs/endpoints.config/originacao/originacao.d.ts.map +1 -1
- package/dist/@types/base/hooks/filters/useFilterMetadata.d.ts +26 -0
- package/dist/@types/base/hooks/filters/useFilterMetadata.d.ts.map +1 -0
- package/dist/@types/base/hooks/index.d.ts +1 -0
- package/dist/@types/base/hooks/index.d.ts.map +1 -1
- package/dist/@types/base/services/modules/centralNfe/nfe/NfeService.d.ts +1 -0
- package/dist/@types/base/services/modules/centralNfe/nfe/NfeService.d.ts.map +1 -1
- package/dist/@types/base/services/modules/originacao/saldoTicket/saldoTicketService.d.ts +2 -0
- package/dist/@types/base/services/modules/originacao/saldoTicket/saldoTicketService.d.ts.map +1 -1
- package/dist/@types/base/utils/filters/groupFilterFields.d.ts +15 -0
- package/dist/@types/base/utils/filters/groupFilterFields.d.ts.map +1 -0
- package/dist/@types/base/utils/index.d.ts +1 -0
- package/dist/@types/base/utils/index.d.ts.map +1 -1
- package/dist/base/@types/filters/index.js +2 -0
- package/dist/base/@types/filters/index.js.map +1 -0
- package/dist/base/@types/index.js +1 -0
- package/dist/base/@types/index.js.map +1 -1
- package/dist/base/components/filters/DynamicFilterField.js +156 -0
- package/dist/base/components/filters/DynamicFilterField.js.map +1 -0
- package/dist/base/components/filters/DynamicFilterPanel.js +19 -0
- package/dist/base/components/filters/DynamicFilterPanel.js.map +1 -0
- package/dist/base/components/filters/index.js +7 -0
- package/dist/base/components/filters/index.js.map +1 -0
- package/dist/base/components/index.js +11 -6
- package/dist/base/components/index.js.map +1 -1
- package/dist/base/configs/endpoints.config/centralNfe/config/nfe.js +1 -0
- package/dist/base/configs/endpoints.config/centralNfe/config/nfe.js.map +1 -1
- package/dist/base/configs/endpoints.config/originacao/config/saldoTicket.js +2 -1
- package/dist/base/configs/endpoints.config/originacao/config/saldoTicket.js.map +1 -1
- package/dist/base/hooks/filters/useFilterMetadata.js +23 -0
- package/dist/base/hooks/filters/useFilterMetadata.js.map +1 -0
- package/dist/base/hooks/index.js +2 -0
- package/dist/base/hooks/index.js.map +1 -1
- package/dist/base/index.js +230 -222
- package/dist/base/index.js.map +1 -1
- package/dist/base/services/modules/centralNfe/index.js +2 -1
- package/dist/base/services/modules/centralNfe/nfe/NfeService.js +7 -0
- package/dist/base/services/modules/centralNfe/nfe/NfeService.js.map +1 -1
- package/dist/base/services/modules/originacao/saldoTicket/saldoTicketService.js +7 -0
- package/dist/base/services/modules/originacao/saldoTicket/saldoTicketService.js.map +1 -1
- package/dist/base/utils/filters/groupFilterFields.js +56 -0
- package/dist/base/utils/filters/groupFilterFields.js.map +1 -0
- package/dist/base/utils/index.js +2 -0
- package/dist/base/utils/index.js.map +1 -1
- package/lib/base/@types/filters/index.ts +87 -0
- package/lib/base/@types/index.ts +1 -0
- package/lib/base/components/filters/DynamicFilterField.tsx +213 -0
- package/lib/base/components/filters/DynamicFilterPanel.tsx +50 -0
- package/lib/base/components/filters/index.ts +2 -0
- package/lib/base/components/index.ts +4 -1
- package/lib/base/configs/endpoints.config/centralNfe/config/nfe.ts +1 -0
- package/lib/base/configs/endpoints.config/originacao/config/saldoTicket.ts +2 -1
- package/lib/base/hooks/filters/useFilterMetadata.ts +43 -0
- package/lib/base/hooks/index.ts +2 -1
- package/lib/base/services/modules/centralNfe/nfe/NfeService.ts +8 -0
- package/lib/base/services/modules/originacao/saldoTicket/saldoTicketService.ts +8 -0
- package/lib/base/utils/filters/groupFilterFields.ts +93 -0
- package/lib/base/utils/index.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
IFilterFieldDescriptor,
|
|
3
|
+
IFilterRangeGroup,
|
|
4
|
+
TFilterRenderItem,
|
|
5
|
+
IFilterStandaloneField,
|
|
6
|
+
} from '@base/@types/filters'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Agrupa IFilterFieldDescriptors em itens renderizáveis.
|
|
10
|
+
*
|
|
11
|
+
* - Campos com o mesmo rangeGroup não-nulo são fundidos em um único IFilterRangeGroup.
|
|
12
|
+
* - Todos os demais campos se tornam IFilterStandaloneField.
|
|
13
|
+
* - A ordem da lista original é preservada: o grupo aparece na posição do seu primeiro campo.
|
|
14
|
+
* - Se um rangeGroup tiver menos de 2 campos, cada um é tratado como standalone (fallback seguro).
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* // dataEnvioDe + dataEnvioAte (mesmo rangeGroup) → IFilterRangeGroup { startField, endField }
|
|
18
|
+
* // id, operacao, businessPartnerId → IFilterStandaloneField[]
|
|
19
|
+
*/
|
|
20
|
+
export function groupFilterFields(fields: IFilterFieldDescriptor[]): TFilterRenderItem[] {
|
|
21
|
+
// Primeiro passo: coletar todos os campos de cada rangeGroup
|
|
22
|
+
const rangeGroupMap = new Map<string, IFilterFieldDescriptor[]>()
|
|
23
|
+
for (const field of fields) {
|
|
24
|
+
if (field.rangeGroup) {
|
|
25
|
+
if (!rangeGroupMap.has(field.rangeGroup)) {
|
|
26
|
+
rangeGroupMap.set(field.rangeGroup, [])
|
|
27
|
+
}
|
|
28
|
+
rangeGroupMap.get(field.rangeGroup)!.push(field)
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Segundo passo: percorrer os campos mantendo a ordem, inserindo o grupo
|
|
33
|
+
// na posição do seu primeiro membro
|
|
34
|
+
const result: TFilterRenderItem[] = []
|
|
35
|
+
const rangeGroupInserted = new Set<string>()
|
|
36
|
+
|
|
37
|
+
for (const field of fields) {
|
|
38
|
+
if (field.rangeGroup) {
|
|
39
|
+
// Apenas insere o grupo uma vez (na posição do primeiro campo)
|
|
40
|
+
if (!rangeGroupInserted.has(field.rangeGroup)) {
|
|
41
|
+
rangeGroupInserted.add(field.rangeGroup)
|
|
42
|
+
const groupFields = rangeGroupMap.get(field.rangeGroup)!
|
|
43
|
+
|
|
44
|
+
// Fallback seguro: se o backend enviar apenas um campo do par, trata como standalone
|
|
45
|
+
if (groupFields.length < 2) {
|
|
46
|
+
result.push({ kind: 'standalone', descriptor: groupFields[0] })
|
|
47
|
+
continue
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Garante que o campo "De" (início) vem antes de "Ate"/"Até" (fim).
|
|
51
|
+
// Não pode usar localeCompare simples pois "Ate" < "De" alfabeticamente.
|
|
52
|
+
const sorted = [...groupFields].sort((a, b) => {
|
|
53
|
+
const aIsDe = /De$/i.test(a.field)
|
|
54
|
+
const bIsDe = /De$/i.test(b.field)
|
|
55
|
+
if (aIsDe && !bIsDe) return -1
|
|
56
|
+
if (!aIsDe && bIsDe) return 1
|
|
57
|
+
return a.field.localeCompare(b.field)
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
const rangeGroup: IFilterRangeGroup = {
|
|
61
|
+
kind: 'range',
|
|
62
|
+
rangeGroup: field.rangeGroup,
|
|
63
|
+
label: deriveRangeLabel(sorted),
|
|
64
|
+
startField: sorted[0],
|
|
65
|
+
endField: sorted[1],
|
|
66
|
+
}
|
|
67
|
+
result.push(rangeGroup)
|
|
68
|
+
}
|
|
69
|
+
} else {
|
|
70
|
+
const standalone: IFilterStandaloneField = {
|
|
71
|
+
kind: 'standalone',
|
|
72
|
+
descriptor: field,
|
|
73
|
+
}
|
|
74
|
+
result.push(standalone)
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return result
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Deriva um label legível para o grupo de range.
|
|
83
|
+
* Remove sufixos "De", "Até" e "Ate" do label do primeiro campo.
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* // "Data Envio De" → "Data Envio"
|
|
87
|
+
* // "Data Envio Até" → "Data Envio"
|
|
88
|
+
*/
|
|
89
|
+
function deriveRangeLabel(fields: IFilterFieldDescriptor[]): string {
|
|
90
|
+
if (fields.length === 0) return ''
|
|
91
|
+
const raw = fields[0].label
|
|
92
|
+
return raw.replace(/\s+(De|Até|Ate)$/i, '').trim() || raw
|
|
93
|
+
}
|
package/lib/base/utils/index.ts
CHANGED
package/package.json
CHANGED