@sinequa/atomic-angular 0.2.5 → 0.3.8
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 +169 -96
- package/features/auth/i18n/de.json +8 -0
- package/features/auth/i18n/en.json +8 -0
- package/features/auth/i18n/fr.json +8 -1
- package/fesm2022/sinequa-atomic-angular.mjs +6167 -5717
- package/fesm2022/sinequa-atomic-angular.mjs.map +1 -1
- package/index.d.ts +2927 -2798
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,145 +1,218 @@
|
|
|
1
1
|
# @sinequa/atomic-angular
|
|
2
2
|
|
|
3
|
-
](https://npm.sinequa.com/@sinequa/atomic-angular)
|
|
4
|
+
[](https://angular.dev)
|
|
5
|
+
[](https://www.typescriptlang.org/)
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
> A comprehensive Angular component library and design system for building modern Sinequa search applications.
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
## Overview
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
**@sinequa/atomic-angular** provides a complete set of UI components, features, and utilities for building enterprise-grade search applications powered by Sinequa. Built with Angular 20+ and modern web standards, it offers a consistent, accessible, and themeable framework with TypeScript-first development experience.
|
|
11
12
|
|
|
12
|
-
|
|
13
|
+
## Installation
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
- **Extensible utilities** for queries, debounced signals, and more
|
|
15
|
+
```bash
|
|
16
|
+
npm install @sinequa/atomic-angular
|
|
17
|
+
```
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
### Peer Dependencies
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"@angular/common": "^20.0.0",
|
|
24
|
+
"@angular/core": "^20.0.0",
|
|
25
|
+
"rxjs": "^7.8.0"
|
|
26
|
+
}
|
|
27
|
+
```
|
|
22
28
|
|
|
23
|
-
|
|
24
|
-
|
|
29
|
+
## Features
|
|
30
|
+
|
|
31
|
+
### 🔐 Authentication & Authorization
|
|
32
|
+
|
|
33
|
+
- Complete authentication flows with SSO support
|
|
34
|
+
- Password management (expiry, forgotten, change)
|
|
35
|
+
- Route guards and access control
|
|
36
|
+
- Multi-language support (EN, FR, DE)
|
|
37
|
+
|
|
38
|
+
### 🔍 Advanced Search
|
|
39
|
+
|
|
40
|
+
- Powerful filter system with aggregations
|
|
41
|
+
- "Did You Mean" suggestions and autocomplete
|
|
42
|
+
- Recent and saved searches
|
|
43
|
+
- Bookmark and collection management
|
|
44
|
+
- Document preview and navigation
|
|
45
|
+
- Export functionality
|
|
46
|
+
|
|
47
|
+
### 🛠️ Developer Experience
|
|
48
|
+
|
|
49
|
+
- **TypeScript-first** with full type safety
|
|
50
|
+
- **Standalone components** (no NgModules required)
|
|
51
|
+
- **Signal-based reactivity** for better performance
|
|
52
|
+
- **Modern syntax**: @if, @for, @switch control flow
|
|
53
|
+
- **Tree-shakeable** for optimal bundle size
|
|
54
|
+
|
|
55
|
+
## Package Structure
|
|
56
|
+
|
|
57
|
+
### @sinequa/atomic-angular
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
components/ # Reusable UI components
|
|
61
|
+
├── backdrop/
|
|
62
|
+
├── document-locator/
|
|
63
|
+
├── navbar-tabs/
|
|
64
|
+
├── pagination/
|
|
65
|
+
└── ...
|
|
66
|
+
|
|
67
|
+
features/ # Feature modules
|
|
68
|
+
├── auth/ # Authentication flows
|
|
69
|
+
├── filters/ # Filter system
|
|
70
|
+
├── bookmarks/ # Bookmark management
|
|
71
|
+
├── collections/
|
|
72
|
+
└── ...
|
|
73
|
+
|
|
74
|
+
services/ # Business logic services
|
|
75
|
+
stores/ # State management
|
|
76
|
+
guards/ # Route guards
|
|
77
|
+
pipes/ # Custom pipes
|
|
78
|
+
utils/ # Utility functions
|
|
25
79
|
```
|
|
26
80
|
|
|
27
|
-
|
|
81
|
+
## Available Components
|
|
28
82
|
|
|
29
|
-
|
|
83
|
+
### Core Components
|
|
30
84
|
|
|
31
|
-
|
|
85
|
+
- `SearchInputComponent` - Advanced search input with autocomplete
|
|
86
|
+
- `FiltersComponent` - Dynamic filter system
|
|
87
|
+
- `PaginationComponent` - Result pagination
|
|
88
|
+
- `DocumentLocatorComponent` - Document navigation
|
|
89
|
+
- `PreviewComponent` - Document preview
|
|
90
|
+
- `BackdropComponent` - Backdrop overlay
|
|
91
|
+
- `NavbarTabsComponent` - Navigation tabs
|
|
92
|
+
- `NoResultComponent` - No results display
|
|
93
|
+
- `SortSelectorComponent` - Sort options selector
|
|
32
94
|
|
|
33
|
-
|
|
95
|
+
### Authentication
|
|
34
96
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
import { provideHttpClient } from '@angular/common/http';
|
|
41
|
-
// Import any Sinequa providers if needed
|
|
97
|
+
- `SignInFormComponent` - User sign-in
|
|
98
|
+
- `ChangePasswordFormComponent` - Password change
|
|
99
|
+
- `ForgotPasswordFormComponent` - Password recovery
|
|
100
|
+
- `AuthGuard` - Route protection
|
|
101
|
+
- `PasswordExpiryGuard` - Password expiry detection
|
|
42
102
|
|
|
43
|
-
|
|
44
|
-
providers: [
|
|
45
|
-
provideRouter(routes),
|
|
46
|
-
provideHttpClient(),
|
|
47
|
-
// ...other providers (e.g. Sinequa stores/services)
|
|
48
|
-
]
|
|
49
|
-
});
|
|
50
|
-
```
|
|
103
|
+
### Features
|
|
51
104
|
|
|
52
|
-
|
|
105
|
+
- Alerts management
|
|
106
|
+
- Bookmarks system
|
|
107
|
+
- Collections management
|
|
108
|
+
- Advanced search drawer
|
|
109
|
+
- Export functionality
|
|
110
|
+
- Feedback system
|
|
111
|
+
- Labels management
|
|
112
|
+
- Recent searches
|
|
113
|
+
- Saved searches
|
|
53
114
|
|
|
54
|
-
|
|
115
|
+
## API Documentation
|
|
55
116
|
|
|
56
|
-
|
|
57
|
-
import { FiltersBarComponent, AggregationComponent, MoreComponent } from '@sinequa/atomic-angular';
|
|
117
|
+
### Services
|
|
58
118
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
imports: [FiltersBarComponent, AggregationComponent, MoreComponent],
|
|
63
|
-
template: `
|
|
64
|
-
<FiltersBar />
|
|
65
|
-
<More />
|
|
66
|
-
<Aggregation [name]="aggregationName" [column]="aggregationColumn" />
|
|
67
|
-
`
|
|
68
|
-
})
|
|
69
|
-
export class AppComponent {
|
|
70
|
-
aggregationName = 'Places';
|
|
71
|
-
aggregationColumn = 'location';
|
|
72
|
-
}
|
|
73
|
-
```
|
|
119
|
+
```typescript
|
|
120
|
+
// ApplicationService - Core application logic
|
|
121
|
+
import { ApplicationService } from '@sinequa/atomic-angular';
|
|
74
122
|
|
|
75
|
-
|
|
123
|
+
// AggregationsService - Filter management
|
|
124
|
+
import { AggregationsService } from '@sinequa/atomic-angular';
|
|
76
125
|
|
|
77
|
-
|
|
126
|
+
// AuthService - Authentication
|
|
127
|
+
import { AuthService } from '@sinequa/atomic-angular';
|
|
128
|
+
```
|
|
78
129
|
|
|
79
|
-
###
|
|
130
|
+
### Guards
|
|
80
131
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
132
|
+
```typescript
|
|
133
|
+
import { AuthGuard, PasswordExpiryGuard } from '@sinequa/atomic-angular';
|
|
134
|
+
|
|
135
|
+
const routes: Routes = [
|
|
136
|
+
{
|
|
137
|
+
path: 'search',
|
|
138
|
+
canActivate: [AuthGuard],
|
|
139
|
+
component: SearchComponent
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
path: 'profile',
|
|
143
|
+
canActivate: [AuthGuard, PasswordExpiryGuard],
|
|
144
|
+
component: ProfileComponent
|
|
145
|
+
}
|
|
146
|
+
];
|
|
147
|
+
```
|
|
85
148
|
|
|
86
|
-
|
|
149
|
+
## Changelog
|
|
87
150
|
|
|
88
|
-
|
|
89
|
-
- **PreviewService**: Document preview with highlights/entities
|
|
90
|
-
- **TextChunkService**: Retrieve text chunks from backend
|
|
91
|
-
- **JsonMethodPluginService**: Call JSON plugins via HTTP
|
|
92
|
-
- **NavigationService**: Navigation and URL info
|
|
93
|
-
- **SelectionService**: Manage article selection
|
|
94
|
-
- **ApplicationService**: User auth, app init, dynamic routes
|
|
95
|
-
- ...([see all services](./docs/services/))
|
|
151
|
+
### Recent Releases
|
|
96
152
|
|
|
97
|
-
|
|
153
|
+
**v0.3.8** (2025-12-18)
|
|
98
154
|
|
|
99
|
-
-
|
|
100
|
-
-
|
|
101
|
-
- **ThemeStore**: Theme settings, CSS variables
|
|
102
|
-
- **AggregationsStore**: Aggregation state
|
|
103
|
-
- **SelectionStore**: Article selection
|
|
104
|
-
- **QueryParamsStore**: Query parameters
|
|
105
|
-
- ...([see all stores](./docs/stores/))
|
|
155
|
+
- Added chevron icon in document locator menu
|
|
156
|
+
- Improved component structure
|
|
106
157
|
|
|
107
|
-
|
|
158
|
+
**v0.3.7** (2025-12-17)
|
|
108
159
|
|
|
109
|
-
-
|
|
160
|
+
- Fixed parent selection in filters with `linkChildren`
|
|
161
|
+
- Enhanced selection state management
|
|
110
162
|
|
|
111
|
-
|
|
163
|
+
**v0.3.6** (2025-12-17)
|
|
112
164
|
|
|
113
|
-
-
|
|
165
|
+
- Enhanced "Did You Mean" component styling
|
|
166
|
+
- Added text truncation for long filter names
|
|
114
167
|
|
|
115
|
-
|
|
168
|
+
**v0.3.4** (2025-12-15)
|
|
116
169
|
|
|
117
|
-
-
|
|
170
|
+
- Complete password management flows
|
|
171
|
+
- Added `PasswordExpiryGuard`
|
|
118
172
|
|
|
119
|
-
|
|
173
|
+
**v0.3.0** (2025-12-09) - Major Release
|
|
120
174
|
|
|
121
|
-
-
|
|
175
|
+
- New Chapsvision theme system
|
|
176
|
+
- Standardized icon components
|
|
177
|
+
- New `InputGroup` architecture
|
|
178
|
+
- Badge API changes
|
|
122
179
|
|
|
123
|
-
|
|
180
|
+
See [full changelog](https://github.com/Product/sba-atomic-angular/blob/develop/changelogs/CHANGELOG_0.2.10_to_0.3.8.md) for details.
|
|
124
181
|
|
|
125
|
-
|
|
182
|
+
## Migration Guide
|
|
126
183
|
|
|
127
|
-
###
|
|
184
|
+
### Migrating from 0.2.x to 0.3.0+
|
|
185
|
+
|
|
186
|
+
#### Authentication
|
|
187
|
+
|
|
188
|
+
```typescript
|
|
189
|
+
// Before
|
|
190
|
+
import { SignInComponent } from '@sinequa/atomic-angular';
|
|
191
|
+
// After
|
|
192
|
+
import { SignInFormComponent } from '@sinequa/atomic-angular';
|
|
193
|
+
```
|
|
128
194
|
|
|
129
|
-
|
|
195
|
+
## Browser Support
|
|
130
196
|
|
|
131
|
-
|
|
197
|
+
- Chrome (latest)
|
|
198
|
+
- Firefox (latest)
|
|
199
|
+
- Safari (latest)
|
|
200
|
+
- Edge (latest)
|
|
132
201
|
|
|
133
|
-
##
|
|
202
|
+
## Requirements
|
|
134
203
|
|
|
135
|
-
-
|
|
204
|
+
- Angular 20+
|
|
205
|
+
- TypeScript 5.7+
|
|
206
|
+
- Node.js 18+
|
|
136
207
|
|
|
137
|
-
|
|
208
|
+
## License
|
|
138
209
|
|
|
139
|
-
|
|
210
|
+
Proprietary - Copyright © 2025 Sinequa. All rights reserved.
|
|
140
211
|
|
|
141
|
-
|
|
212
|
+
## Support
|
|
142
213
|
|
|
143
|
-
|
|
214
|
+
- 📧 Email: [support@sinequa.com](mailto:support@sinequa.com)
|
|
215
|
+
- 📚 Documentation: [sinequa.com/docs](https://sinequa.com/docs)
|
|
216
|
+
- 🌐 Website: [www.sinequa.com](https://www.sinequa.com)
|
|
144
217
|
|
|
145
|
-
|
|
218
|
+
**Built by the Sinequa Team**
|
|
@@ -5,8 +5,16 @@
|
|
|
5
5
|
"changePassword": "Passwort ändern",
|
|
6
6
|
"newPassword": "Neues Passwort",
|
|
7
7
|
"confirmPassword": "Passwort bestätigen",
|
|
8
|
+
"currentPassword": "Aktuelles Passwort",
|
|
8
9
|
"confirm": "Bestätigen",
|
|
9
10
|
"passwordChanged": "Passwort erfolgreich geändert",
|
|
11
|
+
"passwordExpiresSoon": "Ihr Passwort läuft bald ab",
|
|
12
|
+
"forgotPassword": "Passwort vergessen",
|
|
13
|
+
"forgotPasswordTitle": "Passwort vergessen?",
|
|
14
|
+
"forgotPasswordDescription": "Geben Sie Ihren Benutzernamen ein. Wenn Ihr Konto gültig ist und eine E-Mail-Adresse hat, erhalten Sie einen Link zum Zurücksetzen.",
|
|
15
|
+
"sendResetLink": "Reset-Link senden",
|
|
16
|
+
"resetEmailSent": "Ein Reset-Link wurde an {{email}} gesendet",
|
|
17
|
+
"resetEmailFailed": "Die E-Mail zum Zurücksetzen konnte nicht gesendet werden",
|
|
10
18
|
"passwordChangeFailed": "Passwortänderung fehlgeschlagen",
|
|
11
19
|
"back": "Zurück",
|
|
12
20
|
"disconnect": "Abmelden",
|
|
@@ -7,7 +7,15 @@
|
|
|
7
7
|
"confirmPassword": "Confirm password",
|
|
8
8
|
"confirm": "Confirm",
|
|
9
9
|
"passwordChanged": "Password changed successfully",
|
|
10
|
+
"currentPassword": "Current password",
|
|
11
|
+
"passwordExpiresSoon": "Your password is expiring soon",
|
|
10
12
|
"passwordChangeFailed": "Password change failed",
|
|
13
|
+
"forgotPassword": "Forgot password",
|
|
14
|
+
"forgotPasswordTitle": "Forgot your password",
|
|
15
|
+
"forgotPasswordDescription": "Enter your username. If your account is valid and has an email address, you will receive a reset link.",
|
|
16
|
+
"sendResetLink": "Send reset link",
|
|
17
|
+
"resetEmailSent": "A reset link has been sent to {{email}}",
|
|
18
|
+
"resetEmailFailed": "Unable to send the reset email",
|
|
11
19
|
"back": "Back",
|
|
12
20
|
"disconnect": "Logout",
|
|
13
21
|
"SignInWith": "Sign-in with { provider }",
|
|
@@ -7,10 +7,17 @@
|
|
|
7
7
|
"confirmPassword": "Confirmer le mot de passe",
|
|
8
8
|
"confirm": "Confirmer",
|
|
9
9
|
"passwordChanged": "Mot de passe changé avec succès",
|
|
10
|
+
"forgotPassword": "Mot de passe oublié",
|
|
11
|
+
"currentPassword": "Mot de passe actuel",
|
|
12
|
+
"passwordExpiresSoon": "Votre mot de passe expire bientôt",
|
|
10
13
|
"passwordChangeFailed": "Échec du changement de mot de passe",
|
|
11
14
|
"back": "Retour",
|
|
12
15
|
"disconnect": "Se déconnecter",
|
|
13
|
-
"
|
|
16
|
+
"forgotPasswordTitle": "Mot de passe oublié ?",
|
|
17
|
+
"forgotPasswordDescription": "Saisissez votre nom d'utilisateur. Si votre compte est valide et dispose d'une adresse e-mail, vous recevrez un lien de réinitialisation.",
|
|
18
|
+
"sendResetLink": "Envoyer le lien de réinitialisation",
|
|
19
|
+
"resetEmailSent": "Un lien de réinitialisation a été envoyé à {{email}}",
|
|
20
|
+
"resetEmailFailed": "Impossible d'envoyer l'e-mail de réinitialisation",
|
|
14
21
|
"loginDescription": "Saisissez votre adresse email pour vous connecter",
|
|
15
22
|
"SignInWith": "Se connecter avec { provider }",
|
|
16
23
|
"or": "Ou",
|