@hmcts/opal-frontend-common 0.0.98 → 0.0.101

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.
@@ -0,0 +1,54 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, Input, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { MonetaryPipe } from '@hmcts/opal-frontend-common/pipes/monetary';
4
+
5
+ class CustomAccessibleMonetaryComponent {
6
+ monetaryPipe = inject(MonetaryPipe);
7
+ value;
8
+ format = 'default';
9
+ /**
10
+ * Formats the provided value using the shared monetary pipe.
11
+ *
12
+ * @returns The formatted monetary string for display.
13
+ */
14
+ get formattedValue() {
15
+ return this.monetaryPipe.transform(this.value, this.format);
16
+ }
17
+ /**
18
+ * Determines whether the formatted value is negative and needs accessible split rendering.
19
+ *
20
+ * @returns `true` when the formatted value starts with a minus sign; otherwise `false`.
21
+ */
22
+ get hasAccessibleNegativeValue() {
23
+ return this.formattedValue.startsWith('-');
24
+ }
25
+ /**
26
+ * Builds the screen-reader-friendly text for negative amounts.
27
+ *
28
+ * @returns The accessible value, prefixing negative amounts with the word `minus`.
29
+ */
30
+ get accessibleValue() {
31
+ if (!this.hasAccessibleNegativeValue) {
32
+ return this.formattedValue;
33
+ }
34
+ return `minus ${this.formattedValue.slice(1)}`;
35
+ }
36
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: CustomAccessibleMonetaryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
37
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: CustomAccessibleMonetaryComponent, isStandalone: true, selector: "opal-lib-custom-accessible-monetary", inputs: { value: "value", format: "format" }, providers: [MonetaryPipe], ngImport: i0, template: "@if (hasAccessibleNegativeValue) {\n <span aria-hidden=\"true\">{{ formattedValue }}</span>\n <span class=\"govuk-visually-hidden\">{{ accessibleValue }}</span>\n} @else {\n {{ formattedValue }}\n}\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
38
+ }
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: CustomAccessibleMonetaryComponent, decorators: [{
40
+ type: Component,
41
+ args: [{ selector: 'opal-lib-custom-accessible-monetary', imports: [], providers: [MonetaryPipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (hasAccessibleNegativeValue) {\n <span aria-hidden=\"true\">{{ formattedValue }}</span>\n <span class=\"govuk-visually-hidden\">{{ accessibleValue }}</span>\n} @else {\n {{ formattedValue }}\n}\n" }]
42
+ }], propDecorators: { value: [{
43
+ type: Input,
44
+ args: [{ required: true }]
45
+ }], format: [{
46
+ type: Input
47
+ }] } });
48
+
49
+ /**
50
+ * Generated bundle index. Do not edit.
51
+ */
52
+
53
+ export { CustomAccessibleMonetaryComponent };
54
+ //# sourceMappingURL=hmcts-opal-frontend-common-components-custom-custom-accessible-monetary.mjs.map
@@ -10,6 +10,7 @@ const HEADER_LINKS = {
10
10
  };
11
11
 
12
12
  const ALPHANUMERIC_WITH_SPACES_PATTERN = /^[a-zA-Z0-9 ]*$/;
