@frame-ui-ng/components 0.2.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 +20 -4
- package/button-group/src/styles/button-group.css +6 -0
- package/dropdown-menu/src/styles/_vars.css +1 -1
- package/dropdown-menu/src/styles/dropdown-menu-item.css +87 -87
- package/fesm2022/frame-ui-ng-components-calendar.mjs +369 -263
- package/fesm2022/frame-ui-ng-components-calendar.mjs.map +1 -1
- 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-command.mjs +1 -1
- package/fesm2022/frame-ui-ng-components-command.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-date-picker.mjs +232 -226
- package/fesm2022/frame-ui-ng-components-date-picker.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs +45 -22
- 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-input.mjs +6 -3
- package/fesm2022/frame-ui-ng-components-input.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-select.mjs +6 -3
- package/fesm2022/frame-ui-ng-components-select.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 +59 -10
- 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 +307 -254
- 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 +1047 -806
- package/fesm2022/frame-ui-ng-components.mjs.map +1 -1
- package/input/src/styles/input-group.css +50 -0
- package/item/src/styles/item.css +188 -187
- package/modal/src/styles/modal.css +10 -1
- package/package.json +10 -2
- package/select/src/styles/select-trigger.css +7 -36
- package/sidebar/src/styles/sidebar.css +10 -4
- package/src/styles/blueprint.css +102 -11
- package/src/styles/components.css +4 -4
- package/styles/blueprint.css +102 -11
- package/styles/components.css +4 -4
- package/styles.css +4 -4
- package/tooltip/src/styles/tooltip.css +7 -13
- package/types/frame-ui-ng-components-calendar.d.ts +14 -0
- 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-context-menu.d.ts +2 -2
- package/types/frame-ui-ng-components-date-picker.d.ts +3 -1
- package/types/frame-ui-ng-components-dropdown-menu.d.ts +3 -3
- package/types/frame-ui-ng-components-input-otp.d.ts +1 -1
- package/types/frame-ui-ng-components-input.d.ts +6 -3
- package/types/frame-ui-ng-components-modal.d.ts +18 -7
- package/types/frame-ui-ng-components-select.d.ts +6 -3
- package/types/frame-ui-ng-components-sheet.d.ts +2 -0
- package/types/frame-ui-ng-components-sidebar.d.ts +8 -1
- package/types/frame-ui-ng-components-tooltip.d.ts +48 -73
- package/types/frame-ui-ng-components-utils.d.ts +5 -0
- package/types/frame-ui-ng-components.d.ts +87 -45
|
@@ -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":"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"}
|
|
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(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame-ui-ng-components-progress.mjs","sources":["../../../projects/components/progress/src/progress.ts","../../../projects/components/progress/progress.module.ts","../../../projects/components/progress/frame-ui-ng-components-progress.ts"],"sourcesContent":["import { Directive, computed, input } from '@angular/core';\n\nfunction coerceProgressValue(value: unknown): number | null {\n if (value === null || value === undefined || value === '') {\n return null;\n }\n\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : null;\n}\n\nfunction coerceProgressMax(value: unknown): number {\n const parsed = Number(value);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : 100;\n}\n\n@Directive({\n selector: '[frProgress], frame-progress',\n exportAs: 'frProgress',\n host: {\n class: 'frame-progress',\n role: 'progressbar',\n '[attr.aria-valuemin]': 'isIndeterminate() ? null : 0',\n '[attr.aria-valuemax]': 'isIndeterminate() ? null : max()',\n '[attr.aria-valuenow]': 'isIndeterminate() ? null : normalizedValue()',\n '[attr.data-state]': 'state()',\n '[attr.data-value]': 'isIndeterminate() ? null : normalizedValue()',\n '[attr.data-max]': 'isIndeterminate() ? null : max()',\n '[style.--frame-progress-value]': 'isIndeterminate() ? null : normalizedValue()',\n '[style.--frame-progress-max]': 'isIndeterminate() ? null : max()',\n '[style.--frame-progress-percent]': 'isIndeterminate() ? null : percentage() + \"%\"',\n },\n})\nexport class FrProgress {\n readonly value = input<number | null, unknown>(0, { transform: coerceProgressValue });\n readonly max = input<number, unknown>(100, { transform: coerceProgressMax });\n\n readonly isIndeterminate = computed(() => this.value() === null);\n\n readonly normalizedValue = computed(() => {\n const value = this.value();\n\n if (value === null) {\n return 0;\n }\n\n return
|
|
1
|
+
{"version":3,"file":"frame-ui-ng-components-progress.mjs","sources":["../../../projects/components/progress/src/progress.ts","../../../projects/components/progress/progress.module.ts","../../../projects/components/progress/frame-ui-ng-components-progress.ts"],"sourcesContent":["import { Directive, computed, input } from '@angular/core';\r\nimport { clampNumber } from '@frame-ui-ng/components/utils';\r\n\r\nfunction coerceProgressValue(value: unknown): number | null {\r\n if (value === null || value === undefined || value === '') {\r\n return null;\r\n }\r\n\r\n const parsed = Number(value);\r\n return Number.isFinite(parsed) ? parsed : null;\r\n}\r\n\r\nfunction coerceProgressMax(value: unknown): number {\r\n const parsed = Number(value);\r\n return Number.isFinite(parsed) && parsed > 0 ? parsed : 100;\r\n}\r\n\r\n@Directive({\r\n selector: '[frProgress], frame-progress',\r\n exportAs: 'frProgress',\r\n host: {\r\n class: 'frame-progress',\r\n role: 'progressbar',\r\n '[attr.aria-valuemin]': 'isIndeterminate() ? null : 0',\r\n '[attr.aria-valuemax]': 'isIndeterminate() ? null : max()',\r\n '[attr.aria-valuenow]': 'isIndeterminate() ? null : normalizedValue()',\r\n '[attr.data-state]': 'state()',\r\n '[attr.data-value]': 'isIndeterminate() ? null : normalizedValue()',\r\n '[attr.data-max]': 'isIndeterminate() ? null : max()',\r\n '[style.--frame-progress-value]': 'isIndeterminate() ? null : normalizedValue()',\r\n '[style.--frame-progress-max]': 'isIndeterminate() ? null : max()',\r\n '[style.--frame-progress-percent]': 'isIndeterminate() ? null : percentage() + \"%\"',\r\n },\r\n})\r\nexport class FrProgress {\r\n readonly value = input<number | null, unknown>(0, { transform: coerceProgressValue });\r\n readonly max = input<number, unknown>(100, { transform: coerceProgressMax });\r\n\r\n readonly isIndeterminate = computed(() => this.value() === null);\r\n\r\n readonly normalizedValue = computed(() => {\r\n const value = this.value();\r\n\r\n if (value === null) {\r\n return 0;\r\n }\r\n\r\n return clampNumber(value, 0, this.max());\r\n });\r\n\r\n readonly percentage = computed(() => (this.normalizedValue() / this.max()) * 100);\r\n\r\n readonly state = computed(() => {\r\n if (this.isIndeterminate()) {\r\n return 'indeterminate';\r\n }\r\n\r\n return this.normalizedValue() >= this.max() ? 'complete' : 'loading';\r\n });\r\n}\r\n\r\n@Directive({\r\n selector: '[frProgressIndicator], frame-progress-indicator',\r\n host: {\r\n class: 'frame-progress__indicator',\r\n },\r\n})\r\nexport class FrProgressIndicator {}\r\n","import { NgModule } from '@angular/core';\nimport {\n FrProgress,\n FrProgressIndicator,\n} from './src/progress';\n\n@NgModule({\n imports: [\n FrProgress,\n FrProgressIndicator,\n ],\n exports: [\n FrProgress,\n FrProgressIndicator,\n ],\n})\nexport class FrProgressModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, ElementRef, input, booleanAttribute, output, Directive,
|
|
2
|
+
import { inject, ElementRef, input, booleanAttribute, output, Directive, NgModule } from '@angular/core';
|
|
3
|
+
import { clampNumber, coerceNumber } from '@frame-ui-ng/components/utils';
|
|
3
4
|
|
|
4
5
|
const FR_RESIZABLE_ORIENTATIONS = ['horizontal', 'vertical'];
|
|
5
6
|
let nextResizableId = 0;
|
|
6
|
-
function coerceSize(value, fallback) {
|
|
7
|
-
const parsed = Number(value);
|
|
8
|
-
return Number.isFinite(parsed) ? parsed : fallback;
|
|
9
|
-
}
|
|
10
|
-
function clampSize(value, min, max) {
|
|
11
|
-
return Math.min(Math.max(value, min), max);
|
|
12
|
-
}
|
|
13
7
|
class FrResizablePanelGroup {
|
|
14
8
|
elementRef = inject((ElementRef));
|
|
15
9
|
groupId = `frame-resizable-${++nextResizableId}`;
|
|
@@ -49,7 +43,7 @@ class FrResizablePanelGroup {
|
|
|
49
43
|
panel.style.flexGrow = '0';
|
|
50
44
|
panel.style.flexShrink = '0';
|
|
51
45
|
if (!panel.style.flexBasis) {
|
|
52
|
-
this.applyPanelSize(panel,
|
|
46
|
+
this.applyPanelSize(panel, clampNumber(this.defaultSize(panel) ?? fallbackSize, this.minSize(panel), this.maxSize(panel)));
|
|
53
47
|
}
|
|
54
48
|
else {
|
|
55
49
|
this.applyPanelSize(panel, this.panelSize(panel) ?? 0);
|
|
@@ -139,8 +133,8 @@ class FrResizablePanelGroup {
|
|
|
139
133
|
resizePair(previousPanel, nextPanel, pairTotal, requestedPreviousSize) {
|
|
140
134
|
const previousMin = this.minSize(previousPanel);
|
|
141
135
|
const previousMax = Math.min(this.maxSize(previousPanel), pairTotal - this.minSize(nextPanel));
|
|
142
|
-
const previousSize =
|
|
143
|
-
const nextSize =
|
|
136
|
+
const previousSize = clampNumber(requestedPreviousSize, previousMin, previousMax);
|
|
137
|
+
const nextSize = clampNumber(pairTotal - previousSize, this.minSize(nextPanel), this.maxSize(nextPanel));
|
|
144
138
|
this.applyPanelSize(previousPanel, previousSize);
|
|
145
139
|
this.applyPanelSize(nextPanel, nextSize);
|
|
146
140
|
this.updateHandleMetadata();
|
|
@@ -199,16 +193,16 @@ class FrResizablePanelGroup {
|
|
|
199
193
|
}
|
|
200
194
|
defaultSize(panel) {
|
|
201
195
|
const value = panel.getAttribute('data-default-size');
|
|
202
|
-
return value === null ? null :
|
|
196
|
+
return value === null ? null : coerceNumber(value, 0);
|
|
203
197
|
}
|
|
204
198
|
minSize(panel) {
|
|
205
|
-
return
|
|
199
|
+
return coerceNumber(panel.getAttribute('data-min-size'), 0);
|
|
206
200
|
}
|
|
207
201
|
maxSize(panel) {
|
|
208
|
-
return
|
|
202
|
+
return coerceNumber(panel.getAttribute('data-max-size'), 100);
|
|
209
203
|
}
|
|
210
204
|
collapsedSize(panel) {
|
|
211
|
-
return
|
|
205
|
+
return coerceNumber(panel.getAttribute('data-collapsed-size'), 0);
|
|
212
206
|
}
|
|
213
207
|
collapsible(panel) {
|
|
214
208
|
return panel.hasAttribute('data-collapsible');
|
|
@@ -229,11 +223,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
229
223
|
}]
|
|
230
224
|
}], propDecorators: { orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], layoutChange: [{ type: i0.Output, args: ["layoutChange"] }] } });
|
|
231
225
|
class FrResizablePanel {
|
|
232
|
-
defaultSize = input(0, { ...(ngDevMode ? { debugName: "defaultSize" } : /* istanbul ignore next */ {}), transform: (value) =>
|
|
233
|
-
minSize = input(0, { ...(ngDevMode ? { debugName: "minSize" } : /* istanbul ignore next */ {}), transform: (value) =>
|
|
234
|
-
maxSize = input(100, { ...(ngDevMode ? { debugName: "maxSize" } : /* istanbul ignore next */ {}), transform: (value) =>
|
|
226
|
+
defaultSize = input(0, { ...(ngDevMode ? { debugName: "defaultSize" } : /* istanbul ignore next */ {}), transform: (value) => coerceNumber(value, 0) });
|
|
227
|
+
minSize = input(0, { ...(ngDevMode ? { debugName: "minSize" } : /* istanbul ignore next */ {}), transform: (value) => coerceNumber(value, 0) });
|
|
228
|
+
maxSize = input(100, { ...(ngDevMode ? { debugName: "maxSize" } : /* istanbul ignore next */ {}), transform: (value) => coerceNumber(value, 100) });
|
|
235
229
|
collapsible = input(false, { ...(ngDevMode ? { debugName: "collapsible" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
236
|
-
collapsedSize = input(0, { ...(ngDevMode ? { debugName: "collapsedSize" } : /* istanbul ignore next */ {}), transform: (value) =>
|
|
230
|
+
collapsedSize = input(0, { ...(ngDevMode ? { debugName: "collapsedSize" } : /* istanbul ignore next */ {}), transform: (value) => coerceNumber(value, 0) });
|
|
237
231
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrResizablePanel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
238
232
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrResizablePanel, isStandalone: true, selector: "[frResizablePanel], frame-resizable-panel", inputs: { defaultSize: { classPropertyName: "defaultSize", publicName: "defaultSize", isSignal: true, isRequired: false, transformFunction: null }, minSize: { classPropertyName: "minSize", publicName: "minSize", isSignal: true, isRequired: false, transformFunction: null }, maxSize: { classPropertyName: "maxSize", publicName: "maxSize", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, collapsedSize: { classPropertyName: "collapsedSize", publicName: "collapsedSize", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-default-size": "defaultSize()", "attr.data-min-size": "minSize()", "attr.data-max-size": "maxSize()", "attr.data-collapsible": "collapsible() ? \"\" : null", "attr.data-collapsed-size": "collapsedSize()" }, classAttribute: "frame-resizable__panel" }, ngImport: i0 });
|
|
239
233
|
}
|
|
@@ -282,15 +276,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
282
276
|
'[attr.data-orientation]': 'group.orientation()',
|
|
283
277
|
'[attr.data-handle]': 'withHandle() ? "" : null',
|
|
284
278
|
'[attr.data-disabled]': 'group.disabled() ? "" : null',
|
|
279
|
+
'(pointerdown)': 'onPointerDown($event)',
|
|
280
|
+
'(keydown)': 'onKeydown($event)',
|
|
285
281
|
},
|
|
286
282
|
}]
|
|
287
|
-
}], propDecorators: { withHandle: [{ type: i0.Input, args: [{ isSignal: true, alias: "withHandle", required: false }] }]
|
|
288
|
-
type: HostListener,
|
|
289
|
-
args: ['pointerdown', ['$event']]
|
|
290
|
-
}], onKeydown: [{
|
|
291
|
-
type: HostListener,
|
|
292
|
-
args: ['keydown', ['$event']]
|
|
293
|
-
}] } });
|
|
283
|
+
}], propDecorators: { withHandle: [{ type: i0.Input, args: [{ isSignal: true, alias: "withHandle", required: false }] }] } });
|
|
294
284
|
|
|
295
285
|
class FrResizableModule {
|
|
296
286
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrResizableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|