@sinequa/atomic-angular 2.0.0 → 2.1.0

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 CHANGED
@@ -1,249 +1,249 @@
1
- # @sinequa/atomic-angular
2
-
3
- [![npm version](https://img.shields.io/npm/v/@sinequa/atomic-angular.svg)](https://npm.sinequa.com/@sinequa/atomic-angular)
4
- [![Angular](https://img.shields.io/badge/Angular-v22-red.svg)](https://angular.dev)
5
- [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue.svg)](https://www.typescriptlang.org/)
6
-
7
- > A comprehensive Angular component library and design system for building modern Sinequa search applications.
8
-
9
- ## Overview
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.
12
-
13
- ## Installation
14
-
15
- ```bash
16
- npm install @sinequa/atomic-angular
17
- ```
18
-
19
- ### Peer Dependencies
20
-
21
- ```json
22
- {
23
- "@angular/core": "^22.0.0",
24
- "@angular/aria": "^22.0.0",
25
- "@sinequa/galactik": "^2.0.0-next.1",
26
- "@sinequa/atomic": ">=2.3.0"
27
- }
28
- ```
29
-
30
- > ℹ️ The peer dependency above targets the **2.x** line (Angular 22, pre-release). For the
31
- > Angular 20 lines (1.x / 1.0.x), see the compatibility table below.
32
-
33
- > See [`ARCHITECTURE.md`](../../ARCHITECTURE.md) for how this library relates to
34
- > `@sinequa/galactik` (and the deprecated `@sinequa/ui`, which it no longer depends on).
35
-
36
- ## Versioning & Compatibility
37
-
38
- `@sinequa/atomic-angular` is maintained across several **parallel version lines**, each
39
- pinned to an Angular major and consumed by a specific product release. Pick the line that
40
- matches the Angular version embedded in your product.
41
-
42
- | Library line | Angular | Product release | Status | Install |
43
- |---|---|---|---|---|
44
- | **1.0.x** | 20 | 11.13.0 | 🩹 Maintenance — critical & bug fixes only | `npm i @sinequa/atomic-angular@~1.0` |
45
- | **1.x** | 20 | 11.14.0 | ✅ Active — fixes + new features | `npm i @sinequa/atomic-angular@^1` |
46
- | **2.x** | 22 | *future release* | 🚧 Upcoming — pre-release | `npm i @sinequa/atomic-angular@next` |
47
-
48
- **How the lines work**
49
-
50
- - **Each line is an independent version range.** A `1.0.x` patch and a `1.x` minor are
51
- unrelated number spaces — upgrading within a line never crosses an Angular major.
52
- - **`~1.0`** keeps you on patch releases of the 11.13 line (no minor jumps).
53
- **`^1`** follows the active 1.x line (patches + minors, still Angular 20).
54
- **`@next` / `^2`** is the Angular 22 line, for the upcoming product release.
55
- - A fix relevant to several lines is applied to each supported line independently, so you
56
- receive it on whichever line you track — without being forced onto a new Angular major.
57
-
58
- ## Features
59
-
60
- ### 🔐 Authentication & Authorization
61
-
62
- - Complete authentication flows with SSO support
63
- - Password management (expiry, forgotten, change)
64
- - Route guards and access control
65
- - Multi-language support (EN, FR, DE)
66
-
67
- ### 🔍 Advanced Search
68
-
69
- - Powerful filter system with aggregations
70
- - "Did You Mean" suggestions and autocomplete
71
- - Recent and saved searches
72
- - Bookmark and collection management
73
- - Document preview and navigation
74
- - Export functionality
75
-
76
- ### 🛠️ Developer Experience
77
-
78
- - **TypeScript-first** with full type safety
79
- - **Standalone components** (no NgModules required)
80
- - **Signal-based reactivity** for better performance
81
- - **Modern syntax**: @if, @for, @switch control flow
82
- - **Tree-shakeable** for optimal bundle size
83
-
84
- ## Package Structure
85
-
86
- ### @sinequa/atomic-angular
87
-
88
- ```bash
89
- components/ # Reusable UI components
90
- ├── backdrop/
91
- ├── document-locator/
92
- ├── navbar-tabs/
93
- ├── pagination/
94
- └── ...
95
-
96
- features/ # Feature modules
97
- ├── auth/ # Authentication flows
98
- ├── filters/ # Filter system
99
- ├── bookmarks/ # Bookmark management
100
- ├── collections/
101
- └── ...
102
-
103
- services/ # Business logic services
104
- stores/ # State management
105
- guards/ # Route guards
106
- pipes/ # Custom pipes
107
- utils/ # Utility functions
108
- ```
109
-
110
- ## Available Components
111
-
112
- ### Core Components
113
-
114
- - `SearchInputComponent` - Advanced search input with autocomplete
115
- - `FiltersComponent` - Dynamic filter system
116
- - `PaginationComponent` - Result pagination
117
- - `DocumentLocatorComponent` - Document navigation
118
- - `PreviewComponent` - Document preview
119
- - `BackdropComponent` - Backdrop overlay
120
- - `NavbarTabsComponent` - Navigation tabs
121
- - `NoResultComponent` - No results display
122
- - `SortSelectorComponent` - Sort options selector
123
-
124
- ### Authentication
125
-
126
- - `AuthPageComponent` - Authentication page, switches between the views below
127
- - `SignInComponent` - User sign-in
128
- - `ChangePasswordComponent` - Password change
129
- - `ForgotPasswordComponent` - Password recovery
130
- - `SignedOutComponent` - Post-logout confirmation
131
- - `AuthGuard` - Route protection
132
- - `PasswordExpiryGuard` - Password expiry detection
133
-
134
- ### Features
135
-
136
- - Alerts management
137
- - Bookmarks system
138
- - Collections management
139
- - Advanced search
140
- - Export functionality
141
- - Feedback system
142
- - Labels management
143
- - Recent searches
144
- - Saved searches
145
-
146
- ## API Documentation
147
-
148
- ### Services
149
-
150
- ```typescript
151
- // ApplicationService - Core application logic
152
- import { ApplicationService } from '@sinequa/atomic-angular';
153
-
154
- // AggregationsService - Filter management
155
- import { AggregationsService } from '@sinequa/atomic-angular';
156
-
157
- // AuthService - Authentication
158
- import { AuthService } from '@sinequa/atomic-angular';
159
- ```
160
-
161
- ### Guards
162
-
163
- ```typescript
164
- import { AuthGuard, PasswordExpiryGuard } from '@sinequa/atomic-angular';
165
-
166
- const routes: Routes = [
167
- {
168
- path: 'search',
169
- canActivate: [AuthGuard],
170
- component: SearchComponent
171
- },
172
- {
173
- path: 'profile',
174
- canActivate: [AuthGuard, PasswordExpiryGuard],
175
- component: ProfileComponent
176
- }
177
- ];
178
- ```
179
-
180
- ## Changelog
181
-
182
- ### Recent Releases
183
-
184
- **v0.3.8** (2025-12-18)
185
-
186
- - Added chevron icon in document locator menu
187
- - Improved component structure
188
-
189
- **v0.3.7** (2025-12-17)
190
-
191
- - Fixed parent selection in filters with `linkChildren`
192
- - Enhanced selection state management
193
-
194
- **v0.3.6** (2025-12-17)
195
-
196
- - Enhanced "Did You Mean" component styling
197
- - Added text truncation for long filter names
198
-
199
- **v0.3.4** (2025-12-15)
200
-
201
- - Complete password management flows
202
- - Added `PasswordExpiryGuard`
203
-
204
- **v0.3.0** (2025-12-09) - Major Release
205
-
206
- - New Chapsvision theme system
207
- - Standardized icon components
208
- - New `InputGroup` architecture
209
- - Badge API changes
210
-
211
- ## Migration Guide
212
-
213
- ### Migrating from 0.2.x to 0.3.0+
214
-
215
- #### Authentication
216
-
217
- Route `/login` and `/logout` to `AuthPageComponent` rather than to `SignInComponent` directly — it is what switches between the sign-in, change-password, forgot-password and signed-out views.
218
-
219
- ```typescript
220
- // Before
221
- { path: 'login', component: SignInComponent }
222
- // After
223
- { path: 'login', component: AuthPageComponent }
224
- ```
225
-
226
- ## Browser Support
227
-
228
- - Chrome (latest)
229
- - Firefox (latest)
230
- - Safari (latest)
231
- - Edge (latest)
232
-
233
- ## Requirements
234
-
235
- - Angular 22+
236
- - TypeScript 6.0+
237
- - Node.js 22.22+
238
-
239
- ## License
240
-
241
- Proprietary - Copyright © 2025 Sinequa. All rights reserved.
242
-
243
- ## Support
244
-
245
- - 📧 Email: [support@sinequa.com](mailto:support@sinequa.com)
246
- - 📚 Documentation: [sinequa.com/docs](https://sinequa.com/docs)
247
- - 🌐 Website: [www.sinequa.com](https://www.sinequa.com)
248
-
249
- **Built by the Sinequa Team**
1
+ # @sinequa/atomic-angular
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@sinequa/atomic-angular.svg)](https://npm.sinequa.com/@sinequa/atomic-angular)
4
+ [![Angular](https://img.shields.io/badge/Angular-v22-red.svg)](https://angular.dev)
5
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue.svg)](https://www.typescriptlang.org/)
6
+
7
+ > A comprehensive Angular component library and design system for building modern Sinequa search applications.
8
+
9
+ ## Overview
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.
12
+
13
+ ## Installation
14
+
15
+ ```bash
16
+ npm install @sinequa/atomic-angular
17
+ ```
18
+
19
+ ### Peer Dependencies
20
+
21
+ ```json
22
+ {
23
+ "@angular/core": "^22.0.0",
24
+ "@angular/aria": "^22.0.0",
25
+ "@sinequa/galactik": "^2.0.0-next.1",
26
+ "@sinequa/atomic": ">=2.3.0"
27
+ }
28
+ ```
29
+
30
+ > ℹ️ The peer dependency above targets the **2.x** line (Angular 22, pre-release). For the
31
+ > Angular 20 lines (1.x / 1.0.x), see the compatibility table below.
32
+
33
+ > See [`ARCHITECTURE.md`](../../ARCHITECTURE.md) for how this library relates to
34
+ > `@sinequa/galactik` (and the deprecated `@sinequa/ui`, which it no longer depends on).
35
+
36
+ ## Versioning & Compatibility
37
+
38
+ `@sinequa/atomic-angular` is maintained across several **parallel version lines**, each
39
+ pinned to an Angular major and consumed by a specific product release. Pick the line that
40
+ matches the Angular version embedded in your product.
41
+
42
+ | Library line | Angular | Product release | Status | Install |
43
+ | ------------ | ------- | ---------------- | ------------------------------------------ | ------------------------------------ |
44
+ | **1.0.x** | 20 | 11.13.0 | 🩹 Maintenance — critical & bug fixes only | `npm i @sinequa/atomic-angular@~1.0` |
45
+ | **1.x** | 20 | 11.14.0 | ✅ Active — fixes + new features | `npm i @sinequa/atomic-angular@^1` |
46
+ | **2.x** | 22 | _future release_ | 🚧 Upcoming — pre-release | `npm i @sinequa/atomic-angular@next` |
47
+
48
+ **How the lines work**
49
+
50
+ - **Each line is an independent version range.** A `1.0.x` patch and a `1.x` minor are
51
+ unrelated number spaces — upgrading within a line never crosses an Angular major.
52
+ - **`~1.0`** keeps you on patch releases of the 11.13 line (no minor jumps).
53
+ **`^1`** follows the active 1.x line (patches + minors, still Angular 20).
54
+ **`@next` / `^2`** is the Angular 22 line, for the upcoming product release.
55
+ - A fix relevant to several lines is applied to each supported line independently, so you
56
+ receive it on whichever line you track — without being forced onto a new Angular major.
57
+
58
+ ## Features
59
+
60
+ ### 🔐 Authentication & Authorization
61
+
62
+ - Complete authentication flows with SSO support
63
+ - Password management (expiry, forgotten, change)
64
+ - Route guards and access control
65
+ - Multi-language support (EN, FR, DE)
66
+
67
+ ### 🔍 Advanced Search
68
+
69
+ - Powerful filter system with aggregations
70
+ - "Did You Mean" suggestions and autocomplete
71
+ - Recent and saved searches
72
+ - Bookmark and collection management
73
+ - Document preview and navigation
74
+ - Export functionality
75
+
76
+ ### 🛠️ Developer Experience
77
+
78
+ - **TypeScript-first** with full type safety
79
+ - **Standalone components** (no NgModules required)
80
+ - **Signal-based reactivity** for better performance
81
+ - **Modern syntax**: @if, @for, @switch control flow
82
+ - **Tree-shakeable** for optimal bundle size
83
+
84
+ ## Package Structure
85
+
86
+ ### @sinequa/atomic-angular
87
+
88
+ ```bash
89
+ components/ # Reusable UI components
90
+ ├── backdrop/
91
+ ├── document-locator/
92
+ ├── navbar-tabs/
93
+ ├── pagination/
94
+ └── ...
95
+
96
+ features/ # Feature modules
97
+ ├── auth/ # Authentication flows
98
+ ├── filters/ # Filter system
99
+ ├── bookmarks/ # Bookmark management
100
+ ├── collections/
101
+ └── ...
102
+
103
+ services/ # Business logic services
104
+ stores/ # State management
105
+ guards/ # Route guards
106
+ pipes/ # Custom pipes
107
+ utils/ # Utility functions
108
+ ```
109
+
110
+ ## Available Components
111
+
112
+ ### Core Components
113
+
114
+ - `SearchInputComponent` - Advanced search input with autocomplete
115
+ - `FiltersComponent` - Dynamic filter system
116
+ - `PaginationComponent` - Result pagination
117
+ - `DocumentLocatorComponent` - Document navigation
118
+ - `PreviewComponent` - Document preview
119
+ - `BackdropComponent` - Backdrop overlay
120
+ - `NavbarTabsComponent` - Navigation tabs
121
+ - `NoResultComponent` - No results display
122
+ - `SortSelectorComponent` - Sort options selector
123
+
124
+ ### Authentication
125
+
126
+ - `AuthPageComponent` - Authentication page, switches between the views below
127
+ - `SignInComponent` - User sign-in
128
+ - `ChangePasswordComponent` - Password change
129
+ - `ForgotPasswordComponent` - Password recovery
130
+ - `SignedOutComponent` - Post-logout confirmation
131
+ - `AuthGuard` - Route protection
132
+ - `PasswordExpiryGuard` - Password expiry detection
133
+
134
+ ### Features
135
+
136
+ - Alerts management
137
+ - Bookmarks system
138
+ - Collections management
139
+ - Advanced search
140
+ - Export functionality
141
+ - Feedback system
142
+ - Labels management
143
+ - Recent searches
144
+ - Saved searches
145
+
146
+ ## API Documentation
147
+
148
+ ### Services
149
+
150
+ ```typescript
151
+ // ApplicationService - Core application logic
152
+ import { ApplicationService } from '@sinequa/atomic-angular';
153
+
154
+ // AggregationsService - Filter management
155
+ import { AggregationsService } from '@sinequa/atomic-angular';
156
+
157
+ // AuthService - Authentication
158
+ import { AuthService } from '@sinequa/atomic-angular';
159
+ ```
160
+
161
+ ### Guards
162
+
163
+ ```typescript
164
+ import { AuthGuard, PasswordExpiryGuard } from '@sinequa/atomic-angular';
165
+
166
+ const routes: Routes = [
167
+ {
168
+ path: 'search',
169
+ canActivate: [AuthGuard],
170
+ component: SearchComponent
171
+ },
172
+ {
173
+ path: 'profile',
174
+ canActivate: [AuthGuard, PasswordExpiryGuard],
175
+ component: ProfileComponent
176
+ }
177
+ ];
178
+ ```
179
+
180
+ ## Changelog
181
+
182
+ ### Recent Releases
183
+
184
+ **v0.3.8** (2025-12-18)
185
+
186
+ - Added chevron icon in document locator menu
187
+ - Improved component structure
188
+
189
+ **v0.3.7** (2025-12-17)
190
+
191
+ - Fixed parent selection in filters with `linkChildren`
192
+ - Enhanced selection state management
193
+
194
+ **v0.3.6** (2025-12-17)
195
+
196
+ - Enhanced "Did You Mean" component styling
197
+ - Added text truncation for long filter names
198
+
199
+ **v0.3.4** (2025-12-15)
200
+
201
+ - Complete password management flows
202
+ - Added `PasswordExpiryGuard`
203
+
204
+ **v0.3.0** (2025-12-09) - Major Release
205
+
206
+ - New Chapsvision theme system
207
+ - Standardized icon components
208
+ - New `InputGroup` architecture
209
+ - Badge API changes
210
+
211
+ ## Migration Guide
212
+
213
+ ### Migrating from 0.2.x to 0.3.0+
214
+
215
+ #### Authentication
216
+
217
+ Route `/login` and `/logout` to `AuthPageComponent` rather than to `SignInComponent` directly — it is what switches between the sign-in, change-password, forgot-password and signed-out views.
218
+
219
+ ```typescript
220
+ // Before
221
+ { path: 'login', component: SignInComponent }
222
+ // After
223
+ { path: 'login', component: AuthPageComponent }
224
+ ```
225
+
226
+ ## Browser Support
227
+
228
+ - Chrome (latest)
229
+ - Firefox (latest)
230
+ - Safari (latest)
231
+ - Edge (latest)
232
+
233
+ ## Requirements
234
+
235
+ - Angular 22+
236
+ - TypeScript 6.0+
237
+ - Node.js 22.22+
238
+
239
+ ## License
240
+
241
+ Proprietary - Copyright © 2025 Sinequa. All rights reserved.
242
+
243
+ ## Support
244
+
245
+ - 📧 Email: [support@sinequa.com](mailto:support@sinequa.com)
246
+ - 📚 Documentation: [sinequa.com/docs](https://sinequa.com/docs)
247
+ - 🌐 Website: [www.sinequa.com](https://www.sinequa.com)
248
+
249
+ **Built by the Sinequa Team**
@@ -220,7 +220,17 @@
220
220
  "mention": {
221
221
  "documentCount": "{count, plural, one {{count} Dokument} other {{count} Dokumente}}",
222
222
  "loadError": "Arbeitsbereiche konnten nicht geladen werden.",
223
- "loading": "Wird geladen…"
223
+ "loading": "Wird geladen…",
224
+ "newWorkspace": "Neuer Arbeitsbereich",
225
+ "empty": "Noch kein Arbeitsbereich",
226
+ "noMatch": "Kein Arbeitsbereich entspricht Ihrer Suche",
227
+ "searchPlaceholder": "Arbeitsbereich suchen...",
228
+ "tabAll": "Alle",
229
+ "tabOwned": "Eigene",
230
+ "tabShared": "Geteilt",
231
+ "tabsLabel": "Kategorien",
232
+ "selectAll": "Alle auswählen",
233
+ "unselectAll": "Auswahl aufheben"
224
234
  },
225
235
  "format": {
226
236
  "added": "Hinzugefügt {relative}",
@@ -220,7 +220,17 @@
220
220
  "mention": {
221
221
  "documentCount": "{count, plural, one {{count} document} other {{count} documents}}",
222
222
  "loadError": "Couldn’t load workspaces.",
223
- "loading": "Loading…"
223
+ "loading": "Loading…",
224
+ "newWorkspace": "New workspace",
225
+ "empty": "No workspace yet",
226
+ "noMatch": "No workspace matches your search",
227
+ "searchPlaceholder": "Search workspace...",
228
+ "tabAll": "All",
229
+ "tabOwned": "Owned",
230
+ "tabShared": "Shared",
231
+ "tabsLabel": "Categories",
232
+ "selectAll": "Select all",
233
+ "unselectAll": "Unselect all"
224
234
  },
225
235
  "format": {
226
236
  "added": "Added {relative}",
@@ -220,7 +220,17 @@
220
220
  "mention": {
221
221
  "documentCount": "{count, plural, one {{count} document} many {{count} documents} other {{count} documents}}",
222
222
  "loadError": "Impossible de charger les espaces de travail.",
223
- "loading": "Chargement…"
223
+ "loading": "Chargement…",
224
+ "newWorkspace": "Nouvel espace de travail",
225
+ "empty": "Aucun espace de travail pour le moment",
226
+ "noMatch": "Aucun espace de travail ne correspond à votre recherche",
227
+ "searchPlaceholder": "Rechercher un espace de travail...",
228
+ "tabAll": "Tous",
229
+ "tabOwned": "Les miens",
230
+ "tabShared": "Partagés",
231
+ "tabsLabel": "Catégories",
232
+ "selectAll": "Tout sélectionner",
233
+ "unselectAll": "Tout désélectionner"
224
234
  },
225
235
  "format": {
226
236
  "added": "Ajouté {relative}",
@@ -220,7 +220,17 @@
220
220
  "mention": {
221
221
  "documentCount": "{count, plural, other {{count} 件のドキュメント}}",
222
222
  "loadError": "ワークスペースを読み込めませんでした。",
223
- "loading": "読み込んでいます…"
223
+ "loading": "読み込んでいます…",
224
+ "newWorkspace": "新しいワークスペース",
225
+ "empty": "ワークスペースはまだありません",
226
+ "noMatch": "検索に一致するワークスペースはありません",
227
+ "searchPlaceholder": "ワークスペースを検索...",
228
+ "tabAll": "すべて",
229
+ "tabOwned": "自分の",
230
+ "tabShared": "共有",
231
+ "tabsLabel": "カテゴリ",
232
+ "selectAll": "すべて選択",
233
+ "unselectAll": "選択を解除"
224
234
  },
225
235
  "format": {
226
236
  "added": "{relative}に追加",