Skip to content

Commit 8caa5e1

Browse files
xelaintdamienwebdev
authored andcommitted
feat(design): convert paginator component to standalone (#3054)
1 parent 7ca68fd commit 8caa5e1

File tree

8 files changed

+95
-30
lines changed

8 files changed

+95
-30
lines changed

libs/design/paginator/README.md

+45-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,52 @@
11
# Paginator
22
Paginator is used to break up large amounts of content into multiple pages, enabling users to easily navigate between pages of content.
33

4+
## Default Paginator
5+
<design-land-example-viewer-container example="basic-paginator"></design-land-example-viewer-container>
6+
7+
## Usage
8+
9+
### Within a standalone component
10+
To use paginator in a standalone component, import `DAFF_PAGINATOR_COMPONENTS` directly into your custom component:
11+
12+
```ts
13+
@Component({
14+
selector: 'custom-component',
15+
templateUrl: './custom-component.component.html',
16+
standalone: true,
17+
imports: [
18+
DAFF_PAGINATOR_COMPONENTS,
19+
],
20+
})
21+
export class CustomComponent {}
22+
```
23+
24+
### Within a module (deprecated)
25+
To use paginator in a module, import `DaffPaginatorModule` into your custom module:
26+
27+
```ts
28+
import { NgModule } from '@angular/core';
29+
30+
import { DaffPaginatorModule } from '@daffodil/design/paginator';
31+
32+
@NgModule({
33+
declarations: [
34+
CustomComponent,
35+
],
36+
exports: [
37+
CustomComponent,
38+
],
39+
imports: [
40+
DaffPaginatorModule,
41+
],
42+
})
43+
export class CustomComponentModule { }
44+
```
45+
46+
> This method is deprecated. It's recommended to update all custom components to standalone.
47+
448
## Truncation
549
An ellipsis is used to truncate pages when the number of pages exceed the maximum display limit. Double truncation appears when the current page is separated by more than three pages from both the first and last page.
650

751
## Accessibility
8-
Use `aria-label` or `aria-labelledby` to give a meaningful label to `daff-paginator` that describes the content controlled by the paginator. If more than one paginator component is used on a page, each will need a unique `aria-label`.
9-
10-
## Usage
11-
<design-land-example-viewer-container example="basic-paginator"></design-land-example-viewer-container>
52+
Use `aria-label` or `aria-labelledby` to give a meaningful label to `daff-paginator` that describes the content controlled by the paginator. If more than one paginator component is used on a page, each will need a unique `aria-label`.

libs/design/paginator/examples/src/basic-paginator/basic-paginator.component.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {
33
Component,
44
} from '@angular/core';
55

6-
import { DaffPaginatorModule } from '@daffodil/design/paginator';
6+
import { DAFF_PAGINATOR_COMPONENTS } from '@daffodil/design/paginator';
77

88
@Component({
99
// eslint-disable-next-line @angular-eslint/component-selector
@@ -12,7 +12,7 @@ import { DaffPaginatorModule } from '@daffodil/design/paginator';
1212
changeDetection: ChangeDetectionStrategy.OnPush,
1313
standalone: true,
1414
imports: [
15-
DaffPaginatorModule,
15+
DAFF_PAGINATOR_COMPONENTS,
1616
],
1717
})
1818
export class BasicPaginatorComponent {

libs/design/paginator/examples/src/link-paginator/link-paginator.component.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
map,
1010
} from 'rxjs';
1111

12-
import { DaffPaginatorModule } from '@daffodil/design/paginator';
12+
import { DAFF_PAGINATOR_COMPONENTS } from '@daffodil/design/paginator';
1313

1414
@Component({
1515
// eslint-disable-next-line @angular-eslint/component-selector
@@ -18,7 +18,7 @@ import { DaffPaginatorModule } from '@daffodil/design/paginator';
1818
changeDetection: ChangeDetectionStrategy.OnPush,
1919
standalone: true,
2020
imports: [
21-
DaffPaginatorModule,
21+
DAFF_PAGINATOR_COMPONENTS,
2222
AsyncPipe,
2323
],
2424
})

libs/design/paginator/src/paginator.module.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@ import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
55

66
import { DaffPaginatorComponent } from './paginator/paginator.component';
77

8+
/**
9+
* @deprecated in favor of {@link DAFF_PAGINATOR_COMPONENTS}
10+
*/
811
@NgModule({
912
imports: [
1013
CommonModule,
1114
RouterModule,
1215
FontAwesomeModule,
13-
],
14-
declarations: [
1516
DaffPaginatorComponent,
1617
],
1718
exports: [
+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { DaffPaginatorComponent } from './paginator/paginator.component';
2+
3+
export const DAFF_PAGINATOR_COMPONENTS = <const> [
4+
DaffPaginatorComponent,
5+
];

libs/design/paginator/src/paginator/paginator.component.spec.ts

+21-16
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@ import {
1111
tick,
1212
} from '@angular/core/testing';
1313
import { By } from '@angular/platform-browser';
14-
import { ActivatedRoute } from '@angular/router';
14+
import {
15+
ActivatedRoute,
16+
RouterModule,
17+
} from '@angular/router';
1518
import { RouterTestingModule } from '@angular/router/testing';
1619

1720
import { DaffPaginatorComponent } from './paginator.component';
@@ -24,16 +27,21 @@ import {
2427
@Component({ template: '' })
2528
class TestComponent {}
2629

27-
@Component({ template: `
28-
<daff-paginator
29-
aria-label="id"
30-
[numberOfPages]="numberOfPagesValue"
31-
[currentPage]="currentPageValue"
32-
[linkMode]="linkModeValue"
33-
[url]="urlValue"
34-
[queryParam]="queryParamValue"
35-
></daff-paginator>
36-
` })
30+
@Component({
31+
template: `
32+
<daff-paginator
33+
aria-label="id"
34+
[numberOfPages]="numberOfPagesValue"
35+
[currentPage]="currentPageValue"
36+
[linkMode]="linkModeValue"
37+
[url]="urlValue"
38+
[queryParam]="queryParamValue">
39+
</daff-paginator>`,
40+
standalone: true,
41+
imports: [
42+
DaffPaginatorComponent,
43+
],
44+
})
3745

3846
class WrapperComponent {
3947
numberOfPagesValue = 20;
@@ -55,8 +63,8 @@ describe('@daffodil/design/paginator | DaffPaginatorComponent', () => {
5563
beforeEach(waitForAsync(() => {
5664
TestBed.configureTestingModule({
5765
imports: [
58-
DaffPaginatorModule,
59-
RouterTestingModule.withRoutes([
66+
WrapperComponent,
67+
RouterModule.forRoot([
6068
{
6169
path: '',
6270
component: TestComponent,
@@ -67,9 +75,6 @@ describe('@daffodil/design/paginator | DaffPaginatorComponent', () => {
6775
},
6876
]),
6977
],
70-
declarations: [
71-
WrapperComponent,
72-
],
7378
})
7479
.compileComponents();
7580
}));

libs/design/paginator/src/paginator/paginator.component.ts

+16-4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
import {
2+
NgFor,
3+
NgIf,
4+
} from '@angular/common';
15
import {
26
Component,
37
Input,
@@ -8,7 +12,11 @@ import {
812
OnChanges,
913
ChangeDetectionStrategy,
1014
} from '@angular/core';
11-
import { Params } from '@angular/router';
15+
import {
16+
Params,
17+
RouterModule,
18+
} from '@angular/router';
19+
import { FaIconComponent } from '@fortawesome/angular-fontawesome';
1220
import {
1321
faChevronRight,
1422
faChevronLeft,
@@ -21,14 +29,18 @@ import {
2129

2230
const visiblePageRange = 2;
2331

24-
/**
25-
* @inheritdoc
26-
*/
2732
@Component({
2833
selector: 'daff-paginator',
2934
styleUrls: ['./paginator.component.scss'],
3035
templateUrl: './paginator.component.html',
3136
changeDetection: ChangeDetectionStrategy.OnPush,
37+
standalone: true,
38+
imports: [
39+
FaIconComponent,
40+
RouterModule,
41+
NgIf,
42+
NgFor,
43+
],
3244
})
3345
export class DaffPaginatorComponent implements OnChanges {
3446

+1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export { DaffPaginatorModule } from './paginator.module';
22
export { DaffPaginatorComponent } from './paginator/paginator.component';
3+
export { DAFF_PAGINATOR_COMPONENTS } from './paginator';

0 commit comments

Comments
 (0)