pdm-ui-kit 1.2.1 → 1.3.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.
Files changed (159) hide show
  1. package/aspect-ratio/aspect-ratio.component.d.ts +1 -1
  2. package/aspect-ratio/aspect-ratio.module.d.ts +5 -2
  3. package/badge/badge.component.d.ts +1 -1
  4. package/badge/badge.module.d.ts +5 -2
  5. package/button/button-theme.constant.d.ts +2 -0
  6. package/button/button.component.d.ts +1 -4
  7. package/button/testing/button-harness.d.ts +23 -0
  8. package/checkbox/testing/checkbox-harness.d.ts +22 -0
  9. package/dialog/dialog.module.d.ts +2 -1
  10. package/dialog/testing/dialog-harness.d.ts +26 -0
  11. package/esm2020/alert/alert.component.mjs +3 -3
  12. package/esm2020/aspect-ratio/aspect-ratio.component.mjs +4 -3
  13. package/esm2020/aspect-ratio/aspect-ratio.module.mjs +9 -10
  14. package/esm2020/badge/badge.component.mjs +4 -3
  15. package/esm2020/badge/badge.module.mjs +9 -10
  16. package/esm2020/button/button-theme.constant.mjs +55 -0
  17. package/esm2020/button/button.component.mjs +5 -18
  18. package/esm2020/button/testing/button-harness.mjs +51 -0
  19. package/esm2020/checkbox/testing/checkbox-harness.mjs +54 -0
  20. package/esm2020/dialog/dialog.component.mjs +5 -4
  21. package/esm2020/dialog/dialog.module.mjs +5 -4
  22. package/esm2020/dialog/testing/dialog-harness.mjs +87 -0
  23. package/esm2020/empty/empty.component.mjs +1 -1
  24. package/esm2020/icon/icon.component.mjs +4 -3
  25. package/esm2020/icon/icon.module.mjs +9 -10
  26. package/esm2020/input/input.component.mjs +16 -4
  27. package/esm2020/input/testing/input-harness.mjs +68 -0
  28. package/esm2020/kbd/kbd.component.mjs +4 -3
  29. package/esm2020/kbd/kbd.module.mjs +9 -10
  30. package/esm2020/pagination/pagination.component.mjs +3 -3
  31. package/esm2020/pagination/testing/pagination-harness.mjs +76 -0
  32. package/esm2020/public-api.mjs +3 -1
  33. package/esm2020/select/testing/select-harness.mjs +75 -0
  34. package/esm2020/separator/separator.component.mjs +4 -3
  35. package/esm2020/separator/separator.module.mjs +9 -10
  36. package/esm2020/skeleton/skeleton.component.mjs +4 -3
  37. package/esm2020/skeleton/skeleton.module.mjs +9 -10
  38. package/esm2020/spinner/spinner.component.mjs +4 -3
  39. package/esm2020/spinner/spinner.module.mjs +9 -10
  40. package/esm2020/src/alert/alert.component.mjs +3 -3
  41. package/esm2020/src/aspect-ratio/aspect-ratio.component.mjs +4 -3
  42. package/esm2020/src/aspect-ratio/aspect-ratio.module.mjs +9 -10
  43. package/esm2020/src/badge/badge.component.mjs +4 -3
  44. package/esm2020/src/badge/badge.module.mjs +9 -10
  45. package/esm2020/src/button/button-theme.constant.mjs +55 -0
  46. package/esm2020/src/button/button.component.mjs +5 -18
  47. package/esm2020/src/dialog/dialog.component.mjs +5 -4
  48. package/esm2020/src/dialog/dialog.module.mjs +5 -4
  49. package/esm2020/src/empty/empty.component.mjs +1 -1
  50. package/esm2020/src/icon/icon.component.mjs +4 -3
  51. package/esm2020/src/icon/icon.module.mjs +9 -10
  52. package/esm2020/src/input/input.component.mjs +16 -4
  53. package/esm2020/src/kbd/kbd.component.mjs +4 -3
  54. package/esm2020/src/kbd/kbd.module.mjs +9 -10
  55. package/esm2020/src/pagination/pagination.component.mjs +3 -3
  56. package/esm2020/src/separator/separator.component.mjs +4 -3
  57. package/esm2020/src/separator/separator.module.mjs +9 -10
  58. package/esm2020/src/skeleton/skeleton.component.mjs +4 -3
  59. package/esm2020/src/skeleton/skeleton.module.mjs +9 -10
  60. package/esm2020/src/spinner/spinner.component.mjs +4 -3
  61. package/esm2020/src/spinner/spinner.module.mjs +9 -10
  62. package/esm2020/src/utils/public-api.mjs +2 -1
  63. package/esm2020/src/utils/validators.mjs +180 -0
  64. package/esm2020/testing.mjs +13 -0
  65. package/fesm2015/pdm-ui-kit-src-alert.mjs +2 -2
  66. package/fesm2015/pdm-ui-kit-src-alert.mjs.map +1 -1
  67. package/fesm2015/pdm-ui-kit-src-aspect-ratio.mjs +10 -10
  68. package/fesm2015/pdm-ui-kit-src-aspect-ratio.mjs.map +1 -1
  69. package/fesm2015/pdm-ui-kit-src-badge.mjs +10 -10
  70. package/fesm2015/pdm-ui-kit-src-badge.mjs.map +1 -1
  71. package/fesm2015/pdm-ui-kit-src-button.mjs +58 -17
  72. package/fesm2015/pdm-ui-kit-src-button.mjs.map +1 -1
  73. package/fesm2015/pdm-ui-kit-src-dialog.mjs +8 -6
  74. package/fesm2015/pdm-ui-kit-src-dialog.mjs.map +1 -1
  75. package/fesm2015/pdm-ui-kit-src-empty.mjs.map +1 -1
  76. package/fesm2015/pdm-ui-kit-src-icon.mjs +12 -12
  77. package/fesm2015/pdm-ui-kit-src-icon.mjs.map +1 -1
  78. package/fesm2015/pdm-ui-kit-src-input.mjs +15 -3
  79. package/fesm2015/pdm-ui-kit-src-input.mjs.map +1 -1
  80. package/fesm2015/pdm-ui-kit-src-kbd.mjs +10 -10
  81. package/fesm2015/pdm-ui-kit-src-kbd.mjs.map +1 -1
  82. package/fesm2015/pdm-ui-kit-src-pagination.mjs +2 -2
  83. package/fesm2015/pdm-ui-kit-src-pagination.mjs.map +1 -1
  84. package/fesm2015/pdm-ui-kit-src-separator.mjs +10 -10
  85. package/fesm2015/pdm-ui-kit-src-separator.mjs.map +1 -1
  86. package/fesm2015/pdm-ui-kit-src-skeleton.mjs +10 -10
  87. package/fesm2015/pdm-ui-kit-src-skeleton.mjs.map +1 -1
  88. package/fesm2015/pdm-ui-kit-src-spinner.mjs +10 -10
  89. package/fesm2015/pdm-ui-kit-src-spinner.mjs.map +1 -1
  90. package/fesm2015/pdm-ui-kit-src-utils.mjs +181 -1
  91. package/fesm2015/pdm-ui-kit-src-utils.mjs.map +1 -1
  92. package/fesm2015/pdm-ui-kit.mjs +814 -211
  93. package/fesm2015/pdm-ui-kit.mjs.map +1 -1
  94. package/fesm2020/pdm-ui-kit-src-alert.mjs +2 -2
  95. package/fesm2020/pdm-ui-kit-src-alert.mjs.map +1 -1
  96. package/fesm2020/pdm-ui-kit-src-aspect-ratio.mjs +10 -10
  97. package/fesm2020/pdm-ui-kit-src-aspect-ratio.mjs.map +1 -1
  98. package/fesm2020/pdm-ui-kit-src-badge.mjs +10 -10
  99. package/fesm2020/pdm-ui-kit-src-badge.mjs.map +1 -1
  100. package/fesm2020/pdm-ui-kit-src-button.mjs +58 -17
  101. package/fesm2020/pdm-ui-kit-src-button.mjs.map +1 -1
  102. package/fesm2020/pdm-ui-kit-src-dialog.mjs +8 -6
  103. package/fesm2020/pdm-ui-kit-src-dialog.mjs.map +1 -1
  104. package/fesm2020/pdm-ui-kit-src-empty.mjs.map +1 -1
  105. package/fesm2020/pdm-ui-kit-src-icon.mjs +12 -12
  106. package/fesm2020/pdm-ui-kit-src-icon.mjs.map +1 -1
  107. package/fesm2020/pdm-ui-kit-src-input.mjs +15 -3
  108. package/fesm2020/pdm-ui-kit-src-input.mjs.map +1 -1
  109. package/fesm2020/pdm-ui-kit-src-kbd.mjs +10 -10
  110. package/fesm2020/pdm-ui-kit-src-kbd.mjs.map +1 -1
  111. package/fesm2020/pdm-ui-kit-src-pagination.mjs +2 -2
  112. package/fesm2020/pdm-ui-kit-src-pagination.mjs.map +1 -1
  113. package/fesm2020/pdm-ui-kit-src-separator.mjs +10 -10
  114. package/fesm2020/pdm-ui-kit-src-separator.mjs.map +1 -1
  115. package/fesm2020/pdm-ui-kit-src-skeleton.mjs +10 -10
  116. package/fesm2020/pdm-ui-kit-src-skeleton.mjs.map +1 -1
  117. package/fesm2020/pdm-ui-kit-src-spinner.mjs +10 -10
  118. package/fesm2020/pdm-ui-kit-src-spinner.mjs.map +1 -1
  119. package/fesm2020/pdm-ui-kit-src-utils.mjs +181 -1
  120. package/fesm2020/pdm-ui-kit-src-utils.mjs.map +1 -1
  121. package/fesm2020/pdm-ui-kit.mjs +673 -211
  122. package/fesm2020/pdm-ui-kit.mjs.map +1 -1
  123. package/icon/icon.component.d.ts +1 -1
  124. package/icon/icon.module.d.ts +5 -2
  125. package/input/input.component.d.ts +4 -0
  126. package/input/testing/input-harness.d.ts +27 -0
  127. package/kbd/kbd.component.d.ts +1 -1
  128. package/kbd/kbd.module.d.ts +5 -2
  129. package/package.json +1 -1
  130. package/pagination/testing/pagination-harness.d.ts +21 -0
  131. package/public-api.d.ts +1 -0
  132. package/select/testing/select-harness.d.ts +25 -0
  133. package/separator/separator.component.d.ts +1 -1
  134. package/separator/separator.module.d.ts +5 -2
  135. package/skeleton/skeleton.component.d.ts +1 -1
  136. package/skeleton/skeleton.module.d.ts +5 -2
  137. package/spinner/spinner.component.d.ts +1 -1
  138. package/spinner/spinner.module.d.ts +5 -2
  139. package/src/aspect-ratio/aspect-ratio.component.d.ts +1 -1
  140. package/src/aspect-ratio/aspect-ratio.module.d.ts +5 -2
  141. package/src/badge/badge.component.d.ts +1 -1
  142. package/src/badge/badge.module.d.ts +5 -2
  143. package/src/button/button-theme.constant.d.ts +2 -0
  144. package/src/button/button.component.d.ts +1 -4
  145. package/src/dialog/dialog.module.d.ts +2 -1
  146. package/src/icon/icon.component.d.ts +1 -1
  147. package/src/icon/icon.module.d.ts +5 -2
  148. package/src/input/input.component.d.ts +4 -0
  149. package/src/kbd/kbd.component.d.ts +1 -1
  150. package/src/kbd/kbd.module.d.ts +5 -2
  151. package/src/separator/separator.component.d.ts +1 -1
  152. package/src/separator/separator.module.d.ts +5 -2
  153. package/src/skeleton/skeleton.component.d.ts +1 -1
  154. package/src/skeleton/skeleton.module.d.ts +5 -2
  155. package/src/spinner/spinner.component.d.ts +1 -1
  156. package/src/spinner/spinner.module.d.ts +5 -2
  157. package/src/utils/public-api.d.ts +1 -0
  158. package/src/utils/validators.d.ts +109 -0
  159. package/testing.d.ts +12 -0
