@scania-nl/tegel-angular-extensions 0.0.7 → 0.0.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 +410 -54
- package/esm2022/index.mjs +7 -1
- package/esm2022/lib/env/angular/provide-runtime-config.mjs +7 -5
- package/esm2022/lib/modal/components/modal/modal.component.mjs +121 -0
- package/esm2022/lib/modal/components/modal-host/modal-host.component.mjs +32 -0
- package/esm2022/lib/modal/directives/dynamic-component.directive.mjs +135 -0
- package/esm2022/lib/modal/modal.service.mjs +156 -0
- package/esm2022/lib/modal/provide-modal.mjs +25 -0
- package/esm2022/lib/modal/schema/modal-ref.mjs +2 -0
- package/esm2022/lib/modal/schema/modal.config.mjs +15 -0
- package/esm2022/lib/modal/schema/modal.model.mjs +2 -0
- package/esm2022/lib/modal/schema/modal.types.mjs +3 -0
- package/esm2022/lib/toast/provide-toast.mjs +7 -1
- package/esm2022/lib/utils/angular-component-io.mjs +2 -0
- package/index.d.ts +246 -4
- package/package.json +1 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { makeEnvironmentProviders, provideAppInitializer, } from '@angular/core';
|
|
2
|
+
import { bootstrapGlobalComponent } from '../utils/bootstrap-global-component';
|
|
3
|
+
import { ModalHostComponent } from './components/modal-host/modal-host.component';
|
|
4
|
+
import { DEFAULT_MODAL_CONFIG, MODAL_CONFIG, } from './schema/modal.config';
|
|
5
|
+
/**
|
|
6
|
+
* Provides modal configuration defaults and bootstraps the global modal host.
|
|
7
|
+
*
|
|
8
|
+
* @param config Optional config overrides applied on top of defaults.
|
|
9
|
+
* @returns EnvironmentProviders to register in application providers.
|
|
10
|
+
*/
|
|
11
|
+
export function provideModal(config = {}) {
|
|
12
|
+
return makeEnvironmentProviders([
|
|
13
|
+
{
|
|
14
|
+
provide: MODAL_CONFIG,
|
|
15
|
+
useFactory: () => ({
|
|
16
|
+
...DEFAULT_MODAL_CONFIG,
|
|
17
|
+
...(config ?? {}),
|
|
18
|
+
}),
|
|
19
|
+
},
|
|
20
|
+
provideAppInitializer(() => {
|
|
21
|
+
bootstrapGlobalComponent(ModalHostComponent, { reuseIfExists: true });
|
|
22
|
+
}),
|
|
23
|
+
]);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1tb2RhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdGVnZWwtYW5ndWxhci1leHRlbnNpb25zL3NyYy9saWIvbW9kYWwvcHJvdmlkZS1tb2RhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsd0JBQXdCLEVBQ3hCLHFCQUFxQixHQUN0QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLFlBQVksR0FFYixNQUFNLHVCQUF1QixDQUFDO0FBRS9COzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FDMUIsU0FBK0IsRUFBRTtJQUVqQyxPQUFPLHdCQUF3QixDQUFDO1FBQzlCO1lBQ0UsT0FBTyxFQUFFLFlBQVk7WUFDckIsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQ2pCLEdBQUcsb0JBQW9CO2dCQUN2QixHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQzthQUNsQixDQUFDO1NBQ0g7UUFDRCxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7WUFDekIsd0JBQXdCLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUM7S0FDSCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRW52aXJvbm1lbnRQcm92aWRlcnMsXG4gIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyxcbiAgcHJvdmlkZUFwcEluaXRpYWxpemVyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGJvb3RzdHJhcEdsb2JhbENvbXBvbmVudCB9IGZyb20gJy4uL3V0aWxzL2Jvb3RzdHJhcC1nbG9iYWwtY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGFsSG9zdENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tb2RhbC1ob3N0L21vZGFsLWhvc3QuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIERFRkFVTFRfTU9EQUxfQ09ORklHLFxuICBNT0RBTF9DT05GSUcsXG4gIE1vZGFsQ29uZmlnLFxufSBmcm9tICcuL3NjaGVtYS9tb2RhbC5jb25maWcnO1xuXG4vKipcbiAqIFByb3ZpZGVzIG1vZGFsIGNvbmZpZ3VyYXRpb24gZGVmYXVsdHMgYW5kIGJvb3RzdHJhcHMgdGhlIGdsb2JhbCBtb2RhbCBob3N0LlxuICpcbiAqIEBwYXJhbSBjb25maWcgT3B0aW9uYWwgY29uZmlnIG92ZXJyaWRlcyBhcHBsaWVkIG9uIHRvcCBvZiBkZWZhdWx0cy5cbiAqIEByZXR1cm5zIEVudmlyb25tZW50UHJvdmlkZXJzIHRvIHJlZ2lzdGVyIGluIGFwcGxpY2F0aW9uIHByb3ZpZGVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVNb2RhbChcbiAgY29uZmlnOiBQYXJ0aWFsPE1vZGFsQ29uZmlnPiA9IHt9LFxuKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBNT0RBTF9DT05GSUcsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiAoe1xuICAgICAgICAuLi5ERUZBVUxUX01PREFMX0NPTkZJRyxcbiAgICAgICAgLi4uKGNvbmZpZyA/PyB7fSksXG4gICAgICB9KSxcbiAgICB9LFxuICAgIHByb3ZpZGVBcHBJbml0aWFsaXplcigoKSA9PiB7XG4gICAgICBib290c3RyYXBHbG9iYWxDb21wb25lbnQoTW9kYWxIb3N0Q29tcG9uZW50LCB7IHJldXNlSWZFeGlzdHM6IHRydWUgfSk7XG4gICAgfSksXG4gIF0pO1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy90ZWdlbC1hbmd1bGFyLWV4dGVuc2lvbnMvc3JjL2xpYi9tb2RhbC9zY2hlbWEvbW9kYWwtcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIE1vZGFsUmVmIHtcbiAgLyoqIFVuaXF1ZSBpZCBmb3IgdGhlIG1vZGFsIGluc3RhbmNlLiAqL1xuICBpZDogc3RyaW5nO1xuICAvKiogT3BlbnMgdGhlIG1vZGFsIGluc3RhbmNlLiAqL1xuICBvcGVuOiAoKSA9PiB2b2lkO1xuICAvKiogQ2xvc2VzIHRoZSBtb2RhbCBpbnN0YW5jZS4gKi9cbiAgY2xvc2U6ICgpID0+IHZvaWQ7XG4gIC8qKiBSZW1vdmVzIHRoZSBtb2RhbCBpbnN0YW5jZSBmcm9tIHRoZSBET00uICovXG4gIHJlbW92ZTogKCkgPT4gdm9pZDtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
/** Injection token for modal configuration defaults. */
|
|
3
|
+
export const MODAL_CONFIG = new InjectionToken('ModalConfig');
|
|
4
|
+
/** Default modal configuration. */
|
|
5
|
+
export const DEFAULT_MODAL_CONFIG = {
|
|
6
|
+
size: 'md',
|
|
7
|
+
actionsPosition: 'static',
|
|
8
|
+
prevent: false,
|
|
9
|
+
closable: true,
|
|
10
|
+
alertDialog: 'dialog',
|
|
11
|
+
lazy: false,
|
|
12
|
+
startOpen: true,
|
|
13
|
+
removeOnClose: true,
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy90ZWdlbC1hbmd1bGFyLWV4dGVuc2lvbnMvc3JjL2xpYi9tb2RhbC9zY2hlbWEvbW9kYWwuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUE4Qi9DLHdEQUF3RDtBQUN4RCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQWMsYUFBYSxDQUFDLENBQUM7QUFFM0UsbUNBQW1DO0FBQ25DLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUEwQjtJQUN6RCxJQUFJLEVBQUUsSUFBSTtJQUNWLGVBQWUsRUFBRSxRQUFRO0lBQ3pCLE9BQU8sRUFBRSxLQUFLO0lBQ2QsUUFBUSxFQUFFLElBQUk7SUFDZCxXQUFXLEVBQUUsUUFBUTtJQUNyQixJQUFJLEVBQUUsS0FBSztJQUNYLFNBQVMsRUFBRSxJQUFJO0lBQ2YsYUFBYSxFQUFFLElBQUk7Q0FDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBNb2RhbEFjdGlvbnNQb3NpdGlvbixcbiAgTW9kYWxBbGVydERpYWxvZ1JvbGUsXG4gIE1vZGFsU2l6ZSxcbn0gZnJvbSAnLi9tb2RhbC50eXBlcyc7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiB1c2VkIGJ5IHRoZSBtb2RhbCBzZXJ2aWNlIHdoZW4gY3JlYXRpbmcgbW9kYWxzLlxuICogSW5kaXZpZHVhbCBtb2RhbCBvcHRpb25zIGNhbiBvdmVycmlkZSBhbnkgb2YgdGhlc2UgdmFsdWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZGFsQ29uZmlnIHtcbiAgLyoqIFNpemUgb2YgdGhlIG1vZGFsIGRpYWxvZy4gKi9cbiAgc2l6ZTogTW9kYWxTaXplO1xuICAvKiogUG9zaXRpb25pbmcgYmVoYXZpb3IgZm9yIHRoZSBhY3Rpb25zIGFyZWEuICovXG4gIGFjdGlvbnNQb3NpdGlvbjogTW9kYWxBY3Rpb25zUG9zaXRpb247XG4gIC8qKiBQcmV2ZW50IGNsb3Npbmcgd2hlbiBjbGlja2luZyB0aGUgb3ZlcmxheS4gKi9cbiAgcHJldmVudDogYm9vbGVhbjtcbiAgLyoqIFNob3cgb3IgaGlkZSB0aGUgY2xvc2UgW1hdIGJ1dHRvbi4gKi9cbiAgY2xvc2FibGU6IGJvb2xlYW47XG4gIC8qKiBBUklBIHJvbGUgZm9yIHRoZSBtb2RhbCBlbGVtZW50LiAqL1xuICBhbGVydERpYWxvZzogTW9kYWxBbGVydERpYWxvZ1JvbGU7XG4gIC8qKiBJZiB0cnVlLCBjb250ZW50IGlzIG9ubHkgcmVuZGVyZWQgd2hpbGUgb3Blbi4gKi9cbiAgbGF6eTogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgYSBtb2RhbCBzdGFydHMgb3BlbiAqL1xuICBzdGFydE9wZW46IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIGEgbW9kYWwgc2hvdWxkIGJlIHJlbW92ZWQgZnJvbSBET00gb24gY2xvc2UgKi9cbiAgcmVtb3ZlT25DbG9zZTogYm9vbGVhbjtcbn1cblxuLyoqIEluamVjdGlvbiB0b2tlbiBmb3IgbW9kYWwgY29uZmlndXJhdGlvbiBkZWZhdWx0cy4gKi9cbmV4cG9ydCBjb25zdCBNT0RBTF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48TW9kYWxDb25maWc+KCdNb2RhbENvbmZpZycpO1xuXG4vKiogRGVmYXVsdCBtb2RhbCBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTU9EQUxfQ09ORklHOiBSZXF1aXJlZDxNb2RhbENvbmZpZz4gPSB7XG4gIHNpemU6ICdtZCcsXG4gIGFjdGlvbnNQb3NpdGlvbjogJ3N0YXRpYycsXG4gIHByZXZlbnQ6IGZhbHNlLFxuICBjbG9zYWJsZTogdHJ1ZSxcbiAgYWxlcnREaWFsb2c6ICdkaWFsb2cnLFxuICBsYXp5OiBmYWxzZSxcbiAgc3RhcnRPcGVuOiB0cnVlLFxuICByZW1vdmVPbkNsb3NlOiB0cnVlLFxufTtcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3RlZ2VsLWFuZ3VsYXItZXh0ZW5zaW9ucy9zcmMvbGliL21vZGFsL3NjaGVtYS9tb2RhbC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGVSZWYsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbXBvbmVudElucHV0cyxcbiAgQ29tcG9uZW50T3V0cHV0cyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvYW5ndWxhci1jb21wb25lbnQtaW8nO1xuaW1wb3J0IHsgTW9kYWxDb25maWcgfSBmcm9tICcuL21vZGFsLmNvbmZpZyc7XG5pbXBvcnQgeyBNb2RhbEJ1dHRvbiB9IGZyb20gJy4vbW9kYWwudHlwZXMnO1xuXG4vKiogQ29tcG9uZW50LWJhc2VkIG1vZGFsIGJvZHkgd2l0aCB0eXBlZCBpbnB1dHMvb3V0cHV0cy4gKi9cbmV4cG9ydCB0eXBlIE1vZGFsQ29tcG9uZW50Qm9keTxUID0gdW5rbm93bj4gPSB7XG4gIGNvbXBvbmVudDogVHlwZTxUPjtcbiAgaW5wdXRzOiBDb21wb25lbnRJbnB1dHM8VD47XG4gIG91dHB1dHM/OiBDb21wb25lbnRPdXRwdXRzPFQ+O1xufTtcblxuLyoqIFVuaW9uIG9mIHN1cHBvcnRlZCBtb2RhbCBib2R5IHR5cGVzLiAqL1xuZXhwb3J0IHR5cGUgTW9kYWxCb2R5PFQgPSB1bmtub3duPiA9XG4gIHwgc3RyaW5nXG4gIHwgVGVtcGxhdGVSZWY8dW5rbm93bj5cbiAgfCBNb2RhbENvbXBvbmVudEJvZHk8VD47XG5cbi8qKiBQdWJsaWMgb3B0aW9ucyB1c2VkIHdoZW4gY3JlYXRpbmcgYSBtb2RhbC4gKi9cbmV4cG9ydCB0eXBlIE1vZGFsT3B0aW9uczxUID0gdW5rbm93bj4gPSBQYXJ0aWFsPE1vZGFsQ29uZmlnPiAmIHtcbiAgc2VsZWN0b3I/OiBzdHJpbmc7XG4gIHJlZmVyZW5jZUVsPzogSFRNTEVsZW1lbnQ7XG4gIGhlYWRlcj86IHN0cmluZyB8IFRlbXBsYXRlUmVmPHVua25vd24+O1xuICBib2R5PzogTW9kYWxCb2R5PFQ+O1xuICBidXR0b25zPzogTW9kYWxCdXR0b25bXTtcbiAgLyoqIENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIG1vZGFsIGlzIGNsb3NlZCAodXNlciBvciBwcm9ncmFtbWF0aWMpLiAqL1xuICBvbkNsb3NlZD86ICgpID0+IHZvaWQ7XG4gIC8qKiBDYWxsYmFjayBmaXJlZCB3aGVuIHRoZSBtb2RhbCBpcyByZW1vdmVkIGZyb20gdGhlIERPTS4gKi9cbiAgb25SZW1vdmVkPzogKCkgPT4gdm9pZDtcbn07XG5cbi8qKiBSdW50aW1lIG1vZGFsIHN0YXRlIHN0b3JlZCBieSB0aGUgc2VydmljZS4gKi9cbmV4cG9ydCB0eXBlIE1vZGFsID0gUmVxdWlyZWQ8TW9kYWxDb25maWc+ICZcbiAgT21pdDxNb2RhbE9wdGlvbnM8dW5rbm93bj4sIGtleW9mIE1vZGFsQ29uZmlnPiAmIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGlzT3BlbjogYm9vbGVhbjtcbiAgfTtcbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/** Pure domain/UI types for modal components. */
|
|
2
|
+
export {};
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3RlZ2VsLWFuZ3VsYXItZXh0ZW5zaW9ucy9zcmMvbGliL21vZGFsL3NjaGVtYS9tb2RhbC50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpREFBaUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogUHVyZSBkb21haW4vVUkgdHlwZXMgZm9yIG1vZGFsIGNvbXBvbmVudHMuICovXG5cbi8qKiBTdXBwb3J0ZWQgbW9kYWwgc2l6ZXMuICovXG5leHBvcnQgdHlwZSBNb2RhbFNpemUgPSAnbGcnIHwgJ21kJyB8ICdzbScgfCAneHMnO1xuLyoqIFBvc2l0aW9uaW5nIGJlaGF2aW9yIGZvciB0aGUgYWN0aW9ucyBzbG90LiAqL1xuZXhwb3J0IHR5cGUgTW9kYWxBY3Rpb25zUG9zaXRpb24gPSAnc3RpY2t5JyB8ICdzdGF0aWMnO1xuLyoqIEFSSUEgcm9sZSB1c2VkIGJ5IHRoZSBtb2RhbCBmb3IgYWNjZXNzaWJpbGl0eS4gKi9cbmV4cG9ydCB0eXBlIE1vZGFsQWxlcnREaWFsb2dSb2xlID0gJ2RpYWxvZycgfCAnYWxlcnRkaWFsb2cnO1xuXG4vKiogRGVzY3JpcHRvciBmb3IgYSBidXR0b24gcmVuZGVyZWQgaW4gdGhlIG1vZGFsIGFjdGlvbnMgYXJlYS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9kYWxCdXR0b24ge1xuICAvKiogQnV0dG9uIGxhYmVsIHRleHQuICovXG4gIHRleHQ6IHN0cmluZztcbiAgLyoqIFZpc3VhbCB2YXJpYW50IGZvciB0aGUgYnV0dG9uLiAqL1xuICB2YXJpYW50PzogJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScgfCAnc3VjY2VzcycgfCAnZGFuZ2VyJztcbiAgLyoqIFNpemUgb2YgdGhlIGJ1dHRvbi4gKi9cbiAgc2l6ZT86ICd4cycgfCAnc20nIHwgJ21kJyB8ICdsZyc7XG4gIC8qKiBXaGV0aGVyIHRoZSBidXR0b24gaXMgZGlzYWJsZWQuICovXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqIElmIHRydWUsIGNsaWNraW5nIHRyaWdnZXJzIG1vZGFsIGRpc21pc3NhbC4gKi9cbiAgZGlzbWlzcz86IGJvb2xlYW47XG4gIC8qKiBPcHRpb25hbCBjbGljayBoYW5kbGVyIChzeW5jIG9yIGFzeW5jKS4gKi9cbiAgb25DbGljaz86ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xufVxuIl19
|
|
@@ -2,6 +2,12 @@ import { makeEnvironmentProviders, provideAppInitializer, } from '@angular/core'
|
|
|
2
2
|
import { bootstrapGlobalComponent } from '../utils/bootstrap-global-component';
|
|
3
3
|
import { ToastComponent } from './toast.component';
|
|
4
4
|
import { DEFAULT_TOAST_CONFIG, TOAST_CONFIG, } from './toast.config';
|
|
5
|
+
/**
|
|
6
|
+
* Provides toast configuration defaults and bootstraps the global toast host.
|
|
7
|
+
*
|
|
8
|
+
* @param config Optional config overrides applied on top of defaults.
|
|
9
|
+
* @returns EnvironmentProviders to register in application providers.
|
|
10
|
+
*/
|
|
5
11
|
export function provideToast(config = {}) {
|
|
6
12
|
return makeEnvironmentProviders([
|
|
7
13
|
{
|
|
@@ -16,4 +22,4 @@ export function provideToast(config = {}) {
|
|
|
16
22
|
}),
|
|
17
23
|
]);
|
|
18
24
|
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS10b2FzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdGVnZWwtYW5ndWxhci1leHRlbnNpb25zL3NyYy9saWIvdG9hc3QvcHJvdmlkZS10b2FzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsd0JBQXdCLEVBQ3hCLHFCQUFxQixHQUN0QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixZQUFZLEdBRWIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4Qjs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQzFCLFNBQStCLEVBQUU7SUFFakMsT0FBTyx3QkFBd0IsQ0FBQztRQUM5QjtZQUNFLE9BQU8sRUFBRSxZQUFZO1lBQ3JCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQixHQUFHLG9CQUFvQjtnQkFDdkIsR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7YUFDbEIsQ0FBQztTQUNIO1FBQ0QscUJBQXFCLENBQUMsR0FBRyxFQUFFO1lBQ3pCLHdCQUF3QixDQUFDLGNBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLENBQUMsQ0FBQztLQUNILENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFbnZpcm9ubWVudFByb3ZpZGVycyxcbiAgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzLFxuICBwcm92aWRlQXBwSW5pdGlhbGl6ZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYm9vdHN0cmFwR2xvYmFsQ29tcG9uZW50IH0gZnJvbSAnLi4vdXRpbHMvYm9vdHN0cmFwLWdsb2JhbC1jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9hc3RDb21wb25lbnQgfSBmcm9tICcuL3RvYXN0LmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBERUZBVUxUX1RPQVNUX0NPTkZJRyxcbiAgVE9BU1RfQ09ORklHLFxuICBUb2FzdENvbmZpZyxcbn0gZnJvbSAnLi90b2FzdC5jb25maWcnO1xuXG4vKipcbiAqIFByb3ZpZGVzIHRvYXN0IGNvbmZpZ3VyYXRpb24gZGVmYXVsdHMgYW5kIGJvb3RzdHJhcHMgdGhlIGdsb2JhbCB0b2FzdCBob3N0LlxuICpcbiAqIEBwYXJhbSBjb25maWcgT3B0aW9uYWwgY29uZmlnIG92ZXJyaWRlcyBhcHBsaWVkIG9uIHRvcCBvZiBkZWZhdWx0cy5cbiAqIEByZXR1cm5zIEVudmlyb25tZW50UHJvdmlkZXJzIHRvIHJlZ2lzdGVyIGluIGFwcGxpY2F0aW9uIHByb3ZpZGVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVUb2FzdChcbiAgY29uZmlnOiBQYXJ0aWFsPFRvYXN0Q29uZmlnPiA9IHt9LFxuKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBUT0FTVF9DT05GSUcsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiAoe1xuICAgICAgICAuLi5ERUZBVUxUX1RPQVNUX0NPTkZJRyxcbiAgICAgICAgLi4uKGNvbmZpZyA/PyB7fSksXG4gICAgICB9KSxcbiAgICB9LFxuICAgIHByb3ZpZGVBcHBJbml0aWFsaXplcigoKSA9PiB7XG4gICAgICBib290c3RyYXBHbG9iYWxDb21wb25lbnQoVG9hc3RDb21wb25lbnQsIHsgcmV1c2VJZkV4aXN0czogdHJ1ZSB9KTtcbiAgICB9KSxcbiAgXSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1jb21wb25lbnQtaW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3RlZ2VsLWFuZ3VsYXItZXh0ZW5zaW9ucy9zcmMvbGliL3V0aWxzL2FuZ3VsYXItY29tcG9uZW50LWlvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnB1dFNpZ25hbCwgT3V0cHV0RW1pdHRlclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKiArLS0tLS0tLS0rICovXG4vKiB8IElOUFVUUyB8ICovXG4vKiArLS0tLS0tLS0rICovXG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIGlubmVyIHZhbHVlIHR5cGUgZnJvbSBhbiBJbnB1dFNpZ25hbC5cbiAqIEV4YW1wbGU6IElucHV0U2lnbmFsPHN0cmluZz4gLT4gc3RyaW5nXG4gKi9cbnR5cGUgRXh0cmFjdElucHV0VmFsdWU8VD4gPSBUIGV4dGVuZHMgSW5wdXRTaWduYWw8aW5mZXIgVj4gPyBWIDogbmV2ZXI7XG5cbi8qKlxuICogR2V0cyBhbGwgcHJvcGVydHkga2V5cyB0aGF0IGFyZSByZXF1aXJlZCBpbnB1dCBzaWduYWxzIChgaW5wdXQucmVxdWlyZWQ8VD4oKWApLlxuICogVGhlc2UgYXJlIElucHV0U2lnbmFscyB3aGVyZSBgdW5kZWZpbmVkYCBpcyBOT1QgcGFydCBvZiB0aGUgdmFsdWUgdHlwZS5cbiAqL1xuZXhwb3J0IHR5cGUgUmVxdWlyZWRJbnB1dEtleXM8VD4gPSB7XG4gIFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgSW5wdXRTaWduYWw8aW5mZXIgVj5cbiAgICA/IHVuZGVmaW5lZCBleHRlbmRzIFZcbiAgICAgID8gbmV2ZXJcbiAgICAgIDogS1xuICAgIDogbmV2ZXI7XG59W2tleW9mIFRdO1xuXG4vKipcbiAqIEdldHMgYWxsIHByb3BlcnR5IGtleXMgdGhhdCBhcmUgb3B0aW9uYWwgaW5wdXQgc2lnbmFscyAoYGlucHV0PFQgfCB1bmRlZmluZWQ+KClgKS5cbiAqIFRoZXNlIGFyZSBJbnB1dFNpZ25hbHMgd2hlcmUgYHVuZGVmaW5lZGAgSVMgcGFydCBvZiB0aGUgdmFsdWUgdHlwZS5cbiAqL1xuZXhwb3J0IHR5cGUgT3B0aW9uYWxJbnB1dEtleXM8VD4gPSB7XG4gIFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgSW5wdXRTaWduYWw8aW5mZXIgVj5cbiAgICA/IHVuZGVmaW5lZCBleHRlbmRzIFZcbiAgICAgID8gS1xuICAgICAgOiBuZXZlclxuICAgIDogbmV2ZXI7XG59W2tleW9mIFRdO1xuXG4vKipcbiAqIENyZWF0ZXMgYSB0eXBlIHJlcHJlc2VudGluZyB0aGUgaW5wdXQgdmFsdWVzIGZvciBhbiBBbmd1bGFyIGNvbXBvbmVudC5cbiAqIC0gUmVxdWlyZWQgaW5wdXRzIChgaW5wdXQucmVxdWlyZWQ8VD4oKWApIGJlY29tZSByZXF1aXJlZCBwcm9wZXJ0aWVzXG4gKiAtIE9wdGlvbmFsIGlucHV0cyAoYGlucHV0PFQgfCB1bmRlZmluZWQ+KClgKSBiZWNvbWUgb3B0aW9uYWwgcHJvcGVydGllc1xuICogLSBOb24taW5wdXQgcHJvcGVydGllcyBhcmUgZXhjbHVkZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogY2xhc3MgTXlDb21wb25lbnQge1xuICogICBuYW1lID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICogICBhZ2UgPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQ+KCk7XG4gKiB9XG4gKlxuICogdHlwZSBJbnB1dHMgPSBDb21wb25lbnRJbnB1dHM8TXlDb21wb25lbnQ+O1xuICogLy8geyBuYW1lOiBzdHJpbmc7IGFnZT86IG51bWJlciB8IHVuZGVmaW5lZCB9XG4gKi9cbmV4cG9ydCB0eXBlIENvbXBvbmVudElucHV0czxUPiA9IHtcbiAgW0sgaW4gUmVxdWlyZWRJbnB1dEtleXM8VD5dOiBFeHRyYWN0SW5wdXRWYWx1ZTxUW0tdPjtcbn0gJiB7XG4gIFtLIGluIE9wdGlvbmFsSW5wdXRLZXlzPFQ+XT86IEV4dHJhY3RJbnB1dFZhbHVlPFRbS10+O1xufTtcblxuLyogKy0tLS0tLS0tLSsgKi9cbi8qIHwgT1VUUFVUUyB8ICovXG4vKiArLS0tLS0tLS0tKyAqL1xuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSBpbm5lciB2YWx1ZSB0eXBlIGZyb20gYW4gT3V0cHV0RW1pdHRlclJlZi5cbiAqIEV4YW1wbGU6IE91dHB1dEVtaXR0ZXJSZWY8c3RyaW5nPiAtPiBzdHJpbmdcbiAqL1xudHlwZSBFeHRyYWN0T3V0cHV0VmFsdWU8VD4gPSBUIGV4dGVuZHMgT3V0cHV0RW1pdHRlclJlZjxpbmZlciBWPiA/IFYgOiBuZXZlcjtcblxuLyoqXG4gKiBHZXRzIGFsbCBwcm9wZXJ0eSBrZXlzIHRoYXQgYXJlIG91dHB1dCBzaWduYWxzIChgb3V0cHV0PFQ+KClgKS5cbiAqL1xudHlwZSBPdXRwdXRLZXlzPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIE91dHB1dEVtaXR0ZXJSZWY8dW5rbm93bj4gPyBLIDogbmV2ZXI7XG59W2tleW9mIFRdO1xuXG4vKipcbiAqIENyZWF0ZXMgYSB0eXBlIHJlcHJlc2VudGluZyB0aGUgb3V0cHV0IGV2ZW50IGhhbmRsZXJzIGZvciBhbiBBbmd1bGFyIGNvbXBvbmVudC5cbiAqIENvbnZlcnRzIG91dHB1dCBzaWduYWxzIGludG8gY2FsbGJhY2sgZnVuY3Rpb25zIHRoYXQgcmVjZWl2ZSB0aGUgZW1pdHRlZCB2YWx1ZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogY2xhc3MgTXlDb21wb25lbnQge1xuICogICBjbG9zZWQgPSBvdXRwdXQ8dm9pZD4oKTtcbiAqICAgdmFsdWVDaGFuZ2VkID0gb3V0cHV0PHN0cmluZz4oKTtcbiAqICAgbm90QW5PdXRwdXQgPSAncmVndWxhciBwcm9wZXJ0eSc7XG4gKiB9XG4gKlxuICogdHlwZSBPdXRwdXRzID0gQ29tcG9uZW50T3V0cHV0czxNeUNvbXBvbmVudD47XG4gKiAvLyB7IGNsb3NlZD86ICgpID0+IHZvaWQ7IHZhbHVlQ2hhbmdlZD86ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkIH1cbiAqL1xuZXhwb3J0IHR5cGUgQ29tcG9uZW50T3V0cHV0czxUPiA9IHtcbiAgW0sgaW4gT3V0cHV0S2V5czxUPl0/OiAodmFsdWU6IEV4dHJhY3RPdXRwdXRWYWx1ZTxUW0tdPikgPT4gdm9pZDtcbn07XG4iXX0=
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { InjectionToken, EnvironmentProviders } from '@angular/core';
|
|
2
|
+
import { InjectionToken, EnvironmentProviders, InputSignal, OutputEmitterRef, TemplateRef, Type } from '@angular/core';
|
|
3
3
|
import z$1, { z } from 'zod';
|
|
4
4
|
import { zx } from '@traversable/zod';
|
|
5
5
|
import { Subject } from 'rxjs';
|
|
@@ -47,6 +47,12 @@ interface ToastConfig {
|
|
|
47
47
|
declare const TOAST_CONFIG: InjectionToken<ToastConfig>;
|
|
48
48
|
declare const DEFAULT_TOAST_CONFIG: Required<ToastConfig>;
|
|
49
49
|
|
|
50
|
+
/**
|
|
51
|
+
* Provides toast configuration defaults and bootstraps the global toast host.
|
|
52
|
+
*
|
|
53
|
+
* @param config Optional config overrides applied on top of defaults.
|
|
54
|
+
* @returns EnvironmentProviders to register in application providers.
|
|
55
|
+
*/
|
|
50
56
|
declare function provideToast(config?: Partial<ToastConfig>): EnvironmentProviders;
|
|
51
57
|
|
|
52
58
|
/**
|
|
@@ -236,6 +242,242 @@ declare class ToastService {
|
|
|
236
242
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ToastService>;
|
|
237
243
|
}
|
|
238
244
|
|
|
245
|
+
interface ModalRef {
|
|
246
|
+
/** Unique id for the modal instance. */
|
|
247
|
+
id: string;
|
|
248
|
+
/** Opens the modal instance. */
|
|
249
|
+
open: () => void;
|
|
250
|
+
/** Closes the modal instance. */
|
|
251
|
+
close: () => void;
|
|
252
|
+
/** Removes the modal instance from the DOM. */
|
|
253
|
+
remove: () => void;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Extracts the inner value type from an InputSignal.
|
|
258
|
+
* Example: InputSignal<string> -> string
|
|
259
|
+
*/
|
|
260
|
+
type ExtractInputValue<T> = T extends InputSignal<infer V> ? V : never;
|
|
261
|
+
/**
|
|
262
|
+
* Gets all property keys that are required input signals (`input.required<T>()`).
|
|
263
|
+
* These are InputSignals where `undefined` is NOT part of the value type.
|
|
264
|
+
*/
|
|
265
|
+
type RequiredInputKeys<T> = {
|
|
266
|
+
[K in keyof T]: T[K] extends InputSignal<infer V> ? undefined extends V ? never : K : never;
|
|
267
|
+
}[keyof T];
|
|
268
|
+
/**
|
|
269
|
+
* Gets all property keys that are optional input signals (`input<T | undefined>()`).
|
|
270
|
+
* These are InputSignals where `undefined` IS part of the value type.
|
|
271
|
+
*/
|
|
272
|
+
type OptionalInputKeys<T> = {
|
|
273
|
+
[K in keyof T]: T[K] extends InputSignal<infer V> ? undefined extends V ? K : never : never;
|
|
274
|
+
}[keyof T];
|
|
275
|
+
/**
|
|
276
|
+
* Creates a type representing the input values for an Angular component.
|
|
277
|
+
* - Required inputs (`input.required<T>()`) become required properties
|
|
278
|
+
* - Optional inputs (`input<T | undefined>()`) become optional properties
|
|
279
|
+
* - Non-input properties are excluded
|
|
280
|
+
*
|
|
281
|
+
* @example
|
|
282
|
+
* class MyComponent {
|
|
283
|
+
* name = input.required<string>();
|
|
284
|
+
* age = input<number | undefined>();
|
|
285
|
+
* }
|
|
286
|
+
*
|
|
287
|
+
* type Inputs = ComponentInputs<MyComponent>;
|
|
288
|
+
* // { name: string; age?: number | undefined }
|
|
289
|
+
*/
|
|
290
|
+
type ComponentInputs<T> = {
|
|
291
|
+
[K in RequiredInputKeys<T>]: ExtractInputValue<T[K]>;
|
|
292
|
+
} & {
|
|
293
|
+
[K in OptionalInputKeys<T>]?: ExtractInputValue<T[K]>;
|
|
294
|
+
};
|
|
295
|
+
/**
|
|
296
|
+
* Extracts the inner value type from an OutputEmitterRef.
|
|
297
|
+
* Example: OutputEmitterRef<string> -> string
|
|
298
|
+
*/
|
|
299
|
+
type ExtractOutputValue<T> = T extends OutputEmitterRef<infer V> ? V : never;
|
|
300
|
+
/**
|
|
301
|
+
* Gets all property keys that are output signals (`output<T>()`).
|
|
302
|
+
*/
|
|
303
|
+
type OutputKeys<T> = {
|
|
304
|
+
[K in keyof T]: T[K] extends OutputEmitterRef<unknown> ? K : never;
|
|
305
|
+
}[keyof T];
|
|
306
|
+
/**
|
|
307
|
+
* Creates a type representing the output event handlers for an Angular component.
|
|
308
|
+
* Converts output signals into callback functions that receive the emitted value.
|
|
309
|
+
*
|
|
310
|
+
* @example
|
|
311
|
+
* class MyComponent {
|
|
312
|
+
* closed = output<void>();
|
|
313
|
+
* valueChanged = output<string>();
|
|
314
|
+
* notAnOutput = 'regular property';
|
|
315
|
+
* }
|
|
316
|
+
*
|
|
317
|
+
* type Outputs = ComponentOutputs<MyComponent>;
|
|
318
|
+
* // { closed?: () => void; valueChanged?: (value: string) => void }
|
|
319
|
+
*/
|
|
320
|
+
type ComponentOutputs<T> = {
|
|
321
|
+
[K in OutputKeys<T>]?: (value: ExtractOutputValue<T[K]>) => void;
|
|
322
|
+
};
|
|
323
|
+
|
|
324
|
+
/** Pure domain/UI types for modal components. */
|
|
325
|
+
/** Supported modal sizes. */
|
|
326
|
+
type ModalSize = 'lg' | 'md' | 'sm' | 'xs';
|
|
327
|
+
/** Positioning behavior for the actions slot. */
|
|
328
|
+
type ModalActionsPosition = 'sticky' | 'static';
|
|
329
|
+
/** ARIA role used by the modal for accessibility. */
|
|
330
|
+
type ModalAlertDialogRole = 'dialog' | 'alertdialog';
|
|
331
|
+
/** Descriptor for a button rendered in the modal actions area. */
|
|
332
|
+
interface ModalButton {
|
|
333
|
+
/** Button label text. */
|
|
334
|
+
text: string;
|
|
335
|
+
/** Visual variant for the button. */
|
|
336
|
+
variant?: 'primary' | 'secondary' | 'success' | 'danger';
|
|
337
|
+
/** Size of the button. */
|
|
338
|
+
size?: 'xs' | 'sm' | 'md' | 'lg';
|
|
339
|
+
/** Whether the button is disabled. */
|
|
340
|
+
disabled?: boolean;
|
|
341
|
+
/** If true, clicking triggers modal dismissal. */
|
|
342
|
+
dismiss?: boolean;
|
|
343
|
+
/** Optional click handler (sync or async). */
|
|
344
|
+
onClick?: () => void | Promise<void>;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
* Configuration used by the modal service when creating modals.
|
|
349
|
+
* Individual modal options can override any of these values.
|
|
350
|
+
*/
|
|
351
|
+
interface ModalConfig {
|
|
352
|
+
/** Size of the modal dialog. */
|
|
353
|
+
size: ModalSize;
|
|
354
|
+
/** Positioning behavior for the actions area. */
|
|
355
|
+
actionsPosition: ModalActionsPosition;
|
|
356
|
+
/** Prevent closing when clicking the overlay. */
|
|
357
|
+
prevent: boolean;
|
|
358
|
+
/** Show or hide the close [X] button. */
|
|
359
|
+
closable: boolean;
|
|
360
|
+
/** ARIA role for the modal element. */
|
|
361
|
+
alertDialog: ModalAlertDialogRole;
|
|
362
|
+
/** If true, content is only rendered while open. */
|
|
363
|
+
lazy: boolean;
|
|
364
|
+
/** Whether a modal starts open */
|
|
365
|
+
startOpen: boolean;
|
|
366
|
+
/** Whether a modal should be removed from DOM on close */
|
|
367
|
+
removeOnClose: boolean;
|
|
368
|
+
}
|
|
369
|
+
/** Injection token for modal configuration defaults. */
|
|
370
|
+
declare const MODAL_CONFIG: InjectionToken<ModalConfig>;
|
|
371
|
+
/** Default modal configuration. */
|
|
372
|
+
declare const DEFAULT_MODAL_CONFIG: Required<ModalConfig>;
|
|
373
|
+
|
|
374
|
+
/** Component-based modal body with typed inputs/outputs. */
|
|
375
|
+
type ModalComponentBody<T = unknown> = {
|
|
376
|
+
component: Type<T>;
|
|
377
|
+
inputs: ComponentInputs<T>;
|
|
378
|
+
outputs?: ComponentOutputs<T>;
|
|
379
|
+
};
|
|
380
|
+
/** Union of supported modal body types. */
|
|
381
|
+
type ModalBody<T = unknown> = string | TemplateRef<unknown> | ModalComponentBody<T>;
|
|
382
|
+
/** Public options used when creating a modal. */
|
|
383
|
+
type ModalOptions<T = unknown> = Partial<ModalConfig> & {
|
|
384
|
+
selector?: string;
|
|
385
|
+
referenceEl?: HTMLElement;
|
|
386
|
+
header?: string | TemplateRef<unknown>;
|
|
387
|
+
body?: ModalBody<T>;
|
|
388
|
+
buttons?: ModalButton[];
|
|
389
|
+
/** Callback fired when the modal is closed (user or programmatic). */
|
|
390
|
+
onClosed?: () => void;
|
|
391
|
+
/** Callback fired when the modal is removed from the DOM. */
|
|
392
|
+
onRemoved?: () => void;
|
|
393
|
+
};
|
|
394
|
+
/** Runtime modal state stored by the service. */
|
|
395
|
+
type Modal = Required<ModalConfig> & Omit<ModalOptions<unknown>, keyof ModalConfig> & {
|
|
396
|
+
id: string;
|
|
397
|
+
isOpen: boolean;
|
|
398
|
+
};
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* Central registry and lifecycle manager for modal instances.
|
|
402
|
+
*
|
|
403
|
+
* This service creates modals, tracks their state, and coordinates
|
|
404
|
+
* open/close/remove behavior across the application.
|
|
405
|
+
*/
|
|
406
|
+
declare class ModalService {
|
|
407
|
+
/** Default modal configuration injected via `MODAL_CONFIG`. */
|
|
408
|
+
private readonly config;
|
|
409
|
+
/** Incrementing counter for modal id generation. */
|
|
410
|
+
private id;
|
|
411
|
+
/** Internal store of modals keyed by id. */
|
|
412
|
+
private readonly _modals;
|
|
413
|
+
/** Read-only signal of all registered modals. */
|
|
414
|
+
readonly modals: _angular_core.Signal<Map<string, Modal>>;
|
|
415
|
+
/**
|
|
416
|
+
* Creates a new modal instance and registers it.
|
|
417
|
+
* @param options Modal options used to initialize the instance.
|
|
418
|
+
* @returns A ModalRef for controlling the instance.
|
|
419
|
+
*/
|
|
420
|
+
create<T>(options?: ModalOptions<T>): ModalRef;
|
|
421
|
+
/**
|
|
422
|
+
* Opens a modal by id.
|
|
423
|
+
* @param id Modal id.
|
|
424
|
+
*/
|
|
425
|
+
open(id: string): void;
|
|
426
|
+
/**
|
|
427
|
+
* Closes a modal by id.
|
|
428
|
+
* @param id Modal id.
|
|
429
|
+
*/
|
|
430
|
+
close(id: string): void;
|
|
431
|
+
/**
|
|
432
|
+
* Removes a modal from the registry and DOM.
|
|
433
|
+
* Closes the modal first if it is open.
|
|
434
|
+
* @param id Modal id.
|
|
435
|
+
*/
|
|
436
|
+
remove(id: string): void;
|
|
437
|
+
/**
|
|
438
|
+
* Closes all open modals.
|
|
439
|
+
*/
|
|
440
|
+
closeAll(): void;
|
|
441
|
+
/**
|
|
442
|
+
* Removes all modals from the registry.
|
|
443
|
+
*/
|
|
444
|
+
removeAll(): void;
|
|
445
|
+
/**
|
|
446
|
+
* Looks up a modal by id.
|
|
447
|
+
* @param id Modal id.
|
|
448
|
+
*/
|
|
449
|
+
private getModal;
|
|
450
|
+
/**
|
|
451
|
+
* Updates the open/closed state of a modal if it exists.
|
|
452
|
+
* @param id Modal id.
|
|
453
|
+
* @param isOpen Desired open state.
|
|
454
|
+
*/
|
|
455
|
+
private updateModalState;
|
|
456
|
+
/**
|
|
457
|
+
* Inserts or replaces a modal in the internal store.
|
|
458
|
+
* @param modal Modal to upsert.
|
|
459
|
+
*/
|
|
460
|
+
private upsertModal;
|
|
461
|
+
/**
|
|
462
|
+
* Builds a modal instance by merging defaults, existing state, and options.
|
|
463
|
+
* @param id Modal id.
|
|
464
|
+
* @param existing Existing modal state (if any).
|
|
465
|
+
* @param options New options to apply.
|
|
466
|
+
* @param isOpen Optional override for open state.
|
|
467
|
+
*/
|
|
468
|
+
private buildModal;
|
|
469
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalService, never>;
|
|
470
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ModalService>;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
/**
|
|
474
|
+
* Provides modal configuration defaults and bootstraps the global modal host.
|
|
475
|
+
*
|
|
476
|
+
* @param config Optional config overrides applied on top of defaults.
|
|
477
|
+
* @returns EnvironmentProviders to register in application providers.
|
|
478
|
+
*/
|
|
479
|
+
declare function provideModal(config?: Partial<ModalConfig>): EnvironmentProviders;
|
|
480
|
+
|
|
239
481
|
/**
|
|
240
482
|
* Extracts the **output type** (validated runtime shape)
|
|
241
483
|
* from a Zod object schema — e.g. `z.output<typeof MySchema>`.
|
|
@@ -577,7 +819,7 @@ declare class TaeFooterComponent {
|
|
|
577
819
|
*
|
|
578
820
|
* @default 'normal'
|
|
579
821
|
*/
|
|
580
|
-
readonly variant: _angular_core.InputSignal<"
|
|
822
|
+
readonly variant: _angular_core.InputSignal<"small" | "normal">;
|
|
581
823
|
/**
|
|
582
824
|
* Optional application version string to display in the footer.
|
|
583
825
|
*
|
|
@@ -593,5 +835,5 @@ declare class TaeFooterComponent {
|
|
|
593
835
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TaeFooterComponent, "tae-footer", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "version": { "alias": "version"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
594
836
|
}
|
|
595
837
|
|
|
596
|
-
export { BarcodeScannerDirective, DEFAULT_TOAST_CONFIG, HardRefreshDirective, TOAST_CONFIG, TaeFooterComponent, ToastService, createEnvKit, parseEnvFile, provideRuntimeConfig, provideStaticConfig, provideToast };
|
|
597
|
-
export type { Toast, ToastConfig, ToastOptions };
|
|
838
|
+
export { BarcodeScannerDirective, DEFAULT_MODAL_CONFIG, DEFAULT_TOAST_CONFIG, HardRefreshDirective, MODAL_CONFIG, ModalService, TOAST_CONFIG, TaeFooterComponent, ToastService, createEnvKit, parseEnvFile, provideModal, provideRuntimeConfig, provideStaticConfig, provideToast };
|
|
839
|
+
export type { Modal, ModalActionsPosition, ModalAlertDialogRole, ModalButton, ModalConfig, ModalOptions, ModalRef, ModalSize, Toast, ToastConfig, ToastOptions };
|