@tailng-ui/primitives 0.43.0 → 0.45.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/package.json +2 -2
- package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts +1 -0
- package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts.map +1 -1
- package/src/lib/form/_shared/select/tng-select.overlay.shared.js +8 -1
- package/src/lib/form/_shared/select/tng-select.overlay.shared.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts +1 -0
- package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.overlay.js +25 -5
- package/src/lib/form/autocomplete/tng-autocomplete.overlay.js.map +1 -1
- package/src/lib/form/datepicker/tng-datepicker.overlay.d.ts +2 -1
- package/src/lib/form/datepicker/tng-datepicker.overlay.d.ts.map +1 -1
- package/src/lib/form/datepicker/tng-datepicker.overlay.js +13 -5
- package/src/lib/form/datepicker/tng-datepicker.overlay.js.map +1 -1
- package/src/lib/form/index.d.ts +0 -1
- package/src/lib/form/index.d.ts.map +1 -1
- package/src/lib/form/index.js +0 -1
- package/src/lib/form/index.js.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.d.ts +1 -0
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.d.ts.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js +8 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js.map +1 -1
- package/src/lib/layout/index.d.ts +1 -2
- package/src/lib/layout/index.d.ts.map +1 -1
- package/src/lib/layout/index.js +1 -2
- package/src/lib/layout/index.js.map +1 -1
- package/src/lib/layout/stepper/__tests__/tng-stepper.test-harness.d.ts +44 -0
- package/src/lib/layout/stepper/__tests__/tng-stepper.test-harness.d.ts.map +1 -0
- package/src/lib/layout/stepper/__tests__/tng-stepper.test-harness.js +149 -0
- package/src/lib/layout/stepper/__tests__/tng-stepper.test-harness.js.map +1 -0
- package/src/lib/layout/stepper/index.d.ts +2 -0
- package/src/lib/layout/stepper/index.d.ts.map +1 -0
- package/src/lib/layout/stepper/index.js +2 -0
- package/src/lib/layout/stepper/index.js.map +1 -0
- package/src/lib/layout/stepper/tng-stepper.d.ts +198 -2
- package/src/lib/layout/stepper/tng-stepper.d.ts.map +1 -1
- package/src/lib/layout/stepper/tng-stepper.js +898 -2
- package/src/lib/layout/stepper/tng-stepper.js.map +1 -1
- package/src/lib/navigation/index.d.ts +1 -3
- package/src/lib/navigation/index.d.ts.map +1 -1
- package/src/lib/navigation/index.js +1 -3
- package/src/lib/navigation/index.js.map +1 -1
- package/src/lib/navigation/pagination/__tests__/tng-pagination.test-harness.d.ts +44 -0
- package/src/lib/navigation/pagination/__tests__/tng-pagination.test-harness.d.ts.map +1 -0
- package/src/lib/navigation/pagination/__tests__/tng-pagination.test-harness.js +194 -0
- package/src/lib/navigation/pagination/__tests__/tng-pagination.test-harness.js.map +1 -0
- package/src/lib/navigation/pagination/index.d.ts +2 -0
- package/src/lib/navigation/pagination/index.d.ts.map +1 -0
- package/src/lib/navigation/pagination/index.js +2 -0
- package/src/lib/navigation/pagination/index.js.map +1 -0
- package/src/lib/navigation/pagination/tng-pagination.d.ts +131 -0
- package/src/lib/navigation/pagination/tng-pagination.d.ts.map +1 -0
- package/src/lib/navigation/pagination/tng-pagination.js +437 -0
- package/src/lib/navigation/pagination/tng-pagination.js.map +1 -0
- package/src/lib/form/multiselect/tng-multiselect.d.ts +0 -7
- package/src/lib/form/multiselect/tng-multiselect.d.ts.map +0 -1
- package/src/lib/form/multiselect/tng-multiselect.js +0 -18
- package/src/lib/form/multiselect/tng-multiselect.js.map +0 -1
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts +0 -7
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts.map +0 -1
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js +0 -18
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js.map +0 -1
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts +0 -7
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts.map +0 -1
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js +0 -18
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js.map +0 -1
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts +0 -7
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts.map +0 -1
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.js +0 -18
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.js.map +0 -1
- package/src/lib/navigation/toolbar/tng-toolbar.d.ts +0 -7
- package/src/lib/navigation/toolbar/tng-toolbar.d.ts.map +0 -1
- package/src/lib/navigation/toolbar/tng-toolbar.js +0 -18
- package/src/lib/navigation/toolbar/tng-toolbar.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-stepper.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/stepper/tng-stepper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;;AAMvD,MAAM,OAAO,UAAU;IAEF,QAAQ,GAAG,SAAkB,CAAC;uGAFtC,UAAU;2FAAV,UAAU;;2FAAV,UAAU;kBAJtB,SAAS;mBAAC;oBACT,QAAQ,EAAE,cAAc;oBACxB,QAAQ,EAAE,YAAY;iBACvB;;sBAEE,WAAW;uBAAC,gBAAgB","sourcesContent":["import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[tngStepper]',\n exportAs: 'tngStepper',\n})\nexport class TngStepper {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'stepper' as const;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tng-stepper.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/stepper/tng-stepper.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DoCheck, OnDestroy, OnInit } from '@angular/core';\nimport {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n input,\n isDevMode,\n output,\n} from '@angular/core';\nimport { createTngIdFactory } from '@tailng-ui/cdk';\n\nexport type TngStepperOrientation = 'horizontal' | 'vertical';\nexport type TngStepperValue = string | number;\nexport type TngStepperDataState = 'completed' | 'current' | 'disabled' | 'error' | 'upcoming';\nexport type TngStepperActivationSource = 'keyboard' | 'pointer' | 'programmatic';\n\nexport type TngStepperValueChangeEvent = Readonly<{\n value: TngStepperValue;\n previousValue: TngStepperValue | null;\n trigger: TngStepperActivationSource;\n}>;\n\ntype TngStepperFocusMove = 'first' | 'last' | 'next' | 'prev';\n\nconst createStepperTriggerId = createTngIdFactory('tng-stepper-trigger');\nconst createStepperPanelId = createTngIdFactory('tng-stepper-panel');\nlet nextStepperItemRegistrationOrder = 0;\n\nfunction normalizeBooleanInput(value: unknown): boolean {\n if (typeof value === 'boolean') {\n return value;\n }\n\n if (typeof value === 'string') {\n const normalized = value.trim().toLowerCase();\n if (normalized === '' || normalized === 'true') {\n return true;\n }\n\n if (normalized === 'false') {\n return false;\n }\n }\n\n return false;\n}\n\nfunction normalizeOrientationInput(value: unknown): TngStepperOrientation {\n return value === 'vertical' ? 'vertical' : 'horizontal';\n}\n\nfunction normalizeOptionalValueInput(value: unknown): TngStepperValue | null | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n if (value === null) {\n return null;\n }\n\n if (typeof value === 'number' || typeof value === 'string') {\n return value;\n }\n\n return undefined;\n}\n\nfunction normalizeValueInput(value: unknown): TngStepperValue {\n if (typeof value === 'number' || typeof value === 'string') {\n return value;\n }\n\n return String(value);\n}\n\nfunction normalizeOptionalStringInput(value: unknown): string | null | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n if (value === null) {\n return null;\n }\n\n if (typeof value === 'string') {\n return value;\n }\n\n if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {\n return String(value);\n }\n\n return undefined;\n}\n\nfunction compareStepperItemsByDomPosition(a: TngStepperItem, b: TngStepperItem): number {\n const aElement = a.getHostElement();\n const bElement = b.getHostElement();\n\n if (aElement === bElement) {\n return a.getRegistrationOrder() - b.getRegistrationOrder();\n }\n\n const relativePosition = aElement.compareDocumentPosition(bElement);\n if (relativePosition & Node.DOCUMENT_POSITION_FOLLOWING) {\n return -1;\n }\n\n if (relativePosition & Node.DOCUMENT_POSITION_PRECEDING) {\n return 1;\n }\n\n return a.getRegistrationOrder() - b.getRegistrationOrder();\n}\n\nfunction valuesEqual(a: TngStepperValue | null, b: TngStepperValue | null): boolean {\n return a === b;\n}\n\n@Directive({\n selector: '[tngStepper]',\n exportAs: 'tngStepper',\n})\nexport class TngStepper implements DoCheck, OnDestroy {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly items = new Set<TngStepperItem>();\n private uncontrolledValue: TngStepperValue | null = null;\n private focusedValue: TngStepperValue | null = null;\n private lastSelectedValue: TngStepperValue | null = null;\n private lastSelectedIndex = -1;\n private initialized = false;\n private hasUserSelection = false;\n private hasExplicitFocus = false;\n private readonly duplicateWarnings = new Set<TngStepperValue>();\n\n public readonly value = input<TngStepperValue | null | undefined, unknown>(undefined, {\n transform: normalizeOptionalValueInput,\n });\n public readonly defaultValue = input<TngStepperValue | null | undefined, unknown>(undefined, {\n transform: normalizeOptionalValueInput,\n });\n public readonly orientation = input<TngStepperOrientation, unknown>('horizontal', {\n transform: normalizeOrientationInput,\n });\n public readonly linear = input<boolean, unknown>(false, {\n transform: normalizeBooleanInput,\n });\n public readonly loopFocus = input<boolean, unknown>(true, {\n transform: normalizeBooleanInput,\n });\n public readonly ariaLabel = input<string | null | undefined, unknown>(undefined, {\n transform: normalizeOptionalStringInput,\n });\n public readonly ariaLabelledby = input<string | null | undefined, unknown>(undefined, {\n transform: normalizeOptionalStringInput,\n });\n\n public readonly valueChange = output<TngStepperValue>();\n public readonly stepChange = output<TngStepperValueChangeEvent>();\n\n @HostBinding('attr.aria-label')\n protected get ariaLabelAttr(): string | null {\n return this.ariaLabel() ?? null;\n }\n\n @HostBinding('attr.aria-labelledby')\n protected get ariaLabelledbyAttr(): string | null {\n return this.ariaLabelledby() ?? null;\n }\n\n @HostBinding('attr.data-linear')\n protected get dataLinear(): '' | null {\n return this.linear() ? '' : null;\n }\n\n @HostBinding('attr.data-orientation')\n protected get dataOrientation(): TngStepperOrientation {\n return this.orientation();\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'stepper' as const;\n\n public ngDoCheck(): void {\n this.syncStateFromRegistry();\n }\n\n public ngOnDestroy(): void {\n this.items.clear();\n }\n\n public registerItem(item: TngStepperItem): void {\n this.items.add(item);\n this.syncStateFromRegistry();\n }\n\n public unregisterItem(item: TngStepperItem): void {\n const orderedItems = [...this.getOrderedItems()].sort(\n (a, b) => a.getLastKnownIndex() - b.getLastKnownIndex(),\n );\n const removedValue = item.getValue();\n const selectedValue = this.getEffectiveValue();\n const removedIndex = valuesEqual(selectedValue, removedValue) ? this.lastSelectedIndex : item.getLastKnownIndex();\n this.items.delete(item);\n\n if (valuesEqual(selectedValue, removedValue)) {\n this.applyLifecycleSelection(this.resolveNearestEnabledValue(orderedItems, removedIndex));\n }\n\n if (valuesEqual(this.focusedValue, removedValue)) {\n this.focusedValue = this.resolveNearestEnabledValue(orderedItems, removedIndex);\n this.hasExplicitFocus = false;\n }\n\n this.syncStateFromRegistry();\n }\n\n public notifyItemMutated(item: TngStepperItem): void {\n if (this.isItemSelected(item) && item.disabled()) {\n this.applyLifecycleSelection(this.resolveNeighborForItem(item));\n }\n\n if (valuesEqual(this.focusedValue, item.getValue()) && item.disabled()) {\n this.focusedValue = this.resolveNeighborForItem(item);\n this.hasExplicitFocus = false;\n }\n\n this.syncStateFromRegistry();\n }\n\n public select(value: TngStepperValue): void {\n const item = this.findItemByValue(value);\n if (item === null) {\n return;\n }\n\n this.requestActivation(item, 'programmatic');\n }\n\n public focus(value: TngStepperValue): void {\n const item = this.findEnabledItemByValue(value);\n if (item === null) {\n return;\n }\n\n this.focusItem(item);\n }\n\n public next(): void {\n this.moveFocusFromCurrent('next');\n }\n\n public prev(): void {\n this.moveFocusFromCurrent('prev');\n }\n\n public getItemIndex(item: TngStepperItem): number {\n return this.getOrderedItems().indexOf(item);\n }\n\n public getItemCount(): number {\n return this.getOrderedItems().length;\n }\n\n public isItemSelected(item: TngStepperItem): boolean {\n return valuesEqual(this.getEffectiveValue(), item.getValue());\n }\n\n public isItemActivatable(item: TngStepperItem): boolean {\n if (item.disabled()) {\n return false;\n }\n\n if (!this.linear()) {\n return true;\n }\n\n if (this.isItemSelected(item) || item.completed()) {\n return true;\n }\n\n const selectedIndex = this.getSelectedIndex();\n const itemIndex = this.getItemIndex(item);\n return selectedIndex >= 0 && itemIndex >= 0 && itemIndex < selectedIndex;\n }\n\n public getItemState(item: TngStepperItem): TngStepperDataState {\n if (item.disabled()) {\n return 'disabled';\n }\n\n if (item.error()) {\n return 'error';\n }\n\n if (this.isItemSelected(item)) {\n return 'current';\n }\n\n if (item.completed()) {\n return 'completed';\n }\n\n return 'upcoming';\n }\n\n public getTriggerTabIndex(item: TngStepperItem): string {\n if (item.disabled()) {\n return '-1';\n }\n\n const tabStopValue = this.resolveCurrentTabStopValue();\n if (tabStopValue === null) {\n return '-1';\n }\n\n return valuesEqual(tabStopValue, item.getValue()) ? '0' : '-1';\n }\n\n public onTriggerFocused(item: TngStepperItem): void {\n if (!item.disabled()) {\n this.focusedValue = item.getValue();\n this.hasExplicitFocus = true;\n }\n }\n\n public onTriggerClicked(item: TngStepperItem, event: MouseEvent): void {\n if (!this.isItemActivatable(item)) {\n event.preventDefault();\n return;\n }\n\n this.requestActivation(item, 'pointer');\n }\n\n public onTriggerKeydown(item: TngStepperItem, event: KeyboardEvent): void {\n if (item.disabled() || event.altKey || event.ctrlKey || event.metaKey) {\n return;\n }\n\n if (this.handleFocusKey(item, event)) {\n return;\n }\n\n if (!this.isActivationKey(event.key)) {\n return;\n }\n\n event.preventDefault();\n this.requestActivation(item, 'keyboard');\n }\n\n private requestActivation(item: TngStepperItem, trigger: TngStepperActivationSource): void {\n if (!this.isItemActivatable(item)) {\n return;\n }\n\n const nextValue = item.getValue();\n const previousValue = this.getEffectiveValue();\n if (valuesEqual(previousValue, nextValue)) {\n return;\n }\n\n if (!this.isControlled()) {\n this.uncontrolledValue = nextValue;\n this.hasUserSelection = true;\n }\n\n this.focusedValue = nextValue;\n this.valueChange.emit(nextValue);\n this.stepChange.emit({ value: nextValue, previousValue, trigger });\n this.syncStateFromRegistry();\n }\n\n private syncStateFromRegistry(): void {\n this.warnForDuplicateValues();\n\n const enabledItems = this.getEnabledItems();\n if (enabledItems.length === 0) {\n this.clearSelectionState();\n return;\n }\n\n if (!this.initialized) {\n this.initializeSelection(enabledItems);\n }\n\n this.restoreRemovedDefaultSelectionIfNeeded();\n this.normalizeSelectionForCurrentItems(enabledItems);\n this.normalizeFocusForCurrentItems(enabledItems);\n this.syncDomAttributes();\n }\n\n private warnForDuplicateValues(): void {\n if (!isDevMode()) {\n return;\n }\n\n const seen = new Set<TngStepperValue>();\n for (const item of this.getOrderedItems()) {\n const value = item.getValue();\n if (!seen.has(value)) {\n seen.add(value);\n continue;\n }\n\n if (this.duplicateWarnings.has(value)) {\n continue;\n }\n\n this.duplicateWarnings.add(value);\n // eslint-disable-next-line no-console\n console.warn(`TngStepper: duplicate step value \"${String(value)}\" registered.`);\n }\n }\n\n private clearSelectionState(): void {\n this.uncontrolledValue = null;\n this.focusedValue = null;\n this.hasExplicitFocus = false;\n this.initialized = true;\n this.syncDomAttributes();\n }\n\n private initializeSelection(enabledItems: readonly TngStepperItem[]): void {\n this.initialized = true;\n if (this.isControlled()) {\n return;\n }\n\n const defaultValue = this.defaultValue();\n this.uncontrolledValue =\n defaultValue !== undefined && defaultValue !== null && this.findEnabledItemByValue(defaultValue) !== null\n ? defaultValue\n : (enabledItems[0]?.getValue() ?? null);\n }\n\n private normalizeSelectionForCurrentItems(enabledItems: readonly TngStepperItem[]): void {\n const selectedItem = this.findEnabledItemByValue(this.getEffectiveValue());\n if (selectedItem === null) {\n if (!this.isControlled()) {\n this.uncontrolledValue = this.resolveNearestEnabledValueForMissingSelection();\n }\n return;\n }\n\n this.restoreDefaultSelectionIfNeeded(enabledItems);\n }\n\n private restoreDefaultSelectionIfNeeded(enabledItems: readonly TngStepperItem[]): void {\n if (this.isControlled() || this.hasUserSelection) {\n return;\n }\n\n const defaultValue = this.defaultValue();\n if (defaultValue === undefined || defaultValue === null) {\n return;\n }\n\n if (enabledItems.some((item) => valuesEqual(item.getValue(), defaultValue))) {\n this.uncontrolledValue = defaultValue;\n }\n }\n\n private restoreRemovedDefaultSelectionIfNeeded(): void {\n if (this.isControlled() || this.hasUserSelection) {\n return;\n }\n\n const defaultValue = this.defaultValue();\n if (\n defaultValue === undefined ||\n defaultValue === null ||\n !valuesEqual(this.lastSelectedValue, defaultValue) ||\n this.findItemByValue(defaultValue) !== null\n ) {\n return;\n }\n\n const orderedItems = [...this.getOrderedItems()].sort(\n (a, b) => a.getLastKnownIndex() - b.getLastKnownIndex(),\n );\n this.uncontrolledValue = this.resolveNearestEnabledValue(orderedItems, this.lastSelectedIndex);\n }\n\n private normalizeFocusForCurrentItems(enabledItems: readonly TngStepperItem[]): void {\n if (\n this.hasExplicitFocus &&\n this.focusedValue !== null &&\n this.findEnabledItemByValue(this.focusedValue) !== null\n ) {\n return;\n }\n\n this.focusedValue = this.getEffectiveValue() ?? enabledItems[0]?.getValue() ?? null;\n }\n\n private syncDomAttributes(): void {\n const orderedItems = this.getOrderedItems();\n const itemCount = orderedItems.length;\n this.lastSelectedIndex = -1;\n this.lastSelectedValue = null;\n for (const [index, item] of orderedItems.entries()) {\n if (this.isItemSelected(item)) {\n this.lastSelectedIndex = index;\n this.lastSelectedValue = item.getValue();\n }\n item.syncDomAttributes({\n activatable: this.isItemActivatable(item),\n current: this.isItemSelected(item),\n index,\n state: this.getItemState(item),\n tabIndex: this.getTriggerTabIndex(item),\n total: itemCount,\n });\n }\n }\n\n private applyLifecycleSelection(value: TngStepperValue | null): void {\n if (!this.isControlled()) {\n this.uncontrolledValue = value;\n }\n }\n\n private handleFocusKey(item: TngStepperItem, event: KeyboardEvent): boolean {\n const move = this.resolveFocusMove(event.key);\n if (move === null) {\n return false;\n }\n\n if (this.moveFocus(item, move)) {\n event.preventDefault();\n }\n\n return true;\n }\n\n private isActivationKey(key: string): boolean {\n return key === 'Enter' || key === ' ' || key === 'Spacebar';\n }\n\n private resolveFocusMove(key: string): TngStepperFocusMove | null {\n if (key === 'Home') {\n return 'first';\n }\n\n if (key === 'End') {\n return 'last';\n }\n\n if (this.orientation() === 'vertical') {\n return this.resolveVerticalFocusMove(key);\n }\n\n return this.resolveHorizontalFocusMove(key);\n }\n\n private resolveVerticalFocusMove(key: string): TngStepperFocusMove | null {\n if (key === 'ArrowDown') {\n return 'next';\n }\n\n if (key === 'ArrowUp') {\n return 'prev';\n }\n\n return null;\n }\n\n private resolveHorizontalFocusMove(key: string): TngStepperFocusMove | null {\n if (key !== 'ArrowLeft' && key !== 'ArrowRight') {\n return null;\n }\n\n const isRtl = this.resolveDirection() === 'rtl';\n const moveNext = key === (isRtl ? 'ArrowLeft' : 'ArrowRight');\n return moveNext ? 'next' : 'prev';\n }\n\n private moveFocusFromCurrent(move: 'next' | 'prev'): void {\n const current = this.findEnabledItemByValue(this.resolveCurrentTabStopValue()) ?? this.getEnabledItems()[0] ?? null;\n if (current !== null) {\n this.moveFocus(current, move);\n }\n }\n\n private moveFocus(source: TngStepperItem, move: TngStepperFocusMove): boolean {\n const enabledItems = this.getEnabledItems();\n if (enabledItems.length === 0) {\n return false;\n }\n\n const currentIndex = enabledItems.indexOf(source);\n if (currentIndex < 0) {\n return false;\n }\n\n const nextIndex = this.resolveFocusTargetIndex(enabledItems.length, currentIndex, move);\n if (nextIndex === null) {\n return false;\n }\n\n const target = enabledItems[nextIndex] ?? null;\n if (target === null || target === source) {\n return false;\n }\n\n this.focusItem(target);\n return true;\n }\n\n private resolveFocusTargetIndex(\n itemCount: number,\n currentIndex: number,\n move: TngStepperFocusMove,\n ): number | null {\n if (move === 'first') {\n return 0;\n }\n\n if (move === 'last') {\n return itemCount - 1;\n }\n\n if (move === 'next') {\n return this.resolveRelativeFocusTargetIndex(itemCount, currentIndex, 1);\n }\n\n return this.resolveRelativeFocusTargetIndex(itemCount, currentIndex, -1);\n }\n\n private resolveRelativeFocusTargetIndex(\n itemCount: number,\n currentIndex: number,\n delta: 1 | -1,\n ): number | null {\n const nextIndex = currentIndex + delta;\n if (nextIndex >= 0 && nextIndex < itemCount) {\n return nextIndex;\n }\n\n if (!this.loopFocus()) {\n return null;\n }\n\n return delta > 0 ? 0 : itemCount - 1;\n }\n\n private focusItem(item: TngStepperItem): void {\n this.focusedValue = item.getValue();\n this.hasExplicitFocus = true;\n item.focusTrigger();\n }\n\n private getEffectiveValue(): TngStepperValue | null {\n if (this.isControlled()) {\n return this.getControlledEffectiveValue();\n }\n\n return this.getUncontrolledEffectiveValue();\n }\n\n private getControlledEffectiveValue(): TngStepperValue | null {\n const controlledValue = this.value();\n if (controlledValue === undefined || controlledValue === null) {\n return null;\n }\n\n const controlledItem = this.findItemByValue(controlledValue);\n if (controlledItem === null) {\n return this.getEnabledItems()[0]?.getValue() ?? null;\n }\n\n if (controlledItem.disabled()) {\n return this.resolveNeighborForItem(controlledItem);\n }\n\n return controlledValue;\n }\n\n private getUncontrolledEffectiveValue(): TngStepperValue | null {\n if (!this.hasUserSelection) {\n const defaultValue = this.defaultValue();\n if (defaultValue !== undefined && defaultValue !== null && this.findEnabledItemByValue(defaultValue) !== null) {\n return defaultValue;\n }\n }\n\n return this.uncontrolledValue;\n }\n\n private isControlled(): boolean {\n return this.value() !== undefined;\n }\n\n private getSelectedIndex(): number {\n const value = this.getEffectiveValue();\n if (value === null) {\n return -1;\n }\n\n return this.getOrderedItems().findIndex((item) => valuesEqual(item.getValue(), value));\n }\n\n private resolveCurrentTabStopValue(): TngStepperValue | null {\n if (this.focusedValue !== null && this.findEnabledItemByValue(this.focusedValue) !== null) {\n return this.focusedValue;\n }\n\n const selectedValue = this.getEffectiveValue();\n if (selectedValue !== null && this.findEnabledItemByValue(selectedValue) !== null) {\n return selectedValue;\n }\n\n return this.getEnabledItems()[0]?.getValue() ?? null;\n }\n\n private resolveNeighborForItem(item: TngStepperItem): TngStepperValue | null {\n const orderedItems = this.getOrderedItems();\n return this.resolveNearestEnabledValue(orderedItems, orderedItems.indexOf(item));\n }\n\n private resolveNearestEnabledValue(\n orderedItems: readonly TngStepperItem[],\n index: number,\n ): TngStepperValue | null {\n for (let i = index - 1; i >= 0; i -= 1) {\n const item = orderedItems[i];\n if (item !== undefined && !item.disabled()) {\n return item.getValue();\n }\n }\n\n for (let i = index + 1; i < orderedItems.length; i += 1) {\n const item = orderedItems[i];\n if (item !== undefined && !item.disabled()) {\n return item.getValue();\n }\n }\n\n return null;\n }\n\n private resolveNearestEnabledValueForMissingSelection(): TngStepperValue | null {\n const controlledValue = this.getEffectiveValue();\n const orderedItems = this.getOrderedItems();\n const selectedIndex = orderedItems.findIndex((item) => valuesEqual(item.getValue(), controlledValue));\n if (selectedIndex >= 0) {\n return this.resolveNearestEnabledValue(orderedItems, selectedIndex);\n }\n\n return this.getEnabledItems()[0]?.getValue() ?? null;\n }\n\n private findItemByValue(value: TngStepperValue | null): TngStepperItem | null {\n if (value === null) {\n return null;\n }\n\n return this.getOrderedItems().find((item) => valuesEqual(item.getValue(), value)) ?? null;\n }\n\n private findEnabledItemByValue(value: TngStepperValue | null): TngStepperItem | null {\n const item = this.findItemByValue(value);\n return item !== null && !item.disabled() ? item : null;\n }\n\n private getEnabledItems(): readonly TngStepperItem[] {\n return this.getOrderedItems().filter((item) => !item.disabled());\n }\n\n private getOrderedItems(): readonly TngStepperItem[] {\n return Array.from(this.items).sort(compareStepperItemsByDomPosition);\n }\n\n private resolveDirection(): 'ltr' | 'rtl' {\n const host = this.hostRef.nativeElement;\n return host.closest('[dir=\"rtl\"]') !== null ? 'rtl' : 'ltr';\n }\n}\n\n@Directive({\n selector: '[tngStepperItem]',\n exportAs: 'tngStepperItem',\n})\nexport class TngStepperItem implements DoCheck, OnDestroy, OnInit {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly stepper = inject(TngStepper);\n private readonly registrationOrder = nextStepperItemRegistrationOrder++;\n private lastKnownIndex = -1;\n private trigger: TngStepperTrigger | null = null;\n private readonly connectors = new Set<TngStepperConnector>();\n private readonly panels = new Set<TngStepperPanel>();\n private readonly triggerId = createStepperTriggerId();\n\n public readonly value = input<TngStepperValue, unknown>(createStepperTriggerId(), {\n transform: normalizeValueInput,\n });\n public readonly completed = input<boolean, unknown>(false, {\n transform: normalizeBooleanInput,\n });\n public readonly optional = input<boolean, unknown>(false, {\n transform: normalizeBooleanInput,\n });\n public readonly disabled = input<boolean, unknown>(false, {\n transform: normalizeBooleanInput,\n });\n public readonly error = input<boolean, unknown>(false, {\n transform: normalizeBooleanInput,\n });\n public readonly label = input<string | null | undefined, unknown>(undefined, {\n transform: normalizeOptionalStringInput,\n });\n public readonly description = input<string | null | undefined, unknown>(undefined, {\n transform: normalizeOptionalStringInput,\n });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'stepper-item' as const;\n\n public ngOnInit(): void {\n this.stepper.registerItem(this);\n }\n\n public ngDoCheck(): void {\n this.stepper.notifyItemMutated(this);\n }\n\n public ngOnDestroy(): void {\n this.stepper.unregisterItem(this);\n }\n\n public registerTrigger(trigger: TngStepperTrigger): void {\n this.trigger = trigger;\n this.stepper.notifyItemMutated(this);\n }\n\n public unregisterTrigger(trigger: TngStepperTrigger): void {\n if (this.trigger === trigger) {\n this.trigger = null;\n this.stepper.notifyItemMutated(this);\n }\n }\n\n public registerConnector(connector: TngStepperConnector): void {\n this.connectors.add(connector);\n this.stepper.notifyItemMutated(this);\n }\n\n public unregisterConnector(connector: TngStepperConnector): void {\n this.connectors.delete(connector);\n this.stepper.notifyItemMutated(this);\n }\n\n public registerPanel(panel: TngStepperPanel): void {\n this.panels.add(panel);\n this.stepper.notifyItemMutated(this);\n }\n\n public unregisterPanel(panel: TngStepperPanel): void {\n this.panels.delete(panel);\n this.stepper.notifyItemMutated(this);\n }\n\n public getValue(): TngStepperValue {\n return this.value();\n }\n\n public getHostElement(): HTMLElement {\n return this.hostRef.nativeElement;\n }\n\n public getRegistrationOrder(): number {\n return this.registrationOrder;\n }\n\n public getLastKnownIndex(): number {\n return this.lastKnownIndex;\n }\n\n public getTriggerId(): string {\n return this.trigger?.getId() ?? this.triggerId;\n }\n\n public getPanelId(): string | null {\n return Array.from(this.panels)[0]?.getId() ?? null;\n }\n\n public focusTrigger(): void {\n this.trigger?.focusSelf();\n }\n\n public syncDomAttributes(state: {\n readonly activatable: boolean;\n readonly current: boolean;\n readonly index: number;\n readonly state: TngStepperDataState;\n readonly tabIndex: string;\n readonly total: number;\n }): void {\n this.lastKnownIndex = state.index;\n const host = this.hostRef.nativeElement;\n host.setAttribute('data-state', state.state);\n host.setAttribute('data-step-index', String(state.index));\n this.setBooleanAttribute(host, 'data-optional', this.optional());\n\n this.trigger?.syncDomAttributes(state);\n for (const connector of this.connectors) {\n connector.syncDomAttributes(state.state);\n }\n for (const panel of this.panels) {\n panel.syncDomAttributes(state.current, this.getTriggerId());\n }\n }\n\n private setBooleanAttribute(element: HTMLElement, name: string, value: boolean): void {\n if (value) {\n element.setAttribute(name, '');\n } else {\n element.removeAttribute(name);\n }\n }\n}\n\n@Directive({\n selector: '[tngStepperTrigger]',\n exportAs: 'tngStepperTrigger',\n})\nexport class TngStepperTrigger implements OnDestroy, OnInit {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly item = inject(TngStepperItem);\n private readonly stepper = inject(TngStepper);\n private readonly id = createStepperTriggerId();\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'stepper-trigger' as const;\n\n @HostBinding('attr.id')\n protected get idAttr(): string {\n const explicitId = this.hostRef.nativeElement.getAttribute('id');\n return explicitId ?? this.id;\n }\n\n @HostBinding('attr.type')\n protected get typeAttr(): 'button' | null {\n return this.hostRef.nativeElement.tagName.toLowerCase() === 'button' ? 'button' : null;\n }\n\n public ngOnInit(): void {\n this.item.registerTrigger(this);\n }\n\n public ngOnDestroy(): void {\n this.item.unregisterTrigger(this);\n }\n\n public getId(): string {\n return this.idAttr;\n }\n\n public focusSelf(): void {\n this.hostRef.nativeElement.focus();\n }\n\n public syncDomAttributes(state: {\n readonly activatable: boolean;\n readonly current: boolean;\n readonly index: number;\n readonly state: TngStepperDataState;\n readonly tabIndex: string;\n readonly total: number;\n }): void {\n const host = this.hostRef.nativeElement;\n if (state.current) {\n host.setAttribute('aria-current', 'step');\n } else {\n host.removeAttribute('aria-current');\n }\n\n if (!state.activatable) {\n host.setAttribute('aria-disabled', 'true');\n } else {\n host.removeAttribute('aria-disabled');\n }\n\n host.setAttribute('aria-label', this.resolveAriaLabel(state.index, state.total));\n host.setAttribute('data-state', state.state);\n host.setAttribute('data-step-index', String(state.index));\n host.setAttribute('tabindex', state.tabIndex);\n if (this.item.optional()) {\n host.setAttribute('data-optional', '');\n } else {\n host.removeAttribute('data-optional');\n }\n\n const panelId = this.item.getPanelId();\n if (panelId !== null) {\n host.setAttribute('aria-controls', panelId);\n } else {\n host.removeAttribute('aria-controls');\n }\n }\n\n @HostListener('click', ['$event'])\n protected onClick(event: MouseEvent): void {\n this.stepper.onTriggerClicked(this.item, event);\n }\n\n @HostListener('focus')\n protected onFocus(): void {\n this.stepper.onTriggerFocused(this.item);\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: KeyboardEvent): void {\n this.stepper.onTriggerKeydown(this.item, event);\n }\n\n private resolveAriaLabel(index: number, total: number): string {\n const label = this.item.label() ?? this.hostRef.nativeElement.textContent?.trim() ?? 'Step';\n return [label, `Step ${index + 1} of ${total}`, this.resolveStateText()]\n .filter((part) => part.length > 0)\n .join(', ');\n }\n\n private resolveStateText(): string {\n if (this.item.error()) {\n return 'Error';\n }\n\n if (this.item.optional()) {\n return 'Optional';\n }\n\n if (this.item.completed()) {\n return 'Completed';\n }\n\n return '';\n }\n}\n\n@Directive({\n selector: '[tngStepperLabel]',\n exportAs: 'tngStepperLabel',\n})\nexport class TngStepperLabel {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'stepper-label' as const;\n}\n\n@Directive({\n selector: '[tngStepperDescription]',\n exportAs: 'tngStepperDescription',\n})\nexport class TngStepperDescription {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'stepper-description' as const;\n}\n\n@Directive({\n selector: '[tngStepperPanel]',\n exportAs: 'tngStepperPanel',\n})\nexport class TngStepperPanel implements OnDestroy {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly item = inject(TngStepperItem);\n private readonly panelId = createStepperPanelId();\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'stepper-panel' as const;\n\n @HostBinding('attr.id')\n protected get id(): string {\n return this.panelId;\n }\n\n public constructor() {\n this.item.registerPanel(this);\n }\n\n public ngOnDestroy(): void {\n this.item.unregisterPanel(this);\n }\n\n public getId(): string {\n return this.panelId;\n }\n\n public syncDomAttributes(current: boolean, triggerId: string): void {\n const host = this.hostRef.nativeElement;\n host.setAttribute('aria-labelledby', triggerId);\n host.setAttribute('data-state', current ? 'active' : 'inactive');\n if (current) {\n host.removeAttribute('hidden');\n } else {\n host.setAttribute('hidden', '');\n }\n }\n}\n\n@Directive({\n selector: '[tngStepperConnector]',\n exportAs: 'tngStepperConnector',\n})\nexport class TngStepperConnector implements OnDestroy {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly item = inject(TngStepperItem);\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'stepper-connector' as const;\n\n public constructor() {\n this.item.registerConnector(this);\n }\n\n public ngOnDestroy(): void {\n this.item.unregisterConnector(this);\n }\n\n public syncDomAttributes(state: TngStepperDataState): void {\n this.hostRef.nativeElement.setAttribute('data-state', state);\n }\n}\n"]}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
export * from './breadcrumb/tng-breadcrumb';
|
|
2
2
|
export * from './context-menu/tng-context-menu';
|
|
3
|
-
export * from './dropdown-menu/tng-dropdown-menu';
|
|
4
3
|
export * from './menu/tng-menu';
|
|
5
4
|
export * from './menubar/tng-menubar';
|
|
6
|
-
export * from './
|
|
5
|
+
export * from './pagination';
|
|
7
6
|
export * from './tabs/tng-tabs';
|
|
8
|
-
export * from './toolbar/tng-toolbar';
|
|
9
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/index.ts"],"names":[],"mappings":"AACA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/index.ts"],"names":[],"mappings":"AACA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
// Navigation primitives
|
|
2
2
|
export * from './breadcrumb/tng-breadcrumb';
|
|
3
3
|
export * from './context-menu/tng-context-menu';
|
|
4
|
-
export * from './dropdown-menu/tng-dropdown-menu';
|
|
5
4
|
export * from './menu/tng-menu';
|
|
6
5
|
export * from './menubar/tng-menubar';
|
|
7
|
-
export * from './
|
|
6
|
+
export * from './pagination';
|
|
8
7
|
export * from './tabs/tng-tabs';
|
|
9
|
-
export * from './toolbar/tng-toolbar';
|
|
10
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC","sourcesContent":["// Navigation primitives\nexport * from './breadcrumb/tng-breadcrumb';\nexport * from './context-menu/tng-context-menu';\nexport * from './menu/tng-menu';\nexport * from './menubar/tng-menubar';\nexport * from './pagination';\nexport * from './tabs/tng-tabs';\n"]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { ComponentFixture } from '@angular/core/testing';
|
|
2
|
+
import { TngPagination, type TngPaginationChangeEvent, TngPaginationFirst, TngPaginationLast, TngPaginationNext, TngPaginationPage, TngPaginationPageSize, TngPaginationPrevious } from '../tng-pagination';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare const paginationImports: readonly [typeof TngPagination, typeof TngPaginationFirst, typeof TngPaginationPrevious, typeof TngPaginationNext, typeof TngPaginationLast, typeof TngPaginationPage, typeof TngPaginationPageSize];
|
|
5
|
+
export declare class PaginationHarnessComponent {
|
|
6
|
+
readonly ariaLabel: import("@angular/core").WritableSignal<string | null>;
|
|
7
|
+
readonly defaultPageIndex: import("@angular/core").WritableSignal<number>;
|
|
8
|
+
readonly defaultPageSize: import("@angular/core").WritableSignal<number>;
|
|
9
|
+
readonly disabled: import("@angular/core").WritableSignal<boolean>;
|
|
10
|
+
readonly mode: import("@angular/core").WritableSignal<"client" | "server">;
|
|
11
|
+
readonly pageIndex: import("@angular/core").WritableSignal<number | undefined>;
|
|
12
|
+
readonly pageSize: import("@angular/core").WritableSignal<number | undefined>;
|
|
13
|
+
readonly totalItems: import("@angular/core").WritableSignal<number>;
|
|
14
|
+
readonly pageOne: import("@angular/core").WritableSignal<number>;
|
|
15
|
+
readonly pageTwo: import("@angular/core").WritableSignal<number>;
|
|
16
|
+
readonly outsidePage: import("@angular/core").WritableSignal<number>;
|
|
17
|
+
readonly events: string[];
|
|
18
|
+
readonly pageChanges: TngPaginationChangeEvent[];
|
|
19
|
+
readonly pageIndexChanges: number[];
|
|
20
|
+
readonly pageSizeChanges: number[];
|
|
21
|
+
autoSync: boolean;
|
|
22
|
+
onPageChange(event: TngPaginationChangeEvent): void;
|
|
23
|
+
onPageIndexChange(pageIndex: number): void;
|
|
24
|
+
onPageSizeChange(pageSize: number): void;
|
|
25
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PaginationHarnessComponent, never>;
|
|
26
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PaginationHarnessComponent, "ng-component", never, {}, {}, never, never, true, never>;
|
|
27
|
+
}
|
|
28
|
+
export declare class PaginationRootOnlyComponent {
|
|
29
|
+
readonly ariaLabel: import("@angular/core").WritableSignal<string | null>;
|
|
30
|
+
readonly totalItems: import("@angular/core").WritableSignal<number>;
|
|
31
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PaginationRootOnlyComponent, never>;
|
|
32
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PaginationRootOnlyComponent, "ng-component", never, {}, {}, never, never, true, never>;
|
|
33
|
+
}
|
|
34
|
+
export declare class PaginationDivRootComponent {
|
|
35
|
+
readonly totalItems: import("@angular/core").WritableSignal<number>;
|
|
36
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PaginationDivRootComponent, never>;
|
|
37
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PaginationDivRootComponent, "ng-component", never, {}, {}, never, never, true, never>;
|
|
38
|
+
}
|
|
39
|
+
export declare function createPaginationFixture(): ComponentFixture<PaginationHarnessComponent>;
|
|
40
|
+
export declare function createFixture<TComponent>(component: new () => TComponent): ComponentFixture<TComponent>;
|
|
41
|
+
export declare function getByTestId<TElement extends Element>(fixture: ComponentFixture<unknown>, testId: string): TElement;
|
|
42
|
+
export declare function click(element: HTMLElement): void;
|
|
43
|
+
export declare function changeSelectValue(select: HTMLSelectElement, value: string): void;
|
|
44
|
+
//# sourceMappingURL=tng-pagination.test-harness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tng-pagination.test-harness.d.ts","sourceRoot":"","sources":["../../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/pagination/__tests__/tng-pagination.test-harness.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,OAAO,EACL,aAAa,EACb,KAAK,wBAAwB,EAC7B,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;;AAE3B,eAAO,MAAM,iBAAiB,sMAQpB,CAAC;AAEX,qBAkCa,0BAA0B;IACrC,SAAgB,SAAS,wDAA0C;IACnE,SAAgB,gBAAgB,iDAAa;IAC7C,SAAgB,eAAe,iDAAc;IAC7C,SAAgB,QAAQ,kDAAiB;IACzC,SAAgB,IAAI,8DAAyC;IAC7D,SAAgB,SAAS,6DAAyC;IAClE,SAAgB,QAAQ,6DAAyC;IACjE,SAAgB,UAAU,iDAAc;IACxC,SAAgB,OAAO,iDAAa;IACpC,SAAgB,OAAO,iDAAa;IACpC,SAAgB,WAAW,iDAAc;IAEzC,SAAgB,MAAM,EAAE,MAAM,EAAE,CAAM;IACtC,SAAgB,WAAW,EAAE,wBAAwB,EAAE,CAAM;IAC7D,SAAgB,gBAAgB,EAAE,MAAM,EAAE,CAAM;IAChD,SAAgB,eAAe,EAAE,MAAM,EAAE,CAAM;IACxC,QAAQ,UAAS;IAEjB,YAAY,CAAC,KAAK,EAAE,wBAAwB,GAAG,IAAI;IAKnD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAQ1C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;yCAhCpC,0BAA0B;2CAA1B,0BAA0B;CAuCtC;AAED,qBAWa,2BAA2B;IACtC,SAAgB,SAAS,wDAAkC;IAC3D,SAAgB,UAAU,iDAAa;yCAF5B,2BAA2B;2CAA3B,2BAA2B;CAGvC;AAED,qBAMa,0BAA0B;IACrC,SAAgB,UAAU,iDAAa;yCAD5B,0BAA0B;2CAA1B,0BAA0B;CAEtC;AAED,wBAAgB,uBAAuB,IAAI,gBAAgB,CAAC,0BAA0B,CAAC,CAOtF;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAOvG;AAED,wBAAgB,WAAW,CAAC,QAAQ,SAAS,OAAO,EAClD,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAClC,MAAM,EAAE,MAAM,GACb,QAAQ,CAQV;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAOhD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAGhF"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { Component, signal } from '@angular/core';
|
|
2
|
+
import { TestBed } from '@angular/core/testing';
|
|
3
|
+
import { TngPagination, TngPaginationFirst, TngPaginationLast, TngPaginationNext, TngPaginationPage, TngPaginationPageSize, TngPaginationPrevious, } from '../tng-pagination';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export const paginationImports = [
|
|
6
|
+
TngPagination,
|
|
7
|
+
TngPaginationFirst,
|
|
8
|
+
TngPaginationPrevious,
|
|
9
|
+
TngPaginationNext,
|
|
10
|
+
TngPaginationLast,
|
|
11
|
+
TngPaginationPage,
|
|
12
|
+
TngPaginationPageSize,
|
|
13
|
+
];
|
|
14
|
+
export class PaginationHarnessComponent {
|
|
15
|
+
ariaLabel = signal('Results pages', ...(ngDevMode ? [{ debugName: "ariaLabel" }] : []));
|
|
16
|
+
defaultPageIndex = signal(0, ...(ngDevMode ? [{ debugName: "defaultPageIndex" }] : []));
|
|
17
|
+
defaultPageSize = signal(10, ...(ngDevMode ? [{ debugName: "defaultPageSize" }] : []));
|
|
18
|
+
disabled = signal(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
|
|
19
|
+
mode = signal('client', ...(ngDevMode ? [{ debugName: "mode" }] : []));
|
|
20
|
+
pageIndex = signal(undefined, ...(ngDevMode ? [{ debugName: "pageIndex" }] : []));
|
|
21
|
+
pageSize = signal(undefined, ...(ngDevMode ? [{ debugName: "pageSize" }] : []));
|
|
22
|
+
totalItems = signal(25, ...(ngDevMode ? [{ debugName: "totalItems" }] : []));
|
|
23
|
+
pageOne = signal(0, ...(ngDevMode ? [{ debugName: "pageOne" }] : []));
|
|
24
|
+
pageTwo = signal(1, ...(ngDevMode ? [{ debugName: "pageTwo" }] : []));
|
|
25
|
+
outsidePage = signal(99, ...(ngDevMode ? [{ debugName: "outsidePage" }] : []));
|
|
26
|
+
events = [];
|
|
27
|
+
pageChanges = [];
|
|
28
|
+
pageIndexChanges = [];
|
|
29
|
+
pageSizeChanges = [];
|
|
30
|
+
autoSync = false;
|
|
31
|
+
onPageChange(event) {
|
|
32
|
+
this.events.push(`pageChange:${event.trigger}:${event.pageIndex}:${event.pageSize}`);
|
|
33
|
+
this.pageChanges.push(event);
|
|
34
|
+
}
|
|
35
|
+
onPageIndexChange(pageIndex) {
|
|
36
|
+
this.events.push(`pageIndexChange:${pageIndex}`);
|
|
37
|
+
this.pageIndexChanges.push(pageIndex);
|
|
38
|
+
if (this.autoSync) {
|
|
39
|
+
this.pageIndex.set(pageIndex);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
onPageSizeChange(pageSize) {
|
|
43
|
+
this.events.push(`pageSizeChange:${pageSize}`);
|
|
44
|
+
this.pageSizeChanges.push(pageSize);
|
|
45
|
+
if (this.autoSync) {
|
|
46
|
+
this.pageSize.set(pageSize);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PaginationHarnessComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
50
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: PaginationHarnessComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
|
|
51
|
+
<nav
|
|
52
|
+
tngPagination
|
|
53
|
+
data-testid="pagination"
|
|
54
|
+
[ariaLabel]="ariaLabel()"
|
|
55
|
+
[defaultPageIndex]="defaultPageIndex()"
|
|
56
|
+
[defaultPageSize]="defaultPageSize()"
|
|
57
|
+
[disabled]="disabled()"
|
|
58
|
+
[mode]="mode()"
|
|
59
|
+
[pageIndex]="pageIndex()"
|
|
60
|
+
[pageSize]="pageSize()"
|
|
61
|
+
[totalItems]="totalItems()"
|
|
62
|
+
(pageChange)="onPageChange($event)"
|
|
63
|
+
(pageIndexChange)="onPageIndexChange($event)"
|
|
64
|
+
(pageSizeChange)="onPageSizeChange($event)"
|
|
65
|
+
>
|
|
66
|
+
<button tngPaginationFirst data-testid="first">First</button>
|
|
67
|
+
<button tngPaginationPrevious data-testid="previous">Previous</button>
|
|
68
|
+
<button tngPaginationPage data-testid="page-1" [tngPaginationPage]="pageOne()">One</button>
|
|
69
|
+
<button tngPaginationPage data-testid="page-2" [tngPaginationPage]="pageTwo()">Two</button>
|
|
70
|
+
<button tngPaginationPage data-testid="page-outside" [tngPaginationPage]="outsidePage()">Outside</button>
|
|
71
|
+
<button tngPaginationNext data-testid="next">Next</button>
|
|
72
|
+
<button tngPaginationLast data-testid="last">Last</button>
|
|
73
|
+
<select tngPaginationPageSize data-testid="size">
|
|
74
|
+
<option value="5">5</option>
|
|
75
|
+
<option value="10">10</option>
|
|
76
|
+
<option value="20">20</option>
|
|
77
|
+
<option value="bad">Bad</option>
|
|
78
|
+
</select>
|
|
79
|
+
</nav>
|
|
80
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: TngPagination, selector: "[tngPagination]", inputs: ["pageIndex", "defaultPageIndex", "pageSize", "defaultPageSize", "totalItems", "mode", "disabled", "ariaLabel"], outputs: ["pageIndexChange", "pageSizeChange", "pageChange"], exportAs: ["tngPagination"] }, { kind: "directive", type: TngPaginationFirst, selector: "button[tngPaginationFirst]", exportAs: ["tngPaginationFirst"] }, { kind: "directive", type: TngPaginationPrevious, selector: "button[tngPaginationPrevious]", exportAs: ["tngPaginationPrevious"] }, { kind: "directive", type: TngPaginationNext, selector: "button[tngPaginationNext]", exportAs: ["tngPaginationNext"] }, { kind: "directive", type: TngPaginationLast, selector: "button[tngPaginationLast]", exportAs: ["tngPaginationLast"] }, { kind: "directive", type: TngPaginationPage, selector: "button[tngPaginationPage]", inputs: ["tngPaginationPage"], exportAs: ["tngPaginationPage"] }, { kind: "directive", type: TngPaginationPageSize, selector: "select[tngPaginationPageSize]", exportAs: ["tngPaginationPageSize"] }] });
|
|
81
|
+
}
|
|
82
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PaginationHarnessComponent, decorators: [{
|
|
83
|
+
type: Component,
|
|
84
|
+
args: [{
|
|
85
|
+
imports: [...paginationImports],
|
|
86
|
+
template: `
|
|
87
|
+
<nav
|
|
88
|
+
tngPagination
|
|
89
|
+
data-testid="pagination"
|
|
90
|
+
[ariaLabel]="ariaLabel()"
|
|
91
|
+
[defaultPageIndex]="defaultPageIndex()"
|
|
92
|
+
[defaultPageSize]="defaultPageSize()"
|
|
93
|
+
[disabled]="disabled()"
|
|
94
|
+
[mode]="mode()"
|
|
95
|
+
[pageIndex]="pageIndex()"
|
|
96
|
+
[pageSize]="pageSize()"
|
|
97
|
+
[totalItems]="totalItems()"
|
|
98
|
+
(pageChange)="onPageChange($event)"
|
|
99
|
+
(pageIndexChange)="onPageIndexChange($event)"
|
|
100
|
+
(pageSizeChange)="onPageSizeChange($event)"
|
|
101
|
+
>
|
|
102
|
+
<button tngPaginationFirst data-testid="first">First</button>
|
|
103
|
+
<button tngPaginationPrevious data-testid="previous">Previous</button>
|
|
104
|
+
<button tngPaginationPage data-testid="page-1" [tngPaginationPage]="pageOne()">One</button>
|
|
105
|
+
<button tngPaginationPage data-testid="page-2" [tngPaginationPage]="pageTwo()">Two</button>
|
|
106
|
+
<button tngPaginationPage data-testid="page-outside" [tngPaginationPage]="outsidePage()">Outside</button>
|
|
107
|
+
<button tngPaginationNext data-testid="next">Next</button>
|
|
108
|
+
<button tngPaginationLast data-testid="last">Last</button>
|
|
109
|
+
<select tngPaginationPageSize data-testid="size">
|
|
110
|
+
<option value="5">5</option>
|
|
111
|
+
<option value="10">10</option>
|
|
112
|
+
<option value="20">20</option>
|
|
113
|
+
<option value="bad">Bad</option>
|
|
114
|
+
</select>
|
|
115
|
+
</nav>
|
|
116
|
+
`,
|
|
117
|
+
}]
|
|
118
|
+
}] });
|
|
119
|
+
export class PaginationRootOnlyComponent {
|
|
120
|
+
ariaLabel = signal('Pages', ...(ngDevMode ? [{ debugName: "ariaLabel" }] : []));
|
|
121
|
+
totalItems = signal(0, ...(ngDevMode ? [{ debugName: "totalItems" }] : []));
|
|
122
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PaginationRootOnlyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
123
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: PaginationRootOnlyComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
|
|
124
|
+
<nav
|
|
125
|
+
tngPagination
|
|
126
|
+
data-testid="pagination"
|
|
127
|
+
[ariaLabel]="ariaLabel()"
|
|
128
|
+
[totalItems]="totalItems()"
|
|
129
|
+
></nav>
|
|
130
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: TngPagination, selector: "[tngPagination]", inputs: ["pageIndex", "defaultPageIndex", "pageSize", "defaultPageSize", "totalItems", "mode", "disabled", "ariaLabel"], outputs: ["pageIndexChange", "pageSizeChange", "pageChange"], exportAs: ["tngPagination"] }] });
|
|
131
|
+
}
|
|
132
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PaginationRootOnlyComponent, decorators: [{
|
|
133
|
+
type: Component,
|
|
134
|
+
args: [{
|
|
135
|
+
imports: [TngPagination],
|
|
136
|
+
template: `
|
|
137
|
+
<nav
|
|
138
|
+
tngPagination
|
|
139
|
+
data-testid="pagination"
|
|
140
|
+
[ariaLabel]="ariaLabel()"
|
|
141
|
+
[totalItems]="totalItems()"
|
|
142
|
+
></nav>
|
|
143
|
+
`,
|
|
144
|
+
}]
|
|
145
|
+
}] });
|
|
146
|
+
export class PaginationDivRootComponent {
|
|
147
|
+
totalItems = signal(0, ...(ngDevMode ? [{ debugName: "totalItems" }] : []));
|
|
148
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PaginationDivRootComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
149
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: PaginationDivRootComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
|
|
150
|
+
<div tngPagination data-testid="pagination" [totalItems]="totalItems()"></div>
|
|
151
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: TngPagination, selector: "[tngPagination]", inputs: ["pageIndex", "defaultPageIndex", "pageSize", "defaultPageSize", "totalItems", "mode", "disabled", "ariaLabel"], outputs: ["pageIndexChange", "pageSizeChange", "pageChange"], exportAs: ["tngPagination"] }] });
|
|
152
|
+
}
|
|
153
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PaginationDivRootComponent, decorators: [{
|
|
154
|
+
type: Component,
|
|
155
|
+
args: [{
|
|
156
|
+
imports: [TngPagination],
|
|
157
|
+
template: `
|
|
158
|
+
<div tngPagination data-testid="pagination" [totalItems]="totalItems()"></div>
|
|
159
|
+
`,
|
|
160
|
+
}]
|
|
161
|
+
}] });
|
|
162
|
+
export function createPaginationFixture() {
|
|
163
|
+
const fixture = TestBed.configureTestingModule({
|
|
164
|
+
imports: [PaginationHarnessComponent],
|
|
165
|
+
}).createComponent(PaginationHarnessComponent);
|
|
166
|
+
fixture.detectChanges();
|
|
167
|
+
return fixture;
|
|
168
|
+
}
|
|
169
|
+
export function createFixture(component) {
|
|
170
|
+
const fixture = TestBed.configureTestingModule({
|
|
171
|
+
imports: [component],
|
|
172
|
+
}).createComponent(component);
|
|
173
|
+
fixture.detectChanges();
|
|
174
|
+
return fixture;
|
|
175
|
+
}
|
|
176
|
+
export function getByTestId(fixture, testId) {
|
|
177
|
+
const host = fixture.nativeElement;
|
|
178
|
+
const element = host.querySelector(`[data-testid="${testId}"]`);
|
|
179
|
+
if (element === null) {
|
|
180
|
+
throw new Error(`Expected element for data-testid="${testId}".`);
|
|
181
|
+
}
|
|
182
|
+
return element;
|
|
183
|
+
}
|
|
184
|
+
export function click(element) {
|
|
185
|
+
element.dispatchEvent(new MouseEvent('click', {
|
|
186
|
+
bubbles: true,
|
|
187
|
+
cancelable: true,
|
|
188
|
+
}));
|
|
189
|
+
}
|
|
190
|
+
export function changeSelectValue(select, value) {
|
|
191
|
+
select.value = value;
|
|
192
|
+
select.dispatchEvent(new Event('change', { bubbles: true }));
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=tng-pagination.test-harness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tng-pagination.test-harness.js","sourceRoot":"","sources":["../../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/pagination/__tests__/tng-pagination.test-harness.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, signal } from '@angular/core';\nimport type { ComponentFixture } from '@angular/core/testing';\nimport { TestBed } from '@angular/core/testing';\n\nimport {\n TngPagination,\n type TngPaginationChangeEvent,\n TngPaginationFirst,\n TngPaginationLast,\n TngPaginationNext,\n TngPaginationPage,\n TngPaginationPageSize,\n TngPaginationPrevious,\n} from '../tng-pagination';\n\nexport const paginationImports = [\n TngPagination,\n TngPaginationFirst,\n TngPaginationPrevious,\n TngPaginationNext,\n TngPaginationLast,\n TngPaginationPage,\n TngPaginationPageSize,\n] as const;\n\n@Component({\n imports: [...paginationImports],\n template: `\n <nav\n tngPagination\n data-testid=\"pagination\"\n [ariaLabel]=\"ariaLabel()\"\n [defaultPageIndex]=\"defaultPageIndex()\"\n [defaultPageSize]=\"defaultPageSize()\"\n [disabled]=\"disabled()\"\n [mode]=\"mode()\"\n [pageIndex]=\"pageIndex()\"\n [pageSize]=\"pageSize()\"\n [totalItems]=\"totalItems()\"\n (pageChange)=\"onPageChange($event)\"\n (pageIndexChange)=\"onPageIndexChange($event)\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n >\n <button tngPaginationFirst data-testid=\"first\">First</button>\n <button tngPaginationPrevious data-testid=\"previous\">Previous</button>\n <button tngPaginationPage data-testid=\"page-1\" [tngPaginationPage]=\"pageOne()\">One</button>\n <button tngPaginationPage data-testid=\"page-2\" [tngPaginationPage]=\"pageTwo()\">Two</button>\n <button tngPaginationPage data-testid=\"page-outside\" [tngPaginationPage]=\"outsidePage()\">Outside</button>\n <button tngPaginationNext data-testid=\"next\">Next</button>\n <button tngPaginationLast data-testid=\"last\">Last</button>\n <select tngPaginationPageSize data-testid=\"size\">\n <option value=\"5\">5</option>\n <option value=\"10\">10</option>\n <option value=\"20\">20</option>\n <option value=\"bad\">Bad</option>\n </select>\n </nav>\n `,\n})\nexport class PaginationHarnessComponent {\n public readonly ariaLabel = signal<string | null>('Results pages');\n public readonly defaultPageIndex = signal(0);\n public readonly defaultPageSize = signal(10);\n public readonly disabled = signal(false);\n public readonly mode = signal<'client' | 'server'>('client');\n public readonly pageIndex = signal<number | undefined>(undefined);\n public readonly pageSize = signal<number | undefined>(undefined);\n public readonly totalItems = signal(25);\n public readonly pageOne = signal(0);\n public readonly pageTwo = signal(1);\n public readonly outsidePage = signal(99);\n\n public readonly events: string[] = [];\n public readonly pageChanges: TngPaginationChangeEvent[] = [];\n public readonly pageIndexChanges: number[] = [];\n public readonly pageSizeChanges: number[] = [];\n public autoSync = false;\n\n public onPageChange(event: TngPaginationChangeEvent): void {\n this.events.push(`pageChange:${event.trigger}:${event.pageIndex}:${event.pageSize}`);\n this.pageChanges.push(event);\n }\n\n public onPageIndexChange(pageIndex: number): void {\n this.events.push(`pageIndexChange:${pageIndex}`);\n this.pageIndexChanges.push(pageIndex);\n if (this.autoSync) {\n this.pageIndex.set(pageIndex);\n }\n }\n\n public onPageSizeChange(pageSize: number): void {\n this.events.push(`pageSizeChange:${pageSize}`);\n this.pageSizeChanges.push(pageSize);\n if (this.autoSync) {\n this.pageSize.set(pageSize);\n }\n }\n}\n\n@Component({\n imports: [TngPagination],\n template: `\n <nav\n tngPagination\n data-testid=\"pagination\"\n [ariaLabel]=\"ariaLabel()\"\n [totalItems]=\"totalItems()\"\n ></nav>\n `,\n})\nexport class PaginationRootOnlyComponent {\n public readonly ariaLabel = signal<string | null>('Pages');\n public readonly totalItems = signal(0);\n}\n\n@Component({\n imports: [TngPagination],\n template: `\n <div tngPagination data-testid=\"pagination\" [totalItems]=\"totalItems()\"></div>\n `,\n})\nexport class PaginationDivRootComponent {\n public readonly totalItems = signal(0);\n}\n\nexport function createPaginationFixture(): ComponentFixture<PaginationHarnessComponent> {\n const fixture = TestBed.configureTestingModule({\n imports: [PaginationHarnessComponent],\n }).createComponent(PaginationHarnessComponent);\n\n fixture.detectChanges();\n return fixture;\n}\n\nexport function createFixture<TComponent>(component: new () => TComponent): ComponentFixture<TComponent> {\n const fixture = TestBed.configureTestingModule({\n imports: [component],\n }).createComponent(component);\n\n fixture.detectChanges();\n return fixture;\n}\n\nexport function getByTestId<TElement extends Element>(\n fixture: ComponentFixture<unknown>,\n testId: string,\n): TElement {\n const host = fixture.nativeElement as HTMLElement;\n const element = host.querySelector(`[data-testid=\"${testId}\"]`);\n if (element === null) {\n throw new Error(`Expected element for data-testid=\"${testId}\".`);\n }\n\n return element as TElement;\n}\n\nexport function click(element: HTMLElement): void {\n element.dispatchEvent(\n new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n }),\n );\n}\n\nexport function changeSelectValue(select: HTMLSelectElement, value: string): void {\n select.value = value;\n select.dispatchEvent(new Event('change', { bubbles: true }));\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/pagination/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/pagination/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC","sourcesContent":["export * from './tng-pagination';\n"]}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { type TngTablePaginationMode } from '@tailng-ui/cdk';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export type TngPaginationMode = TngTablePaginationMode;
|
|
4
|
+
export type TngPaginationTrigger = 'first' | 'last' | 'next' | 'page' | 'previous' | 'programmatic' | 'size';
|
|
5
|
+
export type TngPaginationChangeEvent = Readonly<{
|
|
6
|
+
mode: TngPaginationMode;
|
|
7
|
+
pageCount: number;
|
|
8
|
+
pageIndex: number;
|
|
9
|
+
pageSize: number;
|
|
10
|
+
previousPageIndex: number;
|
|
11
|
+
previousPageSize: number;
|
|
12
|
+
totalItems: number;
|
|
13
|
+
trigger: TngPaginationTrigger;
|
|
14
|
+
}>;
|
|
15
|
+
export declare class TngPagination {
|
|
16
|
+
private readonly uncontrolledPageIndex;
|
|
17
|
+
private readonly uncontrolledPageSize;
|
|
18
|
+
private readonly hasUncontrolledPageIndex;
|
|
19
|
+
private readonly hasUncontrolledPageSize;
|
|
20
|
+
readonly pageIndex: import("@angular/core").InputSignalWithTransform<number | undefined, unknown>;
|
|
21
|
+
readonly defaultPageIndex: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
22
|
+
readonly pageSize: import("@angular/core").InputSignalWithTransform<number | undefined, unknown>;
|
|
23
|
+
readonly defaultPageSize: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
24
|
+
readonly totalItems: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
25
|
+
readonly mode: import("@angular/core").InputSignalWithTransform<TngTablePaginationMode, unknown>;
|
|
26
|
+
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
|
|
27
|
+
readonly ariaLabel: import("@angular/core").InputSignalWithTransform<string | null, unknown>;
|
|
28
|
+
readonly pageIndexChange: import("@angular/core").OutputEmitterRef<number>;
|
|
29
|
+
readonly pageSizeChange: import("@angular/core").OutputEmitterRef<number>;
|
|
30
|
+
readonly pageChange: import("@angular/core").OutputEmitterRef<Readonly<{
|
|
31
|
+
mode: TngPaginationMode;
|
|
32
|
+
pageCount: number;
|
|
33
|
+
pageIndex: number;
|
|
34
|
+
pageSize: number;
|
|
35
|
+
previousPageIndex: number;
|
|
36
|
+
previousPageSize: number;
|
|
37
|
+
totalItems: number;
|
|
38
|
+
trigger: TngPaginationTrigger;
|
|
39
|
+
}>>;
|
|
40
|
+
readonly state: import("@angular/core").Signal<Readonly<{
|
|
41
|
+
pageIndex: number;
|
|
42
|
+
pageSize: number;
|
|
43
|
+
}>>;
|
|
44
|
+
readonly pageCount: import("@angular/core").Signal<number>;
|
|
45
|
+
readonly isFirstPage: import("@angular/core").Signal<boolean>;
|
|
46
|
+
readonly isLastPage: import("@angular/core").Signal<boolean>;
|
|
47
|
+
protected get ariaLabelAttr(): string | null;
|
|
48
|
+
protected get dataDisabledAttr(): '' | null;
|
|
49
|
+
protected get dataModeAttr(): TngPaginationMode;
|
|
50
|
+
protected get dataPageCountAttr(): number;
|
|
51
|
+
protected get dataPageIndexAttr(): number;
|
|
52
|
+
protected get dataPageSizeAttr(): number;
|
|
53
|
+
protected readonly dataSlot: "pagination";
|
|
54
|
+
firstPage(): void;
|
|
55
|
+
previousPage(): void;
|
|
56
|
+
nextPage(): void;
|
|
57
|
+
lastPage(): void;
|
|
58
|
+
setPageIndex(pageIndex: number, trigger?: TngPaginationTrigger): void;
|
|
59
|
+
setPageSize(pageSize: number, trigger?: TngPaginationTrigger): void;
|
|
60
|
+
canGoToPreviousPage(): boolean;
|
|
61
|
+
canGoToNextPage(): boolean;
|
|
62
|
+
canGoToPage(pageIndex: number): boolean;
|
|
63
|
+
private rawPageIndex;
|
|
64
|
+
private createController;
|
|
65
|
+
private rawPageSize;
|
|
66
|
+
private commit;
|
|
67
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TngPagination, never>;
|
|
68
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TngPagination, "[tngPagination]", ["tngPagination"], { "pageIndex": { "alias": "pageIndex"; "required": false; "isSignal": true; }; "defaultPageIndex": { "alias": "defaultPageIndex"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "defaultPageSize": { "alias": "defaultPageSize"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "pageIndexChange": "pageIndexChange"; "pageSizeChange": "pageSizeChange"; "pageChange": "pageChange"; }, never, never, true, never>;
|
|
69
|
+
}
|
|
70
|
+
declare abstract class TngPaginationButton {
|
|
71
|
+
protected readonly pagination: TngPagination;
|
|
72
|
+
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
|
|
73
|
+
protected get ariaDisabledAttr(): 'true' | null;
|
|
74
|
+
protected get dataDisabledAttr(): '' | null;
|
|
75
|
+
protected get disabledAttr(): '' | null;
|
|
76
|
+
protected readonly typeAttr: "button";
|
|
77
|
+
protected isDisabled(): boolean;
|
|
78
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TngPaginationButton, never>;
|
|
79
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TngPaginationButton, never, never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
80
|
+
}
|
|
81
|
+
export declare class TngPaginationFirst extends TngPaginationButton {
|
|
82
|
+
protected readonly dataSlot: "pagination-first";
|
|
83
|
+
protected isDisabled(): boolean;
|
|
84
|
+
protected onClick(): void;
|
|
85
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TngPaginationFirst, never>;
|
|
86
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TngPaginationFirst, "button[tngPaginationFirst]", ["tngPaginationFirst"], {}, {}, never, never, true, never>;
|
|
87
|
+
}
|
|
88
|
+
export declare class TngPaginationPrevious extends TngPaginationButton {
|
|
89
|
+
protected readonly dataSlot: "pagination-previous";
|
|
90
|
+
protected isDisabled(): boolean;
|
|
91
|
+
protected onClick(): void;
|
|
92
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TngPaginationPrevious, never>;
|
|
93
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TngPaginationPrevious, "button[tngPaginationPrevious]", ["tngPaginationPrevious"], {}, {}, never, never, true, never>;
|
|
94
|
+
}
|
|
95
|
+
export declare class TngPaginationNext extends TngPaginationButton {
|
|
96
|
+
protected readonly dataSlot: "pagination-next";
|
|
97
|
+
protected isDisabled(): boolean;
|
|
98
|
+
protected onClick(): void;
|
|
99
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TngPaginationNext, never>;
|
|
100
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TngPaginationNext, "button[tngPaginationNext]", ["tngPaginationNext"], {}, {}, never, never, true, never>;
|
|
101
|
+
}
|
|
102
|
+
export declare class TngPaginationLast extends TngPaginationButton {
|
|
103
|
+
protected readonly dataSlot: "pagination-last";
|
|
104
|
+
protected isDisabled(): boolean;
|
|
105
|
+
protected onClick(): void;
|
|
106
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TngPaginationLast, never>;
|
|
107
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TngPaginationLast, "button[tngPaginationLast]", ["tngPaginationLast"], {}, {}, never, never, true, never>;
|
|
108
|
+
}
|
|
109
|
+
export declare class TngPaginationPage extends TngPaginationButton {
|
|
110
|
+
readonly page: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
111
|
+
protected get ariaCurrentAttr(): 'page' | null;
|
|
112
|
+
protected get dataCurrentAttr(): '' | null;
|
|
113
|
+
protected readonly dataSlot: "pagination-page";
|
|
114
|
+
protected onClick(): void;
|
|
115
|
+
private isCurrentPage;
|
|
116
|
+
protected isDisabled(): boolean;
|
|
117
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TngPaginationPage, never>;
|
|
118
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TngPaginationPage, "button[tngPaginationPage]", ["tngPaginationPage"], { "page": { "alias": "tngPaginationPage"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
119
|
+
}
|
|
120
|
+
export declare class TngPaginationPageSize {
|
|
121
|
+
private readonly pagination;
|
|
122
|
+
private readonly hostRef;
|
|
123
|
+
protected readonly dataSlot: "pagination-page-size";
|
|
124
|
+
protected get disabledProp(): boolean;
|
|
125
|
+
protected get valueProp(): string;
|
|
126
|
+
protected onChange(): void;
|
|
127
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TngPaginationPageSize, never>;
|
|
128
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TngPaginationPageSize, "select[tngPaginationPageSize]", ["tngPaginationPageSize"], {}, {}, never, never, true, never>;
|
|
129
|
+
}
|
|
130
|
+
export {};
|
|
131
|
+
//# sourceMappingURL=tng-pagination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tng-pagination.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/pagination/tng-pagination.ts"],"names":[],"mappings":"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"}
|