@@ -24,5 +24,5 @@ export declare class PdmIconComponent {
24
24
  private buildLucideIndex;
25
25
  private escapeAttr;
26
26
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmIconComponent, never>;
27
- static ɵcmp: i0.ɵɵComponentDeclaration<PdmIconComponent, "pdm-icon", never, { "name": "name"; "library": "library"; "assetUrl": "assetUrl"; "size": "size"; "strokeWidth": "strokeWidth"; "className": "className"; "ariaLabel": "ariaLabel"; "decorative": "decorative"; }, {}, never, never, false>;
27
+ static ɵcmp: i0.ɵɵComponentDeclaration<PdmIconComponent, "pdm-icon", never, { "name": "name"; "library": "library"; "assetUrl": "assetUrl"; "size": "size"; "strokeWidth": "strokeWidth"; "className": "className"; "ariaLabel": "ariaLabel"; "decorative": "decorative"; }, {}, never, never, true>;
28
28
  }
@@ -1,8 +1,11 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./icon.component";
3
- import * as i2 from "@angular/common";
3
+ /**
4
+ * @deprecated Import PdmIconComponent directly instead. This module is kept for backwards compatibility.
5
+ * For modern Angular (v14+), use: import { PdmIconComponent } from 'pdm-ui-kit/icon'
6
+ */
4
7
  export declare class PdmIconModule {
5
8
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmIconModule, never>;
6
- static ɵmod: i0.ɵɵNgModuleDeclaration<PdmIconModule, [typeof i1.PdmIconComponent], [typeof i2.CommonModule], [typeof i1.PdmIconComponent]>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PdmIconModule, never, [typeof i1.PdmIconComponent], [typeof i1.PdmIconComponent]>;
7
10
  static ɵinj: i0.ɵɵInjectorDeclaration<PdmIconModule>;
8
11
  }