13
+ const ADDRESS_LINE_PATTERN = /^[a-zA-Z0-9'*,()_ .-]*$/;
13
14
  const ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_DOT_PATTERN = /^[a-zA-Z0-9\s'.-]*$/;
14
15
  const ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_COMMAS_DOT_PATTERN = /^[a-zA-Z0-9\s'.,-]*$/;
15
16
  const LETTERS_WITH_SPACES_PATTERN = /^[a-zA-Z ]*$/;
@@ -29,5 +30,5 @@ const SINGLE_ASCII_CHARACTERS_WITH_POUND = /^[\x20-\x7E£]*$/;
29
30
  * Generated bundle index. Do not edit.
30
31
  */
31
32
 
32
- export { ACCOUNT_NUMBER_PATTERN, ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_COMMAS_DOT_PATTERN, ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_DOT_PATTERN, ALPHANUMERIC_WITH_SPACES_PATTERN, DRIVING_LICENCE_NUMBER_PATTERN, EMAIL_ADDRESS_PATTERN, FOOTER_LINKS, HEADER_LINKS, LETTERS_SPACES_HYPHENS_APOSTROPHES_DOT_PATTERN, LETTERS_WITH_SPACES_DOT_PATTERN, LETTERS_WITH_SPACES_PATTERN, NUMERIC_PATTERN, SINGLE_ASCII_CHARACTERS, SINGLE_ASCII_CHARACTERS_WITH_POUND, SPECIAL_CHARACTERS_PATTERN, TIME_FORMAT_PATTERN, TWO_DECIMAL_PLACES_PATTERN };
33
+ export { ACCOUNT_NUMBER_PATTERN, ADDRESS_LINE_PATTERN, ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_COMMAS_DOT_PATTERN, ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_DOT_PATTERN, ALPHANUMERIC_WITH_SPACES_PATTERN, DRIVING_LICENCE_NUMBER_PATTERN, EMAIL_ADDRESS_PATTERN, FOOTER_LINKS, HEADER_LINKS, LETTERS_SPACES_HYPHENS_APOSTROPHES_DOT_PATTERN, LETTERS_WITH_SPACES_DOT_PATTERN, LETTERS_WITH_SPACES_PATTERN, NUMERIC_PATTERN, SINGLE_ASCII_CHARACTERS, SINGLE_ASCII_CHARACTERS_WITH_POUND, SPECIAL_CHARACTERS_PATTERN, TIME_FORMAT_PATTERN, TWO_DECIMAL_PLACES_PATTERN };
33
34
  //# sourceMappingURL=hmcts-opal-frontend-common-constants.mjs.map
@@ -1,7 +1,7 @@
1
1
  const canDeactivateGuard = (component) => {
2
2
  return component.canDeactivate()
3
3
  ? true
4
- : confirm('WARNING: Are you sure you want to cancel? Any information you entered will be lost.');
4
+ : confirm('WARNING: Are you sure you want to leave this page? Any information you entered will be lost.');
5
5
  };
6
6
 
7
7
  /**
@@ -12,6 +12,12 @@ import { UtilsService } from '@hmcts/opal-frontend-common/services/utils-service
12
12
  class MonetaryPipe {
13
13
  utilsService = inject(UtilsService);
14
14
  transform(value, format = 'default') {
15
+ if (value === null || value === undefined || value === '') {
16
+ return '';
17
+ }
18
+ if (typeof value === 'string' && value.includes('£')) {
19
+ return format === 'remove-minus-symbol' && value.startsWith('-') ? value.slice(1) : value;
20
+ }
15
21
  const monetaryValue = this.utilsService.convertToMonetaryString(value);
16
22
  return format === 'remove-minus-symbol' ? monetaryValue.replace(/^-/, '') : monetaryValue;
17
23
  }
@@ -16,6 +16,7 @@ const HEADER_LINKS = {
16
16
  };
17
17
 
18
18
  const ALPHANUMERIC_WITH_SPACES_PATTERN = /^[a-zA-Z0-9 ]*$/;
19
+ const ADDRESS_LINE_PATTERN = /^[a-zA-Z0-9'*,()_ .-]*$/;
19
20
  const ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_DOT_PATTERN = /^[a-zA-Z0-9\s'.-]*$/;
20
21
  const ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_COMMAS_DOT_PATTERN = /^[a-zA-Z0-9\s'.,-]*$/;
21
22
  const LETTERS_WITH_SPACES_PATTERN = /^[a-zA-Z ]*$/;
@@ -94,5 +95,5 @@ const routing = [
94
95
  * Generated bundle index. Do not edit.
95
96
  */
96
97
 
97
- export { ACCOUNT_NUMBER_PATTERN, ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_COMMAS_DOT_PATTERN, ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_DOT_PATTERN, ALPHANUMERIC_WITH_SPACES_PATTERN, DRIVING_LICENCE_NUMBER_PATTERN, EMAIL_ADDRESS_PATTERN, FOOTER_LINKS, HEADER_LINKS, LETTERS_SPACES_HYPHENS_APOSTROPHES_DOT_PATTERN, LETTERS_WITH_SPACES_DOT_PATTERN, LETTERS_WITH_SPACES_PATTERN, NUMERIC_PATTERN, SINGLE_ASCII_CHARACTERS, SINGLE_ASCII_CHARACTERS_WITH_POUND, SPECIAL_CHARACTERS_PATTERN, TIME_FORMAT_PATTERN, TWO_DECIMAL_PLACES_PATTERN, routing };
98
+ export { ACCOUNT_NUMBER_PATTERN, ADDRESS_LINE_PATTERN, ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_COMMAS_DOT_PATTERN, ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_DOT_PATTERN, ALPHANUMERIC_WITH_SPACES_PATTERN, DRIVING_LICENCE_NUMBER_PATTERN, EMAIL_ADDRESS_PATTERN, FOOTER_LINKS, HEADER_LINKS, LETTERS_SPACES_HYPHENS_APOSTROPHES_DOT_PATTERN, LETTERS_WITH_SPACES_DOT_PATTERN, LETTERS_WITH_SPACES_PATTERN, NUMERIC_PATTERN, SINGLE_ASCII_CHARACTERS, SINGLE_ASCII_CHARACTERS_WITH_POUND, SPECIAL_CHARACTERS_PATTERN, TIME_FORMAT_PATTERN, TWO_DECIMAL_PLACES_PATTERN, routing };
98
99
  //# sourceMappingURL=hmcts-opal-frontend-common.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hmcts/opal-frontend-common",
3
- "version": "0.0.98",
3
+ "version": "0.0.101",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -201,6 +201,11 @@
201
201
  "types": "./types/hmcts-opal-frontend-common-components-custom-custom-account-information.d.ts",
202
202
  "default": "./fesm2022/hmcts-opal-frontend-common-components-custom-custom-account-information.mjs"
203
203
  },
204
+ "./components/custom/custom-accessible-monetary": {
205
+ "import": "./fesm2022/hmcts-opal-frontend-common-components-custom-custom-accessible-monetary.mjs",
206
+ "types": "./types/hmcts-opal-frontend-common-components-custom-custom-accessible-monetary.d.ts",
207
+ "default": "./fesm2022/hmcts-opal-frontend-common-components-custom-custom-accessible-monetary.mjs"
208
+ },
204
209
  "./components/custom/custom-summary-metric-bar": {
205
210
  "import": "./fesm2022/hmcts-opal-frontend-common-components-custom-custom-summary-metric-bar.mjs",
206
211
  "types": "./types/hmcts-opal-frontend-common-components-custom-custom-summary-metric-bar.d.ts",
@@ -0,0 +1,30 @@
1
+ import * as i0 from '@angular/core';
2
+
3
+ type MonetaryFormat = 'default' | 'remove-minus-symbol';
4
+ declare class CustomAccessibleMonetaryComponent {
5
+ private readonly monetaryPipe;
6
+ value: number | string | null | undefined;
7
+ format: MonetaryFormat;
8
+ /**
9
+ * Formats the provided value using the shared monetary pipe.
10
+ *
11
+ * @returns The formatted monetary string for display.
12
+ */
13
+ get formattedValue(): string;
14
+ /**
15
+ * Determines whether the formatted value is negative and needs accessible split rendering.
16
+ *
17
+ * @returns `true` when the formatted value starts with a minus sign; otherwise `false`.
18
+ */
19
+ get hasAccessibleNegativeValue(): boolean;
20
+ /**
21
+ * Builds the screen-reader-friendly text for negative amounts.
22
+ *
23
+ * @returns The accessible value, prefixing negative amounts with the word `minus`.
24
+ */
25
+ get accessibleValue(): string;
26
+ static ɵfac: i0.ɵɵFactoryDeclaration<CustomAccessibleMonetaryComponent, never>;
27
+ static ɵcmp: i0.ɵɵComponentDeclaration<CustomAccessibleMonetaryComponent, "opal-lib-custom-accessible-monetary", never, { "value": { "alias": "value"; "required": true; }; "format": { "alias": "format"; "required": false; }; }, {}, never, never, true, never>;
28
+ }
29
+
30
+ export { CustomAccessibleMonetaryComponent };
@@ -6,6 +6,7 @@ declare const FOOTER_LINKS: IGovukFooterLinks;
6
6
  declare const HEADER_LINKS: IMojHeaderLinks;
7
7
 
8
8
  declare const ALPHANUMERIC_WITH_SPACES_PATTERN: RegExp;
9
+ declare const ADDRESS_LINE_PATTERN: RegExp;
9
10
  declare const ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_DOT_PATTERN: RegExp;
10
11
  declare const ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_COMMAS_DOT_PATTERN: RegExp;
11
12
  declare const LETTERS_WITH_SPACES_PATTERN: RegExp;
@@ -21,4 +22,4 @@ declare const ACCOUNT_NUMBER_PATTERN: RegExp;
21
22
  declare const SINGLE_ASCII_CHARACTERS: RegExp;
22
23
  declare const SINGLE_ASCII_CHARACTERS_WITH_POUND: RegExp;
23
24
 
24
- export { ACCOUNT_NUMBER_PATTERN, ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_COMMAS_DOT_PATTERN, ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_DOT_PATTERN, ALPHANUMERIC_WITH_SPACES_PATTERN, DRIVING_LICENCE_NUMBER_PATTERN, EMAIL_ADDRESS_PATTERN, FOOTER_LINKS, HEADER_LINKS, LETTERS_SPACES_HYPHENS_APOSTROPHES_DOT_PATTERN, LETTERS_WITH_SPACES_DOT_PATTERN, LETTERS_WITH_SPACES_PATTERN, NUMERIC_PATTERN, SINGLE_ASCII_CHARACTERS, SINGLE_ASCII_CHARACTERS_WITH_POUND, SPECIAL_CHARACTERS_PATTERN, TIME_FORMAT_PATTERN, TWO_DECIMAL_PLACES_PATTERN };
25
+ export { ACCOUNT_NUMBER_PATTERN, ADDRESS_LINE_PATTERN, ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_COMMAS_DOT_PATTERN, ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_DOT_PATTERN, ALPHANUMERIC_WITH_SPACES_PATTERN, DRIVING_LICENCE_NUMBER_PATTERN, EMAIL_ADDRESS_PATTERN, FOOTER_LINKS, HEADER_LINKS, LETTERS_SPACES_HYPHENS_APOSTROPHES_DOT_PATTERN, LETTERS_WITH_SPACES_DOT_PATTERN, LETTERS_WITH_SPACES_PATTERN, NUMERIC_PATTERN, SINGLE_ASCII_CHARACTERS, SINGLE_ASCII_CHARACTERS_WITH_POUND, SPECIAL_CHARACTERS_PATTERN, TIME_FORMAT_PATTERN, TWO_DECIMAL_PLACES_PATTERN };
@@ -4,7 +4,7 @@ import { PipeTransform } from '@angular/core';
4
4
  type MonetaryFormat = 'default' | 'remove-minus-symbol';
5
5
  declare class MonetaryPipe implements PipeTransform {
6
6
  private readonly utilsService;
7
- transform(value: number | string, format?: MonetaryFormat): string;
7
+ transform(value: number | string | null | undefined, format?: MonetaryFormat): string;
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<MonetaryPipe, never>;
9
9
  static ɵpipe: i0.ɵɵPipeDeclaration<MonetaryPipe, "monetary", true>;
10
10
  }
@@ -7,6 +7,7 @@ declare const FOOTER_LINKS: IGovukFooterLinks;
7
7
  declare const HEADER_LINKS: IMojHeaderLinks;
8
8
 
9
9
  declare const ALPHANUMERIC_WITH_SPACES_PATTERN: RegExp;
10
+ declare const ADDRESS_LINE_PATTERN: RegExp;
10
11
  declare const ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_DOT_PATTERN: RegExp;
11
12
  declare const ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_COMMAS_DOT_PATTERN: RegExp;
12
13
  declare const LETTERS_WITH_SPACES_PATTERN: RegExp;
@@ -26,5 +27,5 @@ declare const routing: Routes;
26
27
 
27
28
  type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
28
29
 
29
- export { ACCOUNT_NUMBER_PATTERN, ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_COMMAS_DOT_PATTERN, ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_DOT_PATTERN, ALPHANUMERIC_WITH_SPACES_PATTERN, DRIVING_LICENCE_NUMBER_PATTERN, EMAIL_ADDRESS_PATTERN, FOOTER_LINKS, HEADER_LINKS, LETTERS_SPACES_HYPHENS_APOSTROPHES_DOT_PATTERN, LETTERS_WITH_SPACES_DOT_PATTERN, LETTERS_WITH_SPACES_PATTERN, NUMERIC_PATTERN, SINGLE_ASCII_CHARACTERS, SINGLE_ASCII_CHARACTERS_WITH_POUND, SPECIAL_CHARACTERS_PATTERN, TIME_FORMAT_PATTERN, TWO_DECIMAL_PLACES_PATTERN, routing };
30
+ export { ACCOUNT_NUMBER_PATTERN, ADDRESS_LINE_PATTERN, ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_COMMAS_DOT_PATTERN, ALPHANUMERIC_WITH_HYPHENS_SPACES_APOSTROPHES_DOT_PATTERN, ALPHANUMERIC_WITH_SPACES_PATTERN, DRIVING_LICENCE_NUMBER_PATTERN, EMAIL_ADDRESS_PATTERN, FOOTER_LINKS, HEADER_LINKS, LETTERS_SPACES_HYPHENS_APOSTROPHES_DOT_PATTERN, LETTERS_WITH_SPACES_DOT_PATTERN, LETTERS_WITH_SPACES_PATTERN, NUMERIC_PATTERN, SINGLE_ASCII_CHARACTERS, SINGLE_ASCII_CHARACTERS_WITH_POUND, SPECIAL_CHARACTERS_PATTERN, TIME_FORMAT_PATTERN, TWO_DECIMAL_PLACES_PATTERN, routing };
30
31
  export type { HeadingLevel };