@orbe-agro/client-core 5.6.117 → 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/@types/models/compras/RequisicaoCompra.d.ts +3 -0
- package/dist/@types/base/@types/models/compras/RequisicaoCompra.d.ts.map +1 -1
- package/dist/@types/base/@types/models/performance/categoria.d.ts +2 -1
- package/dist/@types/base/@types/models/performance/categoria.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/compras/compras.d.ts +4 -0
- package/dist/@types/base/configs/endpoints.config/compras/compras.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/compras/config/cadastroEstrategiaLiberacaoValor.d.ts +4 -0
- package/dist/@types/base/configs/endpoints.config/compras/config/cadastroEstrategiaLiberacaoValor.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/endpoints.navigation.d.ts +9 -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/configs/navigation.config/submenu/performance/cadastros.submenu.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/compras/cadastroEstrategiaLiberacaoValor/CadastroEstrategiaLiberacaoValorService.d.ts +7 -0
- package/dist/@types/base/services/modules/compras/cadastroEstrategiaLiberacaoValor/CadastroEstrategiaLiberacaoValorService.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/compras/config/cadastroEstrategiaLiberacaoValor.js +2 -1
- package/dist/base/configs/endpoints.config/compras/config/cadastroEstrategiaLiberacaoValor.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/configs/navigation.config/submenu/performance/cadastros.submenu.js +0 -2
- package/dist/base/configs/navigation.config/submenu/performance/cadastros.submenu.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 +232 -223
- package/dist/base/index.js.map +1 -1
- package/dist/base/services/index.js +2 -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/compras/cadastroEstrategiaLiberacaoValor/CadastroEstrategiaLiberacaoValorService.js +8 -0
- package/dist/base/services/modules/compras/cadastroEstrategiaLiberacaoValor/CadastroEstrategiaLiberacaoValorService.js.map +1 -1
- package/dist/base/services/modules/compras/index.js +2 -1
- package/dist/base/services/modules/index.js +2 -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/@types/models/compras/RequisicaoCompra.ts +3 -0
- package/lib/base/@types/models/performance/categoria.ts +3 -1
- 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/compras/config/cadastroEstrategiaLiberacaoValor.ts +1 -0
- package/lib/base/configs/endpoints.config/originacao/config/saldoTicket.ts +2 -1
- package/lib/base/configs/navigation.config/submenu/performance/cadastros.submenu.ts +0 -2
- 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/compras/cadastroEstrategiaLiberacaoValor/CadastroEstrategiaLiberacaoValorService.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
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Route components
|
|
3
3
|
export * from './routes';
|
|
4
4
|
|
|
5
|
-
// Table components
|
|
5
|
+
// Table components
|
|
6
6
|
export * from './table';
|
|
7
7
|
|
|
8
8
|
// Tool components
|
|
@@ -10,3 +10,6 @@ export * from './tools';
|
|
|
10
10
|
|
|
11
11
|
// View components
|
|
12
12
|
export * from './views';
|
|
13
|
+
|
|
14
|
+
// Filter components (dynamic metadata-driven filters)
|
|
15
|
+
export * from './filters';
|
|
@@ -11,6 +11,7 @@ const nfe = {
|
|
|
11
11
|
desvincularOrdemCompra: { endpoint: `${NFE_BASE_URL}/desvincular-ordem-compra`, httpMethod: 'post' },
|
|
12
12
|
estornarPedidoCompra: { endpoint: `${NFE_BASE_URL}/estornar-pedido-compra/{numeroPedido}`, httpMethod: 'post' },
|
|
13
13
|
estornarOperacao: { endpoint: `${NFE_BASE_URL}/estornar-operacao?id={id}`, httpMethod: 'post' },
|
|
14
|
+
finalizarPedido: { endpoint: `${NFE_BASE_URL}/finalizar-pedido/{numeroPedido}`, httpMethod: 'post' },
|
|
14
15
|
lock: { endpoint: `${NFE_BASE_URL}/lock`, httpMethod: 'post' },
|
|
15
16
|
}
|
|
16
17
|
|
package/lib/base/configs/endpoints.config/compras/config/cadastroEstrategiaLiberacaoValor.ts
CHANGED
|
@@ -6,6 +6,7 @@ const cadastroEstrategiaLiberacaoValor = {
|
|
|
6
6
|
findMonitor: { endpoint: `${CADASTRO_ESTRATEGIA_LIBERACAO_VALOR}/find-monitor`, httpMethod: 'post' },
|
|
7
7
|
findOne: { endpoint: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR, httpMethod: 'get' },
|
|
8
8
|
delete: { endpoint: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR, httpMethod: 'delete' },
|
|
9
|
+
findRolesByValor: { endpoint: `${CADASTRO_ESTRATEGIA_LIBERACAO_VALOR}/find-roles-by-valor`, httpMethod: 'post' },
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
export default cadastroEstrategiaLiberacaoValor
|
|
@@ -4,7 +4,8 @@ const saldoTicket = {
|
|
|
4
4
|
historicoById: (id: string, params?: string) => `/originacao/api/saldo-ticket/${id}/historicos?${params ?? ""}`,
|
|
5
5
|
buscarSaldoDisponivel: '/originacao/api/saldo-ticket/saldo-disponivel',
|
|
6
6
|
findAllMetrics: (params?: string) => `/originacao/api/saldo-ticket/metrics?${params ?? ""}`,
|
|
7
|
-
updateStatus: (id: string) => `/originacao/api/saldo-ticket/${id}/forcar-status-saldo
|
|
7
|
+
updateStatus: (id: string) => `/originacao/api/saldo-ticket/${id}/forcar-status-saldo`,
|
|
8
|
+
filterMetadata: '/originacao/api/saldo-ticket/filter-metadata',
|
|
8
9
|
};
|
|
9
10
|
|
|
10
11
|
export default saldoTicket;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { NavigationTree } from '@/@types/navigation'
|
|
2
|
-
import modeloNotaSubmenu from './config/modeloNota.submenu'
|
|
3
2
|
import categoriaSubmenu from './config/categoria.submenu'
|
|
4
3
|
import areaAtuacaoSubmenu from './config/areaAtuacao.submenu'
|
|
5
4
|
import modeloAvaliacaoSubmenu from './config/modeloAvaliacao.submenu'
|
|
6
5
|
|
|
7
6
|
const cadastrosSubmenu: NavigationTree[] = [
|
|
8
|
-
modeloNotaSubmenu,
|
|
9
7
|
categoriaSubmenu,
|
|
10
8
|
areaAtuacaoSubmenu,
|
|
11
9
|
modeloAvaliacaoSubmenu
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import useSWR from 'swr'
|
|
2
|
+
import type { IFilterFieldDescriptor } from '@base/@types/filters'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Busca e faz cache dos metadados de filtros de um endpoint específico.
|
|
6
|
+
*
|
|
7
|
+
* Usa configurações imutáveis de SWR: os dados são buscados uma única vez
|
|
8
|
+
* por sessão e nunca revalidados automaticamente, pois metadados de filtro são
|
|
9
|
+
* estruturais e não mudam durante o uso da aplicação.
|
|
10
|
+
*
|
|
11
|
+
* O `fetcher` deve ser a função de serviço correspondente ao endpoint,
|
|
12
|
+
* garantindo que a chamada passe pelo ApiService (Axios + token de autenticação).
|
|
13
|
+
*
|
|
14
|
+
* @param swrKey - Chave única de cache SWR (ex: '/originacao/api/saldo-ticket/filter-metadata')
|
|
15
|
+
* @param fetcher - Função que realiza a chamada à API e retorna IFilterFieldDescriptor[]
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* const { fields, isLoading, error } = useFilterMetadata(
|
|
19
|
+
* '/originacao/api/saldo-ticket/filter-metadata',
|
|
20
|
+
* apiFindSaldoFilterMetadata,
|
|
21
|
+
* )
|
|
22
|
+
*/
|
|
23
|
+
export default function useFilterMetadata(
|
|
24
|
+
swrKey: string,
|
|
25
|
+
fetcher: () => Promise<IFilterFieldDescriptor[]>,
|
|
26
|
+
) {
|
|
27
|
+
const { data, error, isLoading } = useSWR<IFilterFieldDescriptor[]>(
|
|
28
|
+
swrKey || null,
|
|
29
|
+
fetcher,
|
|
30
|
+
{
|
|
31
|
+
revalidateOnFocus: false,
|
|
32
|
+
revalidateOnReconnect: false,
|
|
33
|
+
revalidateIfStale: false,
|
|
34
|
+
dedupingInterval: 600_000, // 10 minutos — metadados são imutáveis por sessão
|
|
35
|
+
}
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
return {
|
|
39
|
+
fields: data ?? [],
|
|
40
|
+
isLoading,
|
|
41
|
+
error,
|
|
42
|
+
}
|
|
43
|
+
}
|
package/lib/base/hooks/index.ts
CHANGED
|
@@ -77,4 +77,5 @@ export { default as useIdleTimeout } from './useIdleTimeout';
|
|
|
77
77
|
export { default as useFindProdutosByDepositoList } from './dm/produto/useFindProdutosByDepositoList';
|
|
78
78
|
export { default as useBusinessPartnerFindMonitorTransportadoraList } from './dm/businessPartner/useBusinessPartnerFindMonitorTransportadoraList';
|
|
79
79
|
export { default as useSapFindUniaoUtilizacaoLimiteCreditoByBusinessPartner } from './sap/uniaoUtilizacaoLimiteCredito/useSapFindUniaoUtilizacaoLimiteCreditoByCliente';
|
|
80
|
-
export { default as useDadosUnificadosList } from './crm/dadosUnificados/useDadosUnificadosList';
|
|
80
|
+
export { default as useDadosUnificadosList } from './crm/dadosUnificados/useDadosUnificadosList';
|
|
81
|
+
export { default as useFilterMetadata } from './filters/useFilterMetadata';
|
|
@@ -82,6 +82,14 @@ export async function apiEstornarOperacao(id: number) {
|
|
|
82
82
|
})
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
+
export async function apiFinalizarPedido(numeroPedido: string) {
|
|
86
|
+
return ApiService.fetchDataWithAxios<any>({
|
|
87
|
+
url: NFE_ENDPOINT.finalizarPedido.endpoint
|
|
88
|
+
.replace('{numeroPedido}', numeroPedido),
|
|
89
|
+
method: NFE_ENDPOINT.finalizarPedido.httpMethod
|
|
90
|
+
})
|
|
91
|
+
}
|
|
92
|
+
|
|
85
93
|
export async function apiSetNfeLock(idNfe: number, lock: boolean) {
|
|
86
94
|
return ApiService.fetchDataWithAxios<any>({
|
|
87
95
|
url: NFE_ENDPOINT.lock.endpoint,
|
|
@@ -40,4 +40,12 @@ export async function apiDeleteOneCadastroEstrategiaLiberacaoValor(id: number) {
|
|
|
40
40
|
url: `${CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.delete.endpoint}/${id}`,
|
|
41
41
|
method: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.delete.httpMethod
|
|
42
42
|
})
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export async function apiFindRolesByValorCadastroEstrategiaLiberacaoValor(data: { valor: number }) {
|
|
46
|
+
return ApiService.fetchDataWithAxios<{ idRole: number; nome: string; ordem: number }[]>({
|
|
47
|
+
url: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.findRolesByValor.endpoint,
|
|
48
|
+
method: CADASTRO_ESTRATEGIA_LIBERACAO_VALOR_ENDPOINT.findRolesByValor.httpMethod,
|
|
49
|
+
data,
|
|
50
|
+
})
|
|
43
51
|
}
|
|
@@ -7,6 +7,7 @@ import { TFindAllMetricsSaldoResponse } from "@base/@types/api/response/originac
|
|
|
7
7
|
import { TEntityHistoricoResponse } from "@base/@types/api/response/originacao/TEntityHistoricoResponse";
|
|
8
8
|
import { StatusSaldoTicket } from "@base/@types/enums/originacao/StatusSaldoTicket";
|
|
9
9
|
import { TipoSaldo } from "@base/@types/enums/originacao/TipoSaldo";
|
|
10
|
+
import { IFilterFieldDescriptor } from "@base/@types/filters";
|
|
10
11
|
|
|
11
12
|
const SALDO_TICKET_ORIGINACAO_ENDPOINT = endpointNavigationConfig.originacao.saldoTicket;
|
|
12
13
|
|
|
@@ -62,4 +63,11 @@ export async function apiUpdateStatusSaldoTicket(
|
|
|
62
63
|
justificativa
|
|
63
64
|
}
|
|
64
65
|
});
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export async function apiFindSaldoFilterMetadata() {
|
|
69
|
+
return ApiService.fetchDataWithAxios<IFilterFieldDescriptor[]>({
|
|
70
|
+
url: SALDO_TICKET_ORIGINACAO_ENDPOINT.filterMetadata,
|
|
71
|
+
method: "get",
|
|
72
|
+
});
|
|
65
73
|
}
|
|
@@ -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