cps-ui-kit 21.1.0 → 21.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cps-ui-kit",
3
- "version": "21.1.0",
3
+ "version": "21.3.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.2.6",
6
6
  "@angular/core": "^21.2.6",
@@ -269,7 +269,8 @@
269
269
  //Text
270
270
  --cps-color-text-lightest: #b5b2b2;
271
271
  --cps-color-text-light: #9a9595;
272
- --cps-color-text-mild: #787272;
272
+ --cps-color-text-mild: #6a6565;
273
+ --cps-color-text-medium: #5e5858;
273
274
  --cps-color-text-dark: #524a4a;
274
275
  --cps-color-text-darkest: #2d2323;
275
276
  }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Focus ring mixin for interactive elements.
3
+ *
4
+ * Renders a dual-color focus indicator (inner + outer ring)
5
+ * to ensure visibility on light and dark backgrounds and meet accessibility requirements.
6
+ */
7
+ @mixin focus-ring(
8
+ $radius: 0.375rem,
9
+ $inner-offset: 0.125rem,
10
+ $outer-offset: 0.25rem,
11
+ $inner-width: 0.0625rem,
12
+ $outer-width: 0.0625rem
13
+ ) {
14
+ &:focus-visible {
15
+ position: relative;
16
+ }
17
+
18
+ &:focus-visible::before,
19
+ &:focus-visible::after {
20
+ content: '';
21
+ position: absolute;
22
+ border-radius: $radius;
23
+ }
24
+
25
+ &:focus-visible::before {
26
+ inset: -#{$inner-offset}; /* inner offset */
27
+ border: $inner-width solid var(--cps-color-calm);
28
+ }
29
+
30
+ &:focus-visible::after {
31
+ inset: -#{$outer-offset}; /* outer offset */
32
+ border: $outer-width solid var(--cps-color-calm-highlighten);
33
+ }
34
+ }
@@ -1066,6 +1066,11 @@ declare class CpsAutocompleteComponent implements ControlValueAccessor, OnInit,
1066
1066
  * @group Props
1067
1067
  */
1068
1068
  label: string;
