@frame-ui-ng/components 0.3.0-beta.0 → 0.4.0-beta.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/button/src/styles/button.css +5 -1
- package/button-group/src/styles/button-group.css +6 -0
- package/fesm2022/frame-ui-ng-components-combobox.mjs +48 -51
- package/fesm2022/frame-ui-ng-components-combobox.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-confirm-modal.mjs +162 -0
- package/fesm2022/frame-ui-ng-components-confirm-modal.mjs.map +1 -0
- package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs +1 -1
- package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-input-otp.mjs +64 -69
- package/fesm2022/frame-ui-ng-components-input-otp.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-modal.mjs +93 -15
- package/fesm2022/frame-ui-ng-components-modal.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-pagination.mjs +37 -36
- package/fesm2022/frame-ui-ng-components-pagination.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-progress.mjs +2 -1
- package/fesm2022/frame-ui-ng-components-progress.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-resizable.mjs +16 -26
- package/fesm2022/frame-ui-ng-components-resizable.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-sheet.mjs +19 -16
- package/fesm2022/frame-ui-ng-components-sheet.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-sidebar.mjs +19 -13
- package/fesm2022/frame-ui-ng-components-sidebar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-slider.mjs +53 -59
- package/fesm2022/frame-ui-ng-components-slider.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-tooltip.mjs +44 -0
- package/fesm2022/frame-ui-ng-components-tooltip.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-utils.mjs +20 -0
- package/fesm2022/frame-ui-ng-components-utils.mjs.map +1 -0
- package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs +10 -12
- package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components.mjs +353 -296
- package/fesm2022/frame-ui-ng-components.mjs.map +1 -1
- package/item/src/styles/item.css +188 -187
- package/modal/src/styles/modal.css +10 -1
- package/package.json +10 -2
- package/sidebar/src/styles/sidebar.css +10 -4
- package/src/styles/blueprint.css +98 -0
- package/src/styles/components.css +4 -4
- package/styles/blueprint.css +98 -0
- package/styles/components.css +4 -4
- package/styles.css +4 -4
- package/tooltip/src/styles/tooltip.css +4 -4
- package/types/frame-ui-ng-components-combobox.d.ts +1 -1
- package/types/frame-ui-ng-components-confirm-modal.d.ts +48 -0
- package/types/frame-ui-ng-components-input-otp.d.ts +1 -1
- package/types/frame-ui-ng-components-modal.d.ts +18 -7
- package/types/frame-ui-ng-components-sheet.d.ts +2 -0
- package/types/frame-ui-ng-components-sidebar.d.ts +2 -2
- package/types/frame-ui-ng-components-tooltip.d.ts +5 -0
- package/types/frame-ui-ng-components-utils.d.ts +5 -0
- package/types/frame-ui-ng-components.d.ts +68 -55
|
@@ -188,7 +188,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
188
188
|
}]
|
|
189
189
|
}] });
|
|
190
190
|
|
|
191
|
+
class FrModalRef extends DialogRef {
|
|
192
|
+
}
|
|
193
|
+
|
|
191
194
|
const FR_MODAL_DATA = DIALOG_DATA;
|
|
195
|
+
const FR_MODAL_REF = FrModalRef;
|
|
192
196
|
|
|
193
197
|
class FrModalShell {
|
|
194
198
|
dialogRef = inject((DialogRef));
|
|
@@ -324,26 +328,27 @@ const DEFAULT_PANEL_CLASS = 'frame-modal__overlay-pane';
|
|
|
324
328
|
const DEFAULT_BACKDROP_CLASS = 'frame-modal__backdrop';
|
|
325
329
|
class FrModalService {
|
|
326
330
|
dialog = inject(Dialog);
|
|
327
|
-
open(content, config
|
|
328
|
-
|
|
331
|
+
open(content, dataOrConfig, config) {
|
|
332
|
+
const resolvedConfig = resolveOpenConfig(content, dataOrConfig, config);
|
|
333
|
+
if (isComponentType(content) && hasShellOptions(resolvedConfig)) {
|
|
329
334
|
const shellConfig = {
|
|
330
|
-
...withoutShellOptions(
|
|
335
|
+
...withoutShellOptions(resolvedConfig),
|
|
331
336
|
data: {
|
|
332
337
|
bodyComponent: content,
|
|
333
|
-
bodyData:
|
|
334
|
-
bodyInputs:
|
|
335
|
-
description:
|
|
336
|
-
footerActions:
|
|
337
|
-
scrollable:
|
|
338
|
-
showCloseButton:
|
|
339
|
-
size:
|
|
340
|
-
stickyFooter:
|
|
341
|
-
title:
|
|
338
|
+
bodyData: resolvedConfig.bodyData ?? resolvedConfig.data,
|
|
339
|
+
bodyInputs: resolvedConfig.inputs ?? resolvedConfig.bodyInputs,
|
|
340
|
+
description: resolvedConfig.description,
|
|
341
|
+
footerActions: resolvedConfig.footerActions,
|
|
342
|
+
scrollable: resolvedConfig.scrollable,
|
|
343
|
+
showCloseButton: resolvedConfig.showCloseButton,
|
|
344
|
+
size: resolvedConfig.size,
|
|
345
|
+
stickyFooter: resolvedConfig.stickyFooter,
|
|
346
|
+
title: resolvedConfig.title,
|
|
342
347
|
},
|
|
343
348
|
};
|
|
344
349
|
return this.dialog.open(FrModalShell, this.withDefaultClasses(shellConfig));
|
|
345
350
|
}
|
|
346
|
-
return this.dialog.open(content, this.withDefaultClasses(
|
|
351
|
+
return this.dialog.open(content, this.withDefaultClasses(resolvedConfig));
|
|
347
352
|
}
|
|
348
353
|
closeAll() {
|
|
349
354
|
this.dialog.closeAll();
|
|
@@ -357,6 +362,7 @@ class FrModalService {
|
|
|
357
362
|
...config,
|
|
358
363
|
panelClass: mergeClassList(config.panelClass, DEFAULT_PANEL_CLASS),
|
|
359
364
|
backdropClass: mergeClassList(config.backdropClass, DEFAULT_BACKDROP_CLASS),
|
|
365
|
+
providers: withModalRefProvider(config.providers),
|
|
360
366
|
};
|
|
361
367
|
}
|
|
362
368
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -375,6 +381,7 @@ function hasShellOptions(config) {
|
|
|
375
381
|
config.bodyInputs,
|
|
376
382
|
config.description,
|
|
377
383
|
config.footerActions,
|
|
384
|
+
config.inputs,
|
|
378
385
|
config.scrollable,
|
|
379
386
|
config.showCloseButton,
|
|
380
387
|
config.size,
|
|
@@ -383,9 +390,70 @@ function hasShellOptions(config) {
|
|
|
383
390
|
].some((value) => value !== undefined);
|
|
384
391
|
}
|
|
385
392
|
function withoutShellOptions(config) {
|
|
386
|
-
const { bodyData: _bodyData, bodyInputs: _bodyInputs, description: _description, footerActions: _footerActions, scrollable: _scrollable, showCloseButton: _showCloseButton, size: _size, stickyFooter: _stickyFooter, title: _title, ...dialogConfig } = config;
|
|
393
|
+
const { bodyData: _bodyData, bodyInputs: _bodyInputs, description: _description, footerActions: _footerActions, inputs: _inputs, scrollable: _scrollable, showCloseButton: _showCloseButton, size: _size, stickyFooter: _stickyFooter, title: _title, ...dialogConfig } = config;
|
|
387
394
|
return dialogConfig;
|
|
388
395
|
}
|
|
396
|
+
function resolveOpenConfig(content, dataOrConfig, config) {
|
|
397
|
+
if (!isComponentType(content)) {
|
|
398
|
+
return (dataOrConfig ?? {});
|
|
399
|
+
}
|
|
400
|
+
if (config) {
|
|
401
|
+
return {
|
|
402
|
+
...config,
|
|
403
|
+
data: dataOrConfig,
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
if (dataOrConfig === undefined) {
|
|
407
|
+
return {};
|
|
408
|
+
}
|
|
409
|
+
if (isModalConfig(dataOrConfig)) {
|
|
410
|
+
return dataOrConfig;
|
|
411
|
+
}
|
|
412
|
+
return {
|
|
413
|
+
data: dataOrConfig,
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
const CONFIG_KEYS = new Set([
|
|
417
|
+
'ariaDescribedBy',
|
|
418
|
+
'ariaLabel',
|
|
419
|
+
'ariaLabelledBy',
|
|
420
|
+
'ariaModal',
|
|
421
|
+
'autoFocus',
|
|
422
|
+
'backdropClass',
|
|
423
|
+
'bodyData',
|
|
424
|
+
'bodyInputs',
|
|
425
|
+
'closeOnDestroy',
|
|
426
|
+
'closeOnNavigation',
|
|
427
|
+
'data',
|
|
428
|
+
'description',
|
|
429
|
+
'direction',
|
|
430
|
+
'disableClose',
|
|
431
|
+
'footerActions',
|
|
432
|
+
'height',
|
|
433
|
+
'inputs',
|
|
434
|
+
'maxHeight',
|
|
435
|
+
'maxWidth',
|
|
436
|
+
'minHeight',
|
|
437
|
+
'minWidth',
|
|
438
|
+
'panelClass',
|
|
439
|
+
'positionStrategy',
|
|
440
|
+
'providers',
|
|
441
|
+
'restoreFocus',
|
|
442
|
+
'role',
|
|
443
|
+
'scrollable',
|
|
444
|
+
'showCloseButton',
|
|
445
|
+
'size',
|
|
446
|
+
'stickyFooter',
|
|
447
|
+
'title',
|
|
448
|
+
'viewContainerRef',
|
|
449
|
+
'width',
|
|
450
|
+
]);
|
|
451
|
+
function isModalConfig(value) {
|
|
452
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
453
|
+
return false;
|
|
454
|
+
}
|
|
455
|
+
return Object.keys(value).some((key) => CONFIG_KEYS.has(key));
|
|
456
|
+
}
|
|
389
457
|
function mergeClassList(classList, defaultClass) {
|
|
390
458
|
const classes = Array.isArray(classList)
|
|
391
459
|
? classList
|
|
@@ -394,6 +462,16 @@ function mergeClassList(classList, defaultClass) {
|
|
|
394
462
|
: [];
|
|
395
463
|
return Array.from(new Set([defaultClass, ...classes].filter(Boolean)));
|
|
396
464
|
}
|
|
465
|
+
function withModalRefProvider(providers) {
|
|
466
|
+
const modalRefProvider = { provide: FrModalRef, useExisting: DialogRef };
|
|
467
|
+
if (typeof providers === 'function') {
|
|
468
|
+
return (dialogRef, config, container) => [
|
|
469
|
+
modalRefProvider,
|
|
470
|
+
...providers(dialogRef, config, container),
|
|
471
|
+
];
|
|
472
|
+
}
|
|
473
|
+
return [modalRefProvider, ...(providers ?? [])];
|
|
474
|
+
}
|
|
397
475
|
|
|
398
476
|
class FrModalTrigger {
|
|
399
477
|
static CUSTOM_PROPERTY_PREFIX = '--frame-modal-';
|
|
@@ -521,5 +599,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
521
599
|
* Generated bundle index. Do not edit.
|
|
522
600
|
*/
|
|
523
601
|
|
|
524
|
-
export { FR_MODAL_DATA, FrModalBody, FrModalClose, FrModalContent, FrModalDescription, FrModalFooter, FrModalHeader, FrModalModule, FrModalPanel, FrModalService, FrModalShell, FrModalTitle, FrModalTrigger };
|
|
602
|
+
export { FR_MODAL_DATA, FR_MODAL_REF, FrModalBody, FrModalClose, FrModalContent, FrModalDescription, FrModalFooter, FrModalHeader, FrModalModule, FrModalPanel, FrModalRef, FrModalService, FrModalShell, FrModalTitle, FrModalTrigger };
|
|
525
603
|
//# sourceMappingURL=frame-ui-ng-components-modal.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame-ui-ng-components-modal.mjs","sources":["../../../projects/components/modal/src/modal.content.ts","../../../projects/components/modal/src/modal.primitives.ts","../../../projects/components/modal/src/modal.tokens.ts","../../../projects/components/modal/src/modal-shell.ts","../../../projects/components/modal/src/modal.service.ts","../../../projects/components/modal/src/modal.trigger.ts","../../../projects/components/modal/modal.module.ts","../../../projects/components/modal/frame-ui-ng-components-modal.ts"],"sourcesContent":["import {\n Directive,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n inject,\n input,\n} from '@angular/core';\nimport { Direction } from '@angular/cdk/bidi';\n\nimport { FrModalConfig } from './modal.service';\n\n@Directive({\n selector: 'ng-template[frModalContent]',\n exportAs: 'frModalContent',\n})\nexport class FrModalContent {\n readonly templateRef = inject(TemplateRef<unknown>);\n\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n readonly ariaLabelledBy = input<string | null>(null, { alias: 'aria-labelledby' });\n readonly ariaDescribedBy = input<string | null>(null, { alias: 'aria-describedby' });\n readonly backdropClass = input<string | string[] | null>(null);\n readonly closeOnDestroy = input(true, { transform: booleanAttribute });\n readonly closeOnNavigation = input(true, { transform: booleanAttribute });\n readonly direction = input<Direction | null>(null);\n readonly disableClose = input(false, { transform: booleanAttribute });\n readonly height = input<string | null>(null);\n readonly id = input<string | null>(null);\n readonly maxHeight = input<string | null>(null);\n readonly maxWidth = input<string | null>(null);\n readonly minHeight = input<string | null>(null);\n readonly minWidth = input<string | null>(null);\n readonly panelClass = input<string | string[] | null>(null);\n readonly role = input<'dialog' | 'alertdialog'>('dialog');\n readonly width = input<string | null>(null);\n\n buildConfig(viewContainerRef: ViewContainerRef): FrModalConfig {\n return {\n ariaLabel: this.ariaLabel() ?? undefined,\n ariaLabelledBy: this.ariaLabelledBy() ?? undefined,\n ariaDescribedBy: this.ariaDescribedBy() ?? undefined,\n backdropClass: this.backdropClass() ?? undefined,\n closeOnDestroy: this.closeOnDestroy(),\n closeOnNavigation: this.closeOnNavigation(),\n direction: this.direction() ?? undefined,\n disableClose: this.disableClose(),\n height: this.height() ?? undefined,\n id: this.id() ?? undefined,\n maxHeight: this.maxHeight() ?? undefined,\n maxWidth: this.maxWidth() ?? undefined,\n minHeight: this.minHeight() ?? undefined,\n minWidth: this.minWidth() ?? undefined,\n panelClass: this.panelClass() ?? undefined,\n role: this.role(),\n viewContainerRef,\n width: this.width() ?? undefined,\n };\n }\n}\n","import { DialogRef } from '@angular/cdk/dialog';\nimport { Component, Directive, booleanAttribute, inject, input } from '@angular/core';\n\n@Directive({\n selector: '[frModalClose]',\n host: {\n class: 'frame-modal__close-control',\n '(click)': 'close()',\n },\n})\nexport class FrModalClose {\n private readonly dialogRef = inject<DialogRef<unknown, unknown>>(DialogRef, { optional: true });\n readonly result = input<unknown>(undefined, { alias: 'frModalClose' });\n\n close(): void {\n this.dialogRef?.close(this.result());\n }\n}\n\n@Component({\n selector: '[frModalPanel], frame-modal-panel',\n host: {\n class: 'frame-modal__panel',\n '[attr.data-scrollable]': 'scrollable() ? \"\" : null',\n '[attr.data-sticky-footer]': 'stickyFooter() ? \"\" : null',\n '[attr.data-size]': 'size()',\n },\n template: `\n <ng-content />\n @if (showCloseButton()) {\n <button\n class=\"frame-modal__close\"\n frModalClose\n type=\"button\"\n aria-label=\"Close dialog\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n }\n `,\n imports: [FrModalClose],\n})\nexport class FrModalPanel {\n readonly scrollable = input(false, { transform: booleanAttribute });\n readonly showCloseButton = input(true, { transform: booleanAttribute });\n readonly size = input<'sm' | 'md' | 'lg' | 'xl' | 'full'>('md');\n readonly stickyFooter = input(false, { transform: booleanAttribute });\n}\n\n@Directive({\n selector: '[frModalHeader], frame-modal-header',\n host: {\n class: 'frame-modal__header',\n },\n})\nexport class FrModalHeader {}\n\n@Directive({\n selector: '[frModalBody], frame-modal-body',\n host: {\n class: 'frame-modal__body',\n },\n})\nexport class FrModalBody {}\n\n@Directive({\n selector: '[frModalFooter], frame-modal-footer',\n host: {\n class: 'frame-modal__footer',\n },\n})\nexport class FrModalFooter {}\n\n@Directive({\n selector: '[frModalTitle], frame-modal-title',\n host: {\n class: 'frame-modal__title',\n },\n})\nexport class FrModalTitle {}\n\n@Directive({\n selector: '[frModalDescription], frame-modal-description',\n host: {\n class: 'frame-modal__description',\n },\n})\nexport class FrModalDescription {}\n","import { DIALOG_DATA } from '@angular/cdk/dialog';\n\nexport const FR_MODAL_DATA = DIALOG_DATA;\n","import { NgComponentOutlet } from '@angular/common';\nimport { Component, Injector, Type, inject } from '@angular/core';\nimport { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';\n\nimport { FrButton, FrButtonAppearance, FrButtonLabel } from '@frame-ui-ng/components/button';\nimport {\n FrModalBody,\n FrModalDescription,\n FrModalFooter,\n FrModalHeader,\n FrModalPanel,\n FrModalTitle,\n} from './modal.primitives';\nimport { FR_MODAL_DATA } from './modal.tokens';\n\nexport type FrModalFooterAction = {\n appearance?: FrButtonAppearance;\n ariaLabel?: string;\n close?: boolean;\n disabled?: boolean;\n label: string;\n result?: unknown;\n};\n\nexport type FrModalShellOptions = {\n bodyComponent: Type<unknown>;\n bodyData?: unknown;\n bodyInputs?: Record<string, unknown>;\n description?: string;\n footerActions?: FrModalFooterAction[];\n scrollable?: boolean;\n showCloseButton?: boolean;\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n stickyFooter?: boolean;\n title?: string;\n};\n\n@Component({\n selector: 'frame-modal-shell',\n imports: [\n FrButton,\n FrButtonLabel,\n FrModalBody,\n FrModalDescription,\n FrModalFooter,\n FrModalHeader,\n FrModalPanel,\n FrModalTitle,\n NgComponentOutlet,\n ],\n template: `\n <div\n frModalPanel\n [size]=\"options.size ?? 'md'\"\n [showCloseButton]=\"options.showCloseButton ?? true\"\n [scrollable]=\"options.scrollable ?? false\"\n [stickyFooter]=\"options.stickyFooter ?? false\"\n >\n @if (options.title || options.description) {\n <div frModalHeader>\n @if (options.title) {\n <h2 frModalTitle>{{ options.title }}</h2>\n }\n\n @if (options.description) {\n <p frModalDescription>{{ options.description }}</p>\n }\n </div>\n }\n\n <div frModalBody>\n <ng-container\n [ngComponentOutlet]=\"options.bodyComponent\"\n [ngComponentOutletInputs]=\"options.bodyInputs ?? {}\"\n [ngComponentOutletInjector]=\"bodyInjector\"\n />\n </div>\n\n @if (options.footerActions?.length) {\n <div frModalFooter>\n @for (action of options.footerActions; track action.label) {\n <button\n frButton\n type=\"button\"\n [appearance]=\"action.appearance ?? 'primary'\"\n [disabled]=\"action.disabled ?? false\"\n [attr.aria-label]=\"action.ariaLabel ?? null\"\n (click)=\"handleAction(action)\"\n >\n <span frButtonLabel>{{ action.label }}</span>\n </button>\n }\n </div>\n }\n </div>\n `,\n})\nexport class FrModalShell {\n private readonly dialogRef = inject(DialogRef<unknown>);\n private readonly injector = inject(Injector);\n readonly options = inject<FrModalShellOptions>(DIALOG_DATA);\n readonly bodyInjector = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: FR_MODAL_DATA,\n useValue: this.options.bodyData,\n },\n ],\n });\n\n handleAction(action: FrModalFooterAction): void {\n if (action.close ?? true) {\n this.dialogRef.close(action.result);\n }\n }\n}\n\r\n","import { ComponentType } from '@angular/cdk/portal';\nimport {\n Dialog,\n DialogConfig,\n DialogRef,\n} from '@angular/cdk/dialog';\nimport { Injectable, TemplateRef, Type, inject } from '@angular/core';\n\nimport { FrModalFooterAction, FrModalShell, FrModalShellOptions } from './modal-shell';\nimport { FR_MODAL_DATA } from './modal.tokens';\n\nexport type FrModalRef<Result = unknown, Component = unknown> = DialogRef<Result, Component>;\nexport type FrModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\nexport type FrModalConfig<Data = unknown, Result = unknown, Component = unknown> = DialogConfig<\n Data,\n DialogRef<Result, Component>\n> & {\n bodyData?: unknown;\n bodyInputs?: Record<string, unknown>;\n description?: string;\n footerActions?: FrModalFooterAction[];\n scrollable?: boolean;\n showCloseButton?: boolean;\n size?: FrModalSize;\n stickyFooter?: boolean;\n title?: string;\n};\n\nconst DEFAULT_PANEL_CLASS = 'frame-modal__overlay-pane';\nconst DEFAULT_BACKDROP_CLASS = 'frame-modal__backdrop';\n\n@Injectable({ providedIn: 'root' })\nexport class FrModalService {\n private readonly dialog = inject(Dialog);\n\n open<Result = unknown, Data = unknown, Component = unknown>(\n content: ComponentType<Component>,\n config?: FrModalConfig<Data, Result, Component>,\n ): FrModalRef<Result, Component>;\n open<Result = unknown, Data = unknown, Context = unknown>(\n content: TemplateRef<Context>,\n config?: FrModalConfig<Data, Result, Context>,\n ): FrModalRef<Result, Context>;\n open<Result = unknown, Data = unknown, ComponentOrContext = unknown>(\n content: ComponentType<ComponentOrContext> | TemplateRef<ComponentOrContext>,\n config: FrModalConfig<Data, Result, ComponentOrContext> = {},\n ): FrModalRef<Result, ComponentOrContext> {\n if (isComponentType(content) && hasShellOptions(config as FrModalConfig)) {\n const shellConfig: DialogConfig<FrModalShellOptions, DialogRef<Result, FrModalShell>> = {\n ...(withoutShellOptions(config) as unknown as DialogConfig<\n FrModalShellOptions,\n DialogRef<Result, FrModalShell>\n >),\n data: {\n bodyComponent: content as Type<unknown>,\n bodyData: config.bodyData ?? config.data,\n bodyInputs: config.bodyInputs,\n description: config.description,\n footerActions: config.footerActions,\n scrollable: config.scrollable,\n showCloseButton: config.showCloseButton,\n size: config.size,\n stickyFooter: config.stickyFooter,\n title: config.title,\n },\n };\n\n return this.dialog.open<Result, FrModalShellOptions, FrModalShell>(\n FrModalShell,\n this.withDefaultClasses(shellConfig),\n ) as unknown as FrModalRef<Result, ComponentOrContext>;\n }\n\n return this.dialog.open<Result, Data, ComponentOrContext>(\n content,\n this.withDefaultClasses(config),\n );\n }\n\n closeAll(): void {\n this.dialog.closeAll();\n }\n\n private withDefaultClasses<Data, Result, Component>(\n config: DialogConfig<Data, DialogRef<Result, Component>>,\n ): DialogConfig<Data, DialogRef<Result, Component>> {\n return {\n ariaModal: true,\n autoFocus: 'first-tabbable',\n restoreFocus: true,\n maxWidth: 'calc(100vw - 2rem)',\n ...config,\n panelClass: mergeClassList(config.panelClass, DEFAULT_PANEL_CLASS),\n backdropClass: mergeClassList(config.backdropClass, DEFAULT_BACKDROP_CLASS),\n };\n }\n}\n\nfunction isComponentType(value: unknown): value is ComponentType<unknown> {\n return typeof value === 'function';\n}\n\nfunction hasShellOptions(config: FrModalConfig): boolean {\n return [\n config.bodyData,\n config.bodyInputs,\n config.description,\n config.footerActions,\n config.scrollable,\n config.showCloseButton,\n config.size,\n config.stickyFooter,\n config.title,\n ].some((value) => value !== undefined);\n}\n\nfunction withoutShellOptions<Data, Result, Component>(\n config: FrModalConfig<Data, Result, Component>,\n): DialogConfig<Data, DialogRef<Result, Component>> {\n const {\n bodyData: _bodyData,\n bodyInputs: _bodyInputs,\n description: _description,\n footerActions: _footerActions,\n scrollable: _scrollable,\n showCloseButton: _showCloseButton,\n size: _size,\n stickyFooter: _stickyFooter,\n title: _title,\n ...dialogConfig\n } = config;\n\n return dialogConfig;\n}\n\nfunction mergeClassList(\n classList: string | string[] | undefined,\n defaultClass: string,\n): string[] {\n const classes = Array.isArray(classList)\n ? classList\n : classList\n ? classList.split(/\\s+/)\n : [];\n\n return Array.from(new Set([defaultClass, ...classes].filter(Boolean)));\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { FrModalContent } from './modal.content';\nimport { FrModalRef, FrModalService } from './modal.service';\n\n@Directive({\n selector: '[frModalTrigger]',\n host: {\n class: 'frame-modal__trigger',\n '[attr.aria-haspopup]': '\"dialog\"',\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '(click)': 'open()',\n },\n})\nexport class FrModalTrigger {\n private static readonly CUSTOM_PROPERTY_PREFIX = '--frame-modal-';\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly modal = inject(FrModalService);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private modalRef: FrModalRef | null = null;\n\n readonly content = input<FrModalContent | TemplateRef<unknown> | null>(null, {\n alias: 'frModalTrigger',\n });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly opened = output<FrModalRef>();\n readonly closed = output<unknown>();\n readonly isOpen = signal(false);\n\n open(): void {\n if (this.disabled() || this.isOpen()) {\n return;\n }\n\n const content = this.content();\n\n if (!content) {\n return;\n }\n\n const templateRef = content instanceof FrModalContent ? content.templateRef : content;\n const config =\n content instanceof FrModalContent\n ? content.buildConfig(this.viewContainerRef)\n : { viewContainerRef: this.viewContainerRef };\n\n this.modalRef = this.modal.open(templateRef, config);\n this.isOpen.set(true);\n this.opened.emit(this.modalRef);\n queueMicrotask(() => this.syncCustomPropertiesToOverlay());\n\n this.modalRef.closed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((result) => {\n this.isOpen.set(false);\n this.modalRef = null;\n this.closed.emit(result);\n });\n }\n\n private syncCustomPropertiesToOverlay(): void {\n const overlayElement = this.modalRef?.overlayRef.overlayElement ?? null;\n\n if (!overlayElement) {\n return;\n }\n\n const modalPanel = overlayElement.querySelector<HTMLElement>('.frame-modal__panel') ?? overlayElement;\n const sourceStyles = getComputedStyle(this.elementRef.nativeElement);\n\n for (let index = 0; index < sourceStyles.length; index += 1) {\n const propertyName = sourceStyles.item(index);\n\n if (!propertyName.startsWith(FrModalTrigger.CUSTOM_PROPERTY_PREFIX)) {\n continue;\n }\n\n const propertyValue = sourceStyles.getPropertyValue(propertyName);\n\n overlayElement.style.setProperty(propertyName, propertyValue);\n modalPanel.style.setProperty(propertyName, propertyValue);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport {\n FrModalBody,\n FrModalClose,\n FrModalContent,\n FrModalDescription,\n FrModalFooter,\n FrModalHeader,\n FrModalPanel,\n FrModalShell,\n FrModalTitle,\n FrModalTrigger,\n} from './src/modal';\n\n@NgModule({\n imports: [\n FrModalBody,\n FrModalClose,\n FrModalContent,\n FrModalDescription,\n FrModalFooter,\n FrModalHeader,\n FrModalPanel,\n FrModalShell,\n FrModalTitle,\n FrModalTrigger,\n ],\n exports: [\n FrModalBody,\n FrModalClose,\n FrModalContent,\n FrModalDescription,\n FrModalFooter,\n FrModalHeader,\n FrModalPanel,\n FrModalShell,\n FrModalTitle,\n FrModalTrigger,\n ],\n})\nexport class FrModalModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"frame-ui-ng-components-modal.mjs","sources":["../../../projects/components/modal/src/modal.content.ts","../../../projects/components/modal/src/modal.primitives.ts","../../../projects/components/modal/src/modal.ref.ts","../../../projects/components/modal/src/modal.tokens.ts","../../../projects/components/modal/src/modal-shell.ts","../../../projects/components/modal/src/modal.service.ts","../../../projects/components/modal/src/modal.trigger.ts","../../../projects/components/modal/modal.module.ts","../../../projects/components/modal/frame-ui-ng-components-modal.ts"],"sourcesContent":["import {\n Directive,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n inject,\n input,\n} from '@angular/core';\nimport { Direction } from '@angular/cdk/bidi';\n\nimport { FrModalConfig } from './modal.service';\n\n@Directive({\n selector: 'ng-template[frModalContent]',\n exportAs: 'frModalContent',\n})\nexport class FrModalContent {\n readonly templateRef = inject(TemplateRef<unknown>);\n\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n readonly ariaLabelledBy = input<string | null>(null, { alias: 'aria-labelledby' });\n readonly ariaDescribedBy = input<string | null>(null, { alias: 'aria-describedby' });\n readonly backdropClass = input<string | string[] | null>(null);\n readonly closeOnDestroy = input(true, { transform: booleanAttribute });\n readonly closeOnNavigation = input(true, { transform: booleanAttribute });\n readonly direction = input<Direction | null>(null);\n readonly disableClose = input(false, { transform: booleanAttribute });\n readonly height = input<string | null>(null);\n readonly id = input<string | null>(null);\n readonly maxHeight = input<string | null>(null);\n readonly maxWidth = input<string | null>(null);\n readonly minHeight = input<string | null>(null);\n readonly minWidth = input<string | null>(null);\n readonly panelClass = input<string | string[] | null>(null);\n readonly role = input<'dialog' | 'alertdialog'>('dialog');\n readonly width = input<string | null>(null);\n\n buildConfig(viewContainerRef: ViewContainerRef): FrModalConfig {\n return {\n ariaLabel: this.ariaLabel() ?? undefined,\n ariaLabelledBy: this.ariaLabelledBy() ?? undefined,\n ariaDescribedBy: this.ariaDescribedBy() ?? undefined,\n backdropClass: this.backdropClass() ?? undefined,\n closeOnDestroy: this.closeOnDestroy(),\n closeOnNavigation: this.closeOnNavigation(),\n direction: this.direction() ?? undefined,\n disableClose: this.disableClose(),\n height: this.height() ?? undefined,\n id: this.id() ?? undefined,\n maxHeight: this.maxHeight() ?? undefined,\n maxWidth: this.maxWidth() ?? undefined,\n minHeight: this.minHeight() ?? undefined,\n minWidth: this.minWidth() ?? undefined,\n panelClass: this.panelClass() ?? undefined,\n role: this.role(),\n viewContainerRef,\n width: this.width() ?? undefined,\n };\n }\n}\n","import { DialogRef } from '@angular/cdk/dialog';\nimport { Component, Directive, booleanAttribute, inject, input } from '@angular/core';\n\n@Directive({\n selector: '[frModalClose]',\n host: {\n class: 'frame-modal__close-control',\n '(click)': 'close()',\n },\n})\nexport class FrModalClose {\n private readonly dialogRef = inject<DialogRef<unknown, unknown>>(DialogRef, { optional: true });\n readonly result = input<unknown>(undefined, { alias: 'frModalClose' });\n\n close(): void {\n this.dialogRef?.close(this.result());\n }\n}\n\n@Component({\n selector: '[frModalPanel], frame-modal-panel',\n host: {\n class: 'frame-modal__panel',\n '[attr.data-scrollable]': 'scrollable() ? \"\" : null',\n '[attr.data-sticky-footer]': 'stickyFooter() ? \"\" : null',\n '[attr.data-size]': 'size()',\n },\n template: `\n <ng-content />\n @if (showCloseButton()) {\n <button\n class=\"frame-modal__close\"\n frModalClose\n type=\"button\"\n aria-label=\"Close dialog\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n }\n `,\n imports: [FrModalClose],\n})\nexport class FrModalPanel {\n readonly scrollable = input(false, { transform: booleanAttribute });\n readonly showCloseButton = input(true, { transform: booleanAttribute });\n readonly size = input<'sm' | 'md' | 'lg' | 'xl' | 'full'>('md');\n readonly stickyFooter = input(false, { transform: booleanAttribute });\n}\n\n@Directive({\n selector: '[frModalHeader], frame-modal-header',\n host: {\n class: 'frame-modal__header',\n },\n})\nexport class FrModalHeader {}\n\n@Directive({\n selector: '[frModalBody], frame-modal-body',\n host: {\n class: 'frame-modal__body',\n },\n})\nexport class FrModalBody {}\n\n@Directive({\n selector: '[frModalFooter], frame-modal-footer',\n host: {\n class: 'frame-modal__footer',\n },\n})\nexport class FrModalFooter {}\n\n@Directive({\n selector: '[frModalTitle], frame-modal-title',\n host: {\n class: 'frame-modal__title',\n },\n})\nexport class FrModalTitle {}\n\n@Directive({\n selector: '[frModalDescription], frame-modal-description',\n host: {\n class: 'frame-modal__description',\n },\n})\nexport class FrModalDescription {}\n","import { DialogRef } from '@angular/cdk/dialog';\r\n\r\nexport abstract class FrModalRef<Component = unknown, Result = unknown> extends DialogRef<\r\n Result,\r\n Component\r\n> {}\r\n","import { DIALOG_DATA } from '@angular/cdk/dialog';\r\n\r\nimport { FrModalRef } from './modal.ref';\r\n\r\nexport const FR_MODAL_DATA = DIALOG_DATA;\r\nexport const FR_MODAL_REF = FrModalRef;\r\n","import { NgComponentOutlet } from '@angular/common';\nimport { Component, Injector, Type, inject } from '@angular/core';\nimport { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';\n\nimport { FrButton, FrButtonAppearance, FrButtonLabel } from '@frame-ui-ng/components/button';\nimport {\n FrModalBody,\n FrModalDescription,\n FrModalFooter,\n FrModalHeader,\n FrModalPanel,\n FrModalTitle,\n} from './modal.primitives';\nimport { FR_MODAL_DATA } from './modal.tokens';\n\nexport type FrModalFooterAction = {\n appearance?: FrButtonAppearance;\n ariaLabel?: string;\n close?: boolean;\n disabled?: boolean;\n label: string;\n result?: unknown;\n};\n\nexport type FrModalShellOptions = {\n bodyComponent: Type<unknown>;\n bodyData?: unknown;\n bodyInputs?: Record<string, unknown>;\n description?: string;\n footerActions?: FrModalFooterAction[];\n scrollable?: boolean;\n showCloseButton?: boolean;\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n stickyFooter?: boolean;\n title?: string;\n};\n\n@Component({\n selector: 'frame-modal-shell',\n imports: [\n FrButton,\n FrButtonLabel,\n FrModalBody,\n FrModalDescription,\n FrModalFooter,\n FrModalHeader,\n FrModalPanel,\n FrModalTitle,\n NgComponentOutlet,\n ],\n template: `\n <div\n frModalPanel\n [size]=\"options.size ?? 'md'\"\n [showCloseButton]=\"options.showCloseButton ?? true\"\n [scrollable]=\"options.scrollable ?? false\"\n [stickyFooter]=\"options.stickyFooter ?? false\"\n >\n @if (options.title || options.description) {\n <div frModalHeader>\n @if (options.title) {\n <h2 frModalTitle>{{ options.title }}</h2>\n }\n\n @if (options.description) {\n <p frModalDescription>{{ options.description }}</p>\n }\n </div>\n }\n\n <div frModalBody>\n <ng-container\n [ngComponentOutlet]=\"options.bodyComponent\"\n [ngComponentOutletInputs]=\"options.bodyInputs ?? {}\"\n [ngComponentOutletInjector]=\"bodyInjector\"\n />\n </div>\n\n @if (options.footerActions?.length) {\n <div frModalFooter>\n @for (action of options.footerActions; track action.label) {\n <button\n frButton\n type=\"button\"\n [appearance]=\"action.appearance ?? 'primary'\"\n [disabled]=\"action.disabled ?? false\"\n [attr.aria-label]=\"action.ariaLabel ?? null\"\n (click)=\"handleAction(action)\"\n >\n <span frButtonLabel>{{ action.label }}</span>\n </button>\n }\n </div>\n }\n </div>\n `,\n})\nexport class FrModalShell {\n private readonly dialogRef = inject(DialogRef<unknown>);\n private readonly injector = inject(Injector);\n readonly options = inject<FrModalShellOptions>(DIALOG_DATA);\n readonly bodyInjector = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: FR_MODAL_DATA,\n useValue: this.options.bodyData,\n },\n ],\n });\n\n handleAction(action: FrModalFooterAction): void {\n if (action.close ?? true) {\n this.dialogRef.close(action.result);\n }\n }\n}\n\r\n","import { ComponentType } from '@angular/cdk/portal';\r\nimport {\r\n Dialog,\r\n DialogConfig,\r\n DialogRef,\r\n} from '@angular/cdk/dialog';\r\nimport { Injectable, TemplateRef, Type, inject } from '@angular/core';\r\n\r\nimport { FrModalFooterAction, FrModalShell, FrModalShellOptions } from './modal-shell';\r\nimport { FrModalRef } from './modal.ref';\r\n\r\nexport type FrModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\r\nexport type FrModalConfig<Data = unknown, Result = unknown, Component = unknown> = DialogConfig<\r\n Data,\r\n DialogRef<Result, Component>\r\n> & {\r\n /**\r\n * @deprecated Use `data` or the second `open()` argument instead.\r\n */\r\n bodyData?: unknown;\r\n /**\r\n * @deprecated Use `inputs` instead.\r\n */\r\n bodyInputs?: Record<string, unknown>;\r\n description?: string;\r\n footerActions?: FrModalFooterAction[];\r\n inputs?: Record<string, unknown>;\r\n scrollable?: boolean;\r\n showCloseButton?: boolean;\r\n size?: FrModalSize;\r\n stickyFooter?: boolean;\r\n title?: string;\r\n};\r\n\r\nconst DEFAULT_PANEL_CLASS = 'frame-modal__overlay-pane';\r\nconst DEFAULT_BACKDROP_CLASS = 'frame-modal__backdrop';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FrModalService {\r\n private readonly dialog = inject(Dialog);\r\n\r\n open<Result = unknown, Data = unknown, Component = unknown>(\r\n content: ComponentType<Component>,\r\n config?: FrModalConfig<Data, Result, Component>,\r\n ): FrModalRef<Component, Result>;\r\n open<Result = unknown, Data = unknown, Component = unknown>(\r\n content: ComponentType<Component>,\r\n data: Data,\r\n config?: Omit<FrModalConfig<Data, Result, Component>, 'data'>,\r\n ): FrModalRef<Component, Result>;\r\n open<Result = unknown, Data = unknown, Context = unknown>(\r\n content: TemplateRef<Context>,\r\n config?: FrModalConfig<Data, Result, Context>,\r\n ): FrModalRef<Context, Result>;\r\n open<Result = unknown, Data = unknown, ComponentOrContext = unknown>(\r\n content: ComponentType<ComponentOrContext> | TemplateRef<ComponentOrContext>,\r\n dataOrConfig?: Data | FrModalConfig<Data, Result, ComponentOrContext>,\r\n config?: Omit<FrModalConfig<Data, Result, ComponentOrContext>, 'data'>,\r\n ): FrModalRef<ComponentOrContext, Result> {\r\n const resolvedConfig = resolveOpenConfig(content, dataOrConfig, config);\r\n\r\n if (isComponentType(content) && hasShellOptions(resolvedConfig as FrModalConfig)) {\r\n const shellConfig: DialogConfig<FrModalShellOptions, DialogRef<Result, FrModalShell>> = {\r\n ...(withoutShellOptions(resolvedConfig) as unknown as DialogConfig<\r\n FrModalShellOptions,\r\n DialogRef<Result, FrModalShell>\r\n >),\r\n data: {\r\n bodyComponent: content as Type<unknown>,\r\n bodyData: resolvedConfig.bodyData ?? resolvedConfig.data,\r\n bodyInputs: resolvedConfig.inputs ?? resolvedConfig.bodyInputs,\r\n description: resolvedConfig.description,\r\n footerActions: resolvedConfig.footerActions,\r\n scrollable: resolvedConfig.scrollable,\r\n showCloseButton: resolvedConfig.showCloseButton,\r\n size: resolvedConfig.size,\r\n stickyFooter: resolvedConfig.stickyFooter,\r\n title: resolvedConfig.title,\r\n },\r\n };\r\n\r\n return this.dialog.open<Result, FrModalShellOptions, FrModalShell>(\r\n FrModalShell,\r\n this.withDefaultClasses(shellConfig),\r\n ) as unknown as FrModalRef<ComponentOrContext, Result>;\r\n }\r\n\r\n return this.dialog.open<Result, Data, ComponentOrContext>(\r\n content,\r\n this.withDefaultClasses(resolvedConfig),\r\n );\r\n }\r\n\r\n closeAll(): void {\r\n this.dialog.closeAll();\r\n }\r\n\r\n private withDefaultClasses<Data, Result, Component>(\r\n config: DialogConfig<Data, DialogRef<Result, Component>>,\r\n ): DialogConfig<Data, DialogRef<Result, Component>> {\r\n return {\r\n ariaModal: true,\r\n autoFocus: 'first-tabbable',\r\n restoreFocus: true,\r\n maxWidth: 'calc(100vw - 2rem)',\r\n ...config,\r\n panelClass: mergeClassList(config.panelClass, DEFAULT_PANEL_CLASS),\r\n backdropClass: mergeClassList(config.backdropClass, DEFAULT_BACKDROP_CLASS),\r\n providers: withModalRefProvider(config.providers),\r\n };\r\n }\r\n}\r\n\r\nfunction isComponentType(value: unknown): value is ComponentType<unknown> {\r\n return typeof value === 'function';\r\n}\r\n\r\nfunction hasShellOptions(config: FrModalConfig): boolean {\r\n return [\r\n config.bodyData,\r\n config.bodyInputs,\r\n config.description,\r\n config.footerActions,\r\n config.inputs,\r\n config.scrollable,\r\n config.showCloseButton,\r\n config.size,\r\n config.stickyFooter,\r\n config.title,\r\n ].some((value) => value !== undefined);\r\n}\r\n\r\nfunction withoutShellOptions<Data, Result, Component>(\r\n config: FrModalConfig<Data, Result, Component>,\r\n): DialogConfig<Data, DialogRef<Result, Component>> {\r\n const {\r\n bodyData: _bodyData,\r\n bodyInputs: _bodyInputs,\r\n description: _description,\r\n footerActions: _footerActions,\r\n inputs: _inputs,\r\n scrollable: _scrollable,\r\n showCloseButton: _showCloseButton,\r\n size: _size,\r\n stickyFooter: _stickyFooter,\r\n title: _title,\r\n ...dialogConfig\r\n } = config;\r\n\r\n return dialogConfig;\r\n}\r\n\r\nfunction resolveOpenConfig<Data, Result, ComponentOrContext>(\r\n content: ComponentType<ComponentOrContext> | TemplateRef<ComponentOrContext>,\r\n dataOrConfig: unknown,\r\n config?: Omit<FrModalConfig<Data, Result, ComponentOrContext>, 'data'>,\r\n): FrModalConfig<Data, Result, ComponentOrContext> {\r\n if (!isComponentType(content)) {\r\n return (dataOrConfig ?? {}) as FrModalConfig<Data, Result, ComponentOrContext>;\r\n }\r\n\r\n if (config) {\r\n return {\r\n ...config,\r\n data: dataOrConfig as Data,\r\n } as FrModalConfig<Data, Result, ComponentOrContext>;\r\n }\r\n\r\n if (dataOrConfig === undefined) {\r\n return {} as FrModalConfig<Data, Result, ComponentOrContext>;\r\n }\r\n\r\n if (isModalConfig(dataOrConfig)) {\r\n return dataOrConfig as FrModalConfig<Data, Result, ComponentOrContext>;\r\n }\r\n\r\n return {\r\n data: dataOrConfig as Data,\r\n } as FrModalConfig<Data, Result, ComponentOrContext>;\r\n}\r\n\r\nconst CONFIG_KEYS = new Set([\r\n 'ariaDescribedBy',\r\n 'ariaLabel',\r\n 'ariaLabelledBy',\r\n 'ariaModal',\r\n 'autoFocus',\r\n 'backdropClass',\r\n 'bodyData',\r\n 'bodyInputs',\r\n 'closeOnDestroy',\r\n 'closeOnNavigation',\r\n 'data',\r\n 'description',\r\n 'direction',\r\n 'disableClose',\r\n 'footerActions',\r\n 'height',\r\n 'inputs',\r\n 'maxHeight',\r\n 'maxWidth',\r\n 'minHeight',\r\n 'minWidth',\r\n 'panelClass',\r\n 'positionStrategy',\r\n 'providers',\r\n 'restoreFocus',\r\n 'role',\r\n 'scrollable',\r\n 'showCloseButton',\r\n 'size',\r\n 'stickyFooter',\r\n 'title',\r\n 'viewContainerRef',\r\n 'width',\r\n]);\r\n\r\nfunction isModalConfig(value: unknown): value is FrModalConfig {\r\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\r\n return false;\r\n }\r\n\r\n return Object.keys(value).some((key) => CONFIG_KEYS.has(key));\r\n}\r\n\r\nfunction mergeClassList(\r\n classList: string | string[] | undefined,\r\n defaultClass: string,\r\n): string[] {\r\n const classes = Array.isArray(classList)\r\n ? classList\r\n : classList\r\n ? classList.split(/\\s+/)\r\n : [];\r\n\r\n return Array.from(new Set([defaultClass, ...classes].filter(Boolean)));\r\n}\r\n\r\nfunction withModalRefProvider<Data, Result, Component>(\r\n providers: DialogConfig<Data, DialogRef<Result, Component>>['providers'],\r\n): DialogConfig<Data, DialogRef<Result, Component>>['providers'] {\r\n const modalRefProvider = { provide: FrModalRef, useExisting: DialogRef };\r\n\r\n if (typeof providers === 'function') {\r\n return (dialogRef, config, container) => [\r\n modalRefProvider,\r\n ...providers(dialogRef, config, container),\r\n ];\r\n }\r\n\r\n return [modalRefProvider, ...(providers ?? [])];\r\n}\r\n","import {\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n TemplateRef,\r\n ViewContainerRef,\r\n booleanAttribute,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nimport { FrModalContent } from './modal.content';\r\nimport { FrModalRef } from './modal.ref';\r\nimport { FrModalService } from './modal.service';\r\n\r\n@Directive({\r\n selector: '[frModalTrigger]',\r\n host: {\r\n class: 'frame-modal__trigger',\r\n '[attr.aria-haspopup]': '\"dialog\"',\r\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\r\n '[attr.disabled]': 'disabled() ? \"\" : null',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '(click)': 'open()',\r\n },\r\n})\r\nexport class FrModalTrigger {\r\n private static readonly CUSTOM_PROPERTY_PREFIX = '--frame-modal-';\r\n\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly modal = inject(FrModalService);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private modalRef: FrModalRef | null = null;\r\n\r\n readonly content = input<FrModalContent | TemplateRef<unknown> | null>(null, {\r\n alias: 'frModalTrigger',\r\n });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly opened = output<FrModalRef>();\r\n readonly closed = output<unknown>();\r\n readonly isOpen = signal(false);\r\n\r\n open(): void {\r\n if (this.disabled() || this.isOpen()) {\r\n return;\r\n }\r\n\r\n const content = this.content();\r\n\r\n if (!content) {\r\n return;\r\n }\r\n\r\n const templateRef = content instanceof FrModalContent ? content.templateRef : content;\r\n const config =\r\n content instanceof FrModalContent\r\n ? content.buildConfig(this.viewContainerRef)\r\n : { viewContainerRef: this.viewContainerRef };\r\n\r\n this.modalRef = this.modal.open(templateRef, config);\r\n this.isOpen.set(true);\r\n this.opened.emit(this.modalRef);\r\n queueMicrotask(() => this.syncCustomPropertiesToOverlay());\r\n\r\n this.modalRef.closed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((result) => {\r\n this.isOpen.set(false);\r\n this.modalRef = null;\r\n this.closed.emit(result);\r\n });\r\n }\r\n\r\n private syncCustomPropertiesToOverlay(): void {\r\n const overlayElement = this.modalRef?.overlayRef.overlayElement ?? null;\r\n\r\n if (!overlayElement) {\r\n return;\r\n }\r\n\r\n const modalPanel = overlayElement.querySelector<HTMLElement>('.frame-modal__panel') ?? overlayElement;\r\n const sourceStyles = getComputedStyle(this.elementRef.nativeElement);\r\n\r\n for (let index = 0; index < sourceStyles.length; index += 1) {\r\n const propertyName = sourceStyles.item(index);\r\n\r\n if (!propertyName.startsWith(FrModalTrigger.CUSTOM_PROPERTY_PREFIX)) {\r\n continue;\r\n }\r\n\r\n const propertyValue = sourceStyles.getPropertyValue(propertyName);\r\n\r\n overlayElement.style.setProperty(propertyName, propertyValue);\r\n modalPanel.style.setProperty(propertyName, propertyValue);\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport {\n FrModalBody,\n FrModalClose,\n FrModalContent,\n FrModalDescription,\n FrModalFooter,\n FrModalHeader,\n FrModalPanel,\n FrModalShell,\n FrModalTitle,\n FrModalTrigger,\n} from './src/modal';\n\n@NgModule({\n imports: [\n FrModalBody,\n FrModalClose,\n FrModalContent,\n FrModalDescription,\n FrModalFooter,\n FrModalHeader,\n FrModalPanel,\n FrModalShell,\n FrModalTitle,\n FrModalTrigger,\n ],\n exports: [\n FrModalBody,\n FrModalClose,\n FrModalContent,\n FrModalDescription,\n FrModalFooter,\n FrModalHeader,\n FrModalPanel,\n FrModalShell,\n FrModalTitle,\n FrModalTrigger,\n ],\n})\nexport class FrModalModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { input, model, computed, Directive, inject, booleanAttribute, Component, NgModule } from '@angular/core';
|
|
3
|
+
import { clampNumber } from '@frame-ui-ng/components/utils';
|
|
3
4
|
|
|
4
5
|
class FrPagination {
|
|
5
6
|
ariaLabel = input('pagination', { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
|
|
@@ -11,7 +12,7 @@ class FrPagination {
|
|
|
11
12
|
canNext = computed(() => this.page() < this.normalizedTotalPages(), ...(ngDevMode ? [{ debugName: "canNext" }] : /* istanbul ignore next */ []));
|
|
12
13
|
pages = computed(() => this.buildPages(), ...(ngDevMode ? [{ debugName: "pages" }] : /* istanbul ignore next */ []));
|
|
13
14
|
goToPage(page) {
|
|
14
|
-
this.page.set(
|
|
15
|
+
this.page.set(clampNumber(page, 1, this.normalizedTotalPages()));
|
|
15
16
|
}
|
|
16
17
|
goToPreviousPage() {
|
|
17
18
|
this.goToPage(this.page() - 1);
|
|
@@ -26,7 +27,7 @@ class FrPagination {
|
|
|
26
27
|
const totalPages = this.normalizedTotalPages();
|
|
27
28
|
const boundaryCount = Math.max(0, Math.floor(this.boundaryCount()));
|
|
28
29
|
const siblingCount = Math.max(0, Math.floor(this.siblingCount()));
|
|
29
|
-
const currentPage =
|
|
30
|
+
const currentPage = clampNumber(this.page(), 1, totalPages);
|
|
30
31
|
const pages = new Set();
|
|
31
32
|
for (let page = 1; page <= Math.min(boundaryCount, totalPages); page += 1) {
|
|
32
33
|
pages.add(page);
|
|
@@ -166,13 +167,13 @@ class FrPaginationPrevious {
|
|
|
166
167
|
this.pagination.goToPreviousPage();
|
|
167
168
|
}
|
|
168
169
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPaginationPrevious, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
169
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrPaginationPrevious, isStandalone: true, selector: "a[frPaginationPrevious], button[frPaginationPrevious]", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, iconOnly: { classPropertyName: "iconOnly", publicName: "iconOnly", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "handleClick($event)" }, properties: { "attr.aria-label": "ariaLabel()", "attr.aria-disabled": "isDisabled() ? \"true\" : null", "attr.data-disabled": "isDisabled() ? \"\" : null", "attr.data-icon-only": "iconOnly() ? \"\" : null", "attr.disabled": "isDisabled() ? \"\" : null", "attr.tabindex": "isDisabled() ? \"-1\" : null" }, classAttribute: "frame-pagination__link frame-pagination__previous" }, ngImport: i0, template: `
|
|
170
|
-
<span class="frame-pagination__control-icon" aria-hidden="true">
|
|
171
|
-
<ng-content select="[frPaginationIcon]">‹</ng-content>
|
|
172
|
-
</span>
|
|
173
|
-
@if (!iconOnly()) {
|
|
174
|
-
<span class="frame-pagination__control-text">{{ text() }}</span>
|
|
175
|
-
}
|
|
170
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrPaginationPrevious, isStandalone: true, selector: "a[frPaginationPrevious], button[frPaginationPrevious]", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, iconOnly: { classPropertyName: "iconOnly", publicName: "iconOnly", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "handleClick($event)" }, properties: { "attr.aria-label": "ariaLabel()", "attr.aria-disabled": "isDisabled() ? \"true\" : null", "attr.data-disabled": "isDisabled() ? \"\" : null", "attr.data-icon-only": "iconOnly() ? \"\" : null", "attr.disabled": "isDisabled() ? \"\" : null", "attr.tabindex": "isDisabled() ? \"-1\" : null" }, classAttribute: "frame-pagination__link frame-pagination__previous" }, ngImport: i0, template: `
|
|
171
|
+
<span class="frame-pagination__control-icon" aria-hidden="true">
|
|
172
|
+
<ng-content select="[frPaginationIcon]">‹</ng-content>
|
|
173
|
+
</span>
|
|
174
|
+
@if (!iconOnly()) {
|
|
175
|
+
<span class="frame-pagination__control-text">{{ text() }}</span>
|
|
176
|
+
}
|
|
176
177
|
`, isInline: true });
|
|
177
178
|
}
|
|
178
179
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPaginationPrevious, decorators: [{
|
|
@@ -189,13 +190,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
189
190
|
'[attr.tabindex]': 'isDisabled() ? "-1" : null',
|
|
190
191
|
'(click)': 'handleClick($event)',
|
|
191
192
|
},
|
|
192
|
-
template: `
|
|
193
|
-
<span class="frame-pagination__control-icon" aria-hidden="true">
|
|
194
|
-
<ng-content select="[frPaginationIcon]">‹</ng-content>
|
|
195
|
-
</span>
|
|
196
|
-
@if (!iconOnly()) {
|
|
197
|
-
<span class="frame-pagination__control-text">{{ text() }}</span>
|
|
198
|
-
}
|
|
193
|
+
template: `
|
|
194
|
+
<span class="frame-pagination__control-icon" aria-hidden="true">
|
|
195
|
+
<ng-content select="[frPaginationIcon]">‹</ng-content>
|
|
196
|
+
</span>
|
|
197
|
+
@if (!iconOnly()) {
|
|
198
|
+
<span class="frame-pagination__control-text">{{ text() }}</span>
|
|
199
|
+
}
|
|
199
200
|
`,
|
|
200
201
|
}]
|
|
201
202
|
}], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], iconOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOnly", required: false }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }] } });
|
|
@@ -218,13 +219,13 @@ class FrPaginationNext {
|
|
|
218
219
|
this.pagination.goToNextPage();
|
|
219
220
|
}
|
|
220
221
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPaginationNext, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
221
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrPaginationNext, isStandalone: true, selector: "a[frPaginationNext], button[frPaginationNext]", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, iconOnly: { classPropertyName: "iconOnly", publicName: "iconOnly", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "handleClick($event)" }, properties: { "attr.aria-label": "ariaLabel()", "attr.aria-disabled": "isDisabled() ? \"true\" : null", "attr.data-disabled": "isDisabled() ? \"\" : null", "attr.data-icon-only": "iconOnly() ? \"\" : null", "attr.disabled": "isDisabled() ? \"\" : null", "attr.tabindex": "isDisabled() ? \"-1\" : null" }, classAttribute: "frame-pagination__link frame-pagination__next" }, ngImport: i0, template: `
|
|
222
|
-
@if (!iconOnly()) {
|
|
223
|
-
<span class="frame-pagination__control-text">{{ text() }}</span>
|
|
224
|
-
}
|
|
225
|
-
<span class="frame-pagination__control-icon" aria-hidden="true">
|
|
226
|
-
<ng-content select="[frPaginationIcon]">›</ng-content>
|
|
227
|
-
</span>
|
|
222
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrPaginationNext, isStandalone: true, selector: "a[frPaginationNext], button[frPaginationNext]", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, iconOnly: { classPropertyName: "iconOnly", publicName: "iconOnly", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "handleClick($event)" }, properties: { "attr.aria-label": "ariaLabel()", "attr.aria-disabled": "isDisabled() ? \"true\" : null", "attr.data-disabled": "isDisabled() ? \"\" : null", "attr.data-icon-only": "iconOnly() ? \"\" : null", "attr.disabled": "isDisabled() ? \"\" : null", "attr.tabindex": "isDisabled() ? \"-1\" : null" }, classAttribute: "frame-pagination__link frame-pagination__next" }, ngImport: i0, template: `
|
|
223
|
+
@if (!iconOnly()) {
|
|
224
|
+
<span class="frame-pagination__control-text">{{ text() }}</span>
|
|
225
|
+
}
|
|
226
|
+
<span class="frame-pagination__control-icon" aria-hidden="true">
|
|
227
|
+
<ng-content select="[frPaginationIcon]">›</ng-content>
|
|
228
|
+
</span>
|
|
228
229
|
`, isInline: true });
|
|
229
230
|
}
|
|
230
231
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPaginationNext, decorators: [{
|
|
@@ -241,22 +242,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
241
242
|
'[attr.tabindex]': 'isDisabled() ? "-1" : null',
|
|
242
243
|
'(click)': 'handleClick($event)',
|
|
243
244
|
},
|
|
244
|
-
template: `
|
|
245
|
-
@if (!iconOnly()) {
|
|
246
|
-
<span class="frame-pagination__control-text">{{ text() }}</span>
|
|
247
|
-
}
|
|
248
|
-
<span class="frame-pagination__control-icon" aria-hidden="true">
|
|
249
|
-
<ng-content select="[frPaginationIcon]">›</ng-content>
|
|
250
|
-
</span>
|
|
245
|
+
template: `
|
|
246
|
+
@if (!iconOnly()) {
|
|
247
|
+
<span class="frame-pagination__control-text">{{ text() }}</span>
|
|
248
|
+
}
|
|
249
|
+
<span class="frame-pagination__control-icon" aria-hidden="true">
|
|
250
|
+
<ng-content select="[frPaginationIcon]">›</ng-content>
|
|
251
|
+
</span>
|
|
251
252
|
`,
|
|
252
253
|
}]
|
|
253
254
|
}], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], iconOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOnly", required: false }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }] } });
|
|
254
255
|
class FrPaginationEllipsis {
|
|
255
256
|
label = input('More pages', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
256
257
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPaginationEllipsis, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
257
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.16", type: FrPaginationEllipsis, isStandalone: true, selector: "[frPaginationEllipsis], frame-pagination-ellipsis", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "presentation" }, classAttribute: "frame-pagination__ellipsis" }, ngImport: i0, template: `
|
|
258
|
-
<span aria-hidden="true">...</span>
|
|
259
|
-
<span class="frame-pagination__sr-only">{{ label() }}</span>
|
|
258
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.16", type: FrPaginationEllipsis, isStandalone: true, selector: "[frPaginationEllipsis], frame-pagination-ellipsis", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "presentation" }, classAttribute: "frame-pagination__ellipsis" }, ngImport: i0, template: `
|
|
259
|
+
<span aria-hidden="true">...</span>
|
|
260
|
+
<span class="frame-pagination__sr-only">{{ label() }}</span>
|
|
260
261
|
`, isInline: true });
|
|
261
262
|
}
|
|
262
263
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPaginationEllipsis, decorators: [{
|
|
@@ -267,9 +268,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
267
268
|
class: 'frame-pagination__ellipsis',
|
|
268
269
|
role: 'presentation',
|
|
269
270
|
},
|
|
270
|
-
template: `
|
|
271
|
-
<span aria-hidden="true">...</span>
|
|
272
|
-
<span class="frame-pagination__sr-only">{{ label() }}</span>
|
|
271
|
+
template: `
|
|
272
|
+
<span aria-hidden="true">...</span>
|
|
273
|
+
<span class="frame-pagination__sr-only">{{ label() }}</span>
|
|
273
274
|
`,
|
|
274
275
|
}]
|
|
275
276
|
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }] } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame-ui-ng-components-pagination.mjs","sources":["../../../projects/components/pagination/src/pagination.ts","../../../projects/components/pagination/pagination.module.ts","../../../projects/components/pagination/frame-ui-ng-components-pagination.ts"],"sourcesContent":["import { Component, Directive, booleanAttribute, computed, inject, input, model } from '@angular/core';\n\nexport type FrPaginationPage = number | 'ellipsis';\n\n@Directive({\n selector: 'nav[frPagination], [frPagination]',\n exportAs: 'frPagination',\n host: {\n class: 'frame-pagination',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.data-page]': 'page()',\n '[attr.data-total-pages]': 'totalPages()',\n },\n})\nexport class FrPagination {\n readonly ariaLabel = input('pagination', { alias: 'aria-label' });\n readonly boundaryCount = input(1);\n readonly page = model(1);\n readonly siblingCount = input(1);\n readonly totalPages = input(1);\n\n readonly canPrevious = computed(() => this.page() > 1);\n readonly canNext = computed(() => this.page() < this.normalizedTotalPages());\n readonly pages = computed(() => this.buildPages());\n\n goToPage(page: number): void {\n this.page.set(Math.min(Math.max(page, 1), this.normalizedTotalPages()));\n }\n\n goToPreviousPage(): void {\n this.goToPage(this.page() - 1);\n }\n\n goToNextPage(): void {\n this.goToPage(this.page() + 1);\n }\n\n private normalizedTotalPages(): number {\n return Math.max(1, Math.floor(this.totalPages()));\n }\n\n private buildPages(): FrPaginationPage[] {\n const totalPages = this.normalizedTotalPages();\n const boundaryCount = Math.max(0, Math.floor(this.boundaryCount()));\n const siblingCount = Math.max(0, Math.floor(this.siblingCount()));\n const currentPage = Math.min(Math.max(this.page(), 1), totalPages);\n const pages = new Set<number>();\n\n for (let page = 1; page <= Math.min(boundaryCount, totalPages); page += 1) {\n pages.add(page);\n }\n\n for (let page = Math.max(1, totalPages - boundaryCount + 1); page <= totalPages; page += 1) {\n pages.add(page);\n }\n\n for (let page = currentPage - siblingCount; page <= currentPage + siblingCount; page += 1) {\n if (page >= 1 && page <= totalPages) {\n pages.add(page);\n }\n }\n\n const sortedPages = Array.from(pages).sort((a, b) => a - b);\n const visiblePages: FrPaginationPage[] = [];\n\n for (const page of sortedPages) {\n const previousPage = visiblePages.at(-1);\n\n if (typeof previousPage === 'number' && page - previousPage > 1) {\n visiblePages.push('ellipsis');\n }\n\n visiblePages.push(page);\n }\n\n return visiblePages;\n }\n}\n\n@Directive({\n selector: 'ul[frPaginationContent], ol[frPaginationContent], [frPaginationContent]',\n host: {\n class: 'frame-pagination__content',\n },\n})\nexport class FrPaginationContent {}\n\n@Directive({\n selector: 'li[frPaginationItem], [frPaginationItem]',\n host: {\n class: 'frame-pagination__item',\n },\n})\nexport class FrPaginationItem {}\n\n@Directive({\n selector: 'a[frPaginationLink], button[frPaginationLink]',\n host: {\n class: 'frame-pagination__link',\n '[attr.aria-current]': 'isActive() ? \"page\" : null',\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : null',\n '[attr.data-active]': 'isActive() ? \"\" : null',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\n '[attr.disabled]': 'isDisabled() ? \"\" : null',\n '[attr.tabindex]': 'isDisabled() ? \"-1\" : null',\n '(click)': 'handleClick($event)',\n },\n})\nexport class FrPaginationLink {\n private readonly pagination = inject(FrPagination, { optional: true });\n\n readonly active = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly page = input<number | null>(null);\n\n protected readonly isActive = computed(() => {\n const page = this.page();\n\n return this.active() || (page !== null && this.pagination?.page() === page);\n });\n protected readonly isDisabled = computed(() => this.disabled());\n\n protected handleClick(event: Event): void {\n if (this.isDisabled()) {\n event.preventDefault();\n return;\n }\n\n const page = this.page();\n\n if (page === null || !this.pagination) {\n return;\n }\n\n event.preventDefault();\n this.pagination.goToPage(page);\n }\n}\n\n@Directive({\n selector: '[frPaginationIcon]',\n host: {\n class: 'frame-pagination__projected-icon',\n 'aria-hidden': 'true',\n },\n})\nexport class FrPaginationIcon {}\n\n@Component({\n selector: 'a[frPaginationPrevious], button[frPaginationPrevious]',\n host: {\n class: 'frame-pagination__link frame-pagination__previous',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : null',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\n '[attr.data-icon-only]': 'iconOnly() ? \"\" : null',\n '[attr.disabled]': 'isDisabled() ? \"\" : null',\n '[attr.tabindex]': 'isDisabled() ? \"-1\" : null',\n '(click)': 'handleClick($event)',\n },\n template: `\n <span class=\"frame-pagination__control-icon\" aria-hidden=\"true\">\n <ng-content select=\"[frPaginationIcon]\">‹</ng-content>\n </span>\n @if (!iconOnly()) {\n <span class=\"frame-pagination__control-text\">{{ text() }}</span>\n }\n `,\n})\nexport class FrPaginationPrevious {\n private readonly pagination = inject(FrPagination, { optional: true });\n\n readonly ariaLabel = input('Go to previous page', { alias: 'aria-label' });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly iconOnly = input(false, { transform: booleanAttribute });\n readonly text = input('Previous');\n protected readonly isDisabled = computed(() => this.disabled() || this.pagination?.canPrevious() === false);\n\n protected handleClick(event: Event): void {\n if (this.isDisabled()) {\n event.preventDefault();\n return;\n }\n\n if (!this.pagination) {\n return;\n }\n\n event.preventDefault();\n this.pagination.goToPreviousPage();\n }\n}\n\n@Component({\n selector: 'a[frPaginationNext], button[frPaginationNext]',\n host: {\n class: 'frame-pagination__link frame-pagination__next',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : null',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\n '[attr.data-icon-only]': 'iconOnly() ? \"\" : null',\n '[attr.disabled]': 'isDisabled() ? \"\" : null',\n '[attr.tabindex]': 'isDisabled() ? \"-1\" : null',\n '(click)': 'handleClick($event)',\n },\n template: `\n @if (!iconOnly()) {\n <span class=\"frame-pagination__control-text\">{{ text() }}</span>\n }\n <span class=\"frame-pagination__control-icon\" aria-hidden=\"true\">\n <ng-content select=\"[frPaginationIcon]\">›</ng-content>\n </span>\n `,\n})\nexport class FrPaginationNext {\n private readonly pagination = inject(FrPagination, { optional: true });\n\n readonly ariaLabel = input('Go to next page', { alias: 'aria-label' });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly iconOnly = input(false, { transform: booleanAttribute });\n readonly text = input('Next');\n protected readonly isDisabled = computed(() => this.disabled() || this.pagination?.canNext() === false);\n\n protected handleClick(event: Event): void {\n if (this.isDisabled()) {\n event.preventDefault();\n return;\n }\n\n if (!this.pagination) {\n return;\n }\n\n event.preventDefault();\n this.pagination.goToNextPage();\n }\n}\n\n@Component({\n selector: '[frPaginationEllipsis], frame-pagination-ellipsis',\n host: {\n class: 'frame-pagination__ellipsis',\n role: 'presentation',\n },\n template: `\n <span aria-hidden=\"true\">...</span>\n <span class=\"frame-pagination__sr-only\">{{ label() }}</span>\n `,\n})\nexport class FrPaginationEllipsis {\n readonly label = input('More pages');\n}\n","import { NgModule } from '@angular/core';\nimport {\n FrPagination,\n FrPaginationContent,\n FrPaginationEllipsis,\n FrPaginationIcon,\n FrPaginationItem,\n FrPaginationLink,\n FrPaginationNext,\n FrPaginationPrevious,\n} from './src/pagination';\n\n@NgModule({\n imports: [\n FrPagination,\n FrPaginationContent,\n FrPaginationEllipsis,\n FrPaginationIcon,\n FrPaginationItem,\n FrPaginationLink,\n FrPaginationNext,\n FrPaginationPrevious,\n ],\n exports: [\n FrPagination,\n FrPaginationContent,\n FrPaginationEllipsis,\n FrPaginationIcon,\n FrPaginationItem,\n FrPaginationLink,\n FrPaginationNext,\n FrPaginationPrevious,\n ],\n})\nexport class FrPaginationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAca,YAAY,CAAA;IACd,SAAS,GAAG,KAAK,CAAC,YAAY,iFAAI,KAAK,EAAE,YAAY,EAAA,CAAG;AACxD,IAAA,aAAa,GAAG,KAAK,CAAC,CAAC,oFAAC;AACxB,IAAA,IAAI,GAAG,KAAK,CAAC,CAAC,2EAAC;AACf,IAAA,YAAY,GAAG,KAAK,CAAC,CAAC,mFAAC;AACvB,IAAA,UAAU,GAAG,KAAK,CAAC,CAAC,iFAAC;AAErB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,kFAAC;AAC7C,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,oBAAoB,EAAE,8EAAC;IACnE,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAElD,IAAA,QAAQ,CAAC,IAAY,EAAA;QACnB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACzE;IAEA,gBAAgB,GAAA;QACd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAChC;IAEA,YAAY,GAAA;QACV,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAChC;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACnD;IAEQ,UAAU,GAAA;AAChB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAC9C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;AACnE,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC;AAClE,QAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU;QAE/B,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE;AACzE,YAAA,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QACjB;QAEA,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,aAAa,GAAG,CAAC,CAAC,EAAE,IAAI,IAAI,UAAU,EAAE,IAAI,IAAI,CAAC,EAAE;AAC1F,YAAA,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QACjB;AAEA,QAAA,KAAK,IAAI,IAAI,GAAG,WAAW,GAAG,YAAY,EAAE,IAAI,IAAI,WAAW,GAAG,YAAY,EAAE,IAAI,IAAI,CAAC,EAAE;YACzF,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,UAAU,EAAE;AACnC,gBAAA,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YACjB;QACF;QAEA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3D,MAAM,YAAY,GAAuB,EAAE;AAE3C,QAAA,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;YAC9B,MAAM,YAAY,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAExC,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,IAAI,GAAG,YAAY,GAAG,CAAC,EAAE;AAC/D,gBAAA,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;YAC/B;AAEA,YAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QACzB;AAEA,QAAA,OAAO,YAAY;IACrB;wGA9DW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAVxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mCAAmC;AAC7C,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,kBAAkB;AACzB,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,kBAAkB,EAAE,QAAQ;AAC5B,wBAAA,yBAAyB,EAAE,cAAc;AAC1C,qBAAA;AACF,iBAAA;;MAwEY,mBAAmB,CAAA;wGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yEAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,2BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yEAAyE;AACnF,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,2BAA2B;AACnC,qBAAA;AACF,iBAAA;;MASY,gBAAgB,CAAA;wGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0CAA0C;AACpD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,wBAAwB;AAChC,qBAAA;AACF,iBAAA;;MAgBY,gBAAgB,CAAA;IACV,UAAU,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAE7D,MAAM,GAAG,KAAK,CAAC,KAAK,8EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACtD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACxD,IAAA,IAAI,GAAG,KAAK,CAAgB,IAAI,2EAAC;AAEvB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AAExB,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;AAC7E,IAAA,CAAC,+EAAC;IACiB,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAErD,IAAA,WAAW,CAAC,KAAY,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,KAAK,CAAC,cAAc,EAAE;YACtB;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QAExB,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACrC;QACF;QAEA,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;IAChC;wGA5BW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,8BAAA,EAAA,oBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAb5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+CAA+C;AACzD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,wBAAwB;AAC/B,wBAAA,qBAAqB,EAAE,4BAA4B;AACnD,wBAAA,sBAAsB,EAAE,8BAA8B;AACtD,wBAAA,oBAAoB,EAAE,wBAAwB;AAC9C,wBAAA,sBAAsB,EAAE,0BAA0B;AAClD,wBAAA,iBAAiB,EAAE,0BAA0B;AAC7C,wBAAA,iBAAiB,EAAE,4BAA4B;AAC/C,wBAAA,SAAS,EAAE,qBAAqB;AACjC,qBAAA;AACF,iBAAA;;MAuCY,gBAAgB,CAAA;wGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,kCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,kCAAkC;AACzC,wBAAA,aAAa,EAAE,MAAM;AACtB,qBAAA;AACF,iBAAA;;MAwBY,oBAAoB,CAAA;IACd,UAAU,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAE7D,SAAS,GAAG,KAAK,CAAC,qBAAqB,iFAAI,KAAK,EAAE,YAAY,EAAA,CAAG;IACjE,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACxD,IAAA,IAAI,GAAG,KAAK,CAAC,UAAU,2EAAC;IACd,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,KAAK,iFAAC;AAEjG,IAAA,WAAW,CAAC,KAAY,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,KAAK,CAAC,cAAc,EAAE;YACtB;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB;QACF;QAEA,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE;IACpC;wGArBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uDAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,gCAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,EAAA,cAAA,EAAA,mDAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EATrB;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;4FAEU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBArBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uDAAuD;AACjE,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,mDAAmD;AAC1D,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,sBAAsB,EAAE,8BAA8B;AACtD,wBAAA,sBAAsB,EAAE,0BAA0B;AAClD,wBAAA,uBAAuB,EAAE,wBAAwB;AACjD,wBAAA,iBAAiB,EAAE,0BAA0B;AAC7C,wBAAA,iBAAiB,EAAE,4BAA4B;AAC/C,wBAAA,SAAS,EAAE,qBAAqB;AACjC,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;AAOT,EAAA,CAAA;AACF,iBAAA;;MA8CY,gBAAgB,CAAA;IACV,UAAU,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAE7D,SAAS,GAAG,KAAK,CAAC,iBAAiB,iFAAI,KAAK,EAAE,YAAY,EAAA,CAAG;IAC7D,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACxD,IAAA,IAAI,GAAG,KAAK,CAAC,MAAM,2EAAC;IACV,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,KAAK,iFAAC;AAE7F,IAAA,WAAW,CAAC,KAAY,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,KAAK,CAAC,cAAc,EAAE;YACtB;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB;QACF;QAEA,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;IAChC;wGArBW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,gCAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,EAAA,cAAA,EAAA,+CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EATjB;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;4FAEU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBArB5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+CAA+C;AACzD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,+CAA+C;AACtD,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,sBAAsB,EAAE,8BAA8B;AACtD,wBAAA,sBAAsB,EAAE,0BAA0B;AAClD,wBAAA,uBAAuB,EAAE,wBAAwB;AACjD,wBAAA,iBAAiB,EAAE,0BAA0B;AAC7C,wBAAA,iBAAiB,EAAE,4BAA4B;AAC/C,wBAAA,SAAS,EAAE,qBAAqB;AACjC,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;AAOT,EAAA,CAAA;AACF,iBAAA;;MAoCY,oBAAoB,CAAA;AACtB,IAAA,KAAK,GAAG,KAAK,CAAC,YAAY,4EAAC;wGADzB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EALrB;;;AAGT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;4FAEU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAXhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mDAAmD;AAC7D,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,4BAA4B;AACnC,wBAAA,IAAI,EAAE,cAAc;AACrB,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;AAGT,EAAA,CAAA;AACF,iBAAA;;;MCtNY,kBAAkB,CAAA;wGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YApB3B,YAAY;YACZ,mBAAmB;YACnB,oBAAoB;YACpB,gBAAgB;YAChB,gBAAgB;YAChB,gBAAgB;YAChB,gBAAgB;AAChB,YAAA,oBAAoB,aAGpB,YAAY;YACZ,mBAAmB;YACnB,oBAAoB;YACpB,gBAAgB;YAChB,gBAAgB;YAChB,gBAAgB;YAChB,gBAAgB;YAChB,oBAAoB,CAAA,EAAA,CAAA;yGAGX,kBAAkB,EAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAtB9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,oBAAoB;wBACpB,gBAAgB;wBAChB,gBAAgB;wBAChB,gBAAgB;wBAChB,gBAAgB;wBAChB,oBAAoB;AACrB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,oBAAoB;wBACpB,gBAAgB;wBAChB,gBAAgB;wBAChB,gBAAgB;wBAChB,gBAAgB;wBAChB,oBAAoB;AACrB,qBAAA;AACF,iBAAA;;;ACjCD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"frame-ui-ng-components-pagination.mjs","sources":["../../../projects/components/pagination/src/pagination.ts","../../../projects/components/pagination/pagination.module.ts","../../../projects/components/pagination/frame-ui-ng-components-pagination.ts"],"sourcesContent":["import { Component, Directive, booleanAttribute, computed, inject, input, model } from '@angular/core';\r\nimport { clampNumber } from '@frame-ui-ng/components/utils';\r\n\r\nexport type FrPaginationPage = number | 'ellipsis';\r\n\r\n@Directive({\r\n selector: 'nav[frPagination], [frPagination]',\r\n exportAs: 'frPagination',\r\n host: {\r\n class: 'frame-pagination',\r\n '[attr.aria-label]': 'ariaLabel()',\r\n '[attr.data-page]': 'page()',\r\n '[attr.data-total-pages]': 'totalPages()',\r\n },\r\n})\r\nexport class FrPagination {\r\n readonly ariaLabel = input('pagination', { alias: 'aria-label' });\r\n readonly boundaryCount = input(1);\r\n readonly page = model(1);\r\n readonly siblingCount = input(1);\r\n readonly totalPages = input(1);\r\n\r\n readonly canPrevious = computed(() => this.page() > 1);\r\n readonly canNext = computed(() => this.page() < this.normalizedTotalPages());\r\n readonly pages = computed(() => this.buildPages());\r\n\r\n goToPage(page: number): void {\r\n this.page.set(clampNumber(page, 1, this.normalizedTotalPages()));\r\n }\r\n\r\n goToPreviousPage(): void {\r\n this.goToPage(this.page() - 1);\r\n }\r\n\r\n goToNextPage(): void {\r\n this.goToPage(this.page() + 1);\r\n }\r\n\r\n private normalizedTotalPages(): number {\r\n return Math.max(1, Math.floor(this.totalPages()));\r\n }\r\n\r\n private buildPages(): FrPaginationPage[] {\r\n const totalPages = this.normalizedTotalPages();\r\n const boundaryCount = Math.max(0, Math.floor(this.boundaryCount()));\r\n const siblingCount = Math.max(0, Math.floor(this.siblingCount()));\r\n const currentPage = clampNumber(this.page(), 1, totalPages);\r\n const pages = new Set<number>();\r\n\r\n for (let page = 1; page <= Math.min(boundaryCount, totalPages); page += 1) {\r\n pages.add(page);\r\n }\r\n\r\n for (let page = Math.max(1, totalPages - boundaryCount + 1); page <= totalPages; page += 1) {\r\n pages.add(page);\r\n }\r\n\r\n for (let page = currentPage - siblingCount; page <= currentPage + siblingCount; page += 1) {\r\n if (page >= 1 && page <= totalPages) {\r\n pages.add(page);\r\n }\r\n }\r\n\r\n const sortedPages = Array.from(pages).sort((a, b) => a - b);\r\n const visiblePages: FrPaginationPage[] = [];\r\n\r\n for (const page of sortedPages) {\r\n const previousPage = visiblePages.at(-1);\r\n\r\n if (typeof previousPage === 'number' && page - previousPage > 1) {\r\n visiblePages.push('ellipsis');\r\n }\r\n\r\n visiblePages.push(page);\r\n }\r\n\r\n return visiblePages;\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: 'ul[frPaginationContent], ol[frPaginationContent], [frPaginationContent]',\r\n host: {\r\n class: 'frame-pagination__content',\r\n },\r\n})\r\nexport class FrPaginationContent {}\r\n\r\n@Directive({\r\n selector: 'li[frPaginationItem], [frPaginationItem]',\r\n host: {\r\n class: 'frame-pagination__item',\r\n },\r\n})\r\nexport class FrPaginationItem {}\r\n\r\n@Directive({\r\n selector: 'a[frPaginationLink], button[frPaginationLink]',\r\n host: {\r\n class: 'frame-pagination__link',\r\n '[attr.aria-current]': 'isActive() ? \"page\" : null',\r\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : null',\r\n '[attr.data-active]': 'isActive() ? \"\" : null',\r\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\r\n '[attr.disabled]': 'isDisabled() ? \"\" : null',\r\n '[attr.tabindex]': 'isDisabled() ? \"-1\" : null',\r\n '(click)': 'handleClick($event)',\r\n },\r\n})\r\nexport class FrPaginationLink {\r\n private readonly pagination = inject(FrPagination, { optional: true });\r\n\r\n readonly active = input(false, { transform: booleanAttribute });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly page = input<number | null>(null);\r\n\r\n protected readonly isActive = computed(() => {\r\n const page = this.page();\r\n\r\n return this.active() || (page !== null && this.pagination?.page() === page);\r\n });\r\n protected readonly isDisabled = computed(() => this.disabled());\r\n\r\n protected handleClick(event: Event): void {\r\n if (this.isDisabled()) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n const page = this.page();\r\n\r\n if (page === null || !this.pagination) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n this.pagination.goToPage(page);\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[frPaginationIcon]',\r\n host: {\r\n class: 'frame-pagination__projected-icon',\r\n 'aria-hidden': 'true',\r\n },\r\n})\r\nexport class FrPaginationIcon {}\r\n\r\n@Component({\r\n selector: 'a[frPaginationPrevious], button[frPaginationPrevious]',\r\n host: {\r\n class: 'frame-pagination__link frame-pagination__previous',\r\n '[attr.aria-label]': 'ariaLabel()',\r\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : null',\r\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\r\n '[attr.data-icon-only]': 'iconOnly() ? \"\" : null',\r\n '[attr.disabled]': 'isDisabled() ? \"\" : null',\r\n '[attr.tabindex]': 'isDisabled() ? \"-1\" : null',\r\n '(click)': 'handleClick($event)',\r\n },\r\n template: `\r\n <span class=\"frame-pagination__control-icon\" aria-hidden=\"true\">\r\n <ng-content select=\"[frPaginationIcon]\">‹</ng-content>\r\n </span>\r\n @if (!iconOnly()) {\r\n <span class=\"frame-pagination__control-text\">{{ text() }}</span>\r\n }\r\n `,\r\n})\r\nexport class FrPaginationPrevious {\r\n private readonly pagination = inject(FrPagination, { optional: true });\r\n\r\n readonly ariaLabel = input('Go to previous page', { alias: 'aria-label' });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly iconOnly = input(false, { transform: booleanAttribute });\r\n readonly text = input('Previous');\r\n protected readonly isDisabled = computed(() => this.disabled() || this.pagination?.canPrevious() === false);\r\n\r\n protected handleClick(event: Event): void {\r\n if (this.isDisabled()) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (!this.pagination) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n this.pagination.goToPreviousPage();\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'a[frPaginationNext], button[frPaginationNext]',\r\n host: {\r\n class: 'frame-pagination__link frame-pagination__next',\r\n '[attr.aria-label]': 'ariaLabel()',\r\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : null',\r\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\r\n '[attr.data-icon-only]': 'iconOnly() ? \"\" : null',\r\n '[attr.disabled]': 'isDisabled() ? \"\" : null',\r\n '[attr.tabindex]': 'isDisabled() ? \"-1\" : null',\r\n '(click)': 'handleClick($event)',\r\n },\r\n template: `\r\n @if (!iconOnly()) {\r\n <span class=\"frame-pagination__control-text\">{{ text() }}</span>\r\n }\r\n <span class=\"frame-pagination__control-icon\" aria-hidden=\"true\">\r\n <ng-content select=\"[frPaginationIcon]\">›</ng-content>\r\n </span>\r\n `,\r\n})\r\nexport class FrPaginationNext {\r\n private readonly pagination = inject(FrPagination, { optional: true });\r\n\r\n readonly ariaLabel = input('Go to next page', { alias: 'aria-label' });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly iconOnly = input(false, { transform: booleanAttribute });\r\n readonly text = input('Next');\r\n protected readonly isDisabled = computed(() => this.disabled() || this.pagination?.canNext() === false);\r\n\r\n protected handleClick(event: Event): void {\r\n if (this.isDisabled()) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (!this.pagination) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n this.pagination.goToNextPage();\r\n }\r\n}\r\n\r\n@Component({\r\n selector: '[frPaginationEllipsis], frame-pagination-ellipsis',\r\n host: {\r\n class: 'frame-pagination__ellipsis',\r\n role: 'presentation',\r\n },\r\n template: `\r\n <span aria-hidden=\"true\">...</span>\r\n <span class=\"frame-pagination__sr-only\">{{ label() }}</span>\r\n `,\r\n})\r\nexport class FrPaginationEllipsis {\r\n readonly label = input('More pages');\r\n}\r\n","import { NgModule } from '@angular/core';\nimport {\n FrPagination,\n FrPaginationContent,\n FrPaginationEllipsis,\n FrPaginationIcon,\n FrPaginationItem,\n FrPaginationLink,\n FrPaginationNext,\n FrPaginationPrevious,\n} from './src/pagination';\n\n@NgModule({\n imports: [\n FrPagination,\n FrPaginationContent,\n FrPaginationEllipsis,\n FrPaginationIcon,\n FrPaginationItem,\n FrPaginationLink,\n FrPaginationNext,\n FrPaginationPrevious,\n ],\n exports: [\n FrPagination,\n FrPaginationContent,\n FrPaginationEllipsis,\n FrPaginationIcon,\n FrPaginationItem,\n FrPaginationLink,\n FrPaginationNext,\n FrPaginationPrevious,\n ],\n})\nexport class FrPaginationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { input, computed, Directive, NgModule } from '@angular/core';
|
|
3
|
+
import { clampNumber } from '@frame-ui-ng/components/utils';
|
|
3
4
|
|
|
4
5
|
function coerceProgressValue(value) {
|
|
5
6
|
if (value === null || value === undefined || value === '') {
|
|
@@ -21,7 +22,7 @@ class FrProgress {
|
|
|
21
22
|
if (value === null) {
|
|
22
23
|
return 0;
|
|
23
24
|
}
|
|
24
|
-
return
|
|
25
|
+
return clampNumber(value, 0, this.max());
|
|
25
26
|
}, ...(ngDevMode ? [{ debugName: "normalizedValue" }] : /* istanbul ignore next */ []));
|
|
26
27
|
percentage = computed(() => (this.normalizedValue() / this.max()) * 100, ...(ngDevMode ? [{ debugName: "percentage" }] : /* istanbul ignore next */ []));
|
|
27
28
|
state = computed(() => {
|