valtech-components 2.0.947 → 2.0.949
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/esm2022/lib/components/organisms/search-header/search-header.component.mjs +159 -0
- package/esm2022/lib/components/organisms/search-header/types.mjs +10 -0
- package/esm2022/lib/services/requests/request-firestore.service.mjs +55 -0
- package/esm2022/lib/services/requests/types.mjs +1 -1
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +4 -1
- package/fesm2022/valtech-components.mjs +215 -3
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/search-header/search-header.component.d.ts +54 -0
- package/lib/components/organisms/search-header/types.d.ts +31 -0
- package/lib/services/requests/request-firestore.service.d.ts +28 -0
- package/lib/services/requests/types.d.ts +4 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +3 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { SearchHeaderMetadata } from './types';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* `val-search-header` — header/toolbar con búsqueda desplegable.
|
|
6
|
+
*
|
|
7
|
+
* El botón de búsqueda es una ICON action del toolbar (igual que
|
|
8
|
+
* menu/avatar/notificaciones), identificada por su `token` (`searchToken`).
|
|
9
|
+
* Al presionarla se despliega un `val-searchbar` debajo del toolbar: 100% del
|
|
10
|
+
* ancho en mobile, un máximo centrado en desktop.
|
|
11
|
+
*
|
|
12
|
+
* Reusa `val-toolbar` para el header — las demás acciones se emiten por
|
|
13
|
+
* `(onAction)`. La query se emite por `(search)`.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```html
|
|
17
|
+
* <val-search-header
|
|
18
|
+
* [props]="{
|
|
19
|
+
* header: { toolbar: { title: 'AWS', withActions: true, withBack: false,
|
|
20
|
+
* actions: [
|
|
21
|
+
* { type: 'ICON', description: 'search-outline', token: 'search', position: 'right' },
|
|
22
|
+
* { type: 'ICON', description: 'notifications-outline', token: 'notif', position: 'right' }
|
|
23
|
+
* ] } },
|
|
24
|
+
* searchbar: { placeholder: 'Buscar...' }
|
|
25
|
+
* }"
|
|
26
|
+
* (search)="onSearch($event)"
|
|
27
|
+
* (onAction)="onAction($event)"
|
|
28
|
+
* >
|
|
29
|
+
* <ion-button slot="search-actions" fill="outline">Filter: All</ion-button>
|
|
30
|
+
* </val-search-header>
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare class SearchHeaderComponent {
|
|
34
|
+
private host;
|
|
35
|
+
/** Configuración del search header. */
|
|
36
|
+
props: SearchHeaderMetadata;
|
|
37
|
+
/** Emite el token de cualquier acción del toolbar que NO sea la de búsqueda. */
|
|
38
|
+
onAction: EventEmitter<string>;
|
|
39
|
+
/** Emite la query del searchbar. */
|
|
40
|
+
search: EventEmitter<string>;
|
|
41
|
+
/** Emite al abrir/cerrar la barra de búsqueda. */
|
|
42
|
+
searchToggle: EventEmitter<boolean>;
|
|
43
|
+
/** Emite cuando el searchbar pierde el foco. */
|
|
44
|
+
blur: EventEmitter<void>;
|
|
45
|
+
private readonly _open;
|
|
46
|
+
readonly open: import("@angular/core").Signal<boolean>;
|
|
47
|
+
config: import("@angular/core").Signal<SearchHeaderMetadata & Required<Pick<SearchHeaderMetadata, "maxWidth" | "searchToken" | "startOpen" | "showClose">>>;
|
|
48
|
+
constructor();
|
|
49
|
+
handleToolbar(token?: string): void;
|
|
50
|
+
toggle(): void;
|
|
51
|
+
private focusSearchbar;
|
|
52
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SearchHeaderComponent, never>;
|
|
53
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SearchHeaderComponent, "val-search-header", never, { "props": { "alias": "props"; "required": false; }; }, { "onAction": "onAction"; "search": "search"; "searchToggle": "searchToggle"; "blur": "blur"; }, never, ["[search-actions]"], true, never>;
|
|
54
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { HeaderMetadata } from '../header/types';
|
|
2
|
+
import { SearchbarMetadata } from '../../molecules/searchbar/types';
|
|
3
|
+
/**
|
|
4
|
+
* Metadata for val-search-header.
|
|
5
|
+
*
|
|
6
|
+
* Header/toolbar con un botón de búsqueda que, al presionarse, despliega un
|
|
7
|
+
* `val-searchbar` colapsable debajo del toolbar (100% del ancho en mobile, un
|
|
8
|
+
* máximo centrado en desktop). El botón de búsqueda es una ICON action más del
|
|
9
|
+
* toolbar (idéntica a menu/avatar/notificaciones): se identifica por su `token`.
|
|
10
|
+
*/
|
|
11
|
+
export interface SearchHeaderMetadata {
|
|
12
|
+
/** Configuración del header + toolbar (reusa val-header/val-toolbar). */
|
|
13
|
+
header: HeaderMetadata;
|
|
14
|
+
/**
|
|
15
|
+
* Token de la ICON action que dispara la búsqueda. La action correspondiente
|
|
16
|
+
* debe existir en `header.toolbar.actions`. Default: 'search'.
|
|
17
|
+
*/
|
|
18
|
+
searchToken?: string;
|
|
19
|
+
/** Configuración del searchbar desplegado. */
|
|
20
|
+
searchbar?: SearchbarMetadata;
|
|
21
|
+
/** Ancho máximo de la barra en desktop (CSS). Default: '720px'. */
|
|
22
|
+
maxWidth?: string;
|
|
23
|
+
/** Si arranca con la barra abierta. Default: false. */
|
|
24
|
+
startOpen?: boolean;
|
|
25
|
+
/** Mostrar botón de cierre (X) a la derecha de la barra. Default: true. */
|
|
26
|
+
showClose?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Default values for SearchHeaderMetadata.
|
|
30
|
+
*/
|
|
31
|
+
export declare const SEARCH_HEADER_DEFAULTS: Required<Pick<SearchHeaderMetadata, 'searchToken' | 'maxWidth' | 'startOpen' | 'showClose'>>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AppRequest, RequestTypeConfig } from './types';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Lectura de Requests / RequestTypes desde Firestore (one-shot, sin listener).
|
|
5
|
+
*
|
|
6
|
+
* El backend proyecta DynamoDB → Firestore (réplica de solo-lectura); el cliente
|
|
7
|
+
* lee desde acá en vez de pegarle al REST, así no se expone un endpoint JSON
|
|
8
|
+
* replayable y el acceso queda gobernado por las security rules. Las mutaciones
|
|
9
|
+
* (create/update/transition) siguen yendo por `RequestService` (REST → backend).
|
|
10
|
+
*
|
|
11
|
+
* Los paths se prefijan automáticamente con `apps/{appId}/` (FirestoreService),
|
|
12
|
+
* resultando en:
|
|
13
|
+
* - apps/{appId}/users/{uid}/requests
|
|
14
|
+
* - apps/{appId}/orgs/{orgId}/requests
|
|
15
|
+
* - apps/{appId}/orgs/{orgId}/requestTypes
|
|
16
|
+
*/
|
|
17
|
+
export declare class RequestFirestoreService {
|
|
18
|
+
private factory;
|
|
19
|
+
private read;
|
|
20
|
+
/** Solicitudes enviadas por el usuario (scope usuario). */
|
|
21
|
+
listMyRequests(userId: string): Promise<AppRequest[]>;
|
|
22
|
+
/** Solicitudes de la organización (scope staff). */
|
|
23
|
+
listOrgRequests(orgId: string): Promise<AppRequest[]>;
|
|
24
|
+
/** Catálogo de tipos de solicitud de la organización. */
|
|
25
|
+
listRequestTypes(orgId: string): Promise<RequestTypeConfig[]>;
|
|
26
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RequestFirestoreService, never>;
|
|
27
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<RequestFirestoreService>;
|
|
28
|
+
}
|
|
@@ -48,6 +48,8 @@ export interface FieldSchemaDef {
|
|
|
48
48
|
options?: FieldOption[];
|
|
49
49
|
order: number;
|
|
50
50
|
}
|
|
51
|
+
/** Quién puede leer un tipo de solicitud (y sus solicitudes públicas). */
|
|
52
|
+
export type RequestVisibility = 'PUBLIC' | 'ORG' | 'INTERNAL';
|
|
51
53
|
export interface RequestTypeConfig {
|
|
52
54
|
typeId: string;
|
|
53
55
|
appId: string;
|
|
@@ -56,6 +58,8 @@ export interface RequestTypeConfig {
|
|
|
56
58
|
labelEn: string;
|
|
57
59
|
fieldSchema: FieldSchemaDef[];
|
|
58
60
|
allowAnonymous: boolean;
|
|
61
|
+
/** PUBLIC: cualquiera · ORG/INTERNAL: solo miembros de la org. Default ORG. */
|
|
62
|
+
visibility?: RequestVisibility;
|
|
59
63
|
createdAt: string;
|
|
60
64
|
updatedAt: string;
|
|
61
65
|
}
|
package/lib/version.d.ts
CHANGED
package/package.json
CHANGED
package/public-api.d.ts
CHANGED
|
@@ -217,6 +217,8 @@ export * from './lib/components/organisms/form/form-footer/form-footer.component
|
|
|
217
217
|
export * from './lib/components/organisms/form/form.component';
|
|
218
218
|
export * from './lib/components/organisms/header/header.component';
|
|
219
219
|
export * from './lib/components/organisms/header/types';
|
|
220
|
+
export * from './lib/components/organisms/search-header/search-header.component';
|
|
221
|
+
export * from './lib/components/organisms/search-header/types';
|
|
220
222
|
export * from './lib/components/organisms/mfa-modal/mfa-modal.component';
|
|
221
223
|
export * from './lib/components/organisms/item-list/item-list.component';
|
|
222
224
|
export * from './lib/components/organisms/item-list/types';
|
|
@@ -363,3 +365,4 @@ export { ValtechErrorService, VALTECH_NETWORK_ERROR_KEY, } from './lib/services/
|
|
|
363
365
|
export * from './lib/services/requests/types';
|
|
364
366
|
export * from './lib/services/requests/request.service';
|
|
365
367
|
export * from './lib/services/requests/request-form-builder.service';
|
|
368
|
+
export * from './lib/services/requests/request-firestore.service';
|