1069
+ /**
1070
+ * Aria label for the autocomplete component, used for accessibility, it takes precedence over label.
1071
+ * @group Props
1072
+ */
1073
+ ariaLabel: string;
1069
1074
  /**
1070
1075
  * Placeholder text.
1071
1076
  * @group Props
@@ -1312,6 +1317,7 @@ declare class CpsAutocompleteComponent implements ControlValueAccessor, OnInit,
1312
1317
  error: string;
1313
1318
  cvtWidth: string;
1314
1319
  isOpened: boolean;
1320
+ isActive: boolean;
1315
1321
  inputText: string;
1316
1322
  inputTextDebounced: string;
1317
1323
  filteredOptions: any[];
@@ -1323,9 +1329,13 @@ declare class CpsAutocompleteComponent implements ControlValueAccessor, OnInit,
1323
1329
  autocompleteBoxWidth: number;
1324
1330
  resizeObserver: ResizeObserver;
1325
1331
  isTimePickerField: boolean;
1332
+ optionsListId: string;
1333
+ selectAllOptionId: string;
1334
+ private _optionIdPrefix;
1326
1335
  private _inputChangeSubject$;
1327
1336
  private _destroy$;
1328
1337
  private _options;
1338
+ private _optionIds;
1329
1339
  constructor(_control: NgControl, document: Document, cdRef: ChangeDetectorRef, _labelByValue: LabelByValuePipe);
1330
1340
  ngOnInit(): void;
1331
1341
  ngOnChanges(changes: SimpleChanges): void;
@@ -1344,7 +1354,6 @@ declare class CpsAutocompleteComponent implements ControlValueAccessor, OnInit,
1344
1354
  setDisabledState(disabled: boolean): void;
1345
1355
  onBlur(): void;
1346
1356
  onFocus(): void;
1347
- isActive(): boolean;
1348
1357
  onBeforeOptionsHidden(reason: CpsMenuHideReason): void;
1349
1358
  onBoxClick(): void;
1350
1359
  onContainerKeyDown(event: any): void;
@@ -1355,6 +1364,13 @@ declare class CpsAutocompleteComponent implements ControlValueAccessor, OnInit,
1355
1364
  recalcVirtualListHeight(): void;
1356
1365
  isEmptyValue(): boolean;
1357
1366
  clearInput(): void;
1367
+ get computedLabel(): string | null;
1368
+ get isSelectAllVisible(): boolean;
1369
+ get optionsAriaSetSize(): number;
1370
+ get activeDescendantId(): string | null;
1371
+ getOptionAriaPosInSet(itemIndex: number): number;
1372
+ getOptionId(option: any, index: number): string;
1373
+ private _buildOptionId;
1358
1374
  private _getEmptyValue;
1359
1375
  private _toggleOptions;
1360
1376
  private _clickOption;
@@ -1362,14 +1378,18 @@ declare class CpsAutocompleteComponent implements ControlValueAccessor, OnInit,
1362
1378
  private updateValue;
1363
1379
  private _getValueLabel;
1364
1380
  private _closeAndClear;
1365
- private _getHTMLOptions;
1366
1381
  private _dehighlightOption;
1382
+ private _getHighlightedOptionId;
1367
1383
  private _highlightOption;
1368
1384
  private _navigateOptionsByArrows;
1385
+ private _navigateVirtualOptionsByArrows;
1386
+ private _nextHighlightIndex;
1387
+ private _syncVirtualHighlightedOptionIntoView;
1388
+ private _scrollVirtualListToIndex;
1369
1389
  private _confirmInput;
1370
1390
  private _removeLastValue;
1371
1391
  static ɵfac: i0.ɵɵFactoryDeclaration<CpsAutocompleteComponent, [{ optional: true; self: true; }, null, null, null]>;
1372
- static ɵcmp: i0.ɵɵComponentDeclaration<CpsAutocompleteComponent, "cps-autocomplete", never, { "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "returnObject": { "alias": "returnObject"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "width": { "alias": "width"; "required": false; }; "selectAll": { "alias": "selectAll"; "required": false; }; "showChevron": { "alias": "showChevron"; "required": false; }; "withOptionsAliases": { "alias": "withOptionsAliases"; "required": false; }; "useOptionsAliasesWhenNoMatch": { "alias": "useOptionsAliasesWhenNoMatch"; "required": false; }; "optionAlias": { "alias": "optionAlias"; "required": false; }; "chips": { "alias": "chips"; "required": false; }; "closableChips": { "alias": "closableChips"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "openOnClear": { "alias": "openOnClear"; "required": false; }; "keepInitialOrder": { "alias": "keepInitialOrder"; "required": false; }; "optionLabel": { "alias": "optionLabel"; "required": false; }; "optionValue": { "alias": "optionValue"; "required": false; }; "optionInfo": { "alias": "optionInfo"; "required": false; }; "hideDetails": { "alias": "hideDetails"; "required": false; }; "persistentClear": { "alias": "persistentClear"; "required": false; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; }; "prefixIconSize": { "alias": "prefixIconSize"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "loadingMessage": { "alias": "loadingMessage"; "required": false; }; "showLoadingMessage": { "alias": "showLoadingMessage"; "required": false; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; }; "showEmptyMessage": { "alias": "showEmptyMessage"; "required": false; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; }; "numToleratedItems": { "alias": "numToleratedItems"; "required": false; }; "externalError": { "alias": "externalError"; "required": false; }; "infoTooltip": { "alias": "infoTooltip"; "required": false; }; "infoTooltipClass": { "alias": "infoTooltipClass"; "required": false; }; "infoTooltipMaxWidth": { "alias": "infoTooltipMaxWidth"; "required": false; }; "infoTooltipPersistent": { "alias": "infoTooltipPersistent"; "required": false; }; "infoTooltipPosition": { "alias": "infoTooltipPosition"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "emptyOptionIndex": { "alias": "emptyOptionIndex"; "required": false; }; "inputChangeDebounceTime": { "alias": "inputChangeDebounceTime"; "required": false; }; "validating": { "alias": "validating"; "required": false; }; "_value": { "alias": "value"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, { "valueChanged": "valueChanged"; "inputChanged": "inputChanged"; "focused": "focused"; "blurred": "blurred"; }, never, never, true, never>;
1392
+ static ɵcmp: i0.ɵɵComponentDeclaration<CpsAutocompleteComponent, "cps-autocomplete", never, { "label": { "alias": "label"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "returnObject": { "alias": "returnObject"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "width": { "alias": "width"; "required": false; }; "selectAll": { "alias": "selectAll"; "required": false; }; "showChevron": { "alias": "showChevron"; "required": false; }; "withOptionsAliases": { "alias": "withOptionsAliases"; "required": false; }; "useOptionsAliasesWhenNoMatch": { "alias": "useOptionsAliasesWhenNoMatch"; "required": false; }; "optionAlias": { "alias": "optionAlias"; "required": false; }; "chips": { "alias": "chips"; "required": false; }; "closableChips": { "alias": "closableChips"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "openOnClear": { "alias": "openOnClear"; "required": false; }; "keepInitialOrder": { "alias": "keepInitialOrder"; "required": false; }; "optionLabel": { "alias": "optionLabel"; "required": false; }; "optionValue": { "alias": "optionValue"; "required": false; }; "optionInfo": { "alias": "optionInfo"; "required": false; }; "hideDetails": { "alias": "hideDetails"; "required": false; }; "persistentClear": { "alias": "persistentClear"; "required": false; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; }; "prefixIconSize": { "alias": "prefixIconSize"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "loadingMessage": { "alias": "loadingMessage"; "required": false; }; "showLoadingMessage": { "alias": "showLoadingMessage"; "required": false; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; }; "showEmptyMessage": { "alias": "showEmptyMessage"; "required": false; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; }; "numToleratedItems": { "alias": "numToleratedItems"; "required": false; }; "externalError": { "alias": "externalError"; "required": false; }; "infoTooltip": { "alias": "infoTooltip"; "required": false; }; "infoTooltipClass": { "alias": "infoTooltipClass"; "required": false; }; "infoTooltipMaxWidth": { "alias": "infoTooltipMaxWidth"; "required": false; }; "infoTooltipPersistent": { "alias": "infoTooltipPersistent"; "required": false; }; "infoTooltipPosition": { "alias": "infoTooltipPosition"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "emptyOptionIndex": { "alias": "emptyOptionIndex"; "required": false; }; "inputChangeDebounceTime": { "alias": "inputChangeDebounceTime"; "required": false; }; "validating": { "alias": "validating"; "required": false; }; "_value": { "alias": "value"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, { "valueChanged": "valueChanged"; "inputChanged": "inputChanged"; "focused": "focused"; "blurred": "blurred"; }, never, never, true, never>;
1373
1393
  }
1374
1394
 
1375
1395
  /**
@@ -1502,6 +1522,11 @@ declare class CpsButtonComponent implements OnChanges {
1502
1522
  * @group Props
1503
1523
  */
