@relax.js/core 1.0.2 → 1.0.4
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 +194 -188
- package/dist/DependencyInjection.d.ts +42 -24
- package/dist/collections/Index.d.ts +2 -0
- package/dist/collections/index.js +1 -1
- package/dist/collections/index.js.map +4 -4
- package/dist/collections/index.mjs +1 -1
- package/dist/collections/index.mjs.map +4 -4
- package/dist/di/index.js +1 -1
- package/dist/di/index.js.map +3 -3
- package/dist/di/index.mjs +1 -1
- package/dist/di/index.mjs.map +3 -3
- package/dist/errors.d.ts +20 -0
- package/dist/forms/FormValidator.d.ts +1 -20
- package/dist/forms/ValidationRules.d.ts +2 -0
- package/dist/forms/index.js +1 -1
- package/dist/forms/index.js.map +4 -4
- package/dist/forms/index.mjs +1 -1
- package/dist/forms/index.mjs.map +4 -4
- package/dist/html/TableRenderer.d.ts +1 -0
- package/dist/html/index.js.map +2 -2
- package/dist/html/index.mjs.map +2 -2
- package/dist/html/template.d.ts +4 -0
- package/dist/http/http.d.ts +1 -0
- package/dist/http/index.js.map +2 -2
- package/dist/http/index.mjs.map +2 -2
- package/dist/index.d.ts +0 -2
- package/dist/index.js +3 -3
- package/dist/index.js.map +4 -4
- package/dist/index.mjs +3 -3
- package/dist/index.mjs.map +4 -4
- package/dist/routing/index.js +3 -3
- package/dist/routing/index.js.map +3 -3
- package/dist/routing/index.mjs +3 -3
- package/dist/routing/index.mjs.map +3 -3
- package/dist/routing/routeTargetRegistry.d.ts +1 -0
- package/dist/routing/types.d.ts +2 -1
- package/dist/templates/NodeTemplate.d.ts +2 -0
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +2 -2
- package/dist/utils/index.mjs +1 -1
- package/dist/utils/index.mjs.map +2 -2
- package/docs/Architecture.md +333 -333
- package/docs/DependencyInjection.md +277 -237
- package/docs/Errors.md +87 -87
- package/docs/GettingStarted.md +231 -231
- package/docs/Pipes.md +5 -5
- package/docs/Translations.md +167 -312
- package/docs/WhyRelaxjs.md +336 -336
- package/docs/api/.nojekyll +1 -0
- package/docs/api/assets/hierarchy.js +1 -0
- package/docs/api/assets/highlight.css +120 -0
- package/docs/api/assets/icons.js +18 -0
- package/docs/api/assets/icons.svg +1 -0
- package/docs/api/assets/main.js +60 -0
- package/docs/api/assets/navigation.js +1 -0
- package/docs/api/assets/search.js +1 -0
- package/docs/api/assets/style.css +1633 -0
- package/docs/api/classes/http.WebSocketClient.html +26 -0
- package/docs/api/classes/i18n.LocaleChangeEvent.html +66 -0
- package/docs/api/classes/index.Blueprint.html +3 -0
- package/docs/api/classes/index.BoundNode.html +3 -0
- package/docs/api/classes/index.DigitsValidation.html +10 -0
- package/docs/api/classes/index.FormValidator.html +32 -0
- package/docs/api/classes/index.HttpError.html +13 -0
- package/docs/api/classes/index.LinkedList.html +26 -0
- package/docs/api/classes/index.NavigateRouteEvent.html +76 -0
- package/docs/api/classes/index.Node.html +15 -0
- package/docs/api/classes/index.PageSelectedEvent.html +61 -0
- package/docs/api/classes/index.Pager.html +4 -0
- package/docs/api/classes/index.RangeValidation.html +15 -0
- package/docs/api/classes/index.RelaxError.html +17 -0
- package/docs/api/classes/index.RequiredValidation.html +10 -0
- package/docs/api/classes/index.RouteError.html +11 -0
- package/docs/api/classes/index.RouteGuardError.html +12 -0
- package/docs/api/classes/index.RouteLink.html +779 -0
- package/docs/api/classes/index.RouteTarget.html +788 -0
- package/docs/api/classes/index.SSEClient.html +13 -0
- package/docs/api/classes/index.SSEDataEvent.html +63 -0
- package/docs/api/classes/index.ServiceCollection.html +28 -0
- package/docs/api/classes/index.ServiceContainer.html +24 -0
- package/docs/api/classes/index.SortChangeEvent.html +61 -0
- package/docs/api/classes/index.TableRenderer.html +5 -0
- package/docs/api/classes/index.TableSorter.html +4 -0
- package/docs/api/enums/index.GuardResult.html +9 -0
- package/docs/api/functions/elements.formError.html +6 -0
- package/docs/api/functions/elements.selectOne.html +6 -0
- package/docs/api/functions/i18n.getCurrentLocale.html +3 -0
- package/docs/api/functions/i18n.loadNamespace.html +7 -0
- package/docs/api/functions/i18n.loadNamespaces.html +6 -0
- package/docs/api/functions/i18n.onMissingTranslation.html +7 -0
- package/docs/api/functions/i18n.setLocale.html +7 -0
- package/docs/api/functions/i18n.setMessageFormatter.html +7 -0
- package/docs/api/functions/i18n.t.html +9 -0
- package/docs/api/functions/index.BooleanConverter.html +6 -0
- package/docs/api/functions/index.ContainerService.html +13 -0
- package/docs/api/functions/index.DateConverter.html +11 -0
- package/docs/api/functions/index.Inject.html +16 -0
- package/docs/api/functions/index.NumberConverter.html +5 -0
- package/docs/api/functions/index.RegisterValidator.html +7 -0
- package/docs/api/functions/index.applyPipes.html +17 -0
- package/docs/api/functions/index.asyncHandler.html +11 -0
- package/docs/api/functions/index.capitalizePipe.html +4 -0
- package/docs/api/functions/index.clearPendingNavigations.html +1 -0
- package/docs/api/functions/index.compileTemplate.html +26 -0
- package/docs/api/functions/index.configure.html +5 -0
- package/docs/api/functions/index.createBluePrint.html +1 -0
- package/docs/api/functions/index.createConverterFromDataType.html +4 -0
- package/docs/api/functions/index.createConverterFromInputType.html +5 -0
- package/docs/api/functions/index.createPipeRegistry.html +12 -0
- package/docs/api/functions/index.currencyPipe.html +9 -0
- package/docs/api/functions/index.datePipe.html +9 -0
- package/docs/api/functions/index.daysAgoPipe.html +8 -0
- package/docs/api/functions/index.defaultPipe.html +5 -0
- package/docs/api/functions/index.defineRoutes.html +8 -0
- package/docs/api/functions/index.del.html +8 -0
- package/docs/api/functions/index.findRouteByName.html +5 -0
- package/docs/api/functions/index.findRouteByUrl.html +4 -0
- package/docs/api/functions/index.firstPipe.html +4 -0
- package/docs/api/functions/index.generateSequentialId.html +21 -0
- package/docs/api/functions/index.get.html +9 -0
- package/docs/api/functions/index.getDataConverter.html +11 -0
- package/docs/api/functions/index.getParentComponent.html +18 -0
- package/docs/api/functions/index.getValidator.html +4 -0
- package/docs/api/functions/index.html.html +19 -0
- package/docs/api/functions/index.joinPipe.html +5 -0
- package/docs/api/functions/index.keysPipe.html +4 -0
- package/docs/api/functions/index.lastPipe.html +4 -0
- package/docs/api/functions/index.lowercasePipe.html +4 -0
- package/docs/api/functions/index.mapFormToClass.html +17 -0
- package/docs/api/functions/index.matchRoute.html +5 -0
- package/docs/api/functions/index.navigate.html +8 -0
- package/docs/api/functions/index.onError.html +8 -0
- package/docs/api/functions/index.piecesPipe.html +8 -0
- package/docs/api/functions/index.post.html +9 -0
- package/docs/api/functions/index.printRoutes.html +2 -0
- package/docs/api/functions/index.put.html +9 -0
- package/docs/api/functions/index.readData.html +17 -0
- package/docs/api/functions/index.registerRouteTarget.html +9 -0
- package/docs/api/functions/index.reportError.html +10 -0
- package/docs/api/functions/index.request.html +8 -0
- package/docs/api/functions/index.resolveValue.html +18 -0
- package/docs/api/functions/index.setFetch.html +6 -0
- package/docs/api/functions/index.setFormData.html +17 -0
- package/docs/api/functions/index.shortenPipe.html +5 -0
- package/docs/api/functions/index.startRouting.html +6 -0
- package/docs/api/functions/index.ternaryPipe.html +6 -0
- package/docs/api/functions/index.trimPipe.html +4 -0
- package/docs/api/functions/index.unregisterRouteTarget.html +3 -0
- package/docs/api/functions/index.uppercasePipe.html +4 -0
- package/docs/api/hierarchy.html +1 -0
- package/docs/api/index.html +323 -0
- package/docs/api/interfaces/http.SimpleDataEvent.html +3 -0
- package/docs/api/interfaces/http.WebSocketAbstraction.html +9 -0
- package/docs/api/interfaces/http.WebSocketCodec.html +4 -0
- package/docs/api/interfaces/http.WebSocketOptions.html +20 -0
- package/docs/api/interfaces/index.CompiledTemplate.html +10 -0
- package/docs/api/interfaces/index.DataLoader.html +19 -0
- package/docs/api/interfaces/index.EngineConfig.html +11 -0
- package/docs/api/interfaces/index.ErrorContext.html +4 -0
- package/docs/api/interfaces/index.FormReaderOptions.html +8 -0
- package/docs/api/interfaces/index.HttpOptions.html +16 -0
- package/docs/api/interfaces/index.HttpResponse.html +17 -0
- package/docs/api/interfaces/index.LoadRoute.html +7 -0
- package/docs/api/interfaces/index.NavigateOptions.html +7 -0
- package/docs/api/interfaces/index.PipeRegistry.html +12 -0
- package/docs/api/interfaces/index.RegistrationOptions.html +22 -0
- package/docs/api/interfaces/index.RenderTemplate.html +7 -0
- package/docs/api/interfaces/index.RequestOptions.html +11 -0
- package/docs/api/interfaces/index.Routable.html +10 -0
- package/docs/api/interfaces/index.Route.html +13 -0
- package/docs/api/interfaces/index.RouteGuard.html +2 -0
- package/docs/api/interfaces/index.RouteValue.html +6 -0
- package/docs/api/interfaces/index.SSEOptions.html +24 -0
- package/docs/api/interfaces/index.ValidationContext.html +8 -0
- package/docs/api/interfaces/index.ValidatorOptions.html +14 -0
- package/docs/api/media/Architecture.md +333 -0
- package/docs/api/media/DependencyInjection.md +277 -0
- package/docs/api/media/GettingStarted.md +231 -0
- package/docs/api/media/HttpClient.md +459 -0
- package/docs/api/media/Pipes.md +211 -0
- package/docs/api/media/Routing.md +332 -0
- package/docs/api/media/WhyRelaxjs.md +336 -0
- package/docs/api/media/forms.md +99 -0
- package/docs/api/media/html.md +175 -0
- package/docs/api/media/i18n.md +354 -0
- package/docs/api/media/utilities.md +143 -0
- package/docs/api/media/validation.md +351 -0
- package/docs/api/modules/collections_Index.html +1 -0
- package/docs/api/modules/di.html +1 -0
- package/docs/api/modules/elements.html +1 -0
- package/docs/api/modules/forms.html +1 -0
- package/docs/api/modules/html.html +1 -0
- package/docs/api/modules/http.html +1 -0
- package/docs/api/modules/i18n.html +1 -0
- package/docs/api/modules/index.html +1 -0
- package/docs/api/modules/routing.html +1 -0
- package/docs/api/modules/utils.html +1 -0
- package/docs/api/modules.html +1 -0
- package/docs/api/types/http.WebSocketFactory.html +2 -0
- package/docs/api/types/i18n.MessageFormatter.html +3 -0
- package/docs/api/types/i18n.MissingTranslationHandler.html +1 -0
- package/docs/api/types/index.Constructor.html +7 -0
- package/docs/api/types/index.ConverterFunc.html +2 -0
- package/docs/api/types/index.DataType.html +2 -0
- package/docs/api/types/index.InputType.html +2 -0
- package/docs/api/types/index.PipeFunction.html +6 -0
- package/docs/api/types/index.RouteData.html +1 -0
- package/docs/api/types/index.RouteMatchResult.html +9 -0
- package/docs/api/types/index.RouteParamType.html +1 -0
- package/docs/api/types/index.RouteSegmentType.html +2 -0
- package/docs/api/types/index.SSEEventFactory.html +5 -0
- package/docs/api/types/index.ServiceScope.html +10 -0
- package/docs/api/types/index.SortColumn.html +3 -0
- package/docs/api/variables/i18n.formatICU.html +3 -0
- package/docs/api/variables/index.container.html +6 -0
- package/docs/api/variables/index.defaultPipes.html +6 -0
- package/docs/api/variables/index.internalRoutes.html +1 -0
- package/docs/api/variables/index.serviceCollection.html +6 -0
- package/docs/api.json +93171 -0
- package/docs/elements/dom.md +102 -102
- package/docs/forms/creating-form-components.md +924 -924
- package/docs/forms/form-api.md +94 -94
- package/docs/forms/forms.md +99 -99
- package/docs/forms/patterns.md +311 -311
- package/docs/forms/reading-writing.md +365 -365
- package/docs/forms/validation.md +351 -351
- package/docs/html/TableRenderer.md +291 -291
- package/docs/html/html.md +175 -175
- package/docs/html/index.md +54 -54
- package/docs/html/template.md +422 -422
- package/docs/http/HttpClient.md +459 -459
- package/docs/http/ServerSentEvents.md +184 -184
- package/docs/http/index.md +109 -109
- package/docs/i18n/i18n.md +49 -4
- package/docs/i18n/intl-standard.md +178 -178
- package/docs/routing/RouteLink.md +98 -98
- package/docs/routing/Routing.md +332 -332
- package/docs/routing/layouts.md +207 -207
- package/docs/utilities.md +143 -143
- package/package.json +4 -3
package/docs/elements/dom.md
CHANGED
|
@@ -1,102 +1,102 @@
|
|
|
1
|
-
# DOM Helpers
|
|
2
|
-
|
|
3
|
-
Utility functions for finding elements and setting form validation errors.
|
|
4
|
-
|
|
5
|
-
## `selectOne`
|
|
6
|
-
|
|
7
|
-
Finds exactly one element matching a selector. Throws if no match is found.
|
|
8
|
-
|
|
9
|
-
When the selector starts with `#`, it tries matching by `id` first, then falls back to the `name` attribute. This makes it convenient for form fields where `name` is more common than `id`.
|
|
10
|
-
|
|
11
|
-
```typescript
|
|
12
|
-
import { selectOne } from '
|
|
13
|
-
|
|
14
|
-
// Standard CSS selector
|
|
15
|
-
const container = selectOne('.main-content');
|
|
16
|
-
|
|
17
|
-
// # looks up id, then name
|
|
18
|
-
const email = selectOne<HTMLInputElement>('#email');
|
|
19
|
-
|
|
20
|
-
// Scope to a parent element
|
|
21
|
-
const field = selectOne<HTMLInputElement>('#username', form);
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
The default return type is `HTMLElement`. Pass a type parameter for more specific types:
|
|
25
|
-
|
|
26
|
-
```typescript
|
|
27
|
-
const input = selectOne<HTMLInputElement>('#age');
|
|
28
|
-
input.valueAsNumber; // OK, typed as HTMLInputElement
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## `formError`
|
|
32
|
-
|
|
33
|
-
Sets a validation error message on a form field. Supports both native form elements (`<input>`, `<select>`, `<textarea>`, `<button>`) and form-associated custom elements that use `ElementInternals`. Throws if the element is not a form field.
|
|
34
|
-
|
|
35
|
-
```typescript
|
|
36
|
-
import { formError } from '
|
|
37
|
-
|
|
38
|
-
// Set an error
|
|
39
|
-
formError('#email', 'Please enter a valid email');
|
|
40
|
-
|
|
41
|
-
// Clear an error
|
|
42
|
-
formError('#email', '');
|
|
43
|
-
|
|
44
|
-
// Scope to a specific form
|
|
45
|
-
formError('#quantity', 'Must be positive', orderForm);
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
### Native form fields
|
|
49
|
-
|
|
50
|
-
Calls `setCustomValidity(message)` and `reportValidity()` directly on the element.
|
|
51
|
-
|
|
52
|
-
### Form-associated custom elements
|
|
53
|
-
|
|
54
|
-
Detects elements whose constructor has `static formAssociated = true` and exposes `setCustomValidity`. This covers custom elements built with the `ElementInternals` API that proxy validation methods.
|
|
55
|
-
|
|
56
|
-
### Non-form elements
|
|
57
|
-
|
|
58
|
-
Throws an error if the matched element is neither a native form field nor a form-associated custom element.
|
|
59
|
-
|
|
60
|
-
## `getParentComponent`
|
|
61
|
-
|
|
62
|
-
Finds the closest parent element of a specific Web Component type. Traverses up the DOM tree looking for an ancestor matching the given constructor.
|
|
63
|
-
|
|
64
|
-
```typescript
|
|
65
|
-
import { getParentComponent } from '
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### Finding a Parent Container
|
|
69
|
-
|
|
70
|
-
```typescript
|
|
71
|
-
class ListItem extends HTMLElement {
|
|
72
|
-
connectedCallback() {
|
|
73
|
-
const list = getParentComponent(this, ListContainer);
|
|
74
|
-
if (list) {
|
|
75
|
-
list.registerItem(this);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### Accessing Parent Methods
|
|
82
|
-
|
|
83
|
-
```typescript
|
|
84
|
-
class TabPanel extends HTMLElement {
|
|
85
|
-
activate() {
|
|
86
|
-
const tabs = getParentComponent(this, TabContainer);
|
|
87
|
-
tabs?.selectPanel(this);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
### Handling Missing Parent
|
|
93
|
-
|
|
94
|
-
Returns `null` if no matching parent is found:
|
|
95
|
-
|
|
96
|
-
```typescript
|
|
97
|
-
const form = getParentComponent(input, FormContainer);
|
|
98
|
-
if (!form) {
|
|
99
|
-
console.warn('Input must be inside a FormContainer');
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
```
|
|
1
|
+
# DOM Helpers
|
|
2
|
+
|
|
3
|
+
Utility functions for finding elements and setting form validation errors.
|
|
4
|
+
|
|
5
|
+
## `selectOne`
|
|
6
|
+
|
|
7
|
+
Finds exactly one element matching a selector. Throws if no match is found.
|
|
8
|
+
|
|
9
|
+
When the selector starts with `#`, it tries matching by `id` first, then falls back to the `name` attribute. This makes it convenient for form fields where `name` is more common than `id`.
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
import { selectOne } from '@relax.js/core/elements';
|
|
13
|
+
|
|
14
|
+
// Standard CSS selector
|
|
15
|
+
const container = selectOne('.main-content');
|
|
16
|
+
|
|
17
|
+
// # looks up id, then name
|
|
18
|
+
const email = selectOne<HTMLInputElement>('#email');
|
|
19
|
+
|
|
20
|
+
// Scope to a parent element
|
|
21
|
+
const field = selectOne<HTMLInputElement>('#username', form);
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
The default return type is `HTMLElement`. Pass a type parameter for more specific types:
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
const input = selectOne<HTMLInputElement>('#age');
|
|
28
|
+
input.valueAsNumber; // OK, typed as HTMLInputElement
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## `formError`
|
|
32
|
+
|
|
33
|
+
Sets a validation error message on a form field. Supports both native form elements (`<input>`, `<select>`, `<textarea>`, `<button>`) and form-associated custom elements that use `ElementInternals`. Throws if the element is not a form field.
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
import { formError } from '@relax.js/core/elements';
|
|
37
|
+
|
|
38
|
+
// Set an error
|
|
39
|
+
formError('#email', 'Please enter a valid email');
|
|
40
|
+
|
|
41
|
+
// Clear an error
|
|
42
|
+
formError('#email', '');
|
|
43
|
+
|
|
44
|
+
// Scope to a specific form
|
|
45
|
+
formError('#quantity', 'Must be positive', orderForm);
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Native form fields
|
|
49
|
+
|
|
50
|
+
Calls `setCustomValidity(message)` and `reportValidity()` directly on the element.
|
|
51
|
+
|
|
52
|
+
### Form-associated custom elements
|
|
53
|
+
|
|
54
|
+
Detects elements whose constructor has `static formAssociated = true` and exposes `setCustomValidity`. This covers custom elements built with the `ElementInternals` API that proxy validation methods.
|
|
55
|
+
|
|
56
|
+
### Non-form elements
|
|
57
|
+
|
|
58
|
+
Throws an error if the matched element is neither a native form field nor a form-associated custom element.
|
|
59
|
+
|
|
60
|
+
## `getParentComponent`
|
|
61
|
+
|
|
62
|
+
Finds the closest parent element of a specific Web Component type. Traverses up the DOM tree looking for an ancestor matching the given constructor.
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
import { getParentComponent } from '@relax.js/core/elements';
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Finding a Parent Container
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
class ListItem extends HTMLElement {
|
|
72
|
+
connectedCallback() {
|
|
73
|
+
const list = getParentComponent(this, ListContainer);
|
|
74
|
+
if (list) {
|
|
75
|
+
list.registerItem(this);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Accessing Parent Methods
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
class TabPanel extends HTMLElement {
|
|
85
|
+
activate() {
|
|
86
|
+
const tabs = getParentComponent(this, TabContainer);
|
|
87
|
+
tabs?.selectPanel(this);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Handling Missing Parent
|
|
93
|
+
|
|
94
|
+
Returns `null` if no matching parent is found:
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
const form = getParentComponent(input, FormContainer);
|
|
98
|
+
if (!form) {
|
|
99
|
+
console.warn('Input must be inside a FormContainer');
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
```
|