@@ -20,8 +20,12 @@ export declare class PdmInputComponent {
20
20
  errorText: string;
21
21
  valueChange: EventEmitter<string>;
22
22
  blurred: EventEmitter<FocusEvent>;
23
+ constructor();
23
24
  onInput(event: Event): void;
24
25
  onBlur(event: FocusEvent): void;
26
+ get helperAttrId(): string | null;
27
+ get errorAttrId(): string | null;
28
+ get descriptionAttrId(): string | null;
25
29
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmInputComponent, never>;
26
30
  static ɵcmp: i0.ɵɵComponentDeclaration<PdmInputComponent, "pdm-input", never, { "id": "id"; "type": "type"; "value": "value"; "placeholder": "placeholder"; "disabled": "disabled"; "readonly": "readonly"; "required": "required"; "invalid": "invalid"; "size": "size"; "roundness": "roundness"; "className": "className"; "inputClassName": "inputClassName"; "label": "label"; "helperText": "helperText"; "errorText": "errorText"; }, { "valueChange": "valueChange"; "blurred": "blurred"; }, never, never, false>;
27
31
  }
@@ -0,0 +1,27 @@
1
+ import { ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';
2
+ export interface PdmInputHarnessFilters {
3
+ selector?: string;
4
+ id?: string;
5
+ placeholder?: string;
6
+ }
7
+ export declare class PdmInputHarness extends ComponentHarness {
8
+ static hostSelector: string;
9
+ static with(options: PdmInputHarnessFilters): HarnessPredicate<PdmInputHarness>;
10
+ protected input: import("@angular/cdk/testing").AsyncFactoryFn<import("@angular/cdk/testing").TestElement>;
11
+ getId(): Promise<string>;
12
+ getValue(): Promise<string>;
13
+ setValue(value: string): Promise<void>;
14
+ getPlaceholder(): Promise<string>;
15
+ isDisabled(): Promise<boolean>;
16
+ isReadonly(): Promise<boolean>;
17
+ isRequired(): Promise<boolean>;
18
+ isInvalid(): Promise<boolean>;
19
+ getLabel(): Promise<string | null>;
20
+ getHelperText(): Promise<string | null>;
21
+ getErrorText(): Promise<string | null>;
22
+ focus(): Promise<void>;
23
+ blur(): Promise<void>;
24
+ getType(): Promise<string>;
25
+ clear(): Promise<void>;
26
+ protected getComponentInstance(): Promise<any>;
27
+ }
@@ -2,5 +2,5 @@ import * as i0 from "@angular/core";
2
2
  export declare class PdmKbdComponent {
3
3
  className: string;
4
4
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmKbdComponent, never>;
5
- static ɵcmp: i0.ɵɵComponentDeclaration<PdmKbdComponent, "pdm-kbd", never, { "className": "className"; }, {}, never, ["*"], false>;
5
+ static ɵcmp: i0.ɵɵComponentDeclaration<PdmKbdComponent, "pdm-kbd", never, { "className": "className"; }, {}, never, ["*"], true>;
6
6
  }
@@ -1,8 +1,11 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./kbd.component";
3
- import * as i2 from "@angular/common";
3
+ /**
4
+ * @deprecated Import PdmKbdComponent directly instead. This module is kept for backwards compatibility.
5
+ * For modern Angular (v14+), use: import { PdmKbdComponent } from 'pdm-ui-kit/kbd'
6
+ */
4
7
  export declare class PdmKbdModule {
5
8
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmKbdModule, never>;
6
- static ɵmod: i0.ɵɵNgModuleDeclaration<PdmKbdModule, [typeof i1.PdmKbdComponent], [typeof i2.CommonModule], [typeof i1.PdmKbdComponent]>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PdmKbdModule, never, [typeof i1.PdmKbdComponent], [typeof i1.PdmKbdComponent]>;
7
10
  static ɵinj: i0.ɵɵInjectorDeclaration<PdmKbdModule>;
8
11
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pdm-ui-kit",
3
- "version": "1.2.1",
3
+ "version": "1.3.0",
4
4
  "description": "PDM UI Kit Angular components - Responsive by default",
5
5
  "author": "Corelusa",
6
6
  "license": "MIT",
@@ -0,0 +1,21 @@
1
+ import { ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';
2
+ export interface PdmPaginationHarnessFilters {
3
+ selector?: string;
4
+ }
5
+ export declare class PdmPaginationHarness extends ComponentHarness {
6
+ static hostSelector: string;
7
+ static with(options: PdmPaginationHarnessFilters): HarnessPredicate<PdmPaginationHarness>;
8
+ protected nav: import("@angular/cdk/testing").AsyncFactoryFn<import("@angular/cdk/testing").TestElement>;
9
+ goToPage(page: number): Promise<void>;
10
+ goToNextPage(): Promise<void>;
11
+ goToPreviousPage(): Promise<void>;
12
+ getCurrentPage(): Promise<number>;
13
+ getPageCount(): Promise<number>;
14
+ getRowsPerPage(): Promise<number>;
15
+ setRowsPerPage(rows: number): Promise<void>;
16
+ getVisiblePages(): Promise<(number | string)[]>;
17
+ isNextPageDisabled(): Promise<boolean>;
18
+ isPreviousPageDisabled(): Promise<boolean>;
19
+ getPageButtons(): Promise<any[]>;
20
+ protected getComponentInstance(): Promise<any>;
21
+ }
package/public-api.d.ts CHANGED
@@ -112,3 +112,4 @@ export * from "./input/textarea.component";
112
112
  export * from "./toggle/toggle.component";
113
113
  export * from "./toggle/toggle-group.component";
114
114
  export * from "./tooltip/tooltip.component";
115
+ export * from "./testing";
@@ -0,0 +1,25 @@
1
+ import { ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';
2
+ import { PdmSelectOption } from '../select.component';
3
+ export interface PdmSelectHarnessFilters {
4
+ selector?: string;
5
+ placeholder?: string;
6
+ }
7
+ export declare class PdmSelectHarness extends ComponentHarness {
8
+ static hostSelector: string;
9
+ static with(options: PdmSelectHarnessFilters): HarnessPredicate<PdmSelectHarness>;
10
+ protected trigger: import("@angular/cdk/testing").AsyncFactoryFn<import("@angular/cdk/testing").TestElement>;
11
+ protected panel: import("@angular/cdk/testing").AsyncFactoryFn<import("@angular/cdk/testing").TestElement>;
12
+ open(): Promise<void>;
13
+ close(): Promise<void>;
14
+ isOpen(): Promise<boolean>;
15
+ getSelectedOption(): Promise<PdmSelectOption | undefined>;
16
+ getSelectedLabel(): Promise<string>;
17
+ getPlaceholder(): Promise<string>;
18
+ selectOption(value: string): Promise<void>;
19
+ getOptions(): Promise<PdmSelectOption[]>;
20
+ isDisabled(): Promise<boolean>;
21
+ isInvalid(): Promise<boolean>;
22
+ focus(): Promise<void>;
23
+ blur(): Promise<void>;
24
+ protected getComponentInstance(): Promise<any>;
25
+ }
@@ -5,5 +5,5 @@ export declare class PdmSeparatorComponent {
5
5
  className: string;
6
6
  get orientationClass(): string;
7
7
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmSeparatorComponent, never>;
8
- static ɵcmp: i0.ɵɵComponentDeclaration<PdmSeparatorComponent, "pdm-separator", never, { "orientation": "orientation"; "decorative": "decorative"; "className": "className"; }, {}, never, never, false>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<PdmSeparatorComponent, "pdm-separator", never, { "orientation": "orientation"; "decorative": "decorative"; "className": "className"; }, {}, never, never, true>;
9
9
  }
@@ -1,8 +1,11 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./separator.component";
3
- import * as i2 from "@angular/common";
3
+ /**
4
+ * @deprecated Import PdmSeparatorComponent directly instead. This module is kept for backwards compatibility.
5
+ * For modern Angular (v14+), use: import { PdmSeparatorComponent } from 'pdm-ui-kit/separator'
6
+ */
4
7
  export declare class PdmSeparatorModule {
5
8
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmSeparatorModule, never>;
6
- static ɵmod: i0.ɵɵNgModuleDeclaration<PdmSeparatorModule, [typeof i1.PdmSeparatorComponent], [typeof i2.CommonModule], [typeof i1.PdmSeparatorComponent]>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PdmSeparatorModule, never, [typeof i1.PdmSeparatorComponent], [typeof i1.PdmSeparatorComponent]>;
7
10
  static ɵinj: i0.ɵɵInjectorDeclaration<PdmSeparatorModule>;
8
11
  }
@@ -2,5 +2,5 @@ import * as i0 from "@angular/core";
2
2
  export declare class PdmSkeletonComponent {
3
3
  className: string;
4
4
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmSkeletonComponent, never>;
5
- static ɵcmp: i0.ɵɵComponentDeclaration<PdmSkeletonComponent, "pdm-skeleton", never, { "className": "className"; }, {}, never, never, false>;
5
+ static ɵcmp: i0.ɵɵComponentDeclaration<PdmSkeletonComponent, "pdm-skeleton", never, { "className": "className"; }, {}, never, never, true>;
6
6
  }
@@ -1,8 +1,11 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./skeleton.component";
3
- import * as i2 from "@angular/common";
3
+ /**
4
+ * @deprecated Import PdmSkeletonComponent directly instead. This module is kept for backwards compatibility.
5
+ * For modern Angular (v14+), use: import { PdmSkeletonComponent } from 'pdm-ui-kit/skeleton'
6
+ */
4
7
  export declare class PdmSkeletonModule {
5
8
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmSkeletonModule, never>;
6
- static ɵmod: i0.ɵɵNgModuleDeclaration<PdmSkeletonModule, [typeof i1.PdmSkeletonComponent], [typeof i2.CommonModule], [typeof i1.PdmSkeletonComponent]>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PdmSkeletonModule, never, [typeof i1.PdmSkeletonComponent], [typeof i1.PdmSkeletonComponent]>;
7
10
  static ɵinj: i0.ɵɵInjectorDeclaration<PdmSkeletonModule>;
8
11
  }
@@ -3,5 +3,5 @@ export declare class PdmSpinnerComponent {
3
3
  size: number;
4
4
  className: string;
5
5
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmSpinnerComponent, never>;
6
- static ɵcmp: i0.ɵɵComponentDeclaration<PdmSpinnerComponent, "pdm-spinner", never, { "size": "size"; "className": "className"; }, {}, never, never, false>;
6
+ static ɵcmp: i0.ɵɵComponentDeclaration<PdmSpinnerComponent, "pdm-spinner", never, { "size": "size"; "className": "className"; }, {}, never, never, true>;
7
7
  }
@@ -1,8 +1,11 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./spinner.component";
3
- import * as i2 from "@angular/common";
3
+ /**
4
+ * @deprecated Import PdmSpinnerComponent directly instead. This module is kept for backwards compatibility.
5
+ * For modern Angular (v14+), use: import { PdmSpinnerComponent } from 'pdm-ui-kit/spinner'
6
+ */
4
7
  export declare class PdmSpinnerModule {
5
8
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmSpinnerModule, never>;
6
- static ɵmod: i0.ɵɵNgModuleDeclaration<PdmSpinnerModule, [typeof i1.PdmSpinnerComponent], [typeof i2.CommonModule], [typeof i1.PdmSpinnerComponent]>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PdmSpinnerModule, never, [typeof i1.PdmSpinnerComponent], [typeof i1.PdmSpinnerComponent]>;
7
10
  static ɵinj: i0.ɵɵInjectorDeclaration<PdmSpinnerModule>;
8
11
  }
@@ -6,5 +6,5 @@ export declare class PdmAspectRatioComponent {
6
6
  className: string;
7
7
  get paddingTop(): string;
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmAspectRatioComponent, never>;
9
- static ɵcmp: i0.ɵɵComponentDeclaration<PdmAspectRatioComponent, "pdm-aspect-ratio", never, { "ratio": "ratio"; "imageSrc": "imageSrc"; "imageAlt": "imageAlt"; "className": "className"; }, {}, never, ["*"], false>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<PdmAspectRatioComponent, "pdm-aspect-ratio", never, { "ratio": "ratio"; "imageSrc": "imageSrc"; "imageAlt": "imageAlt"; "className": "className"; }, {}, never, ["*"], true>;
10
10
  }
@@ -1,8 +1,11 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./aspect-ratio.component";
3
- import * as i2 from "@angular/common";
3
+ /**
4
+ * @deprecated Import PdmAspectRatioComponent directly instead. This module is kept for backwards compatibility.
5
+ * For modern Angular (v14+), use: import { PdmAspectRatioComponent } from 'pdm-ui-kit/aspect-ratio'
6
+ */
4
7
  export declare class PdmAspectRatioModule {
5
8
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmAspectRatioModule, never>;
6
- static ɵmod: i0.ɵɵNgModuleDeclaration<PdmAspectRatioModule, [typeof i1.PdmAspectRatioComponent], [typeof i2.CommonModule], [typeof i1.PdmAspectRatioComponent]>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PdmAspectRatioModule, never, [typeof i1.PdmAspectRatioComponent], [typeof i1.PdmAspectRatioComponent]>;
7
10
  static ɵinj: i0.ɵɵInjectorDeclaration<PdmAspectRatioModule>;
8
11
  }
@@ -5,5 +5,5 @@ export declare class PdmBadgeComponent {
5
5
  text: string;
6
6
  className: string;
7
7
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmBadgeComponent, never>;
8
- static ɵcmp: i0.ɵɵComponentDeclaration<PdmBadgeComponent, "pdm-badge", never, { "variant": "variant"; "text": "text"; "className": "className"; }, {}, never, never, false>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<PdmBadgeComponent, "pdm-badge", never, { "variant": "variant"; "text": "text"; "className": "className"; }, {}, never, never, true>;
9
9
  }
@@ -1,8 +1,11 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./badge.component";
3
- import * as i2 from "@angular/common";
3
+ /**
4
+ * @deprecated Import PdmBadgeComponent directly instead. This module is kept for backwards compatibility.
5
+ * For modern Angular (v14+), use: import { PdmBadgeComponent } from 'pdm-ui-kit/badge'
6
+ */
4
7
  export declare class PdmBadgeModule {
5
8
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmBadgeModule, never>;
6
- static ɵmod: i0.ɵɵNgModuleDeclaration<PdmBadgeModule, [typeof i1.PdmBadgeComponent], [typeof i2.CommonModule], [typeof i1.PdmBadgeComponent]>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PdmBadgeModule, never, [typeof i1.PdmBadgeComponent], [typeof i1.PdmBadgeComponent]>;
7
10
  static ɵinj: i0.ɵɵInjectorDeclaration<PdmBadgeModule>;
8
11
  }
@@ -0,0 +1,2 @@
1
+ import { PdmButtonVariant, PdmButtonState } from './button.component';
2
+ export declare const BUTTON_TONE_MAP: Record<PdmButtonVariant, Record<PdmButtonState, string>>;
@@ -12,10 +12,7 @@ export declare class PdmButtonComponent {
12
12
  loading: boolean;
13
13
  className: string;
14
14
  pressed: EventEmitter<MouseEvent>;
15
- readonly toneClassMap: Record<PdmButtonVariant, {
16
- default: string;
17
- hover: string;
18
- }>;
15
+ readonly toneClassMap: Record<PdmButtonVariant, Record<PdmButtonState, string>>;
19
16
  get isDisabled(): boolean;
20
17
  get resolvedVariant(): PdmButtonVariant;
21
18
  get resolvedState(): PdmButtonState;
@@ -1,8 +1,9 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./dialog.component";
3
3
  import * as i2 from "@angular/common";
4
+ import * as i3 from "@angular/cdk/a11y";
4
5
  export declare class PdmDialogModule {
5
6
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmDialogModule, never>;
6
- static ɵmod: i0.ɵɵNgModuleDeclaration<PdmDialogModule, [typeof i1.PdmDialogComponent], [typeof i2.CommonModule], [typeof i1.PdmDialogComponent]>;
7
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PdmDialogModule, [typeof i1.PdmDialogComponent], [typeof i2.CommonModule, typeof i3.A11yModule], [typeof i1.PdmDialogComponent]>;
7
8
  static ɵinj: i0.ɵɵInjectorDeclaration<PdmDialogModule>;
8
9
  }
@@ -24,5 +24,5 @@ export declare class PdmIconComponent {
24
24
  private buildLucideIndex;
25
25
  private escapeAttr;
26
26
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmIconComponent, never>;
27
- static ɵcmp: i0.ɵɵComponentDeclaration<PdmIconComponent, "pdm-icon", never, { "name": "name"; "library": "library"; "assetUrl": "assetUrl"; "size": "size"; "strokeWidth": "strokeWidth"; "className": "className"; "ariaLabel": "ariaLabel"; "decorative": "decorative"; }, {}, never, never, false>;
27
+ static ɵcmp: i0.ɵɵComponentDeclaration<PdmIconComponent, "pdm-icon", never, { "name": "name"; "library": "library"; "assetUrl": "assetUrl"; "size": "size"; "strokeWidth": "strokeWidth"; "className": "className"; "ariaLabel": "ariaLabel"; "decorative": "decorative"; }, {}, never, never, true>;
28
28
  }
@@ -1,8 +1,11 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./icon.component";
3
- import * as i2 from "@angular/common";
3
+ /**
4
+ * @deprecated Import PdmIconComponent directly instead. This module is kept for backwards compatibility.
5
+ * For modern Angular (v14+), use: import { PdmIconComponent } from 'pdm-ui-kit/icon'
6
+ */
4
7
  export declare class PdmIconModule {
5
8
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmIconModule, never>;
6
- static ɵmod: i0.ɵɵNgModuleDeclaration<PdmIconModule, [typeof i1.PdmIconComponent], [typeof i2.CommonModule], [typeof i1.PdmIconComponent]>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PdmIconModule, never, [typeof i1.PdmIconComponent], [typeof i1.PdmIconComponent]>;
7
10
  static ɵinj: i0.ɵɵInjectorDeclaration<PdmIconModule>;
8
11
  }
@@ -20,8 +20,12 @@ export declare class PdmInputComponent {
20
20
  errorText: string;
21
21
  valueChange: EventEmitter<string>;
22
22
  blurred: EventEmitter<FocusEvent>;
23
+ constructor();
23
24
  onInput(event: Event): void;
24
25
  onBlur(event: FocusEvent): void;
26
+ get helperAttrId(): string | null;
27
+ get errorAttrId(): string | null;
28
+ get descriptionAttrId(): string | null;
25
29
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmInputComponent, never>;
26
30
  static ɵcmp: i0.ɵɵComponentDeclaration<PdmInputComponent, "pdm-input", never, { "id": "id"; "type": "type"; "value": "value"; "placeholder": "placeholder"; "disabled": "disabled"; "readonly": "readonly"; "required": "required"; "invalid": "invalid"; "size": "size"; "roundness": "roundness"; "className": "className"; "inputClassName": "inputClassName"; "label": "label"; "helperText": "helperText"; "errorText": "errorText"; }, { "valueChange": "valueChange"; "blurred": "blurred"; }, never, never, false>;
27
31
  }
@@ -2,5 +2,5 @@ import * as i0 from "@angular/core";
2
2
  export declare class PdmKbdComponent {
3
3
  className: string;
4
4
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmKbdComponent, never>;
5
- static ɵcmp: i0.ɵɵComponentDeclaration<PdmKbdComponent, "pdm-kbd", never, { "className": "className"; }, {}, never, ["*"], false>;
5
+ static ɵcmp: i0.ɵɵComponentDeclaration<PdmKbdComponent, "pdm-kbd", never, { "className": "className"; }, {}, never, ["*"], true>;
6
6
  }
@@ -1,8 +1,11 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./kbd.component";
3
- import * as i2 from "@angular/common";
3
+ /**
4
+ * @deprecated Import PdmKbdComponent directly instead. This module is kept for backwards compatibility.
5
+ * For modern Angular (v14+), use: import { PdmKbdComponent } from 'pdm-ui-kit/kbd'
6
+ */
4
7
  export declare class PdmKbdModule {
5
8
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmKbdModule, never>;
6
- static ɵmod: i0.ɵɵNgModuleDeclaration<PdmKbdModule, [typeof i1.PdmKbdComponent], [typeof i2.CommonModule], [typeof i1.PdmKbdComponent]>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PdmKbdModule, never, [typeof i1.PdmKbdComponent], [typeof i1.PdmKbdComponent]>;
7
10
  static ɵinj: i0.ɵɵInjectorDeclaration<PdmKbdModule>;
8
11
  }
@@ -5,5 +5,5 @@ export declare class PdmSeparatorComponent {
5
5
  className: string;
6
6
  get orientationClass(): string;
7
7
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmSeparatorComponent, never>;
8
- static ɵcmp: i0.ɵɵComponentDeclaration<PdmSeparatorComponent, "pdm-separator", never, { "orientation": "orientation"; "decorative": "decorative"; "className": "className"; }, {}, never, never, false>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<PdmSeparatorComponent, "pdm-separator", never, { "orientation": "orientation"; "decorative": "decorative"; "className": "className"; }, {}, never, never, true>;
9
9
  }
@@ -1,8 +1,11 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./separator.component";
3
- import * as i2 from "@angular/common";
3
+ /**
4
+ * @deprecated Import PdmSeparatorComponent directly instead. This module is kept for backwards compatibility.
5
+ * For modern Angular (v14+), use: import { PdmSeparatorComponent } from 'pdm-ui-kit/separator'
6
+ */
4
7
  export declare class PdmSeparatorModule {
5
8
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmSeparatorModule, never>;
6
- static ɵmod: i0.ɵɵNgModuleDeclaration<PdmSeparatorModule, [typeof i1.PdmSeparatorComponent], [typeof i2.CommonModule], [typeof i1.PdmSeparatorComponent]>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PdmSeparatorModule, never, [typeof i1.PdmSeparatorComponent], [typeof i1.PdmSeparatorComponent]>;
7
10
  static ɵinj: i0.ɵɵInjectorDeclaration<PdmSeparatorModule>;
8
11
  }
@@ -2,5 +2,5 @@ import * as i0 from "@angular/core";
2
2
  export declare class PdmSkeletonComponent {
3
3
  className: string;
4
4
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmSkeletonComponent, never>;
5
- static ɵcmp: i0.ɵɵComponentDeclaration<PdmSkeletonComponent, "pdm-skeleton", never, { "className": "className"; }, {}, never, never, false>;
5
+ static ɵcmp: i0.ɵɵComponentDeclaration<PdmSkeletonComponent, "pdm-skeleton", never, { "className": "className"; }, {}, never, never, true>;
6
6
  }
@@ -1,8 +1,11 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./skeleton.component";
3
- import * as i2 from "@angular/common";
3
+ /**
4
+ * @deprecated Import PdmSkeletonComponent directly instead. This module is kept for backwards compatibility.
5
+ * For modern Angular (v14+), use: import { PdmSkeletonComponent } from 'pdm-ui-kit/skeleton'
6
+ */
4
7
  export declare class PdmSkeletonModule {
5
8
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmSkeletonModule, never>;
6
- static ɵmod: i0.ɵɵNgModuleDeclaration<PdmSkeletonModule, [typeof i1.PdmSkeletonComponent], [typeof i2.CommonModule], [typeof i1.PdmSkeletonComponent]>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PdmSkeletonModule, never, [typeof i1.PdmSkeletonComponent], [typeof i1.PdmSkeletonComponent]>;
7
10
  static ɵinj: i0.ɵɵInjectorDeclaration<PdmSkeletonModule>;
8
11
  }
@@ -3,5 +3,5 @@ export declare class PdmSpinnerComponent {
3
3
  size: number;
4
4
  className: string;
5
5
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmSpinnerComponent, never>;
6
- static ɵcmp: i0.ɵɵComponentDeclaration<PdmSpinnerComponent, "pdm-spinner", never, { "size": "size"; "className": "className"; }, {}, never, never, false>;
6
+ static ɵcmp: i0.ɵɵComponentDeclaration<PdmSpinnerComponent, "pdm-spinner", never, { "size": "size"; "className": "className"; }, {}, never, never, true>;
7
7
  }
@@ -1,8 +1,11 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./spinner.component";
3
- import * as i2 from "@angular/common";
3
+ /**
4
+ * @deprecated Import PdmSpinnerComponent directly instead. This module is kept for backwards compatibility.
5
+ * For modern Angular (v14+), use: import { PdmSpinnerComponent } from 'pdm-ui-kit/spinner'
6
+ */
4
7
  export declare class PdmSpinnerModule {
5
8
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmSpinnerModule, never>;
6
- static ɵmod: i0.ɵɵNgModuleDeclaration<PdmSpinnerModule, [typeof i1.PdmSpinnerComponent], [typeof i2.CommonModule], [typeof i1.PdmSpinnerComponent]>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PdmSpinnerModule, never, [typeof i1.PdmSpinnerComponent], [typeof i1.PdmSpinnerComponent]>;
7
10
  static ɵinj: i0.ɵɵInjectorDeclaration<PdmSpinnerModule>;
8
11
  }
@@ -1,2 +1,3 @@
1
1
  export * from "./responsive";
2
2
  export * from "./z-index";
3
+ export * from "./validators";
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Form validation utilities for PDM UI Kit
3
+ *
4
+ * Pure validation functions and patterns that work with any form validation library.
5
+ * These functions validate values directly and return true/false, making them framework-agnostic.
6
+ */
7
+ export interface PdmValidationError {
8
+ message: string;
9
+ code: string;
10
+ }
11
+ /**
12
+ * Validate email format
13
+ *
14
+ * @example
15
+ * isValidEmail('user@example.com') // true
16
+ */
17
+ export declare function isValidEmail(value: string): boolean;
18
+ /**
19
+ * Validate URL format
20
+ *
21
+ * @example
22
+ * isValidUrl('https://example.com') // true
23
+ */
24
+ export declare function isValidUrl(value: string): boolean;
25
+ /**
26
+ * Validate minimum length
27
+ *
28
+ * @example
29
+ * hasMinLength('password', 8) // true if length >= 8
30
+ */
31
+ export declare function hasMinLength(value: string, min: number): boolean;
32
+ /**
33
+ * Validate maximum length
34
+ *
35
+ * @example
36
+ * hasMaxLength('bio', 500) // true if length <= 500
37
+ */
38
+ export declare function hasMaxLength(value: string, max: number): boolean;
39
+ /**
40
+ * Validate that value only contains numbers
41
+ *
42
+ * @example
43
+ * isNumeric('12345') // true
44
+ */
45
+ export declare function isNumeric(value: string): boolean;
46
+ /**
47
+ * Validate that two values match (e.g., password confirmation)
48
+ *
49
+ * @example
50
+ * valuesMatch(password, confirmPassword) // true if they match
51
+ */
52
+ export declare function valuesMatch(value1: string, value2: string): boolean;
53
+ /**
54
+ * Validate minimum value
55
+ *
56
+ * @example
57
+ * isMinValue(age, 18) // true if age >= 18
58
+ */
59
+ export declare function isMinValue(value: number, min: number): boolean;
60
+ /**
61
+ * Validate maximum value
62
+ *
63
+ * @example
64
+ * isMaxValue(percentage, 100) // true if percentage <= 100
65
+ */
66
+ export declare function isMaxValue(value: number, max: number): boolean;
67
+ /**
68
+ * Validate phone number format (basic international format)
69
+ * Accepts: +1234567890, (123) 456-7890, 123-456-7890
70
+ *
71
+ * @example
72
+ * isValidPhone('+1234567890') // true
73
+ */
74
+ export declare function isValidPhone(value: string): boolean;
75
+ /**
76
+ * Check if value contains at least one uppercase letter
77
+ *
78
+ * @example
79
+ * hasUppercase('Password') // true
80
+ */
81
+ export declare function hasUppercase(value: string): boolean;
82
+ /**
83
+ * Check if value contains at least one lowercase letter
84
+ *
85
+ * @example
86
+ * hasLowercase('Password') // true
87
+ */
88
+ export declare function hasLowercase(value: string): boolean;
89
+ /**
90
+ * Check if value contains at least one number
91
+ *
92
+ * @example
93
+ * hasNumber('Pass123') // true
94
+ */
95
+ export declare function hasNumber(value: string): boolean;
96
+ /**
97
+ * Check if value contains at least one special character
98
+ *
99
+ * @example
100
+ * hasSpecialChar('Pass@123') // true
101
+ */
102
+ export declare function hasSpecialChar(value: string): boolean;
103
+ /**
104
+ * Get user-friendly error message for validation failures
105
+ *
106
+ * @example
107
+ * getErrorMessage('invalidEmail') // "Please enter a valid email address"
108
+ */
109
+ export declare function getErrorMessage(errorCode: string, fieldName?: string): string;
package/testing.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Public API for CDK test harnesses
3
+ *
4
+ * Usage:
5
+ * import { PdmInputHarness, PdmButtonHarness } from 'pdm-ui-kit/testing';
6
+ */
7
+ export { PdmInputHarness, type PdmInputHarnessFilters } from './input/testing/input-harness';
8
+ export { PdmButtonHarness, type PdmButtonHarnessFilters } from './button/testing/button-harness';
9
+ export { PdmDialogHarness, type PdmDialogHarnessFilters } from './dialog/testing/dialog-harness';
10
+ export { PdmSelectHarness, type PdmSelectHarnessFilters } from './select/testing/select-harness';
11
+ export { PdmCheckboxHarness, type PdmCheckboxHarnessFilters } from './checkbox/testing/checkbox-harness';
12
+ export { PdmPaginationHarness, type PdmPaginationHarnessFilters } from './pagination/testing/pagination-harness';