1504
1524
  label: string;
1525
+ /**
1526
+ * Aria label for the button, used for accessibility, it takes precedence over label.
1527
+ * @group Props
1528
+ */
1529
+ ariaLabel: string;
1505
1530
  /**
1506
1531
  * Name of the icon on the button.
1507
1532
  * @group Props
@@ -1550,12 +1575,16 @@ declare class CpsButtonComponent implements OnChanges {
1550
1575
  cvtFontSize: string;
1551
1576
  cvtIconSize: string;
1552
1577
  classesList: string[];
1578
+ enterActive: boolean;
1553
1579
  constructor(document: Document);
1554
1580
  ngOnChanges(): void;
1555
1581
  setClasses(): void;
1556
1582
  onClick(event: Event): void;
1583
+ onEnterKeydown(): void;
1584
+ onEnterKeyup(): void;
1585
+ onBlur(): void;
1557
1586
  static ɵfac: i0.ɵɵFactoryDeclaration<CpsButtonComponent, never>;
1558
- static ɵcmp: i0.ɵɵComponentDeclaration<CpsButtonComponent, "cps-button", never, { "color": { "alias": "color"; "required": false; }; "contentColor": { "alias": "contentColor"; "required": false; }; "borderRadius": { "alias": "borderRadius"; "required": false; }; "type": { "alias": "type"; "required": false; }; "label": { "alias": "label"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "iconPosition": { "alias": "iconPosition"; "required": false; }; "size": { "alias": "size"; "required": false; }; "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; }, { "clicked": "clicked"; }, never, never, true, never>;
1587
+ static ɵcmp: i0.ɵɵComponentDeclaration<CpsButtonComponent, "cps-button", never, { "color": { "alias": "color"; "required": false; }; "contentColor": { "alias": "contentColor"; "required": false; }; "borderRadius": { "alias": "borderRadius"; "required": false; }; "type": { "alias": "type"; "required": false; }; "label": { "alias": "label"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "iconPosition": { "alias": "iconPosition"; "required": false; }; "size": { "alias": "size"; "required": false; }; "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; }, { "clicked": "clicked"; }, never, never, true, never>;
1559
1588
  }
1560
1589
 
1561
1590
  /**
@@ -3755,6 +3784,11 @@ declare class CpsChipComponent implements OnChanges {
3755
3784
  * @group Props
3756
3785
  */
3757
3786
  disabled: boolean;
3787
+ /**
3788
+ * Aria label for the close button.
3789
+ * @group Props
3790
+ */
3791
+ closeButtonAriaLabel: string;
3758
3792
  /**
3759
3793
  * Callback to invoke on chip close.
3760
3794
  * @param {string} string - Chip closed.
@@ -3766,7 +3800,7 @@ declare class CpsChipComponent implements OnChanges {
3766
3800
  setClasses(): void;
3767
3801
  onCloseClick(event: any): void;
3768
3802
  static ɵfac: i0.ɵɵFactoryDeclaration<CpsChipComponent, never>;
3769
- static ɵcmp: i0.ɵɵComponentDeclaration<CpsChipComponent, "cps-chip", never, { "label": { "alias": "label"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "iconColor": { "alias": "iconColor"; "required": false; }; "iconPosition": { "alias": "iconPosition"; "required": false; }; "closable": { "alias": "closable"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "closed": "closed"; }, never, never, true, never>;
3803
+ static ɵcmp: i0.ɵɵComponentDeclaration<CpsChipComponent, "cps-chip", never, { "label": { "alias": "label"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "iconColor": { "alias": "iconColor"; "required": false; }; "iconPosition": { "alias": "iconPosition"; "required": false; }; "closable": { "alias": "closable"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "closeButtonAriaLabel": { "alias": "closeButtonAriaLabel"; "required": false; }; }, { "closed": "closed"; }, never, never, true, never>;
3770
3804
  }
3771
3805
 
3772
3806
  /**