cps-ui-kit 17.3.0 → 17.4.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 (23) hide show
  1. package/README.md +1 -0
  2. package/esm2022/lib/components/cps-autocomplete/cps-autocomplete.component.mjs +30 -12
  3. package/esm2022/lib/components/cps-button/cps-button.component.mjs +2 -2
  4. package/esm2022/lib/components/cps-button-toggle/cps-button-toggle.component.mjs +1 -1
  5. package/esm2022/lib/components/cps-scheduler/cps-scheduler.component.mjs +672 -0
  6. package/esm2022/lib/components/cps-scheduler/cps-scheduler.utils.mjs +604 -0
  7. package/esm2022/lib/components/cps-select/cps-select.component.mjs +2 -2
  8. package/esm2022/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.mjs +1 -1
  9. package/esm2022/lib/components/cps-table/cps-table.component.mjs +1 -1
  10. package/esm2022/lib/components/cps-timepicker/cps-timepicker.component.mjs +10 -3
  11. package/esm2022/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component.mjs +1 -1
  12. package/esm2022/lib/directives/cps-tooltip/cps-tooltip.directive.mjs +1 -1
  13. package/esm2022/public-api.mjs +2 -1
  14. package/fesm2022/cps-ui-kit.mjs +1304 -18
  15. package/fesm2022/cps-ui-kit.mjs.map +1 -1
  16. package/lib/components/cps-autocomplete/cps-autocomplete.component.d.ts +10 -4
  17. package/lib/components/cps-button/cps-button.component.d.ts +1 -1
  18. package/lib/components/cps-scheduler/cps-scheduler.component.d.ts +146 -0
  19. package/lib/components/cps-scheduler/cps-scheduler.utils.d.ts +1 -0
  20. package/lib/components/cps-select/cps-select.component.d.ts +1 -1
  21. package/lib/components/cps-timepicker/cps-timepicker.component.d.ts +6 -1
  22. package/package.json +1 -1
  23. package/public-api.d.ts +1 -0
@@ -4,7 +4,7 @@ import * as i0 from '@angular/core';
4
4
  import { Component, Input, Directive, HostListener, EventEmitter, Self, Optional, Output, ViewChild, Pipe, PLATFORM_ID, ChangeDetectionStrategy, ViewEncapsulation, Inject, HostBinding, InjectionToken, Host, ContentChild, ViewChildren, RendererStyleFlags2, TemplateRef, ContentChildren, Injectable, createComponent } from '@angular/core';
5
5
  import { Subscription, fromEvent, debounceTime, distinctUntilChanged, take, catchError, of, Subject } from 'rxjs';
6
6
  import * as i1 from '@angular/forms';
7
- import { FormsModule } from '@angular/forms';
7
+ import { FormsModule, Validators, ReactiveFormsModule } from '@angular/forms';
8
8
  import { isEqual, cloneDeep } from 'lodash-es';
9
9
  import * as i3 from 'primeng/virtualscroller';
10
10
  import { VirtualScrollerModule } from 'primeng/virtualscroller';
@@ -1791,7 +1791,7 @@ class CpsSelectComponent {
1791
1791
  constructor(_control) {
1792
1792
  this._control = _control;
1793
1793
  /**
1794
- * The label of the select component.
1794
+ * Label of the select component.
1795
1795
  * @group Props
1796
1796
  */
1797
1797
  this.label = '';
@@ -3071,7 +3071,7 @@ class CpsAutocompleteComponent {
3071
3071
  this._control = _control;
3072
3072
  this._labelByValue = _labelByValue;
3073
3073
  /**
3074
- * Label of the input element.
3074
+ * Label of the autocomplete component.
3075
3075
  * @group Props
3076
3076
  */
3077
3077
  this.label = '';
@@ -3101,7 +3101,7 @@ class CpsAutocompleteComponent {
3101
3101
  */
3102
3102
  this.disabled = false;
3103
3103
  /**
3104
- * Width of the input field, a number denoting pixels or a string.
3104
+ * Width of the autocomplete component, a number denoting pixels or a string.
3105
3105
  * @group Props
3106
3106
  */
3107
3107
  this.width = '100%';
@@ -3255,6 +3255,11 @@ class CpsAutocompleteComponent {
3255
3255
  * @group Props
3256
3256
  */
3257
3257
  this.appearance = 'outlined';
3258
+ /**
3259
+ * Index of empty value in options array. Applicable only if multiple is false.
3260
+ * @group Props
3261
+ */
3262
+ this.emptyOptionIndex = -1;
3258
3263
  /**
3259
3264
  * Value of the autocomplete.
3260
3265
  * @group Props
@@ -3305,6 +3310,9 @@ class CpsAutocompleteComponent {
3305
3310
  if (this.multiple && !this._value) {
3306
3311
  this._value = [];
3307
3312
  }
3313
+ if (!this.multiple && this._value === undefined) {
3314
+ this._value = this._getEmptyValue();
3315
+ }
3308
3316
  this._statusChangesSubscription = this._control?.statusChanges?.subscribe(() => {
3309
3317
  this._checkErrors();
3310
3318
  });
@@ -3430,7 +3438,7 @@ class CpsAutocompleteComponent {
3430
3438
  if (this.openOnClear) {
3431
3439
  this._toggleOptions(true);
3432
3440
  }
3433
- const val = this.multiple ? [] : undefined;
3441
+ const val = this.multiple ? [] : this._getEmptyValue();
3434
3442
  this.updateValue(val);
3435
3443
  }
3436
3444
  this._clearInput();
@@ -3536,6 +3544,20 @@ class CpsAutocompleteComponent {
3536
3544
  const currentLen = this.filteredOptions?.length || 0;
3537
3545
  this.virtualListHeight = Math.min(this.virtualScrollItemSize * currentLen, 240);
3538
3546
  }
3547
+ isEmptyValue() {
3548
+ return (this.value === null ||
3549
+ this.value === undefined ||
3550
+ (typeof this.value === 'string' && this.value.trim() === '') ||
3551
+ Number.isNaN(this.value));
3552
+ }
3553
+ _getEmptyValue() {
3554
+ const option = this.options[this.emptyOptionIndex];
3555
+ return !option
3556
+ ? undefined
3557
+ : this.returnObject
3558
+ ? option
3559
+ : option[this.optionValue];
3560
+ }
3539
3561
  _toggleOptions(show) {
3540
3562
  if (this.disabled || this.isOpened === show)
3541
3563
  return;
@@ -3695,7 +3717,7 @@ class CpsAutocompleteComponent {
3695
3717
  if (!searchVal) {
3696
3718
  if (this.multiple)
3697
3719
  return;
3698
- this.updateValue(undefined);
3720
+ this.updateValue(this._getEmptyValue());
3699
3721
  this._closeAndClear();
3700
3722
  return;
3701
3723
  }
@@ -3734,14 +3756,8 @@ class CpsAutocompleteComponent {
3734
3756
  this.focusInput();
3735
3757
  }, 0);
3736
3758
  }
3737
- isEmptyValue() {
3738
- return (this.value === null ||
3739
- this.value === undefined ||
3740
- (typeof this.value === 'string' && this.value.trim() === '') ||
3741
- Number.isNaN(this.value));
3742
- }
3743
3759
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CpsAutocompleteComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: LabelByValuePipe }], target: i0.ɵɵFactoryTarget.Component }); }
3744
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: CpsAutocompleteComponent, isStandalone: true, selector: "cps-autocomplete", inputs: { label: "label", placeholder: "placeholder", hint: "hint", returnObject: "returnObject", multiple: "multiple", disabled: "disabled", width: "width", selectAll: "selectAll", showChevron: "showChevron", withOptionsAliases: "withOptionsAliases", useOptionsAliasesWhenNoMatch: "useOptionsAliasesWhenNoMatch", optionAlias: "optionAlias", chips: "chips", closableChips: "closableChips", clearable: "clearable", openOnClear: "openOnClear", options: "options", keepInitialOrder: "keepInitialOrder", optionLabel: "optionLabel", optionValue: "optionValue", optionInfo: "optionInfo", hideDetails: "hideDetails", persistentClear: "persistentClear", prefixIcon: "prefixIcon", prefixIconSize: "prefixIconSize", loading: "loading", emptyMessage: "emptyMessage", showEmptyMessage: "showEmptyMessage", virtualScroll: "virtualScroll", numToleratedItems: "numToleratedItems", externalError: "externalError", infoTooltip: "infoTooltip", infoTooltipClass: "infoTooltipClass", infoTooltipMaxWidth: "infoTooltipMaxWidth", infoTooltipPersistent: "infoTooltipPersistent", infoTooltipPosition: "infoTooltipPosition", appearance: "appearance", _value: ["value", "_value"] }, outputs: { valueChanged: "valueChanged", blurred: "blurred" }, providers: [LabelByValuePipe, CheckOptionSelectedPipe], viewQueries: [{ propertyName: "autocompleteBox", first: true, predicate: ["autocompleteBox"], descendants: true }, { propertyName: "autocompleteContainer", first: true, predicate: ["autocompleteContainer"], descendants: true }, { propertyName: "virtualList", first: true, predicate: ["virtualList"], descendants: true }, { propertyName: "optionsMenu", first: true, predicate: ["optionsMenu"], descendants: true }, { propertyName: "optionsList", first: true, predicate: ["optionsList"], descendants: true }], ngImport: i0, template: "<div\n data-cy-id=\"cps-autocomplete\"\n [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-autocomplete\"\n tabindex=\"1\"\n [ngClass]=\"{\n disabled: disabled,\n error: error || externalError,\n active: isOpened\n }\"\n #autocompleteContainer>\n <div class=\"cps-autocomplete-label\" *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-autocomplete-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div\n (keydown)=\"onContainerKeyDown($event)\"\n class=\"cps-autocomplete-container\"\n [class.focused]=\"isOpened\"\n [ngClass]=\"{\n 'persistent-clear': persistentClear,\n borderless: appearance === 'borderless',\n underlined: appearance === 'underlined'\n }\">\n <div\n class=\"cps-autocomplete-box\"\n #autocompleteBox\n (mousedown)=\"onBoxClick()\">\n <div class=\"cps-autocomplete-box-area\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [style.color]=\"disabled ? '#9a9595' : null\"\n [size]=\"prefixIconSize\"\n class=\"prefix-icon\">\n </cps-icon>\n <div\n class=\"cps-autocomplete-box-items\"\n *ngIf=\"\n (!multiple && !isEmptyValue()) || (value?.length > 0 && multiple);\n else autocompleteInput\n \">\n <span *ngIf=\"!multiple\" class=\"single-item\">\n <div class=\"single-item-selection\">\n <span [style.opacity]=\"activeSingle ? 0 : 1\">{{\n returnObject\n ? value[optionLabel]\n : (value | labelByValue : options : optionValue : optionLabel)\n }}</span>\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n autocompleteInput;\n context: {\n inputClass: 'single-item-input',\n inputStyle: activeSingle ? 'opacity: 1' : null\n }\n \">\n </ng-container>\n </span>\n\n <div *ngIf=\"multiple && !chips\" class=\"text-group\">\n <div\n *ngFor=\"let val of value; let last = last\"\n class=\"text-group-item\"\n [ngClass]=\"{ 'about-to-remove': last && backspaceClickedOnce }\">\n {{\n returnObject\n ? val[optionLabel]\n : (val | labelByValue : options : optionValue : optionLabel)\n }}{{ !last ? ',' : '' }}\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n autocompleteInput;\n context: {\n inputClass: 'multi-item-input'\n }\n \"></ng-container>\n </div>\n\n <div *ngIf=\"multiple && chips\" class=\"chips-group\">\n <cps-chip\n *ngFor=\"let val of value; let last = last\"\n [disabled]=\"disabled\"\n [closable]=\"closableChips\"\n (closed)=\"select(val, true)\"\n [ngClass]=\"{ 'about-to-remove': last && backspaceClickedOnce }\"\n [label]=\"\n returnObject\n ? val[optionLabel]\n : (val | labelByValue : options : optionValue : optionLabel)\n \">\n </cps-chip>\n <ng-container\n *ngTemplateOutlet=\"\n autocompleteInput;\n context: {\n inputClass: 'multi-chip-input'\n }\n \"></ng-container>\n </div>\n </div>\n <span class=\"cps-autocomplete-box-icons\">\n <span\n *ngIf=\"clearable && !disabled\"\n [style.visibility]=\"\n persistentClear ||\n (!persistentClear &&\n ((multiple && value?.length) || (!multiple && !isEmptyValue())))\n ? 'visible'\n : 'hidden'\n \"\n class=\"cps-autocomplete-box-clear-icon\">\n <cps-icon\n icon=\"delete\"\n size=\"small\"\n (click)=\"clear($event)\"></cps-icon>\n </span>\n <span\n *ngIf=\"showChevron\"\n class=\"cps-autocomplete-box-chevron\"\n (mousedown)=\"onChevronClick($event)\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n [color]=\"disabled ? 'text-light' : 'text-dark'\"></cps-icon>\n </span>\n </span>\n </div>\n </div>\n\n <cps-menu\n #optionsMenu\n [withArrow]=\"false\"\n (beforeMenuHidden)=\"onBeforeOptionsHidden()\"\n hideTransitionOptions=\"0s linear\"\n containerClass=\"cps-autocomplete-options-menu\">\n <div\n #optionsList\n class=\"cps-autocomplete-options\"\n [ngStyle]=\"{\n width: autocompleteBoxWidth + 'px'\n }\">\n <div\n *ngIf=\"showEmptyMessage && filteredOptions.length < 1\"\n class=\"cps-autocomplete-options-empty\">\n {{ emptyMessage }}\n </div>\n <ng-container *ngIf=\"!virtualScroll\">\n <div\n class=\"cps-autocomplete-options-option select-all-option\"\n [class.allselected]=\"value?.length === options.length\"\n *ngIf=\"\n multiple &&\n selectAll &&\n filteredOptions.length === options.length &&\n options.length > 1\n \"\n (click)=\"toggleAll()\">\n <span class=\"cps-autocomplete-options-option-left\">\n <span\n *ngIf=\"multiple\"\n class=\"cps-autocomplete-options-option-check\">\n </span>\n <span class=\"cps-autocomplete-options-option-label\"\n >Select all</span\n >\n </span>\n </div>\n <ng-container *ngFor=\"let item of filteredOptions\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"virtualScroll\">\n <p-virtualScroller\n #virtualList\n [value]=\"filteredOptions\"\n [delay]=\"0\"\n [scrollHeight]=\"virtualListHeight + 'px'\"\n [options]=\"{ numToleratedItems: numToleratedItems }\"\n [itemSize]=\"virtualScrollItemSize\">\n <ng-template pTemplate=\"item\" let-item>\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </ng-template>\n </p-virtualScroller>\n </ng-container>\n </div>\n </cps-menu>\n <cps-progress-linear\n *ngIf=\"loading\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"autocomplete-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div\n *ngIf=\"!error && !externalError && !hideDetails\"\n class=\"cps-autocomplete-hint\">\n {{ hint }}\n </div>\n <div\n *ngIf=\"(error || externalError) && !hideDetails\"\n class=\"cps-autocomplete-error\">\n {{ error }}\n </div>\n</div>\n\n<ng-template\n #autocompleteInput\n let-inputClass=\"inputClass\"\n let-inputStyle=\"inputStyle\">\n <input\n class=\"cps-autocomplete-box-input\"\n spellcheck=\"false\"\n [class]=\"inputClass\"\n [style]=\"inputStyle\"\n [placeholder]=\"\n (!multiple && isEmptyValue()) || (value?.length < 1 && multiple)\n ? placeholder\n : ''\n \"\n (input)=\"filterOptions($event)\"\n (keydown)=\"onInputKeyDown($event)\"\n [(ngModel)]=\"inputText\"\n (blur)=\"onBlur()\" />\n</ng-template>\n\n<ng-template #itemTemplate let-item=\"item\">\n <div\n class=\"cps-autocomplete-options-option\"\n (click)=\"onOptionClick(item)\"\n [class.selected]=\"\n item | checkOptionSelected : value : multiple : returnObject : optionValue\n \">\n <span class=\"cps-autocomplete-options-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-autocomplete-options-option-check\">\n </span>\n <span\n data-cy-id=\"cps-autocomplete-options\"\n class=\"cps-autocomplete-options-option-label\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ item[optionLabel] }}</span\n >\n </span>\n\n <span\n class=\"cps-autocomplete-options-option-right\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ item[optionInfo] }}</span\n >\n </div>\n</ng-template>\n", styles: [":host{display:flex}:host .cps-autocomplete{position:relative;width:100%;outline:none;font-family:Source Sans Pro,sans-serif;font-weight:400;display:grid}:host .cps-autocomplete .cps-autocomplete-container{position:relative}:host .cps-autocomplete .cps-autocomplete-container .autocomplete-progress-bar{position:absolute;bottom:1px;padding:0 1px}:host .cps-autocomplete .cps-autocomplete-container.focused .cps-autocomplete-box{background:#fff!important}:host .cps-autocomplete .cps-autocomplete-container.borderless .cps-autocomplete-box,:host .cps-autocomplete .cps-autocomplete-container.underlined .cps-autocomplete-box{line-height:1;border:none!important;border-radius:0}:host .cps-autocomplete .cps-autocomplete-container.underlined .cps-autocomplete-box{border-bottom:1px solid var(--cps-color-line-light)!important}:host .cps-autocomplete.active .cps-autocomplete-box{border:1px solid var(--cps-color-calm)}:host .cps-autocomplete.active .cps-autocomplete-box .cps-autocomplete-box-area .prefix-icon{color:var(--cps-color-calm)}:host .cps-autocomplete.active .cps-autocomplete-box .cps-autocomplete-box-chevron{top:22px;transform:rotate(180deg)}:host .cps-autocomplete .cps-autocomplete-label{align-items:center;display:inline-flex;margin-bottom:.2rem;color:var(--cps-color-text-dark);font-size:.875rem;font-weight:600}:host .cps-autocomplete .cps-autocomplete-label .cps-autocomplete-label-info-circle{margin-left:8px;pointer-events:all}:host .cps-autocomplete .persistent-clear .cps-autocomplete-box .cps-autocomplete-box-icons .cps-autocomplete-box-clear-icon cps-icon,:host .cps-autocomplete .cps-autocomplete-container.focused .cps-autocomplete-box .cps-autocomplete-box-icons .cps-autocomplete-box-clear-icon cps-icon,:host .cps-autocomplete .cps-autocomplete-container:hover .cps-autocomplete-box .cps-autocomplete-box-icons .cps-autocomplete-box-clear-icon cps-icon{opacity:.5}:host .cps-autocomplete .cps-autocomplete-box{overflow:hidden;min-height:38px;width:100%;cursor:text;background:#fff;font-size:1rem;outline:none;padding:0 12px;border-radius:4px;border:1px solid var(--cps-color-line-light);transition-duration:.2s}:host .cps-autocomplete .cps-autocomplete-box-area{display:flex;min-height:36px;align-items:center}:host .cps-autocomplete .cps-autocomplete-box-area .prefix-icon{margin-right:.5rem;color:var(--cps-color-text-dark)}:host .cps-autocomplete .cps-autocomplete-box-input{min-height:36px;padding:0;background-color:transparent;width:0;min-width:30px;flex-grow:1;font-size:1rem;color:var(--cps-color-text-dark);border-style:none;outline:none;font-family:Source Sans Pro,sans-serif}:host .cps-autocomplete .cps-autocomplete-box-input::placeholder{color:var(--cps-color-text-lightest);font-style:italic;opacity:1}:host .cps-autocomplete .cps-autocomplete-box-items{display:inline-flex;flex-direction:column;width:100%;padding-top:3px;padding-bottom:3px;min-height:36px;justify-content:center;position:relative}:host .cps-autocomplete .cps-autocomplete-box-items .single-item{color:var(--cps-color-text-dark);display:inline-flex}:host .cps-autocomplete .cps-autocomplete-box-items .single-item-selection{display:inline-flex;letter-spacing:inherit;line-height:inherit;max-width:100%}:host .cps-autocomplete .cps-autocomplete-box-items .single-item-input{opacity:0;min-width:0;align-self:flex-start;flex:1 1;transition:none;position:absolute;top:0;bottom:0;width:100%;padding-inline-start:inherit;padding-inline-end:inherit}:host .cps-autocomplete .cps-autocomplete-box-items .multi-chip-input{min-height:30px}:host .cps-autocomplete .cps-autocomplete-box-items .multi-item-input{min-height:28px}:host .cps-autocomplete .cps-autocomplete-box-items .chips-group{display:inline-flex;flex-wrap:wrap;align-items:center}:host .cps-autocomplete .cps-autocomplete-box-items .chips-group cps-chip{padding-bottom:3px;padding-top:3px;padding-right:4px}:host .cps-autocomplete .cps-autocomplete-box-items .text-group{color:var(--cps-color-text-dark);align-items:center;display:inline-flex;flex-wrap:wrap}:host .cps-autocomplete .cps-autocomplete-box-items .text-group .text-group-item{padding-bottom:3px;padding-top:3px;padding-right:4px}:host .cps-autocomplete .cps-autocomplete-box:hover{border:1px solid var(--cps-color-calm)}:host .cps-autocomplete .cps-autocomplete-box:hover .cps-autocomplete-box-area .prefix-icon{color:var(--cps-color-calm)}:host .cps-autocomplete .cps-autocomplete-box .cps-autocomplete-box-icons{display:flex}:host .cps-autocomplete .cps-autocomplete-box .cps-autocomplete-box-icons .cps-autocomplete-box-clear-icon{cursor:pointer;display:flex;color:var(--cps-color-calm);margin-left:8px}:host .cps-autocomplete .cps-autocomplete-box .cps-autocomplete-box-icons .cps-autocomplete-box-clear-icon cps-icon{opacity:0;transition-duration:.2s}:host .cps-autocomplete .cps-autocomplete-box .cps-autocomplete-box-icons .cps-autocomplete-box-clear-icon cps-icon:hover{opacity:1!important}:host .cps-autocomplete .cps-autocomplete-box .cps-autocomplete-box-icons .cps-autocomplete-box-chevron{display:flex;margin-left:8px;transition-duration:.2s;cursor:pointer}:host .cps-autocomplete .cps-autocomplete-box .cps-autocomplete-box-icons .cps-autocomplete-box-chevron:hover ::ng-deep cps-icon .cps-icon{color:var(--cps-color-calm)!important}:host .cps-autocomplete .cps-autocomplete-hint{color:var(--cps-color-text-mild);font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-autocomplete .cps-autocomplete-error{color:var(--cps-color-error);font-weight:700;font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-autocomplete.disabled{pointer-events:none}:host .cps-autocomplete.disabled .cps-autocomplete-box{background:#f7f7f7}:host .cps-autocomplete.disabled .cps-autocomplete-box-items{color:var(--cps-color-text-light)}:host .cps-autocomplete.disabled .cps-autocomplete-box-items .text-group,:host .cps-autocomplete.disabled .cps-autocomplete-box-items .single-item{color:var(--cps-color-text-light)}:host .cps-autocomplete.disabled .cps-autocomplete-label{color:var(--cps-color-text-mild)}:host .cps-autocomplete.error .cps-autocomplete-box{border-color:var(--cps-color-error)!important;background:#fef3f2}:host .about-to-remove{color:var(--cps-color-text-light)}:host .about-to-remove ::ng-deep .cps-chip{background-color:var(--cps-color-bg-mid)}.cps-autocomplete-options{font-family:Source Sans Pro,sans-serif;background:#fff;overflow-x:hidden;max-height:242px;overflow-y:auto}.cps-autocomplete-options .cps-autocomplete-options-empty{padding:11px;font-size:16px;cursor:default;color:var(--cps-color-text-dark)}.cps-autocomplete-options .cps-autocomplete-options-option{padding:12px;justify-content:space-between;display:flex;cursor:pointer}.cps-autocomplete-options .cps-autocomplete-options-option:hover{background:var(--cps-color-highlight-hover)}.cps-autocomplete-options .cps-autocomplete-options-option-label{color:var(--cps-color-text-dark)}.cps-autocomplete-options .cps-autocomplete-options-option-left{display:flex;align-items:center;margin-right:8px}.cps-autocomplete-options .cps-autocomplete-options-option-right{color:var(--cps-color-text-light);text-align:right}.cps-autocomplete-options .cps-autocomplete-options-option-check{background-color:transparent;border:0;width:16px;height:16px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0,0,.2,.1),background-color 90ms cubic-bezier(0,0,.2,.1);margin-right:8px;opacity:0}.cps-autocomplete-options .cps-autocomplete-options-option-check:after{color:var(--cps-color-calm);top:4px;left:1px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box;position:absolute;content:\"\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0,0,.2,.1)}.cps-autocomplete-options .cps-autocomplete-options-option.selected,.cps-autocomplete-options .cps-autocomplete-options-option.allselected{font-weight:600}.cps-autocomplete-options .cps-autocomplete-options-option.selected .cps-autocomplete-options-option-label,.cps-autocomplete-options .cps-autocomplete-options-option.allselected .cps-autocomplete-options-option-label{color:var(--cps-color-calm)}.cps-autocomplete-options .cps-autocomplete-options-option.selected .cps-autocomplete-options-option-check,.cps-autocomplete-options .cps-autocomplete-options-option.allselected .cps-autocomplete-options-option-check{opacity:1}.cps-autocomplete-options .cps-autocomplete-options-option.selected{background:var(--cps-color-highlight-selected)}.cps-autocomplete-options .cps-autocomplete-options-option.highlighten{background:var(--cps-color-highlight-active)}.cps-autocomplete-options .cps-autocomplete-options-option.selected.highlighten{background:var(--cps-color-highlight-selected-dark)}.cps-autocomplete-options .select-all-option{border-bottom:1px solid lightgrey;font-weight:600}.cps-autocomplete-options ::ng-deep .p-virtualscroller-list.p-scroller{overflow-anchor:none}.cps-autocomplete-options .virtual-row{white-space:nowrap}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CpsIconComponent, selector: "cps-icon", inputs: ["icon", "size", "color"] }, { kind: "component", type: CpsChipComponent, selector: "cps-chip", inputs: ["label", "icon", "iconColor", "iconPosition", "closable", "disabled"], outputs: ["closed"] }, { kind: "component", type: CpsProgressLinearComponent, selector: "cps-progress-linear", inputs: ["width", "height", "color", "bgColor", "opacity", "radius"] }, { kind: "component", type: CpsInfoCircleComponent, selector: "cps-info-circle", inputs: ["size", "tooltipText", "tooltipPosition", "tooltipContentClass", "tooltipMaxWidth", "tooltipPersistent"] }, { kind: "pipe", type: LabelByValuePipe, name: "labelByValue" }, { kind: "pipe", type: CheckOptionSelectedPipe, name: "checkOptionSelected" }, { kind: "ngmodule", type: VirtualScrollerModule }, { kind: "component", type: i3.VirtualScroller, selector: "p-virtualScroller", inputs: ["value", "itemSize", "style", "styleClass", "scrollHeight", "lazy", "options", "delay"], outputs: ["onLazyLoad"] }, { kind: "directive", type: i1$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: CpsMenuComponent, selector: "cps-menu", inputs: ["header", "items", "withArrow", "compressed", "focusOnShow", "persistent", "containerClass", "showTransitionOptions", "hideTransitionOptions"], outputs: ["menuShown", "menuHidden", "beforeMenuHidden", "contentClicked"] }] }); }
3760
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: CpsAutocompleteComponent, isStandalone: true, selector: "cps-autocomplete", inputs: { label: "label", placeholder: "placeholder", hint: "hint", returnObject: "returnObject", multiple: "multiple", disabled: "disabled", width: "width", selectAll: "selectAll", showChevron: "showChevron", withOptionsAliases: "withOptionsAliases", useOptionsAliasesWhenNoMatch: "useOptionsAliasesWhenNoMatch", optionAlias: "optionAlias", chips: "chips", closableChips: "closableChips", clearable: "clearable", openOnClear: "openOnClear", options: "options", keepInitialOrder: "keepInitialOrder", optionLabel: "optionLabel", optionValue: "optionValue", optionInfo: "optionInfo", hideDetails: "hideDetails", persistentClear: "persistentClear", prefixIcon: "prefixIcon", prefixIconSize: "prefixIconSize", loading: "loading", emptyMessage: "emptyMessage", showEmptyMessage: "showEmptyMessage", virtualScroll: "virtualScroll", numToleratedItems: "numToleratedItems", externalError: "externalError", infoTooltip: "infoTooltip", infoTooltipClass: "infoTooltipClass", infoTooltipMaxWidth: "infoTooltipMaxWidth", infoTooltipPersistent: "infoTooltipPersistent", infoTooltipPosition: "infoTooltipPosition", appearance: "appearance", emptyOptionIndex: "emptyOptionIndex", _value: ["value", "_value"] }, outputs: { valueChanged: "valueChanged", blurred: "blurred" }, providers: [LabelByValuePipe, CheckOptionSelectedPipe], viewQueries: [{ propertyName: "autocompleteBox", first: true, predicate: ["autocompleteBox"], descendants: true }, { propertyName: "autocompleteContainer", first: true, predicate: ["autocompleteContainer"], descendants: true }, { propertyName: "virtualList", first: true, predicate: ["virtualList"], descendants: true }, { propertyName: "optionsMenu", first: true, predicate: ["optionsMenu"], descendants: true }, { propertyName: "optionsList", first: true, predicate: ["optionsList"], descendants: true }], ngImport: i0, template: "<div\n data-cy-id=\"cps-autocomplete\"\n [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-autocomplete\"\n tabindex=\"1\"\n [ngClass]=\"{\n disabled: disabled,\n error: error || externalError,\n active: isOpened\n }\"\n #autocompleteContainer>\n <div class=\"cps-autocomplete-label\" *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-autocomplete-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div\n (keydown)=\"onContainerKeyDown($event)\"\n class=\"cps-autocomplete-container\"\n [class.focused]=\"isOpened\"\n [ngClass]=\"{\n 'persistent-clear': persistentClear,\n borderless: appearance === 'borderless',\n underlined: appearance === 'underlined'\n }\">\n <div\n class=\"cps-autocomplete-box\"\n #autocompleteBox\n (mousedown)=\"onBoxClick()\">\n <div class=\"cps-autocomplete-box-area\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [style.color]=\"disabled ? '#9a9595' : null\"\n [size]=\"prefixIconSize\"\n class=\"prefix-icon\">\n </cps-icon>\n <div\n class=\"cps-autocomplete-box-items\"\n *ngIf=\"\n (!multiple && !isEmptyValue()) || (value?.length > 0 && multiple);\n else autocompleteInput\n \">\n <span *ngIf=\"!multiple\" class=\"single-item\">\n <div class=\"single-item-selection\">\n <span [style.opacity]=\"activeSingle ? 0 : 1\">{{\n returnObject\n ? value[optionLabel]\n : (value | labelByValue : options : optionValue : optionLabel)\n }}</span>\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n autocompleteInput;\n context: {\n inputClass: 'single-item-input',\n inputStyle: activeSingle ? 'opacity: 1' : null\n }\n \">\n </ng-container>\n </span>\n\n <div *ngIf=\"multiple && !chips\" class=\"text-group\">\n <div\n *ngFor=\"let val of value; let last = last\"\n class=\"text-group-item\"\n [ngClass]=\"{ 'about-to-remove': last && backspaceClickedOnce }\">\n {{\n returnObject\n ? val[optionLabel]\n : (val | labelByValue : options : optionValue : optionLabel)\n }}{{ !last ? ',' : '' }}\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n autocompleteInput;\n context: {\n inputClass: 'multi-item-input'\n }\n \"></ng-container>\n </div>\n\n <div *ngIf=\"multiple && chips\" class=\"chips-group\">\n <cps-chip\n *ngFor=\"let val of value; let last = last\"\n [disabled]=\"disabled\"\n [closable]=\"closableChips\"\n (closed)=\"select(val, true)\"\n [ngClass]=\"{ 'about-to-remove': last && backspaceClickedOnce }\"\n [label]=\"\n returnObject\n ? val[optionLabel]\n : (val | labelByValue : options : optionValue : optionLabel)\n \">\n </cps-chip>\n <ng-container\n *ngTemplateOutlet=\"\n autocompleteInput;\n context: {\n inputClass: 'multi-chip-input'\n }\n \"></ng-container>\n </div>\n </div>\n <span class=\"cps-autocomplete-box-icons\">\n <span\n *ngIf=\"clearable && !disabled\"\n [style.visibility]=\"\n persistentClear ||\n (!persistentClear &&\n ((multiple && value?.length) || (!multiple && !isEmptyValue())))\n ? 'visible'\n : 'hidden'\n \"\n class=\"cps-autocomplete-box-clear-icon\">\n <cps-icon\n icon=\"delete\"\n size=\"small\"\n (click)=\"clear($event)\"></cps-icon>\n </span>\n <span\n *ngIf=\"showChevron\"\n class=\"cps-autocomplete-box-chevron\"\n (mousedown)=\"onChevronClick($event)\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n [color]=\"disabled ? 'text-light' : 'text-dark'\"></cps-icon>\n </span>\n </span>\n </div>\n </div>\n\n <cps-menu\n #optionsMenu\n [withArrow]=\"false\"\n (beforeMenuHidden)=\"onBeforeOptionsHidden()\"\n hideTransitionOptions=\"0s linear\"\n containerClass=\"cps-autocomplete-options-menu\">\n <div\n #optionsList\n class=\"cps-autocomplete-options\"\n [ngStyle]=\"{\n width: autocompleteBoxWidth + 'px'\n }\">\n <div\n *ngIf=\"showEmptyMessage && filteredOptions.length < 1\"\n class=\"cps-autocomplete-options-empty\">\n {{ emptyMessage }}\n </div>\n <ng-container *ngIf=\"!virtualScroll\">\n <div\n class=\"cps-autocomplete-options-option select-all-option\"\n [class.allselected]=\"value?.length === options.length\"\n *ngIf=\"\n multiple &&\n selectAll &&\n filteredOptions.length === options.length &&\n options.length > 1\n \"\n (click)=\"toggleAll()\">\n <span class=\"cps-autocomplete-options-option-left\">\n <span\n *ngIf=\"multiple\"\n class=\"cps-autocomplete-options-option-check\">\n </span>\n <span class=\"cps-autocomplete-options-option-label\"\n >Select all</span\n >\n </span>\n </div>\n <ng-container *ngFor=\"let item of filteredOptions\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"virtualScroll\">\n <p-virtualScroller\n #virtualList\n [value]=\"filteredOptions\"\n [delay]=\"0\"\n [scrollHeight]=\"virtualListHeight + 'px'\"\n [options]=\"{ numToleratedItems: numToleratedItems }\"\n [itemSize]=\"virtualScrollItemSize\">\n <ng-template pTemplate=\"item\" let-item>\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </ng-template>\n </p-virtualScroller>\n </ng-container>\n </div>\n </cps-menu>\n <cps-progress-linear\n *ngIf=\"loading\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"autocomplete-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div\n *ngIf=\"!error && !externalError && !hideDetails\"\n class=\"cps-autocomplete-hint\">\n {{ hint }}\n </div>\n <div\n *ngIf=\"(error || externalError) && !hideDetails\"\n class=\"cps-autocomplete-error\">\n {{ error }}\n </div>\n</div>\n\n<ng-template\n #autocompleteInput\n let-inputClass=\"inputClass\"\n let-inputStyle=\"inputStyle\">\n <input\n class=\"cps-autocomplete-box-input\"\n spellcheck=\"false\"\n [class]=\"inputClass\"\n [style]=\"inputStyle\"\n [placeholder]=\"\n (!multiple && isEmptyValue()) || (value?.length < 1 && multiple)\n ? placeholder\n : ''\n \"\n (input)=\"filterOptions($event)\"\n (keydown)=\"onInputKeyDown($event)\"\n [(ngModel)]=\"inputText\"\n (blur)=\"onBlur()\" />\n</ng-template>\n\n<ng-template #itemTemplate let-item=\"item\">\n <div\n class=\"cps-autocomplete-options-option\"\n (click)=\"onOptionClick(item)\"\n [class.selected]=\"\n item | checkOptionSelected : value : multiple : returnObject : optionValue\n \">\n <span class=\"cps-autocomplete-options-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-autocomplete-options-option-check\">\n </span>\n <span\n data-cy-id=\"cps-autocomplete-options\"\n class=\"cps-autocomplete-options-option-label\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ item[optionLabel] }}</span\n >\n </span>\n\n <span\n class=\"cps-autocomplete-options-option-right\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ item[optionInfo] }}</span\n >\n </div>\n</ng-template>\n", styles: [":host{display:flex}:host .cps-autocomplete{position:relative;width:100%;outline:none;font-family:Source Sans Pro,sans-serif;font-weight:400;display:grid}:host .cps-autocomplete .cps-autocomplete-container{position:relative}:host .cps-autocomplete .cps-autocomplete-container .autocomplete-progress-bar{position:absolute;bottom:1px;padding:0 1px}:host .cps-autocomplete .cps-autocomplete-container.focused .cps-autocomplete-box{background:#fff!important}:host .cps-autocomplete .cps-autocomplete-container.borderless .cps-autocomplete-box,:host .cps-autocomplete .cps-autocomplete-container.underlined .cps-autocomplete-box{line-height:1;border:none!important;border-radius:0}:host .cps-autocomplete .cps-autocomplete-container.underlined .cps-autocomplete-box{border-bottom:1px solid var(--cps-color-line-light)!important}:host .cps-autocomplete.active .cps-autocomplete-box{border:1px solid var(--cps-color-calm)}:host .cps-autocomplete.active .cps-autocomplete-box .cps-autocomplete-box-area .prefix-icon{color:var(--cps-color-calm)}:host .cps-autocomplete.active .cps-autocomplete-box .cps-autocomplete-box-chevron{top:22px;transform:rotate(180deg)}:host .cps-autocomplete .cps-autocomplete-label{align-items:center;display:inline-flex;margin-bottom:.2rem;color:var(--cps-color-text-dark);font-size:.875rem;font-weight:600}:host .cps-autocomplete .cps-autocomplete-label .cps-autocomplete-label-info-circle{margin-left:8px;pointer-events:all}:host .cps-autocomplete .persistent-clear .cps-autocomplete-box .cps-autocomplete-box-icons .cps-autocomplete-box-clear-icon cps-icon,:host .cps-autocomplete .cps-autocomplete-container.focused .cps-autocomplete-box .cps-autocomplete-box-icons .cps-autocomplete-box-clear-icon cps-icon,:host .cps-autocomplete .cps-autocomplete-container:hover .cps-autocomplete-box .cps-autocomplete-box-icons .cps-autocomplete-box-clear-icon cps-icon{opacity:.5}:host .cps-autocomplete .cps-autocomplete-box{overflow:hidden;min-height:38px;width:100%;cursor:text;background:#fff;font-size:1rem;outline:none;padding:0 12px;border-radius:4px;border:1px solid var(--cps-color-line-light);transition-duration:.2s}:host .cps-autocomplete .cps-autocomplete-box-area{display:flex;min-height:36px;align-items:center}:host .cps-autocomplete .cps-autocomplete-box-area .prefix-icon{margin-right:.5rem;color:var(--cps-color-text-dark)}:host .cps-autocomplete .cps-autocomplete-box-input{min-height:36px;padding:0;background-color:transparent;width:0;min-width:30px;flex-grow:1;font-size:1rem;color:var(--cps-color-text-dark);border-style:none;outline:none;font-family:Source Sans Pro,sans-serif}:host .cps-autocomplete .cps-autocomplete-box-input::placeholder{color:var(--cps-color-text-lightest);font-style:italic;opacity:1}:host .cps-autocomplete .cps-autocomplete-box-items{display:inline-flex;flex-direction:column;width:100%;padding-top:3px;padding-bottom:3px;min-height:36px;justify-content:center;position:relative}:host .cps-autocomplete .cps-autocomplete-box-items .single-item{color:var(--cps-color-text-dark);display:inline-flex}:host .cps-autocomplete .cps-autocomplete-box-items .single-item-selection{display:inline-flex;letter-spacing:inherit;line-height:inherit;max-width:100%}:host .cps-autocomplete .cps-autocomplete-box-items .single-item-input{opacity:0;min-width:0;align-self:flex-start;flex:1 1;transition:none;position:absolute;top:0;bottom:0;width:100%;padding-inline-start:inherit;padding-inline-end:inherit}:host .cps-autocomplete .cps-autocomplete-box-items .multi-chip-input{min-height:30px}:host .cps-autocomplete .cps-autocomplete-box-items .multi-item-input{min-height:28px}:host .cps-autocomplete .cps-autocomplete-box-items .chips-group{display:inline-flex;flex-wrap:wrap;align-items:center}:host .cps-autocomplete .cps-autocomplete-box-items .chips-group cps-chip{padding-bottom:3px;padding-top:3px;padding-right:4px}:host .cps-autocomplete .cps-autocomplete-box-items .text-group{color:var(--cps-color-text-dark);align-items:center;display:inline-flex;flex-wrap:wrap}:host .cps-autocomplete .cps-autocomplete-box-items .text-group .text-group-item{padding-bottom:3px;padding-top:3px;padding-right:4px}:host .cps-autocomplete .cps-autocomplete-box:hover{border:1px solid var(--cps-color-calm)}:host .cps-autocomplete .cps-autocomplete-box:hover .cps-autocomplete-box-area .prefix-icon{color:var(--cps-color-calm)}:host .cps-autocomplete .cps-autocomplete-box .cps-autocomplete-box-icons{display:flex}:host .cps-autocomplete .cps-autocomplete-box .cps-autocomplete-box-icons .cps-autocomplete-box-clear-icon{cursor:pointer;display:flex;color:var(--cps-color-calm);margin-left:8px}:host .cps-autocomplete .cps-autocomplete-box .cps-autocomplete-box-icons .cps-autocomplete-box-clear-icon cps-icon{opacity:0;transition-duration:.2s}:host .cps-autocomplete .cps-autocomplete-box .cps-autocomplete-box-icons .cps-autocomplete-box-clear-icon cps-icon:hover{opacity:1!important}:host .cps-autocomplete .cps-autocomplete-box .cps-autocomplete-box-icons .cps-autocomplete-box-chevron{display:flex;margin-left:8px;transition-duration:.2s;cursor:pointer}:host .cps-autocomplete .cps-autocomplete-box .cps-autocomplete-box-icons .cps-autocomplete-box-chevron:hover ::ng-deep cps-icon .cps-icon{color:var(--cps-color-calm)!important}:host .cps-autocomplete .cps-autocomplete-hint{color:var(--cps-color-text-mild);font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-autocomplete .cps-autocomplete-error{color:var(--cps-color-error);font-weight:700;font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-autocomplete.disabled{pointer-events:none}:host .cps-autocomplete.disabled .cps-autocomplete-box{background:#f7f7f7}:host .cps-autocomplete.disabled .cps-autocomplete-box-items{color:var(--cps-color-text-light)}:host .cps-autocomplete.disabled .cps-autocomplete-box-items .text-group,:host .cps-autocomplete.disabled .cps-autocomplete-box-items .single-item{color:var(--cps-color-text-light)}:host .cps-autocomplete.disabled .cps-autocomplete-label{color:var(--cps-color-text-mild)}:host .cps-autocomplete.error .cps-autocomplete-box{border-color:var(--cps-color-error)!important;background:#fef3f2}:host .about-to-remove{color:var(--cps-color-text-light)}:host .about-to-remove ::ng-deep .cps-chip{background-color:var(--cps-color-bg-mid)}.cps-autocomplete-options{font-family:Source Sans Pro,sans-serif;background:#fff;overflow-x:hidden;max-height:242px;overflow-y:auto}.cps-autocomplete-options .cps-autocomplete-options-empty{padding:11px;font-size:16px;cursor:default;color:var(--cps-color-text-dark)}.cps-autocomplete-options .cps-autocomplete-options-option{padding:12px;justify-content:space-between;display:flex;cursor:pointer}.cps-autocomplete-options .cps-autocomplete-options-option:hover{background:var(--cps-color-highlight-hover)}.cps-autocomplete-options .cps-autocomplete-options-option-label{color:var(--cps-color-text-dark)}.cps-autocomplete-options .cps-autocomplete-options-option-left{display:flex;align-items:center;margin-right:8px}.cps-autocomplete-options .cps-autocomplete-options-option-right{color:var(--cps-color-text-light);text-align:right}.cps-autocomplete-options .cps-autocomplete-options-option-check{background-color:transparent;border:0;width:16px;height:16px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0,0,.2,.1),background-color 90ms cubic-bezier(0,0,.2,.1);margin-right:8px;opacity:0}.cps-autocomplete-options .cps-autocomplete-options-option-check:after{color:var(--cps-color-calm);top:4px;left:1px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box;position:absolute;content:\"\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0,0,.2,.1)}.cps-autocomplete-options .cps-autocomplete-options-option.selected,.cps-autocomplete-options .cps-autocomplete-options-option.allselected{font-weight:600}.cps-autocomplete-options .cps-autocomplete-options-option.selected .cps-autocomplete-options-option-label,.cps-autocomplete-options .cps-autocomplete-options-option.allselected .cps-autocomplete-options-option-label{color:var(--cps-color-calm)}.cps-autocomplete-options .cps-autocomplete-options-option.selected .cps-autocomplete-options-option-check,.cps-autocomplete-options .cps-autocomplete-options-option.allselected .cps-autocomplete-options-option-check{opacity:1}.cps-autocomplete-options .cps-autocomplete-options-option.selected{background:var(--cps-color-highlight-selected)}.cps-autocomplete-options .cps-autocomplete-options-option.highlighten{background:var(--cps-color-highlight-active)}.cps-autocomplete-options .cps-autocomplete-options-option.selected.highlighten{background:var(--cps-color-highlight-selected-dark)}.cps-autocomplete-options .select-all-option{border-bottom:1px solid lightgrey;font-weight:600}.cps-autocomplete-options ::ng-deep .p-virtualscroller-list.p-scroller{overflow-anchor:none}.cps-autocomplete-options .virtual-row{white-space:nowrap}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CpsIconComponent, selector: "cps-icon", inputs: ["icon", "size", "color"] }, { kind: "component", type: CpsChipComponent, selector: "cps-chip", inputs: ["label", "icon", "iconColor", "iconPosition", "closable", "disabled"], outputs: ["closed"] }, { kind: "component", type: CpsProgressLinearComponent, selector: "cps-progress-linear", inputs: ["width", "height", "color", "bgColor", "opacity", "radius"] }, { kind: "component", type: CpsInfoCircleComponent, selector: "cps-info-circle", inputs: ["size", "tooltipText", "tooltipPosition", "tooltipContentClass", "tooltipMaxWidth", "tooltipPersistent"] }, { kind: "pipe", type: LabelByValuePipe, name: "labelByValue" }, { kind: "pipe", type: CheckOptionSelectedPipe, name: "checkOptionSelected" }, { kind: "ngmodule", type: VirtualScrollerModule }, { kind: "component", type: i3.VirtualScroller, selector: "p-virtualScroller", inputs: ["value", "itemSize", "style", "styleClass", "scrollHeight", "lazy", "options", "delay"], outputs: ["onLazyLoad"] }, { kind: "directive", type: i1$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: CpsMenuComponent, selector: "cps-menu", inputs: ["header", "items", "withArrow", "compressed", "focusOnShow", "persistent", "containerClass", "showTransitionOptions", "hideTransitionOptions"], outputs: ["menuShown", "menuHidden", "beforeMenuHidden", "contentClicked"] }] }); }
3745
3761
  }
3746
3762
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CpsAutocompleteComponent, decorators: [{
3747
3763
  type: Component,
@@ -3835,6 +3851,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
3835
3851
  type: Input
3836
3852
  }], appearance: [{
3837
3853
  type: Input
3854
+ }], emptyOptionIndex: [{
3855
+ type: Input
3838
3856
  }], _value: [{
3839
3857
  type: Input,
3840
3858
  args: ['value']
@@ -4146,7 +4164,7 @@ class CpsButtonComponent {
4146
4164
  */
4147
4165
  this.height = 0;
4148
4166
  /**
4149
- * When present, it specifies that the component should be disabled.
4167
+ * Determines whether the button is disabled.
4150
4168
  * @group Props
4151
4169
  */
4152
4170
  this.disabled = false;
@@ -6756,7 +6774,7 @@ class TableColumnFilterConstraintComponent {
6756
6774
  event.preventDefault();
6757
6775
  }
6758
6776
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TableColumnFilterConstraintComponent, deps: [{ token: i1$3.Table, optional: true }, { token: i2$1.TreeTable, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
6759
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: TableColumnFilterConstraintComponent, isStandalone: true, selector: "table-column-filter-constraint", inputs: { type: "type", field: "field", filterConstraint: "filterConstraint", categoryOptions: "categoryOptions", asButtonToggle: "asButtonToggle", singleSelection: "singleSelection", placeholder: "placeholder", hasApplyButton: "hasApplyButton" }, viewQueries: [{ propertyName: "categoryAutocompleteComponent", first: true, predicate: ["categoryAutocompleteComponent"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\n <cps-input\n *ngSwitchCase=\"'text'\"\n [placeholder]=\"placeholder\"\n [hideDetails]=\"true\"\n (keydown.enter)=\"onEnterKeyDown($event)\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n type=\"text\"></cps-input>\n\n <cps-input\n *ngSwitchCase=\"'number'\"\n [hideDetails]=\"true\"\n [placeholder]=\"placeholder\"\n (keydown.enter)=\"onEnterKeyDown($event)\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n type=\"number\"></cps-input>\n\n <div\n class=\"cps-table-col-filter-constraint-btn-toggles\"\n *ngSwitchCase=\"'boolean'\">\n <cps-button-toggle\n [options]=\"booleanOptions\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n [mandatory]=\"false\">\n </cps-button-toggle>\n </div>\n\n <cps-datepicker\n *ngSwitchCase=\"'date'\"\n [openOnInputFocus]=\"true\"\n [hideDetails]=\"true\"\n [placeholder]=\"placeholder\"\n [value]=\"filterConstraint?.value\"\n (keydown.enter)=\"onEnterKeyDown($event)\"\n (valueChanged)=\"onValueChange($event)\">\n </cps-datepicker>\n\n <ng-container *ngSwitchCase=\"'category'\">\n <cps-autocomplete\n #categoryAutocompleteComponent\n *ngIf=\"!asButtonToggle\"\n class=\"cps-table-col-filter-category-autocomplete\"\n [placeholder]=\"placeholder\"\n [options]=\"categories\"\n [hideDetails]=\"true\"\n [clearable]=\"true\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n [returnObject]=\"false\"\n [multiple]=\"!singleSelection\">\n </cps-autocomplete>\n <div class=\"cps-table-col-filter-constraint-btn-toggles\">\n <cps-button-toggle\n *ngIf=\"asButtonToggle\"\n [options]=\"categories\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n [mandatory]=\"false\"\n [multiple]=\"!singleSelection\">\n </cps-button-toggle>\n </div>\n </ng-container>\n</ng-container>\n", styles: [":host .cps-table-col-filter-constraint-btn-toggles{display:flex;justify-content:center}:host .cps-table-col-filter-category-autocomplete{min-width:200px;max-width:400px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: CpsInputComponent, selector: "cps-input", inputs: ["label", "hint", "placeholder", "disabled", "readonly", "width", "type", "loading", "clearable", "prefixIcon", "prefixIconClickable", "prefixIconSize", "prefixText", "hideDetails", "persistentClear", "error", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "appearance", "valueToDisplay", "value"], outputs: ["valueChanged", "focused", "prefixIconClicked", "blurred", "cleared", "enterClicked"] }, { kind: "component", type: CpsDatepickerComponent, selector: "cps-datepicker", inputs: ["label", "disabled", "width", "placeholder", "hint", "clearable", "hideDetails", "persistentClear", "showTodayButton", "openOnInputFocus", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "appearance", "minDate", "maxDate", "value"], outputs: ["valueChanged"] }, { kind: "component", type: CpsButtonToggleComponent, selector: "cps-button-toggle", inputs: ["label", "options", "multiple", "disabled", "mandatory", "equalWidths", "optionTooltipPosition", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "value"], outputs: ["valueChanged"] }, { kind: "component", type: CpsAutocompleteComponent, selector: "cps-autocomplete", inputs: ["label", "placeholder", "hint", "returnObject", "multiple", "disabled", "width", "selectAll", "showChevron", "withOptionsAliases", "useOptionsAliasesWhenNoMatch", "optionAlias", "chips", "closableChips", "clearable", "openOnClear", "options", "keepInitialOrder", "optionLabel", "optionValue", "optionInfo", "hideDetails", "persistentClear", "prefixIcon", "prefixIconSize", "loading", "emptyMessage", "showEmptyMessage", "virtualScroll", "numToleratedItems", "externalError", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "appearance", "value"], outputs: ["valueChanged", "blurred"] }] }); }
6777
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: TableColumnFilterConstraintComponent, isStandalone: true, selector: "table-column-filter-constraint", inputs: { type: "type", field: "field", filterConstraint: "filterConstraint", categoryOptions: "categoryOptions", asButtonToggle: "asButtonToggle", singleSelection: "singleSelection", placeholder: "placeholder", hasApplyButton: "hasApplyButton" }, viewQueries: [{ propertyName: "categoryAutocompleteComponent", first: true, predicate: ["categoryAutocompleteComponent"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\n <cps-input\n *ngSwitchCase=\"'text'\"\n [placeholder]=\"placeholder\"\n [hideDetails]=\"true\"\n (keydown.enter)=\"onEnterKeyDown($event)\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n type=\"text\"></cps-input>\n\n <cps-input\n *ngSwitchCase=\"'number'\"\n [hideDetails]=\"true\"\n [placeholder]=\"placeholder\"\n (keydown.enter)=\"onEnterKeyDown($event)\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n type=\"number\"></cps-input>\n\n <div\n class=\"cps-table-col-filter-constraint-btn-toggles\"\n *ngSwitchCase=\"'boolean'\">\n <cps-button-toggle\n [options]=\"booleanOptions\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n [mandatory]=\"false\">\n </cps-button-toggle>\n </div>\n\n <cps-datepicker\n *ngSwitchCase=\"'date'\"\n [openOnInputFocus]=\"true\"\n [hideDetails]=\"true\"\n [placeholder]=\"placeholder\"\n [value]=\"filterConstraint?.value\"\n (keydown.enter)=\"onEnterKeyDown($event)\"\n (valueChanged)=\"onValueChange($event)\">\n </cps-datepicker>\n\n <ng-container *ngSwitchCase=\"'category'\">\n <cps-autocomplete\n #categoryAutocompleteComponent\n *ngIf=\"!asButtonToggle\"\n class=\"cps-table-col-filter-category-autocomplete\"\n [placeholder]=\"placeholder\"\n [options]=\"categories\"\n [hideDetails]=\"true\"\n [clearable]=\"true\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n [returnObject]=\"false\"\n [multiple]=\"!singleSelection\">\n </cps-autocomplete>\n <div class=\"cps-table-col-filter-constraint-btn-toggles\">\n <cps-button-toggle\n *ngIf=\"asButtonToggle\"\n [options]=\"categories\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n [mandatory]=\"false\"\n [multiple]=\"!singleSelection\">\n </cps-button-toggle>\n </div>\n </ng-container>\n</ng-container>\n", styles: [":host .cps-table-col-filter-constraint-btn-toggles{display:flex;justify-content:center}:host .cps-table-col-filter-category-autocomplete{min-width:200px;max-width:400px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: CpsInputComponent, selector: "cps-input", inputs: ["label", "hint", "placeholder", "disabled", "readonly", "width", "type", "loading", "clearable", "prefixIcon", "prefixIconClickable", "prefixIconSize", "prefixText", "hideDetails", "persistentClear", "error", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "appearance", "valueToDisplay", "value"], outputs: ["valueChanged", "focused", "prefixIconClicked", "blurred", "cleared", "enterClicked"] }, { kind: "component", type: CpsDatepickerComponent, selector: "cps-datepicker", inputs: ["label", "disabled", "width", "placeholder", "hint", "clearable", "hideDetails", "persistentClear", "showTodayButton", "openOnInputFocus", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "appearance", "minDate", "maxDate", "value"], outputs: ["valueChanged"] }, { kind: "component", type: CpsButtonToggleComponent, selector: "cps-button-toggle", inputs: ["label", "options", "multiple", "disabled", "mandatory", "equalWidths", "optionTooltipPosition", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "value"], outputs: ["valueChanged"] }, { kind: "component", type: CpsAutocompleteComponent, selector: "cps-autocomplete", inputs: ["label", "placeholder", "hint", "returnObject", "multiple", "disabled", "width", "selectAll", "showChevron", "withOptionsAliases", "useOptionsAliasesWhenNoMatch", "optionAlias", "chips", "closableChips", "clearable", "openOnClear", "options", "keepInitialOrder", "optionLabel", "optionValue", "optionInfo", "hideDetails", "persistentClear", "prefixIcon", "prefixIconSize", "loading", "emptyMessage", "showEmptyMessage", "virtualScroll", "numToleratedItems", "externalError", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "appearance", "emptyOptionIndex", "value"], outputs: ["valueChanged", "blurred"] }] }); }
6760
6778
  }
6761
6779
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TableColumnFilterConstraintComponent, decorators: [{
6762
6780
  type: Component,
@@ -10564,6 +10582,11 @@ class CpsTimepickerComponent {
10564
10582
  * @group Props
10565
10583
  */
10566
10584
  this.infoTooltipPosition = 'top';
10585
+ /**
10586
+ * Determines whether the timepicker input fields can be cleared.
10587
+ * @group Props
10588
+ */
10589
+ this.mandatoryValue = false;
10567
10590
  /**
10568
10591
  * Callback to invoke on value change.
10569
10592
  * @param {string} string - value changed.
@@ -10767,7 +10790,7 @@ class CpsTimepickerComponent {
10767
10790
  return Array.from({ length: until + 1 - startFrom }, (_, k) => k + startFrom);
10768
10791
  }
10769
10792
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CpsTimepickerComponent, deps: [{ token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
10770
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: CpsTimepickerComponent, isStandalone: true, selector: "cps-timepicker", inputs: { label: "label", disabled: "disabled", use24HourTime: "use24HourTime", withSeconds: "withSeconds", hint: "hint", hideDetails: "hideDetails", infoTooltip: "infoTooltip", infoTooltipClass: "infoTooltipClass", infoTooltipMaxWidth: "infoTooltipMaxWidth", infoTooltipPersistent: "infoTooltipPersistent", infoTooltipPosition: "infoTooltipPosition", value: "value" }, outputs: { valueChanged: "valueChanged" }, viewQueries: [{ propertyName: "hoursField", first: true, predicate: ["hoursField"], descendants: true }, { propertyName: "minutesField", first: true, predicate: ["minutesField"], descendants: true }, { propertyName: "secondsField", first: true, predicate: ["secondsField"], descendants: true }], ngImport: i0, template: "<div class=\"cps-timepicker\">\n <div\n class=\"cps-timepicker-label\"\n [ngClass]=\"{ 'cps-timepicker-label-disabled': disabled }\"\n *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-timepicker-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div class=\"cps-timepicker-body\">\n <cps-autocomplete\n #hoursField\n (keypress)=\"numberOnly($event)\"\n width=\"60\"\n [options]=\"hoursOptions\"\n [withOptionsAliases]=\"!use24HourTime\"\n [useOptionsAliasesWhenNoMatch]=\"true\"\n [hideDetails]=\"true\"\n [disabled]=\"disabled\"\n [showChevron]=\"false\"\n [showEmptyMessage]=\"false\"\n (blurred)=\"onFieldBlur()\"\n [returnObject]=\"false\"\n [value]=\"value?.hours\"\n (valueChanged)=\"updateHours($event)\"\n [externalError]=\"hoursError\"\n placeholder=\"HH\"></cps-autocomplete>\n <span class=\"cps-timepicker-delimiter\">:</span>\n <cps-autocomplete\n #minutesField\n (keypress)=\"numberOnly($event)\"\n width=\"60\"\n [options]=\"minutesOptions\"\n [hideDetails]=\"true\"\n [disabled]=\"disabled\"\n [showChevron]=\"false\"\n [showEmptyMessage]=\"false\"\n (blurred)=\"onFieldBlur()\"\n [returnObject]=\"false\"\n [value]=\"value?.minutes\"\n (valueChanged)=\"updateMinutes($event)\"\n [externalError]=\"minutesError\"\n placeholder=\"MM\"></cps-autocomplete>\n <span *ngIf=\"withSeconds\" class=\"cps-timepicker-delimiter\">:</span>\n <cps-autocomplete\n *ngIf=\"withSeconds\"\n #secondsField\n (keypress)=\"numberOnly($event)\"\n width=\"60\"\n [options]=\"secondsOptions\"\n [hideDetails]=\"true\"\n [disabled]=\"disabled\"\n [showChevron]=\"false\"\n [showEmptyMessage]=\"false\"\n (blurred)=\"onFieldBlur()\"\n [returnObject]=\"false\"\n [value]=\"value?.seconds\"\n (valueChanged)=\"updateSeconds($event)\"\n [externalError]=\"secondsError\"\n placeholder=\"SS\"></cps-autocomplete>\n <cps-button-toggle\n *ngIf=\"!use24HourTime\"\n class=\"cps-timepicker-am-pm-selector\"\n [options]=\"dayPeriodOptions\"\n [disabled]=\"disabled\"\n [value]=\"value?.dayPeriod || 'AM'\"\n (valueChanged)=\"updateDayPeriod($event)\">\n </cps-button-toggle>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-timepicker-hint\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-timepicker-error\">\n {{ error }}\n </div>\n</div>\n", styles: [":host .cps-timepicker{display:flex;flex-direction:column}:host .cps-timepicker .cps-timepicker-label{align-items:center;display:inline-flex;margin-bottom:.2rem;color:var(--cps-color-text-dark);font-size:.875rem;font-weight:600}:host .cps-timepicker .cps-timepicker-label-info-circle{margin-left:8px}:host .cps-timepicker .cps-timepicker-label-disabled{color:var(--cps-color-text-mild)}:host .cps-timepicker-body{display:flex;flex-direction:row}:host .cps-timepicker-body .cps-timepicker-am-pm-selector{margin-left:10px;margin-top:0}:host .cps-timepicker-body .cps-timepicker-delimiter{color:var(--cps-color-text-lightest);font-size:24px;margin:0 10px}:host .cps-timepicker .cps-timepicker-hint{color:var(--cps-color-text-mild);font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-timepicker .cps-timepicker-error{color:var(--cps-color-error);font-weight:700;font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default;margin-top:.2rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: CpsButtonToggleComponent, selector: "cps-button-toggle", inputs: ["label", "options", "multiple", "disabled", "mandatory", "equalWidths", "optionTooltipPosition", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "value"], outputs: ["valueChanged"] }, { kind: "component", type: CpsAutocompleteComponent, selector: "cps-autocomplete", inputs: ["label", "placeholder", "hint", "returnObject", "multiple", "disabled", "width", "selectAll", "showChevron", "withOptionsAliases", "useOptionsAliasesWhenNoMatch", "optionAlias", "chips", "closableChips", "clearable", "openOnClear", "options", "keepInitialOrder", "optionLabel", "optionValue", "optionInfo", "hideDetails", "persistentClear", "prefixIcon", "prefixIconSize", "loading", "emptyMessage", "showEmptyMessage", "virtualScroll", "numToleratedItems", "externalError", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "appearance", "value"], outputs: ["valueChanged", "blurred"] }, { kind: "component", type: CpsInfoCircleComponent, selector: "cps-info-circle", inputs: ["size", "tooltipText", "tooltipPosition", "tooltipContentClass", "tooltipMaxWidth", "tooltipPersistent"] }] }); }
10793
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: CpsTimepickerComponent, isStandalone: true, selector: "cps-timepicker", inputs: { label: "label", disabled: "disabled", use24HourTime: "use24HourTime", withSeconds: "withSeconds", hint: "hint", hideDetails: "hideDetails", infoTooltip: "infoTooltip", infoTooltipClass: "infoTooltipClass", infoTooltipMaxWidth: "infoTooltipMaxWidth", infoTooltipPersistent: "infoTooltipPersistent", infoTooltipPosition: "infoTooltipPosition", mandatoryValue: "mandatoryValue", value: "value" }, outputs: { valueChanged: "valueChanged" }, viewQueries: [{ propertyName: "hoursField", first: true, predicate: ["hoursField"], descendants: true }, { propertyName: "minutesField", first: true, predicate: ["minutesField"], descendants: true }, { propertyName: "secondsField", first: true, predicate: ["secondsField"], descendants: true }], ngImport: i0, template: "<div class=\"cps-timepicker\">\n <div\n class=\"cps-timepicker-label\"\n [ngClass]=\"{ 'cps-timepicker-label-disabled': disabled }\"\n *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-timepicker-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div class=\"cps-timepicker-body\">\n <cps-autocomplete\n #hoursField\n (keypress)=\"numberOnly($event)\"\n width=\"60\"\n [emptyOptionIndex]=\"mandatoryValue ? 0 : -1\"\n [options]=\"hoursOptions\"\n [withOptionsAliases]=\"!use24HourTime\"\n [useOptionsAliasesWhenNoMatch]=\"true\"\n [hideDetails]=\"true\"\n [disabled]=\"disabled\"\n [showChevron]=\"false\"\n [showEmptyMessage]=\"false\"\n (blurred)=\"onFieldBlur()\"\n [returnObject]=\"false\"\n [value]=\"value?.hours\"\n (valueChanged)=\"updateHours($event)\"\n [externalError]=\"hoursError\"\n placeholder=\"HH\"></cps-autocomplete>\n <span class=\"cps-timepicker-delimiter\">:</span>\n <cps-autocomplete\n #minutesField\n (keypress)=\"numberOnly($event)\"\n width=\"60\"\n [emptyOptionIndex]=\"mandatoryValue ? 0 : -1\"\n [options]=\"minutesOptions\"\n [hideDetails]=\"true\"\n [disabled]=\"disabled\"\n [showChevron]=\"false\"\n [showEmptyMessage]=\"false\"\n (blurred)=\"onFieldBlur()\"\n [returnObject]=\"false\"\n [value]=\"value?.minutes\"\n (valueChanged)=\"updateMinutes($event)\"\n [externalError]=\"minutesError\"\n placeholder=\"MM\"></cps-autocomplete>\n <span *ngIf=\"withSeconds\" class=\"cps-timepicker-delimiter\">:</span>\n <cps-autocomplete\n *ngIf=\"withSeconds\"\n #secondsField\n (keypress)=\"numberOnly($event)\"\n width=\"60\"\n [emptyOptionIndex]=\"mandatoryValue ? 0 : -1\"\n [options]=\"secondsOptions\"\n [hideDetails]=\"true\"\n [disabled]=\"disabled\"\n [showChevron]=\"false\"\n [showEmptyMessage]=\"false\"\n (blurred)=\"onFieldBlur()\"\n [returnObject]=\"false\"\n [value]=\"value?.seconds\"\n (valueChanged)=\"updateSeconds($event)\"\n [externalError]=\"secondsError\"\n placeholder=\"SS\"></cps-autocomplete>\n <cps-button-toggle\n *ngIf=\"!use24HourTime\"\n class=\"cps-timepicker-am-pm-selector\"\n [options]=\"dayPeriodOptions\"\n [disabled]=\"disabled\"\n [value]=\"value?.dayPeriod || 'AM'\"\n (valueChanged)=\"updateDayPeriod($event)\">\n </cps-button-toggle>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-timepicker-hint\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-timepicker-error\">\n {{ error }}\n </div>\n</div>\n", styles: [":host .cps-timepicker{display:flex;flex-direction:column}:host .cps-timepicker .cps-timepicker-label{align-items:center;display:inline-flex;margin-bottom:.2rem;color:var(--cps-color-text-dark);font-size:.875rem;font-weight:600}:host .cps-timepicker .cps-timepicker-label-info-circle{margin-left:8px}:host .cps-timepicker .cps-timepicker-label-disabled{color:var(--cps-color-text-mild)}:host .cps-timepicker-body{display:flex;flex-direction:row}:host .cps-timepicker-body .cps-timepicker-am-pm-selector{margin-left:10px;margin-top:0}:host .cps-timepicker-body .cps-timepicker-delimiter{color:var(--cps-color-text-lightest);font-size:24px;margin:0 10px}:host .cps-timepicker .cps-timepicker-hint{color:var(--cps-color-text-mild);font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-timepicker .cps-timepicker-error{color:var(--cps-color-error);font-weight:700;font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default;margin-top:.2rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: CpsButtonToggleComponent, selector: "cps-button-toggle", inputs: ["label", "options", "multiple", "disabled", "mandatory", "equalWidths", "optionTooltipPosition", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "value"], outputs: ["valueChanged"] }, { kind: "component", type: CpsAutocompleteComponent, selector: "cps-autocomplete", inputs: ["label", "placeholder", "hint", "returnObject", "multiple", "disabled", "width", "selectAll", "showChevron", "withOptionsAliases", "useOptionsAliasesWhenNoMatch", "optionAlias", "chips", "closableChips", "clearable", "openOnClear", "options", "keepInitialOrder", "optionLabel", "optionValue", "optionInfo", "hideDetails", "persistentClear", "prefixIcon", "prefixIconSize", "loading", "emptyMessage", "showEmptyMessage", "virtualScroll", "numToleratedItems", "externalError", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "appearance", "emptyOptionIndex", "value"], outputs: ["valueChanged", "blurred"] }, { kind: "component", type: CpsInfoCircleComponent, selector: "cps-info-circle", inputs: ["size", "tooltipText", "tooltipPosition", "tooltipContentClass", "tooltipMaxWidth", "tooltipPersistent"] }] }); }
10771
10794
  }
10772
10795
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CpsTimepickerComponent, decorators: [{
10773
10796
  type: Component,
@@ -10777,7 +10800,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
10777
10800
  CpsButtonToggleComponent,
10778
10801
  CpsAutocompleteComponent,
10779
10802
  CpsInfoCircleComponent
10780
- ], template: "<div class=\"cps-timepicker\">\n <div\n class=\"cps-timepicker-label\"\n [ngClass]=\"{ 'cps-timepicker-label-disabled': disabled }\"\n *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-timepicker-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div class=\"cps-timepicker-body\">\n <cps-autocomplete\n #hoursField\n (keypress)=\"numberOnly($event)\"\n width=\"60\"\n [options]=\"hoursOptions\"\n [withOptionsAliases]=\"!use24HourTime\"\n [useOptionsAliasesWhenNoMatch]=\"true\"\n [hideDetails]=\"true\"\n [disabled]=\"disabled\"\n [showChevron]=\"false\"\n [showEmptyMessage]=\"false\"\n (blurred)=\"onFieldBlur()\"\n [returnObject]=\"false\"\n [value]=\"value?.hours\"\n (valueChanged)=\"updateHours($event)\"\n [externalError]=\"hoursError\"\n placeholder=\"HH\"></cps-autocomplete>\n <span class=\"cps-timepicker-delimiter\">:</span>\n <cps-autocomplete\n #minutesField\n (keypress)=\"numberOnly($event)\"\n width=\"60\"\n [options]=\"minutesOptions\"\n [hideDetails]=\"true\"\n [disabled]=\"disabled\"\n [showChevron]=\"false\"\n [showEmptyMessage]=\"false\"\n (blurred)=\"onFieldBlur()\"\n [returnObject]=\"false\"\n [value]=\"value?.minutes\"\n (valueChanged)=\"updateMinutes($event)\"\n [externalError]=\"minutesError\"\n placeholder=\"MM\"></cps-autocomplete>\n <span *ngIf=\"withSeconds\" class=\"cps-timepicker-delimiter\">:</span>\n <cps-autocomplete\n *ngIf=\"withSeconds\"\n #secondsField\n (keypress)=\"numberOnly($event)\"\n width=\"60\"\n [options]=\"secondsOptions\"\n [hideDetails]=\"true\"\n [disabled]=\"disabled\"\n [showChevron]=\"false\"\n [showEmptyMessage]=\"false\"\n (blurred)=\"onFieldBlur()\"\n [returnObject]=\"false\"\n [value]=\"value?.seconds\"\n (valueChanged)=\"updateSeconds($event)\"\n [externalError]=\"secondsError\"\n placeholder=\"SS\"></cps-autocomplete>\n <cps-button-toggle\n *ngIf=\"!use24HourTime\"\n class=\"cps-timepicker-am-pm-selector\"\n [options]=\"dayPeriodOptions\"\n [disabled]=\"disabled\"\n [value]=\"value?.dayPeriod || 'AM'\"\n (valueChanged)=\"updateDayPeriod($event)\">\n </cps-button-toggle>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-timepicker-hint\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-timepicker-error\">\n {{ error }}\n </div>\n</div>\n", styles: [":host .cps-timepicker{display:flex;flex-direction:column}:host .cps-timepicker .cps-timepicker-label{align-items:center;display:inline-flex;margin-bottom:.2rem;color:var(--cps-color-text-dark);font-size:.875rem;font-weight:600}:host .cps-timepicker .cps-timepicker-label-info-circle{margin-left:8px}:host .cps-timepicker .cps-timepicker-label-disabled{color:var(--cps-color-text-mild)}:host .cps-timepicker-body{display:flex;flex-direction:row}:host .cps-timepicker-body .cps-timepicker-am-pm-selector{margin-left:10px;margin-top:0}:host .cps-timepicker-body .cps-timepicker-delimiter{color:var(--cps-color-text-lightest);font-size:24px;margin:0 10px}:host .cps-timepicker .cps-timepicker-hint{color:var(--cps-color-text-mild);font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-timepicker .cps-timepicker-error{color:var(--cps-color-error);font-weight:700;font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default;margin-top:.2rem}\n"] }]
10803
+ ], template: "<div class=\"cps-timepicker\">\n <div\n class=\"cps-timepicker-label\"\n [ngClass]=\"{ 'cps-timepicker-label-disabled': disabled }\"\n *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-timepicker-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div class=\"cps-timepicker-body\">\n <cps-autocomplete\n #hoursField\n (keypress)=\"numberOnly($event)\"\n width=\"60\"\n [emptyOptionIndex]=\"mandatoryValue ? 0 : -1\"\n [options]=\"hoursOptions\"\n [withOptionsAliases]=\"!use24HourTime\"\n [useOptionsAliasesWhenNoMatch]=\"true\"\n [hideDetails]=\"true\"\n [disabled]=\"disabled\"\n [showChevron]=\"false\"\n [showEmptyMessage]=\"false\"\n (blurred)=\"onFieldBlur()\"\n [returnObject]=\"false\"\n [value]=\"value?.hours\"\n (valueChanged)=\"updateHours($event)\"\n [externalError]=\"hoursError\"\n placeholder=\"HH\"></cps-autocomplete>\n <span class=\"cps-timepicker-delimiter\">:</span>\n <cps-autocomplete\n #minutesField\n (keypress)=\"numberOnly($event)\"\n width=\"60\"\n [emptyOptionIndex]=\"mandatoryValue ? 0 : -1\"\n [options]=\"minutesOptions\"\n [hideDetails]=\"true\"\n [disabled]=\"disabled\"\n [showChevron]=\"false\"\n [showEmptyMessage]=\"false\"\n (blurred)=\"onFieldBlur()\"\n [returnObject]=\"false\"\n [value]=\"value?.minutes\"\n (valueChanged)=\"updateMinutes($event)\"\n [externalError]=\"minutesError\"\n placeholder=\"MM\"></cps-autocomplete>\n <span *ngIf=\"withSeconds\" class=\"cps-timepicker-delimiter\">:</span>\n <cps-autocomplete\n *ngIf=\"withSeconds\"\n #secondsField\n (keypress)=\"numberOnly($event)\"\n width=\"60\"\n [emptyOptionIndex]=\"mandatoryValue ? 0 : -1\"\n [options]=\"secondsOptions\"\n [hideDetails]=\"true\"\n [disabled]=\"disabled\"\n [showChevron]=\"false\"\n [showEmptyMessage]=\"false\"\n (blurred)=\"onFieldBlur()\"\n [returnObject]=\"false\"\n [value]=\"value?.seconds\"\n (valueChanged)=\"updateSeconds($event)\"\n [externalError]=\"secondsError\"\n placeholder=\"SS\"></cps-autocomplete>\n <cps-button-toggle\n *ngIf=\"!use24HourTime\"\n class=\"cps-timepicker-am-pm-selector\"\n [options]=\"dayPeriodOptions\"\n [disabled]=\"disabled\"\n [value]=\"value?.dayPeriod || 'AM'\"\n (valueChanged)=\"updateDayPeriod($event)\">\n </cps-button-toggle>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-timepicker-hint\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-timepicker-error\">\n {{ error }}\n </div>\n</div>\n", styles: [":host .cps-timepicker{display:flex;flex-direction:column}:host .cps-timepicker .cps-timepicker-label{align-items:center;display:inline-flex;margin-bottom:.2rem;color:var(--cps-color-text-dark);font-size:.875rem;font-weight:600}:host .cps-timepicker .cps-timepicker-label-info-circle{margin-left:8px}:host .cps-timepicker .cps-timepicker-label-disabled{color:var(--cps-color-text-mild)}:host .cps-timepicker-body{display:flex;flex-direction:row}:host .cps-timepicker-body .cps-timepicker-am-pm-selector{margin-left:10px;margin-top:0}:host .cps-timepicker-body .cps-timepicker-delimiter{color:var(--cps-color-text-lightest);font-size:24px;margin:0 10px}:host .cps-timepicker .cps-timepicker-hint{color:var(--cps-color-text-mild);font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-timepicker .cps-timepicker-error{color:var(--cps-color-error);font-weight:700;font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default;margin-top:.2rem}\n"] }]
10781
10804
  }], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
10782
10805
  type: Self
10783
10806
  }, {
@@ -10804,6 +10827,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
10804
10827
  type: Input
10805
10828
  }], infoTooltipPosition: [{
10806
10829
  type: Input
10830
+ }], mandatoryValue: [{
10831
+ type: Input
10807
10832
  }], value: [{
10808
10833
  type: Input
10809
10834
  }], valueChanged: [{
@@ -10949,6 +10974,1267 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
10949
10974
  type: Output
10950
10975
  }] } });
10951
10976
 
10977
+ const timeZones = [
10978
+ 'Asia/Aden',
10979
+ 'America/Cuiaba',
10980
+ 'Etc/GMT+9',
10981
+ 'Etc/GMT+8',
10982
+ 'Africa/Nairobi',
10983
+ 'America/Marigot',
10984
+ 'Asia/Aqtau',
10985
+ 'Pacific/Kwajalein',
10986
+ 'America/El_Salvador',
10987
+ 'Asia/Pontianak',
10988
+ 'Africa/Cairo',
10989
+ 'Pacific/Pago_Pago',
10990
+ 'Africa/Mbabane',
10991
+ 'Asia/Kuching',
10992
+ 'Pacific/Honolulu',
10993
+ 'Pacific/Rarotonga',
10994
+ 'America/Guatemala',
10995
+ 'Australia/Hobart',
10996
+ 'Europe/London',
10997
+ 'America/Belize',
10998
+ 'America/Panama',
10999
+ 'Asia/Chungking',
11000
+ 'America/Managua',
11001
+ 'America/Indiana/Petersburg',
11002
+ 'Asia/Yerevan',
11003
+ 'Europe/Brussels',
11004
+ 'GMT',
11005
+ 'Europe/Warsaw',
11006
+ 'America/Chicago',
11007
+ 'Asia/Kashgar',
11008
+ 'Chile/Continental',
11009
+ 'Pacific/Yap',
11010
+ 'CET',
11011
+ 'Etc/GMT-1',
11012
+ 'Etc/GMT-0',
11013
+ 'Europe/Jersey',
11014
+ 'America/Tegucigalpa',
11015
+ 'Etc/GMT-5',
11016
+ 'Europe/Istanbul',
11017
+ 'America/Eirunepe',
11018
+ 'Etc/GMT-4',
11019
+ 'America/Miquelon',
11020
+ 'Etc/GMT-3',
11021
+ 'Europe/Luxembourg',
11022
+ 'Etc/GMT-2',
11023
+ 'Etc/GMT-9',
11024
+ 'America/Argentina/Catamarca',
11025
+ 'Etc/GMT-8',
11026
+ 'Etc/GMT-7',
11027
+ 'Etc/GMT-6',
11028
+ 'Europe/Zaporozhye',
11029
+ 'Canada/Yukon',
11030
+ 'Canada/Atlantic',
11031
+ 'Atlantic/St_Helena',
11032
+ 'Australia/Tasmania',
11033
+ 'Libya',
11034
+ 'Europe/Guernsey',
11035
+ 'America/Grand_Turk',
11036
+ 'Asia/Samarkand',
11037
+ 'America/Argentina/Cordoba',
11038
+ 'Asia/Phnom_Penh',
11039
+ 'Africa/Kigali',
11040
+ 'Asia/Almaty',
11041
+ 'US/Alaska',
11042
+ 'Asia/Dubai',
11043
+ 'Europe/Isle_of_Man',
11044
+ 'America/Araguaina',
11045
+ 'Cuba',
11046
+ 'Asia/Novosibirsk',
11047
+ 'America/Argentina/Salta',
11048
+ 'Etc/GMT+3',
11049
+ 'Africa/Tunis',
11050
+ 'Etc/GMT+2',
11051
+ 'Etc/GMT+1',
11052
+ 'Pacific/Fakaofo',
11053
+ 'Africa/Tripoli',
11054
+ 'Etc/GMT+0',
11055
+ 'Israel',
11056
+ 'Africa/Banjul',
11057
+ 'Etc/GMT+7',
11058
+ 'Indian/Comoro',
11059
+ 'Etc/GMT+6',
11060
+ 'Etc/GMT+5',
11061
+ 'Etc/GMT+4',
11062
+ 'Pacific/Port_Moresby',
11063
+ 'US/Arizona',
11064
+ 'Antarctica/Syowa',
11065
+ 'Indian/Reunion',
11066
+ 'Pacific/Palau',
11067
+ 'Europe/Kaliningrad',
11068
+ 'America/Montevideo',
11069
+ 'Africa/Windhoek',
11070
+ 'Asia/Karachi',
11071
+ 'Africa/Mogadishu',
11072
+ 'Australia/Perth',
11073
+ 'Brazil/East',
11074
+ 'Etc/GMT',
11075
+ 'Asia/Chita',
11076
+ 'Pacific/Easter',
11077
+ 'Antarctica/Davis',
11078
+ 'Antarctica/McMurdo',
11079
+ 'Asia/Macao',
11080
+ 'America/Manaus',
11081
+ 'Africa/Freetown',
11082
+ 'Europe/Bucharest',
11083
+ 'Asia/Tomsk',
11084
+ 'America/Argentina/Mendoza',
11085
+ 'Asia/Macau',
11086
+ 'Europe/Malta',
11087
+ 'Mexico/BajaSur',
11088
+ 'Pacific/Tahiti',
11089
+ 'Africa/Asmera',
11090
+ 'Europe/Busingen',
11091
+ 'America/Argentina/Rio_Gallegos',
11092
+ 'Africa/Malabo',
11093
+ 'Europe/Skopje',
11094
+ 'America/Catamarca',
11095
+ 'America/Godthab',
11096
+ 'Europe/Sarajevo',
11097
+ 'Australia/ACT',
11098
+ 'GB-Eire',
11099
+ 'Africa/Lagos',
11100
+ 'America/Cordoba',
11101
+ 'Europe/Rome',
11102
+ 'Asia/Dacca',
11103
+ 'Indian/Mauritius',
11104
+ 'Pacific/Samoa',
11105
+ 'America/Regina',
11106
+ 'America/Fort_Wayne',
11107
+ 'America/Dawson_Creek',
11108
+ 'Africa/Algiers',
11109
+ 'Europe/Mariehamn',
11110
+ 'America/St_Johns',
11111
+ 'America/St_Thomas',
11112
+ 'Europe/Zurich',
11113
+ 'America/Anguilla',
11114
+ 'Asia/Dili',
11115
+ 'America/Denver',
11116
+ 'Africa/Bamako',
11117
+ 'Europe/Saratov',
11118
+ 'GB',
11119
+ 'Mexico/General',
11120
+ 'Pacific/Wallis',
11121
+ 'Europe/Gibraltar',
11122
+ 'Africa/Conakry',
11123
+ 'Africa/Lubumbashi',
11124
+ 'Asia/Istanbul',
11125
+ 'America/Havana',
11126
+ 'NZ-CHAT',
11127
+ 'Asia/Choibalsan',
11128
+ 'America/Porto_Acre',
11129
+ 'Asia/Omsk',
11130
+ 'Europe/Vaduz',
11131
+ 'US/Michigan',
11132
+ 'Asia/Dhaka',
11133
+ 'America/Barbados',
11134
+ 'Europe/Tiraspol',
11135
+ 'Atlantic/Cape_Verde',
11136
+ 'Asia/Yekaterinburg',
11137
+ 'America/Louisville',
11138
+ 'Pacific/Johnston',
11139
+ 'Pacific/Chatham',
11140
+ 'Europe/Ljubljana',
11141
+ 'America/Sao_Paulo',
11142
+ 'Asia/Jayapura',
11143
+ 'America/Curacao',
11144
+ 'Asia/Dushanbe',
11145
+ 'America/Guyana',
11146
+ 'America/Guayaquil',
11147
+ 'America/Martinique',
11148
+ 'Portugal',
11149
+ 'Europe/Berlin',
11150
+ 'Europe/Moscow',
11151
+ 'Europe/Chisinau',
11152
+ 'America/Puerto_Rico',
11153
+ 'America/Rankin_Inlet',
11154
+ 'Pacific/Ponape',
11155
+ 'Europe/Stockholm',
11156
+ 'Europe/Budapest',
11157
+ 'America/Argentina/Jujuy',
11158
+ 'Australia/Eucla',
11159
+ 'Asia/Shanghai',
11160
+ 'Universal',
11161
+ 'Europe/Zagreb',
11162
+ 'America/Port_of_Spain',
11163
+ 'Europe/Helsinki',
11164
+ 'Asia/Beirut',
11165
+ 'Asia/Tel_Aviv',
11166
+ 'Pacific/Bougainville',
11167
+ 'US/Central',
11168
+ 'Africa/Sao_Tome',
11169
+ 'Indian/Chagos',
11170
+ 'America/Cayenne',
11171
+ 'Asia/Yakutsk',
11172
+ 'Pacific/Galapagos',
11173
+ 'Australia/North',
11174
+ 'Europe/Paris',
11175
+ 'Africa/Ndjamena',
11176
+ 'Pacific/Fiji',
11177
+ 'America/Rainy_River',
11178
+ 'Indian/Maldives',
11179
+ 'Australia/Yancowinna',
11180
+ 'SystemV/AST4',
11181
+ 'Asia/Oral',
11182
+ 'America/Yellowknife',
11183
+ 'Pacific/Enderbury',
11184
+ 'America/Juneau',
11185
+ 'Australia/Victoria',
11186
+ 'America/Indiana/Vevay',
11187
+ 'Asia/Tashkent',
11188
+ 'Asia/Jakarta',
11189
+ 'Africa/Ceuta',
11190
+ 'Asia/Barnaul',
11191
+ 'America/Recife',
11192
+ 'America/Buenos_Aires',
11193
+ 'America/Noronha',
11194
+ 'America/Swift_Current',
11195
+ 'Australia/Adelaide',
11196
+ 'America/Metlakatla',
11197
+ 'Africa/Djibouti',
11198
+ 'America/Paramaribo',
11199
+ 'Asia/Qostanay',
11200
+ 'Europe/Simferopol',
11201
+ 'Europe/Sofia',
11202
+ 'Africa/Nouakchott',
11203
+ 'Europe/Prague',
11204
+ 'America/Indiana/Vincennes',
11205
+ 'Antarctica/Mawson',
11206
+ 'America/Kralendijk',
11207
+ 'Antarctica/Troll',
11208
+ 'Europe/Samara',
11209
+ 'Indian/Christmas',
11210
+ 'America/Antigua',
11211
+ 'Pacific/Gambier',
11212
+ 'America/Indianapolis',
11213
+ 'America/Inuvik',
11214
+ 'America/Iqaluit',
11215
+ 'Pacific/Funafuti',
11216
+ 'UTC',
11217
+ 'Antarctica/Macquarie',
11218
+ 'Canada/Pacific',
11219
+ 'America/Moncton',
11220
+ 'Africa/Gaborone',
11221
+ 'Pacific/Chuuk',
11222
+ 'Asia/Pyongyang',
11223
+ 'America/St_Vincent',
11224
+ 'Asia/Gaza',
11225
+ 'Etc/Universal',
11226
+ 'PST8PDT',
11227
+ 'Atlantic/Faeroe',
11228
+ 'Asia/Qyzylorda',
11229
+ 'Canada/Newfoundland',
11230
+ 'America/Kentucky/Louisville',
11231
+ 'America/Yakutat',
11232
+ 'Asia/Ho_Chi_Minh',
11233
+ 'Antarctica/Casey',
11234
+ 'Europe/Copenhagen',
11235
+ 'Africa/Asmara',
11236
+ 'Atlantic/Azores',
11237
+ 'Europe/Vienna',
11238
+ 'ROK',
11239
+ 'Pacific/Pitcairn',
11240
+ 'America/Mazatlan',
11241
+ 'Australia/Queensland',
11242
+ 'Pacific/Nauru',
11243
+ 'Europe/Tirane',
11244
+ 'Asia/Kolkata',
11245
+ 'SystemV/MST7',
11246
+ 'Australia/Canberra',
11247
+ 'MET',
11248
+ 'Australia/Broken_Hill',
11249
+ 'Europe/Riga',
11250
+ 'America/Dominica',
11251
+ 'Africa/Abidjan',
11252
+ 'America/Mendoza',
11253
+ 'America/Santarem',
11254
+ 'Kwajalein',
11255
+ 'America/Asuncion',
11256
+ 'Asia/Ulan_Bator',
11257
+ 'NZ',
11258
+ 'America/Boise',
11259
+ 'Australia/Currie',
11260
+ 'EST5EDT',
11261
+ 'Pacific/Guam',
11262
+ 'Pacific/Wake',
11263
+ 'Atlantic/Bermuda',
11264
+ 'America/Costa_Rica',
11265
+ 'America/Dawson',
11266
+ 'Asia/Chongqing',
11267
+ 'Eire',
11268
+ 'Europe/Amsterdam',
11269
+ 'America/Indiana/Knox',
11270
+ 'America/North_Dakota/Beulah',
11271
+ 'Africa/Accra',
11272
+ 'Atlantic/Faroe',
11273
+ 'Mexico/BajaNorte',
11274
+ 'America/Maceio',
11275
+ 'Etc/UCT',
11276
+ 'Pacific/Apia',
11277
+ 'GMT0',
11278
+ 'America/Atka',
11279
+ 'Pacific/Niue',
11280
+ 'Australia/Lord_Howe',
11281
+ 'Europe/Dublin',
11282
+ 'Pacific/Truk',
11283
+ 'MST7MDT',
11284
+ 'America/Monterrey',
11285
+ 'America/Nassau',
11286
+ 'America/Jamaica',
11287
+ 'Asia/Bishkek',
11288
+ 'America/Atikokan',
11289
+ 'Atlantic/Stanley',
11290
+ 'Australia/NSW',
11291
+ 'US/Hawaii',
11292
+ 'SystemV/CST6',
11293
+ 'Indian/Mahe',
11294
+ 'Asia/Aqtobe',
11295
+ 'America/Sitka',
11296
+ 'Asia/Vladivostok',
11297
+ 'Africa/Libreville',
11298
+ 'Africa/Maputo',
11299
+ 'Zulu',
11300
+ 'America/Kentucky/Monticello',
11301
+ 'Africa/El_Aaiun',
11302
+ 'Africa/Ouagadougou',
11303
+ 'America/Coral_Harbour',
11304
+ 'Pacific/Marquesas',
11305
+ 'Brazil/West',
11306
+ 'America/Aruba',
11307
+ 'America/North_Dakota/Center',
11308
+ 'America/Cayman',
11309
+ 'Asia/Ulaanbaatar',
11310
+ 'Asia/Baghdad',
11311
+ 'Europe/San_Marino',
11312
+ 'America/Indiana/Tell_City',
11313
+ 'America/Tijuana',
11314
+ 'Pacific/Saipan',
11315
+ 'SystemV/YST9',
11316
+ 'Africa/Douala',
11317
+ 'America/Chihuahua',
11318
+ 'America/Ojinaga',
11319
+ 'Asia/Hovd',
11320
+ 'America/Anchorage',
11321
+ 'Chile/EasterIsland',
11322
+ 'America/Halifax',
11323
+ 'Antarctica/Rothera',
11324
+ 'America/Indiana/Indianapolis',
11325
+ 'US/Mountain',
11326
+ 'Asia/Damascus',
11327
+ 'America/Argentina/San_Luis',
11328
+ 'America/Santiago',
11329
+ 'Asia/Baku',
11330
+ 'America/Argentina/Ushuaia',
11331
+ 'Atlantic/Reykjavik',
11332
+ 'Africa/Brazzaville',
11333
+ 'Africa/Porto-Novo',
11334
+ 'America/La_Paz',
11335
+ 'Antarctica/DumontDUrville',
11336
+ 'Asia/Taipei',
11337
+ 'Antarctica/South_Pole',
11338
+ 'Asia/Manila',
11339
+ 'Asia/Bangkok',
11340
+ 'Africa/Dar_es_Salaam',
11341
+ 'Poland',
11342
+ 'Atlantic/Madeira',
11343
+ 'Antarctica/Palmer',
11344
+ 'America/Thunder_Bay',
11345
+ 'Africa/Addis_Ababa',
11346
+ 'Asia/Yangon',
11347
+ 'Europe/Uzhgorod',
11348
+ 'Brazil/DeNoronha',
11349
+ 'Asia/Ashkhabad',
11350
+ 'Etc/Zulu',
11351
+ 'America/Indiana/Marengo',
11352
+ 'America/Creston',
11353
+ 'America/Punta_Arenas',
11354
+ 'America/Mexico_City',
11355
+ 'Antarctica/Vostok',
11356
+ 'Asia/Jerusalem',
11357
+ 'Europe/Andorra',
11358
+ 'US/Samoa',
11359
+ 'PRC',
11360
+ 'Asia/Vientiane',
11361
+ 'Pacific/Kiritimati',
11362
+ 'America/Matamoros',
11363
+ 'America/Blanc-Sablon',
11364
+ 'Asia/Riyadh',
11365
+ 'Iceland',
11366
+ 'Pacific/Pohnpei',
11367
+ 'Asia/Ujung_Pandang',
11368
+ 'Atlantic/South_Georgia',
11369
+ 'Europe/Lisbon',
11370
+ 'Asia/Harbin',
11371
+ 'Europe/Oslo',
11372
+ 'Asia/Novokuznetsk',
11373
+ 'CST6CDT',
11374
+ 'Atlantic/Canary',
11375
+ 'America/Knox_IN',
11376
+ 'Asia/Kuwait',
11377
+ 'SystemV/HST10',
11378
+ 'Pacific/Efate',
11379
+ 'Africa/Lome',
11380
+ 'America/Bogota',
11381
+ 'America/Menominee',
11382
+ 'America/Adak',
11383
+ 'Pacific/Norfolk',
11384
+ 'Europe/Kirov',
11385
+ 'America/Resolute',
11386
+ 'Pacific/Kanton',
11387
+ 'Pacific/Tarawa',
11388
+ 'Africa/Kampala',
11389
+ 'Asia/Krasnoyarsk',
11390
+ 'Greenwich',
11391
+ 'SystemV/EST5',
11392
+ 'America/Edmonton',
11393
+ 'Europe/Podgorica',
11394
+ 'Australia/South',
11395
+ 'Canada/Central',
11396
+ 'Africa/Bujumbura',
11397
+ 'America/Santo_Domingo',
11398
+ 'US/Eastern',
11399
+ 'Europe/Minsk',
11400
+ 'Pacific/Auckland',
11401
+ 'Africa/Casablanca',
11402
+ 'America/Glace_Bay',
11403
+ 'Canada/Eastern',
11404
+ 'Asia/Qatar',
11405
+ 'Europe/Kiev',
11406
+ 'Singapore',
11407
+ 'Asia/Magadan',
11408
+ 'SystemV/PST8',
11409
+ 'America/Port-au-Prince',
11410
+ 'Europe/Belfast',
11411
+ 'America/St_Barthelemy',
11412
+ 'Asia/Ashgabat',
11413
+ 'Africa/Luanda',
11414
+ 'America/Nipigon',
11415
+ 'Atlantic/Jan_Mayen',
11416
+ 'Brazil/Acre',
11417
+ 'Asia/Muscat',
11418
+ 'Asia/Bahrain',
11419
+ 'Europe/Vilnius',
11420
+ 'America/Fortaleza',
11421
+ 'Etc/GMT0',
11422
+ 'US/East-Indiana',
11423
+ 'America/Hermosillo',
11424
+ 'America/Cancun',
11425
+ 'Africa/Maseru',
11426
+ 'Pacific/Kosrae',
11427
+ 'Africa/Kinshasa',
11428
+ 'Asia/Kathmandu',
11429
+ 'Asia/Seoul',
11430
+ 'Australia/Sydney',
11431
+ 'America/Lima',
11432
+ 'Australia/LHI',
11433
+ 'America/St_Lucia',
11434
+ 'Europe/Madrid',
11435
+ 'America/Bahia_Banderas',
11436
+ 'America/Montserrat',
11437
+ 'Asia/Brunei',
11438
+ 'America/Santa_Isabel',
11439
+ 'Canada/Mountain',
11440
+ 'America/Cambridge_Bay',
11441
+ 'Asia/Colombo',
11442
+ 'Australia/West',
11443
+ 'Indian/Antananarivo',
11444
+ 'Australia/Brisbane',
11445
+ 'Indian/Mayotte',
11446
+ 'US/Indiana-Starke',
11447
+ 'Asia/Urumqi',
11448
+ 'US/Aleutian',
11449
+ 'Europe/Volgograd',
11450
+ 'America/Lower_Princes',
11451
+ 'America/Vancouver',
11452
+ 'Africa/Blantyre',
11453
+ 'America/Rio_Branco',
11454
+ 'America/Danmarkshavn',
11455
+ 'America/Detroit',
11456
+ 'America/Thule',
11457
+ 'Africa/Lusaka',
11458
+ 'Asia/Hong_Kong',
11459
+ 'Iran',
11460
+ 'America/Argentina/La_Rioja',
11461
+ 'Africa/Dakar',
11462
+ 'SystemV/CST6CDT',
11463
+ 'America/Tortola',
11464
+ 'America/Porto_Velho',
11465
+ 'Asia/Sakhalin',
11466
+ 'Etc/GMT+10',
11467
+ 'America/Scoresbysund',
11468
+ 'Asia/Kamchatka',
11469
+ 'Asia/Thimbu',
11470
+ 'Africa/Harare',
11471
+ 'Etc/GMT+12',
11472
+ 'Etc/GMT+11',
11473
+ 'Navajo',
11474
+ 'America/Nome',
11475
+ 'Europe/Tallinn',
11476
+ 'Turkey',
11477
+ 'Africa/Khartoum',
11478
+ 'Africa/Johannesburg',
11479
+ 'Africa/Bangui',
11480
+ 'Europe/Belgrade',
11481
+ 'Jamaica',
11482
+ 'Africa/Bissau',
11483
+ 'Asia/Tehran',
11484
+ 'WET',
11485
+ 'Europe/Astrakhan',
11486
+ 'Africa/Juba',
11487
+ 'America/Campo_Grande',
11488
+ 'America/Belem',
11489
+ 'Etc/Greenwich',
11490
+ 'Asia/Saigon',
11491
+ 'America/Ensenada',
11492
+ 'Pacific/Midway',
11493
+ 'America/Jujuy',
11494
+ 'Africa/Timbuktu',
11495
+ 'America/Bahia',
11496
+ 'America/Goose_Bay',
11497
+ 'America/Virgin',
11498
+ 'America/Pangnirtung',
11499
+ 'Asia/Katmandu',
11500
+ 'America/Phoenix',
11501
+ 'Africa/Niamey',
11502
+ 'America/Whitehorse',
11503
+ 'Pacific/Noumea',
11504
+ 'Asia/Tbilisi',
11505
+ 'America/Montreal',
11506
+ 'Asia/Makassar',
11507
+ 'America/Argentina/San_Juan',
11508
+ 'Hongkong',
11509
+ 'UCT',
11510
+ 'Asia/Nicosia',
11511
+ 'America/Indiana/Winamac',
11512
+ 'SystemV/MST7MDT',
11513
+ 'America/Argentina/ComodRivadavia',
11514
+ 'America/Boa_Vista',
11515
+ 'America/Grenada',
11516
+ 'Asia/Atyrau',
11517
+ 'Australia/Darwin',
11518
+ 'Asia/Khandyga',
11519
+ 'Asia/Kuala_Lumpur',
11520
+ 'Asia/Famagusta',
11521
+ 'Asia/Thimphu',
11522
+ 'Asia/Rangoon',
11523
+ 'Europe/Bratislava',
11524
+ 'Asia/Calcutta',
11525
+ 'America/Argentina/Tucuman',
11526
+ 'Asia/Kabul',
11527
+ 'Indian/Cocos',
11528
+ 'Japan',
11529
+ 'Pacific/Tongatapu',
11530
+ 'America/New_York',
11531
+ 'Etc/GMT-12',
11532
+ 'Etc/GMT-11',
11533
+ 'America/Nuuk',
11534
+ 'Etc/GMT-10',
11535
+ 'SystemV/YST9YDT',
11536
+ 'Europe/Ulyanovsk',
11537
+ 'Etc/GMT-14',
11538
+ 'Etc/GMT-13',
11539
+ 'W-SU',
11540
+ 'America/Merida',
11541
+ 'EET',
11542
+ 'America/Rosario',
11543
+ 'Canada/Saskatchewan',
11544
+ 'America/St_Kitts',
11545
+ 'Arctic/Longyearbyen',
11546
+ 'America/Fort_Nelson',
11547
+ 'America/Caracas',
11548
+ 'America/Guadeloupe',
11549
+ 'Asia/Hebron',
11550
+ 'Indian/Kerguelen',
11551
+ 'SystemV/PST8PDT',
11552
+ 'Africa/Monrovia',
11553
+ 'Asia/Ust-Nera',
11554
+ 'Egypt',
11555
+ 'Asia/Srednekolymsk',
11556
+ 'America/North_Dakota/New_Salem',
11557
+ 'Asia/Anadyr',
11558
+ 'Australia/Melbourne',
11559
+ 'Asia/Irkutsk',
11560
+ 'America/Shiprock',
11561
+ 'America/Winnipeg',
11562
+ 'Europe/Vatican',
11563
+ 'Asia/Amman',
11564
+ 'Etc/UTC',
11565
+ 'SystemV/AST4ADT',
11566
+ 'Asia/Tokyo',
11567
+ 'America/Toronto',
11568
+ 'Asia/Singapore',
11569
+ 'Australia/Lindeman',
11570
+ 'America/Los_Angeles',
11571
+ 'SystemV/EST5EDT',
11572
+ 'Pacific/Majuro',
11573
+ 'America/Argentina/Buenos_Aires',
11574
+ 'Europe/Nicosia',
11575
+ 'Pacific/Guadalcanal',
11576
+ 'Europe/Athens',
11577
+ 'US/Pacific',
11578
+ 'Europe/Monaco'
11579
+ ];
11580
+
11581
+ const Days = {
11582
+ MON: 'Monday',
11583
+ TUE: 'Tuesday',
11584
+ WED: 'Wednesday',
11585
+ THU: 'Thursday',
11586
+ FRI: 'Friday',
11587
+ SAT: 'Saturday',
11588
+ SUN: 'Sunday'
11589
+ };
11590
+ const MonthWeeks = {
11591
+ '#1': 'First',
11592
+ '#2': 'Second',
11593
+ '#3': 'Third',
11594
+ '#4': 'Fourth',
11595
+ '#5': 'Fifth',
11596
+ L: 'Last'
11597
+ };
11598
+ var Months;
11599
+ (function (Months) {
11600
+ Months[Months["January"] = 1] = "January";
11601
+ Months[Months["February"] = 2] = "February";
11602
+ Months[Months["March"] = 3] = "March";
11603
+ Months[Months["April"] = 4] = "April";
11604
+ Months[Months["May"] = 5] = "May";
11605
+ Months[Months["June"] = 6] = "June";
11606
+ Months[Months["July"] = 7] = "July";
11607
+ Months[Months["August"] = 8] = "August";
11608
+ Months[Months["September"] = 9] = "September";
11609
+ Months[Months["October"] = 10] = "October";
11610
+ Months[Months["November"] = 11] = "November";
11611
+ Months[Months["December"] = 12] = "December";
11612
+ })(Months || (Months = {}));
11613
+ /**
11614
+ * CpsSchedulerComponent is a component designed to facilitate the creation of Amazon EventBridge CRON expressions.
11615
+ * @group Components
11616
+ */
11617
+ class CpsSchedulerComponent {
11618
+ // eslint-disable-next-line no-useless-constructor
11619
+ constructor(_fb, _cdr) {
11620
+ this._fb = _fb;
11621
+ this._cdr = _cdr;
11622
+ /**
11623
+ * Label of the component.
11624
+ * @group Props
11625
+ */
11626
+ this.label = '';
11627
+ /**
11628
+ * Cron expression value.
11629
+ * @group Props
11630
+ */
11631
+ this.cron = '';
11632
+ /**
11633
+ * Time zone value.
11634
+ * @group Props
11635
+ */
11636
+ this.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone || 'UTC';
11637
+ /**
11638
+ * Determines whether to show the 'Not set' tab.
11639
+ * @group Props
11640
+ */
11641
+ this.showNotSet = true;
11642
+ /**
11643
+ * Determines whether to show the 'Advanced' tab.
11644
+ * @group Props
11645
+ */
11646
+ this.showAdvanced = true;
11647
+ /**
11648
+ * Determines whether to show the time zone selector.
11649
+ * @group Props
11650
+ */
11651
+ this.showTimeZone = false;
11652
+ /**
11653
+ * Default time format for the component.
11654
+ * @group Props
11655
+ */
11656
+ this.defaultTime = '00:00';
11657
+ /**
11658
+ * Determines whether to use 24-hour time format.
11659
+ * @group Props
11660
+ */
11661
+ this.use24HourTime = true;
11662
+ /**
11663
+ * Determines whether the component is disabled.
11664
+ * @group Props
11665
+ */
11666
+ this.disabled = false;
11667
+ /**
11668
+ * Information tooltip for the component.
11669
+ * @group Props
11670
+ */
11671
+ this.infoTooltip = '';
11672
+ /**
11673
+ * Callback to invoke on cron expression value change.
11674
+ * @param {string} string - cron expression value changed.
11675
+ * @group Emits
11676
+ */
11677
+ this.cronChange = new EventEmitter();
11678
+ /**
11679
+ * Callback to invoke on time zone change.
11680
+ * @param {string} string - time zone changed.
11681
+ * @group Emits
11682
+ */
11683
+ this.timeZoneChange = new EventEmitter();
11684
+ this.scheduleTypes = [
11685
+ { label: 'Not set', value: 'Not set' },
11686
+ { label: 'Minutes', value: 'Minutes' },
11687
+ { label: 'Hourly', value: 'Hourly' },
11688
+ { label: 'Daily', value: 'Daily' },
11689
+ { label: 'Weekly', value: 'Weekly' },
11690
+ { label: 'Monthly', value: 'Monthly' },
11691
+ { label: 'Yearly', value: 'Yearly' },
11692
+ { label: 'Advanced', value: 'Advanced' }
11693
+ ];
11694
+ this.activeScheduleType = 'Not set';
11695
+ this.selectOptions = this._getSelectOptions();
11696
+ this.timeZoneOptions = timeZones.map((tz) => ({ label: tz, value: tz }));
11697
+ this._isDirty = false;
11698
+ this._minutesDefault = '0/1 * 1/1 * ? *';
11699
+ }
11700
+ ngOnInit() {
11701
+ this.state = this._getDefaultState();
11702
+ if (!this.showAdvanced) {
11703
+ this.scheduleTypes.pop();
11704
+ }
11705
+ if (!this.showNotSet) {
11706
+ this.scheduleTypes.shift();
11707
+ if (!this.cron)
11708
+ this.cron = this._minutesDefault;
11709
+ }
11710
+ this._handleModelChange(this.cron);
11711
+ this.form = this._fb.group({
11712
+ advanced: [
11713
+ this.state.advanced.expression ?? '',
11714
+ [this._validateAdvancedExpr]
11715
+ ]
11716
+ });
11717
+ }
11718
+ ngOnChanges(changes) {
11719
+ const newCron = changes.value;
11720
+ if (newCron && !newCron.firstChange) {
11721
+ this._handleModelChange(this.cron);
11722
+ }
11723
+ }
11724
+ setActiveScheduleType(value) {
11725
+ if (!this.disabled) {
11726
+ this.activeScheduleType = value;
11727
+ this.regenerateCron(true);
11728
+ }
11729
+ if (value && this.form) {
11730
+ if (value === 'Advanced') {
11731
+ this.form.controls.advanced.addValidators(Validators.required);
11732
+ this.form.controls.advanced.updateValueAndValidity();
11733
+ }
11734
+ else {
11735
+ this.form.controls.advanced.removeValidators(Validators.required);
11736
+ this.form.controls.advanced.setErrors(null);
11737
+ }
11738
+ }
11739
+ }
11740
+ regenerateCron(tabChange) {
11741
+ this._isDirty = true;
11742
+ switch (this.activeScheduleType) {
11743
+ case 'Minutes':
11744
+ this._updateCron(`0/${this.state.minutes.minutes} * 1/1 * ? *`);
11745
+ break;
11746
+ case 'Hourly':
11747
+ this._updateCron(`${this.state.hourly.minutes} 0/${this.state.hourly.hours} 1/1 * ? *`);
11748
+ break;
11749
+ case 'Daily':
11750
+ switch (this.state.daily.subTab) {
11751
+ case 'everyDays':
11752
+ this._updateCron(`${this.state.daily.everyDays.minutes} ${this._hourToCron(this.state.daily.everyDays.hours, this.state.daily.everyDays.hourType)} 1/${this.state.daily.everyDays.days} * ? *`);
11753
+ break;
11754
+ case 'everyWeekDay':
11755
+ this._updateCron(`${this.state.daily.everyWeekDay.minutes} ${this._hourToCron(this.state.daily.everyWeekDay.hours, this.state.daily.everyWeekDay.hourType)} ? * MON-FRI *`);
11756
+ break;
11757
+ default:
11758
+ throw new Error('Invalid cron daily subtab selection');
11759
+ }
11760
+ break;
11761
+ case 'Weekly': {
11762
+ const days = this.selectOptions.days
11763
+ .map((d) => d.value)
11764
+ .reduce((acc, day) => (this.state.weekly[day] ? acc.concat([day]) : acc), [])
11765
+ .join(',');
11766
+ this._updateCron(`${this.state.weekly.minutes} ${this._hourToCron(this.state.weekly.hours, this.state.weekly.hourType)} ? * ${days} *`);
11767
+ break;
11768
+ }
11769
+ case 'Monthly': {
11770
+ switch (this.state.monthly.subTab) {
11771
+ case 'specificDay': {
11772
+ const day = this.state.monthly.runOnWeekday
11773
+ ? `${this.state.monthly.specificDay.day}W`
11774
+ : this.state.monthly.specificDay.day;
11775
+ this._updateCron(`${this.state.monthly.specificDay.minutes} ${this._hourToCron(this.state.monthly.specificDay.hours, this.state.monthly.specificDay.hourType)} ${day} 1/${this.state.monthly.specificDay.months} ? *`);
11776
+ break;
11777
+ }
11778
+ case 'specificWeekDay':
11779
+ this._updateCron(`${this.state.monthly.specificWeekDay.minutes} ${this._hourToCron(this.state.monthly.specificWeekDay.hours, this.state.monthly.specificWeekDay.hourType)} ? ${this.state.monthly.specificWeekDay.startMonth}/${this.state.monthly.specificWeekDay.months} ${this.state.monthly.specificWeekDay.day}${this.state.monthly.specificWeekDay.monthWeek} *`);
11780
+ break;
11781
+ default:
11782
+ throw new Error('Invalid cron monthly subtab selection');
11783
+ }
11784
+ break;
11785
+ }
11786
+ case 'Yearly':
11787
+ switch (this.state.yearly.subTab) {
11788
+ case 'specificMonthDay': {
11789
+ const day = this.state.yearly.runOnWeekday
11790
+ ? `${this.state.yearly.specificMonthDay.day}W`
11791
+ : this.state.yearly.specificMonthDay.day;
11792
+ this._updateCron(`${this.state.yearly.specificMonthDay.minutes} ${this._hourToCron(this.state.yearly.specificMonthDay.hours, this.state.yearly.specificMonthDay.hourType)} ${day} ${this.state.yearly.specificMonthDay.month} ? *`);
11793
+ break;
11794
+ }
11795
+ case 'specificMonthWeek':
11796
+ this._updateCron(`${this.state.yearly.specificMonthWeek.minutes} ${this._hourToCron(this.state.yearly.specificMonthWeek.hours, this.state.yearly.specificMonthWeek.hourType)} ? ${this.state.yearly.specificMonthWeek.month} ${this.state.yearly.specificMonthWeek.day}${this.state.yearly.specificMonthWeek.monthWeek} *`);
11797
+ break;
11798
+ default:
11799
+ throw new Error('Invalid cron yearly subtab selection');
11800
+ }
11801
+ break;
11802
+ case 'Advanced':
11803
+ if (!tabChange)
11804
+ this._updateCron(this.form.value.advanced || '');
11805
+ this.form.controls.advanced.setValue(this.cron);
11806
+ break;
11807
+ default:
11808
+ if (this.showNotSet)
11809
+ this._updateCron('');
11810
+ else
11811
+ throw new Error('Invalid cron type');
11812
+ }
11813
+ }
11814
+ onTimeZoneChanged(value) {
11815
+ if (!this.showTimeZone)
11816
+ return;
11817
+ this.timeZoneChange.emit(value);
11818
+ }
11819
+ onTimeChanged(value, target) {
11820
+ target.hours = this._stringToNum(value.hours);
11821
+ target.minutes = this._stringToNum(value.minutes);
11822
+ this.regenerateCron();
11823
+ }
11824
+ formatTimeValue(value) {
11825
+ return {
11826
+ hours: this._numToString(value.hours),
11827
+ minutes: this._numToString(value.minutes)
11828
+ };
11829
+ }
11830
+ _updateCron(value) {
11831
+ if (this.cron === value)
11832
+ return;
11833
+ this.cron = value;
11834
+ this.cronChange.emit(this.cron);
11835
+ }
11836
+ _isValidCron(cron) {
11837
+ if (typeof cron !== 'string')
11838
+ return false;
11839
+ if (!this.showNotSet) {
11840
+ if (!cron)
11841
+ return false;
11842
+ }
11843
+ else if (cron === '')
11844
+ return true;
11845
+ const parts = cron.split(' ');
11846
+ if (parts.length !== 6) {
11847
+ return false;
11848
+ }
11849
+ return true;
11850
+ }
11851
+ _validateAdvancedExpr(c) {
11852
+ const cron = c.value;
11853
+ if (!cron)
11854
+ return null;
11855
+ const splits = cron?.split(' ') || [];
11856
+ if (splits.length !== 6)
11857
+ return { invalidExpression: 'Invalid expression' };
11858
+ const cronSeven = `0 ${cron}`;
11859
+ return cronSeven.match(/\d+ 0\/\d+ \* 1\/1 \* \? \*/) ||
11860
+ cronSeven.match(/\d+ \d+ 0\/\d+ 1\/1 \* \? \*/) ||
11861
+ cronSeven.match(/\d+ \d+ \d+ 1\/\d+ \* \? \*/) ||
11862
+ cronSeven.match(/\d+ \d+ \d+ \? \* MON-FRI \*/) ||
11863
+ cronSeven.match(/\d+ \d+ \d+ \? \* (MON|TUE|WED|THU|FRI|SAT|SUN)(,(MON|TUE|WED|THU|FRI|SAT|SUN))* \*/) ||
11864
+ cronSeven.match(/\d+ \d+ \d+ (\d+|L|LW|1W) 1\/\d+ \? \*/) ||
11865
+ cronSeven.match(/\d+ \d+ \d+ \? \d+\/\d+ (MON|TUE|WED|THU|FRI|SAT|SUN)((#[1-5])|L) \*/) ||
11866
+ cronSeven.match(/\d+ \d+ \d+ (\d+|L|LW|1W) \d+ \? \*/) ||
11867
+ cronSeven.match(/\d+ \d+ \d+ \? \d+ (MON|TUE|WED|THU|FRI|SAT|SUN)((#[1-5])|L) \*/)
11868
+ ? null
11869
+ : { invalidExpression: 'Invalid expression' };
11870
+ }
11871
+ _getAmPmHour(hour) {
11872
+ return this.use24HourTime ? hour : ((hour + 11) % 12) + 1;
11873
+ }
11874
+ _getHourType(hour) {
11875
+ return this.use24HourTime ? undefined : hour >= 12 ? 'PM' : 'AM';
11876
+ }
11877
+ _hourToCron(hour, hourType) {
11878
+ if (this.use24HourTime) {
11879
+ return hour;
11880
+ }
11881
+ else {
11882
+ return hourType === 'AM'
11883
+ ? hour === 12
11884
+ ? 0
11885
+ : hour
11886
+ : hour === 12
11887
+ ? 12
11888
+ : hour + 12;
11889
+ }
11890
+ }
11891
+ _handleModelChange(cron) {
11892
+ if (!this._isValidCron(cron)) {
11893
+ console.error('Invalid cron value:', cron);
11894
+ this.cron = this.showNotSet ? '' : this._minutesDefault;
11895
+ return;
11896
+ }
11897
+ if (this._isDirty) {
11898
+ this._isDirty = false;
11899
+ return;
11900
+ }
11901
+ else {
11902
+ this._isDirty = false;
11903
+ }
11904
+ if (!cron || cron.length < 1) {
11905
+ this.activeScheduleType = 'Not set';
11906
+ this._cdr.detectChanges();
11907
+ return;
11908
+ }
11909
+ const cronSeven = `0 ${cron}`;
11910
+ const [minutes, hours, dayOfMonth, month, dayOfWeek] = cron.split(' ');
11911
+ if (cronSeven.match(/\d+ 0\/\d+ \* 1\/1 \* \? \*/)) {
11912
+ this.activeScheduleType = 'Minutes';
11913
+ this.state.minutes.minutes = Number(minutes.substring(2));
11914
+ }
11915
+ else if (cronSeven.match(/\d+ \d+ 0\/\d+ 1\/1 \* \? \*/)) {
11916
+ this.activeScheduleType = 'Hourly';
11917
+ this.state.hourly.hours = Number(hours.substring(2));
11918
+ this.state.hourly.minutes = Number(minutes);
11919
+ }
11920
+ else if (cronSeven.match(/\d+ \d+ \d+ 1\/\d+ \* \? \*/)) {
11921
+ this.activeScheduleType = 'Daily';
11922
+ this.state.daily.subTab = 'everyDays';
11923
+ this.state.daily.everyDays.days = Number(dayOfMonth.substring(2));
11924
+ const parsedHours = Number(hours);
11925
+ this.state.daily.everyDays.hours = this._getAmPmHour(parsedHours);
11926
+ this.state.daily.everyDays.hourType = this._getHourType(parsedHours);
11927
+ this.state.daily.everyDays.minutes = Number(minutes);
11928
+ }
11929
+ else if (cronSeven.match(/\d+ \d+ \d+ \? \* MON-FRI \*/)) {
11930
+ this.activeScheduleType = 'Daily';
11931
+ this.state.daily.subTab = 'everyWeekDay';
11932
+ const parsedHours = Number(hours);
11933
+ this.state.daily.everyWeekDay.hours = this._getAmPmHour(parsedHours);
11934
+ this.state.daily.everyWeekDay.hourType = this._getHourType(parsedHours);
11935
+ this.state.daily.everyWeekDay.minutes = Number(minutes);
11936
+ }
11937
+ else if (cronSeven.match(/\d+ \d+ \d+ \? \* (MON|TUE|WED|THU|FRI|SAT|SUN)(,(MON|TUE|WED|THU|FRI|SAT|SUN))* \*/)) {
11938
+ this.activeScheduleType = 'Weekly';
11939
+ this.selectOptions.days
11940
+ .map((d) => d.value)
11941
+ .forEach((weekDay) => (this.state.weekly[weekDay] = false));
11942
+ dayOfWeek
11943
+ .split(',')
11944
+ .forEach((weekDay) => (this.state.weekly[weekDay] = true));
11945
+ const parsedHours = Number(hours);
11946
+ this.state.weekly.hours = this._getAmPmHour(parsedHours);
11947
+ this.state.weekly.hourType = this._getHourType(parsedHours);
11948
+ this.state.weekly.minutes = Number(minutes);
11949
+ }
11950
+ else if (cronSeven.match(/\d+ \d+ \d+ (\d+|L|LW|1W) 1\/\d+ \? \*/)) {
11951
+ this.activeScheduleType = 'Monthly';
11952
+ this.state.monthly.subTab = 'specificDay';
11953
+ if (dayOfMonth.indexOf('W') !== -1) {
11954
+ this.state.monthly.specificDay.day = dayOfMonth.charAt(0);
11955
+ this.state.monthly.runOnWeekday = true;
11956
+ }
11957
+ else {
11958
+ this.state.monthly.specificDay.day = dayOfMonth;
11959
+ }
11960
+ this.state.monthly.specificDay.months = Number(month.substring(2));
11961
+ const parsedHours = Number(hours);
11962
+ this.state.monthly.specificDay.hours = this._getAmPmHour(parsedHours);
11963
+ this.state.monthly.specificDay.hourType = this._getHourType(parsedHours);
11964
+ this.state.monthly.specificDay.minutes = Number(minutes);
11965
+ }
11966
+ else if (cronSeven.match(/\d+ \d+ \d+ \? \d+\/\d+ (MON|TUE|WED|THU|FRI|SAT|SUN)((#[1-5])|L) \*/)) {
11967
+ const day = dayOfWeek.substring(0, 3);
11968
+ const monthWeek = dayOfWeek.substring(3);
11969
+ this.activeScheduleType = 'Monthly';
11970
+ this.state.monthly.subTab = 'specificWeekDay';
11971
+ this.state.monthly.specificWeekDay.monthWeek = monthWeek;
11972
+ this.state.monthly.specificWeekDay.day = day;
11973
+ if (month.indexOf('/') !== -1) {
11974
+ const [startMonth, months] = month.split('/').map(Number);
11975
+ this.state.monthly.specificWeekDay.months = months;
11976
+ this.state.monthly.specificWeekDay.startMonth = startMonth;
11977
+ }
11978
+ const parsedHours = Number(hours);
11979
+ this.state.monthly.specificWeekDay.hours = this._getAmPmHour(parsedHours);
11980
+ this.state.monthly.specificWeekDay.hourType =
11981
+ this._getHourType(parsedHours);
11982
+ this.state.monthly.specificWeekDay.minutes = Number(minutes);
11983
+ }
11984
+ else if (cronSeven.match(/\d+ \d+ \d+ (\d+|L|LW|1W) \d+ \? \*/)) {
11985
+ this.activeScheduleType = 'Yearly';
11986
+ this.state.yearly.subTab = 'specificMonthDay';
11987
+ this.state.yearly.specificMonthDay.month = Number(month);
11988
+ if (dayOfMonth.indexOf('W') !== -1) {
11989
+ this.state.yearly.specificMonthDay.day = dayOfMonth.charAt(0);
11990
+ this.state.yearly.runOnWeekday = true;
11991
+ }
11992
+ else {
11993
+ this.state.yearly.specificMonthDay.day = dayOfMonth;
11994
+ }
11995
+ const parsedHours = Number(hours);
11996
+ this.state.yearly.specificMonthDay.hours = this._getAmPmHour(parsedHours);
11997
+ this.state.yearly.specificMonthDay.hourType =
11998
+ this._getHourType(parsedHours);
11999
+ this.state.yearly.specificMonthDay.minutes = Number(minutes);
12000
+ }
12001
+ else if (cronSeven.match(/\d+ \d+ \d+ \? \d+ (MON|TUE|WED|THU|FRI|SAT|SUN)((#[1-5])|L) \*/)) {
12002
+ const day = dayOfWeek.substring(0, 3);
12003
+ const monthWeek = dayOfWeek.substring(3);
12004
+ this.activeScheduleType = 'Yearly';
12005
+ this.state.yearly.subTab = 'specificMonthWeek';
12006
+ this.state.yearly.specificMonthWeek.monthWeek = monthWeek;
12007
+ this.state.yearly.specificMonthWeek.day = day;
12008
+ this.state.yearly.specificMonthWeek.month = Number(month);
12009
+ const parsedHours = Number(hours);
12010
+ this.state.yearly.specificMonthWeek.hours =
12011
+ this._getAmPmHour(parsedHours);
12012
+ this.state.yearly.specificMonthWeek.hourType =
12013
+ this._getHourType(parsedHours);
12014
+ this.state.yearly.specificMonthWeek.minutes = Number(minutes);
12015
+ }
12016
+ else {
12017
+ this.activeScheduleType = 'Advanced';
12018
+ this.form.controls.advanced.setValue(cron);
12019
+ }
12020
+ this._cdr.detectChanges();
12021
+ }
12022
+ _getDefaultState() {
12023
+ const [defaultHours, defaultMinutes] = this.defaultTime
12024
+ .split(':')
12025
+ .map(Number);
12026
+ return {
12027
+ minutes: {
12028
+ minutes: 1
12029
+ },
12030
+ hourly: {
12031
+ hours: 1,
12032
+ minutes: 0
12033
+ },
12034
+ daily: {
12035
+ subTab: 'everyDays',
12036
+ everyDays: {
12037
+ days: 1,
12038
+ hours: this._getAmPmHour(defaultHours),
12039
+ minutes: defaultMinutes,
12040
+ hourType: this._getHourType(defaultHours)
12041
+ },
12042
+ everyWeekDay: {
12043
+ hours: this._getAmPmHour(defaultHours),
12044
+ minutes: defaultMinutes,
12045
+ hourType: this._getHourType(defaultHours)
12046
+ }
12047
+ },
12048
+ weekly: {
12049
+ MON: true,
12050
+ TUE: false,
12051
+ WED: false,
12052
+ THU: false,
12053
+ FRI: false,
12054
+ SAT: false,
12055
+ SUN: false,
12056
+ hours: this._getAmPmHour(defaultHours),
12057
+ minutes: defaultMinutes,
12058
+ hourType: this._getHourType(defaultHours)
12059
+ },
12060
+ monthly: {
12061
+ subTab: 'specificDay',
12062
+ runOnWeekday: false,
12063
+ specificDay: {
12064
+ day: '1',
12065
+ months: 1,
12066
+ hours: this._getAmPmHour(defaultHours),
12067
+ minutes: defaultMinutes,
12068
+ hourType: this._getHourType(defaultHours)
12069
+ },
12070
+ specificWeekDay: {
12071
+ monthWeek: '#1',
12072
+ day: 'MON',
12073
+ startMonth: 1,
12074
+ months: 1,
12075
+ hours: this._getAmPmHour(defaultHours),
12076
+ minutes: defaultMinutes,
12077
+ hourType: this._getHourType(defaultHours)
12078
+ }
12079
+ },
12080
+ yearly: {
12081
+ subTab: 'specificMonthDay',
12082
+ runOnWeekday: false,
12083
+ specificMonthDay: {
12084
+ month: 1,
12085
+ day: '1',
12086
+ hours: this._getAmPmHour(defaultHours),
12087
+ minutes: defaultMinutes,
12088
+ hourType: this._getHourType(defaultHours)
12089
+ },
12090
+ specificMonthWeek: {
12091
+ monthWeek: '#1',
12092
+ day: 'MON',
12093
+ month: 1,
12094
+ hours: this._getAmPmHour(defaultHours),
12095
+ minutes: defaultMinutes,
12096
+ hourType: this._getHourType(defaultHours)
12097
+ }
12098
+ },
12099
+ advanced: {
12100
+ expression: this.cron
12101
+ }
12102
+ };
12103
+ }
12104
+ _getRange(startFrom, until) {
12105
+ return Array.from({ length: until + 1 - startFrom }, (_, k) => k + startFrom);
12106
+ }
12107
+ _getSelectOptions() {
12108
+ return {
12109
+ monthsNumeric: this._getRange(1, 12).map((month) => ({
12110
+ label: month,
12111
+ value: month
12112
+ })),
12113
+ months: this._getRange(1, 12).map((month) => ({
12114
+ label: Months[month],
12115
+ value: month
12116
+ })),
12117
+ monthWeeks: Object.entries(MonthWeeks).map(([key, value]) => ({
12118
+ label: value,
12119
+ value: key
12120
+ })),
12121
+ days: Object.entries(Days).map(([key, value]) => ({
12122
+ label: value,
12123
+ value: key
12124
+ })),
12125
+ minutes: this._getRange(1, 59).map((min) => ({
12126
+ label: min,
12127
+ value: min
12128
+ })),
12129
+ fullMinutes: this._getRange(0, 59).map((min) => ({
12130
+ label: this._numToString(min),
12131
+ value: min
12132
+ })),
12133
+ hours: this._getRange(1, 23).map((hour) => ({
12134
+ label: hour,
12135
+ value: hour
12136
+ })),
12137
+ monthDays: this._getRange(1, 31).map((day) => ({
12138
+ label: day,
12139
+ value: day
12140
+ })),
12141
+ monthDaysWithLasts: [...this._getRange(1, 31).map(String), 'L'].map((mdl) => {
12142
+ return {
12143
+ label: this._getMonthDayLabel(mdl),
12144
+ value: mdl
12145
+ };
12146
+ })
12147
+ };
12148
+ }
12149
+ _getMonthDayLabel(month) {
12150
+ if (month === 'L') {
12151
+ return 'Last Day';
12152
+ }
12153
+ else if (month === 'LW') {
12154
+ return 'Last Weekday';
12155
+ }
12156
+ else if (month === '1W') {
12157
+ return 'First Weekday';
12158
+ }
12159
+ else {
12160
+ let suffix = '';
12161
+ if (month.length > 1) {
12162
+ const secondToLastDigit = month.charAt(month.length - 2);
12163
+ if (secondToLastDigit === '1') {
12164
+ suffix = 'th';
12165
+ }
12166
+ }
12167
+ if (!suffix) {
12168
+ const lastDigit = month.charAt(month.length - 1);
12169
+ switch (lastDigit) {
12170
+ case '1':
12171
+ suffix = 'st';
12172
+ break;
12173
+ case '2':
12174
+ suffix = 'nd';
12175
+ break;
12176
+ case '3':
12177
+ suffix = 'rd';
12178
+ break;
12179
+ default:
12180
+ suffix = 'th';
12181
+ break;
12182
+ }
12183
+ }
12184
+ return `${month}${suffix} day`;
12185
+ }
12186
+ }
12187
+ _numToString(value) {
12188
+ return value >= 0 && value <= 9 ? '0' + value : value.toString();
12189
+ }
12190
+ _stringToNum(value) {
12191
+ const res = Number(value);
12192
+ return isNaN(res) ? 0 : res;
12193
+ }
12194
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CpsSchedulerComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
12195
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: CpsSchedulerComponent, isStandalone: true, selector: "cps-scheduler", inputs: { label: "label", cron: "cron", timeZone: "timeZone", showNotSet: "showNotSet", showAdvanced: "showAdvanced", showTimeZone: "showTimeZone", defaultTime: "defaultTime", use24HourTime: "use24HourTime", disabled: "disabled", infoTooltip: "infoTooltip" }, outputs: { cronChange: "cronChange", timeZoneChange: "timeZoneChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"cps-scheduler-selector\">\n <cps-button-toggle\n [options]=\"scheduleTypes\"\n [disabled]=\"disabled\"\n [label]=\"label\"\n [infoTooltip]=\"infoTooltip\"\n [(ngModel)]=\"activeScheduleType\"\n (ngModelChange)=\"setActiveScheduleType($event)\">\n </cps-button-toggle>\n</div>\n\n<div\n [ngSwitch]=\"activeScheduleType\"\n class=\"cps-scheduler-container\"\n [ngClass]=\"{ 'cps-scheduler-container-disabled': disabled }\">\n <div *ngSwitchCase=\"'Not set'\" class=\"cps-scheduler-tab-pane\"></div>\n\n <div *ngSwitchCase=\"'Minutes'\" class=\"cps-scheduler-tab-pane\">\n <div class=\"cps-scheduler-tab-pane-row\">\n Every\n <cps-select\n width=\"70px\"\n [disabled]=\"disabled\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.minutes.minutes\"\n [options]=\"selectOptions.minutes\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n minute(s)\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Hourly'\" class=\"cps-scheduler-tab-pane\">\n <div class=\"cps-scheduler-tab-pane-row\">\n Every\n <cps-select\n width=\"70px\"\n [disabled]=\"disabled\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.hourly.hours\"\n [options]=\"selectOptions.hours\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n hour(s) on minute\n <cps-select\n width=\"70px\"\n [disabled]=\"disabled\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.hourly.minutes\"\n [options]=\"selectOptions.fullMinutes\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Daily'\" class=\"cps-scheduler-tab-pane\">\n <cps-radio-group\n [(ngModel)]=\"state.daily.subTab\"\n (valueChanged)=\"regenerateCron()\"\n [vertical]=\"true\">\n <cps-radio [option]=\"{ value: 'everyDays', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.daily.subTab !== 'everyDays'\n }\">\n Every\n <cps-select\n width=\"70px\"\n [disabled]=\"disabled || state.daily.subTab !== 'everyDays'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.daily.everyDays.days\"\n [options]=\"selectOptions.monthDays\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n day(s) at\n <cps-timepicker\n [disabled]=\"disabled || state.daily.subTab !== 'everyDays'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.daily.everyDays)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"onTimeChanged($event, state.daily.everyDays)\">\n </cps-timepicker>\n </div>\n </cps-radio>\n <cps-radio [option]=\"{ value: 'everyWeekDay', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.daily.subTab !== 'everyWeekDay'\n }\">\n Every working day at\n <cps-timepicker\n [disabled]=\"disabled || state.daily.subTab !== 'everyWeekDay'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.daily.everyWeekDay)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"onTimeChanged($event, state.daily.everyWeekDay)\">\n </cps-timepicker>\n </div>\n </cps-radio>\n </cps-radio-group>\n </div>\n\n <div *ngSwitchCase=\"'Weekly'\" class=\"cps-scheduler-tab-pane\">\n <div class=\"cps-scheduler-days-checkbox-group\">\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Monday\"\n [(ngModel)]=\"state.weekly.MON\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Tuesday\"\n [(ngModel)]=\"state.weekly.TUE\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Wednesday\"\n [(ngModel)]=\"state.weekly.WED\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Thursday\"\n [(ngModel)]=\"state.weekly.THU\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Friday\"\n [(ngModel)]=\"state.weekly.FRI\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Saturday\"\n [(ngModel)]=\"state.weekly.SAT\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Sunday\"\n [(ngModel)]=\"state.weekly.SUN\">\n </cps-checkbox>\n </div>\n <div class=\"cps-scheduler-tab-pane-row\">\n at\n <cps-timepicker\n [disabled]=\"disabled\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.weekly)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"onTimeChanged($event, state.weekly)\">\n </cps-timepicker>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Monthly'\" class=\"cps-scheduler-tab-pane\">\n <cps-radio-group\n [(ngModel)]=\"state.monthly.subTab\"\n (valueChanged)=\"regenerateCron()\"\n [vertical]=\"true\">\n <cps-radio [option]=\"{ value: 'specificDay', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.monthly.subTab !== 'specificDay'\n }\">\n On the\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificDay.day\"\n [options]=\"selectOptions.monthDaysWithLasts\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n of every\n <cps-select\n width=\"70px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificDay.months\"\n [options]=\"selectOptions.monthsNumeric\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n month(s) at\n <cps-timepicker\n [disabled]=\"disabled || state.monthly.subTab !== 'specificDay'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.monthly.specificDay)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"onTimeChanged($event, state.monthly.specificDay)\">\n </cps-timepicker>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificDay'\"\n label=\"During the nearest weekday\"\n [(ngModel)]=\"state.monthly.runOnWeekday\"\n class=\"cps-scheduler-nearest-weekday-checkbox\">\n </cps-checkbox>\n </div>\n </cps-radio>\n\n <cps-radio [option]=\"{ value: 'specificWeekDay', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.monthly.subTab !== 'specificWeekDay'\n }\">\n On the\n <cps-select\n width=\"106px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificWeekDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificWeekDay.monthWeek\"\n [options]=\"selectOptions.monthWeeks\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n <cps-select\n width=\"130px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificWeekDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificWeekDay.day\"\n [options]=\"selectOptions.days\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n of every\n <cps-select\n width=\"90px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificWeekDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificWeekDay.months\"\n [options]=\"selectOptions.monthsNumeric\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n month(s) starting in\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificWeekDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificWeekDay.startMonth\"\n [options]=\"selectOptions.months\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n at\n <cps-timepicker\n [disabled]=\"disabled || state.monthly.subTab !== 'specificWeekDay'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.monthly.specificWeekDay)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"\n onTimeChanged($event, state.monthly.specificWeekDay)\n \">\n </cps-timepicker>\n </div>\n </cps-radio>\n </cps-radio-group>\n </div>\n\n <div *ngSwitchCase=\"'Yearly'\" class=\"cps-scheduler-tab-pane\">\n <cps-radio-group\n [(ngModel)]=\"state.yearly.subTab\"\n (valueChanged)=\"regenerateCron()\"\n [vertical]=\"true\">\n <cps-radio [option]=\"{ value: 'specificMonthDay', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.yearly.subTab !== 'specificMonthDay'\n }\">\n Every\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.yearly.specificMonthDay.month\"\n [options]=\"selectOptions.months\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n on the\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.yearly.specificMonthDay.day\"\n [options]=\"selectOptions.monthDaysWithLasts\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n at\n <cps-timepicker\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthDay'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.yearly.specificMonthDay)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"\n onTimeChanged($event, state.yearly.specificMonthDay)\n \">\n </cps-timepicker>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthDay'\"\n label=\"During the nearest weekday\"\n [(ngModel)]=\"state.yearly.runOnWeekday\"\n class=\"cps-scheduler-nearest-weekday-checkbox\">\n </cps-checkbox>\n </div>\n </cps-radio>\n\n <cps-radio [option]=\"{ value: 'specificMonthWeek', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.yearly.subTab !== 'specificMonthWeek'\n }\">\n On the\n <cps-select\n width=\"106px\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthWeek'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.yearly.specificMonthWeek.monthWeek\"\n [options]=\"selectOptions.monthWeeks\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthWeek'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.yearly.specificMonthWeek.day\"\n [options]=\"selectOptions.days\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n of\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthWeek'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.yearly.specificMonthWeek.month\"\n [options]=\"selectOptions.months\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n at\n <cps-timepicker\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthWeek'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.yearly.specificMonthWeek)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"\n onTimeChanged($event, state.yearly.specificMonthWeek)\n \">\n </cps-timepicker>\n </div>\n </cps-radio>\n </cps-radio-group>\n </div>\n\n <div *ngSwitchCase=\"'Advanced'\">\n <form [formGroup]=\"form\">\n <cps-input\n label=\"\"\n [disabled]=\"disabled\"\n width=\"500px\"\n placeholder=\"Please enter\"\n formControlName=\"advanced\"\n (valueChanged)=\"regenerateCron()\">\n </cps-input>\n </form>\n </div>\n <div class=\"cps-scheduler-time-zone\" *ngIf=\"cron && showTimeZone\">\n <cps-autocomplete\n label=\"Time zone\"\n [(ngModel)]=\"timeZone\"\n (valueChanged)=\"onTimeZoneChanged($event)\"\n [returnObject]=\"false\"\n width=\"300\"\n [options]=\"timeZoneOptions\"></cps-autocomplete>\n </div>\n</div>\n", styles: [":host .cps-scheduler-selector{margin-bottom:24px}:host .cps-scheduler-container{margin-top:10px;margin-left:16px}:host .cps-scheduler-container .cps-scheduler-select-control{margin-left:8px;margin-right:8px}:host .cps-scheduler-container .cps-scheduler-days-checkbox-group{max-width:700px;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-template-rows:1fr 1fr;grid-gap:20px;margin-bottom:16px}:host .cps-scheduler-container .cps-scheduler-tab-pane{margin-bottom:28px}:host .cps-scheduler-container .cps-scheduler-tab-pane cps-radio-group ::ng-deep .cps-radio-group-content{margin-left:0!important}:host .cps-scheduler-container .cps-scheduler-tab-pane .cps-scheduler-tab-pane-row{display:flex;align-items:center}:host .cps-scheduler-container .cps-scheduler-tab-pane .cps-scheduler-tab-pane-row-disabled{color:var(--cps-color-text-light)}:host .cps-scheduler-container .cps-scheduler-tab-pane .cps-scheduler-nearest-weekday-checkbox{margin-left:16px}:host .cps-scheduler-container .cps-scheduler-tab-pane cps-timepicker{margin-left:8px}:host .cps-scheduler-container-disabled{color:var(--cps-color-text-light)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: CpsButtonToggleComponent, selector: "cps-button-toggle", inputs: ["label", "options", "multiple", "disabled", "mandatory", "equalWidths", "optionTooltipPosition", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "value"], outputs: ["valueChanged"] }, { kind: "component", type: CpsSelectComponent, selector: "cps-select", inputs: ["label", "placeholder", "hint", "returnObject", "multiple", "disabled", "width", "selectAll", "chips", "closableChips", "clearable", "openOnClear", "options", "keepInitialOrder", "optionLabel", "optionValue", "optionInfo", "hideDetails", "persistentClear", "prefixIcon", "prefixIconSize", "loading", "virtualScroll", "numToleratedItems", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "optionsClass", "appearance", "value"], outputs: ["valueChanged"] }, { kind: "component", type: CpsRadioGroupComponent, selector: "cps-radio-group", inputs: ["options", "groupLabel", "vertical", "disabled", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "value"], outputs: ["valueChanged"] }, { kind: "component", type: CpsRadioComponent, selector: "cps-radio", inputs: ["option"] }, { kind: "component", type: CpsCheckboxComponent, selector: "cps-checkbox", inputs: ["label", "disabled", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "icon", "iconColor", "value"], outputs: ["valueChanged"] }, { kind: "component", type: CpsInputComponent, selector: "cps-input", inputs: ["label", "hint", "placeholder", "disabled", "readonly", "width", "type", "loading", "clearable", "prefixIcon", "prefixIconClickable", "prefixIconSize", "prefixText", "hideDetails", "persistentClear", "error", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "appearance", "valueToDisplay", "value"], outputs: ["valueChanged", "focused", "prefixIconClicked", "blurred", "cleared", "enterClicked"] }, { kind: "component", type: CpsTimepickerComponent, selector: "cps-timepicker", inputs: ["label", "disabled", "use24HourTime", "withSeconds", "hint", "hideDetails", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "mandatoryValue", "value"], outputs: ["valueChanged"] }, { kind: "component", type: CpsAutocompleteComponent, selector: "cps-autocomplete", inputs: ["label", "placeholder", "hint", "returnObject", "multiple", "disabled", "width", "selectAll", "showChevron", "withOptionsAliases", "useOptionsAliasesWhenNoMatch", "optionAlias", "chips", "closableChips", "clearable", "openOnClear", "options", "keepInitialOrder", "optionLabel", "optionValue", "optionInfo", "hideDetails", "persistentClear", "prefixIcon", "prefixIconSize", "loading", "emptyMessage", "showEmptyMessage", "virtualScroll", "numToleratedItems", "externalError", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "appearance", "emptyOptionIndex", "value"], outputs: ["valueChanged", "blurred"] }] }); }
12196
+ }
12197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CpsSchedulerComponent, decorators: [{
12198
+ type: Component,
12199
+ args: [{ selector: 'cps-scheduler', standalone: true, imports: [
12200
+ CommonModule,
12201
+ FormsModule,
12202
+ ReactiveFormsModule,
12203
+ CpsButtonToggleComponent,
12204
+ CpsSelectComponent,
12205
+ CpsRadioGroupComponent,
12206
+ CpsRadioComponent,
12207
+ CpsCheckboxComponent,
12208
+ CpsInputComponent,
12209
+ CpsTimepickerComponent,
12210
+ CpsAutocompleteComponent
12211
+ ], template: "<div class=\"cps-scheduler-selector\">\n <cps-button-toggle\n [options]=\"scheduleTypes\"\n [disabled]=\"disabled\"\n [label]=\"label\"\n [infoTooltip]=\"infoTooltip\"\n [(ngModel)]=\"activeScheduleType\"\n (ngModelChange)=\"setActiveScheduleType($event)\">\n </cps-button-toggle>\n</div>\n\n<div\n [ngSwitch]=\"activeScheduleType\"\n class=\"cps-scheduler-container\"\n [ngClass]=\"{ 'cps-scheduler-container-disabled': disabled }\">\n <div *ngSwitchCase=\"'Not set'\" class=\"cps-scheduler-tab-pane\"></div>\n\n <div *ngSwitchCase=\"'Minutes'\" class=\"cps-scheduler-tab-pane\">\n <div class=\"cps-scheduler-tab-pane-row\">\n Every\n <cps-select\n width=\"70px\"\n [disabled]=\"disabled\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.minutes.minutes\"\n [options]=\"selectOptions.minutes\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n minute(s)\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Hourly'\" class=\"cps-scheduler-tab-pane\">\n <div class=\"cps-scheduler-tab-pane-row\">\n Every\n <cps-select\n width=\"70px\"\n [disabled]=\"disabled\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.hourly.hours\"\n [options]=\"selectOptions.hours\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n hour(s) on minute\n <cps-select\n width=\"70px\"\n [disabled]=\"disabled\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.hourly.minutes\"\n [options]=\"selectOptions.fullMinutes\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Daily'\" class=\"cps-scheduler-tab-pane\">\n <cps-radio-group\n [(ngModel)]=\"state.daily.subTab\"\n (valueChanged)=\"regenerateCron()\"\n [vertical]=\"true\">\n <cps-radio [option]=\"{ value: 'everyDays', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.daily.subTab !== 'everyDays'\n }\">\n Every\n <cps-select\n width=\"70px\"\n [disabled]=\"disabled || state.daily.subTab !== 'everyDays'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.daily.everyDays.days\"\n [options]=\"selectOptions.monthDays\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n day(s) at\n <cps-timepicker\n [disabled]=\"disabled || state.daily.subTab !== 'everyDays'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.daily.everyDays)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"onTimeChanged($event, state.daily.everyDays)\">\n </cps-timepicker>\n </div>\n </cps-radio>\n <cps-radio [option]=\"{ value: 'everyWeekDay', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.daily.subTab !== 'everyWeekDay'\n }\">\n Every working day at\n <cps-timepicker\n [disabled]=\"disabled || state.daily.subTab !== 'everyWeekDay'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.daily.everyWeekDay)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"onTimeChanged($event, state.daily.everyWeekDay)\">\n </cps-timepicker>\n </div>\n </cps-radio>\n </cps-radio-group>\n </div>\n\n <div *ngSwitchCase=\"'Weekly'\" class=\"cps-scheduler-tab-pane\">\n <div class=\"cps-scheduler-days-checkbox-group\">\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Monday\"\n [(ngModel)]=\"state.weekly.MON\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Tuesday\"\n [(ngModel)]=\"state.weekly.TUE\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Wednesday\"\n [(ngModel)]=\"state.weekly.WED\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Thursday\"\n [(ngModel)]=\"state.weekly.THU\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Friday\"\n [(ngModel)]=\"state.weekly.FRI\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Saturday\"\n [(ngModel)]=\"state.weekly.SAT\">\n </cps-checkbox>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled\"\n label=\"Sunday\"\n [(ngModel)]=\"state.weekly.SUN\">\n </cps-checkbox>\n </div>\n <div class=\"cps-scheduler-tab-pane-row\">\n at\n <cps-timepicker\n [disabled]=\"disabled\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.weekly)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"onTimeChanged($event, state.weekly)\">\n </cps-timepicker>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Monthly'\" class=\"cps-scheduler-tab-pane\">\n <cps-radio-group\n [(ngModel)]=\"state.monthly.subTab\"\n (valueChanged)=\"regenerateCron()\"\n [vertical]=\"true\">\n <cps-radio [option]=\"{ value: 'specificDay', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.monthly.subTab !== 'specificDay'\n }\">\n On the\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificDay.day\"\n [options]=\"selectOptions.monthDaysWithLasts\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n of every\n <cps-select\n width=\"70px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificDay.months\"\n [options]=\"selectOptions.monthsNumeric\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n month(s) at\n <cps-timepicker\n [disabled]=\"disabled || state.monthly.subTab !== 'specificDay'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.monthly.specificDay)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"onTimeChanged($event, state.monthly.specificDay)\">\n </cps-timepicker>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificDay'\"\n label=\"During the nearest weekday\"\n [(ngModel)]=\"state.monthly.runOnWeekday\"\n class=\"cps-scheduler-nearest-weekday-checkbox\">\n </cps-checkbox>\n </div>\n </cps-radio>\n\n <cps-radio [option]=\"{ value: 'specificWeekDay', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.monthly.subTab !== 'specificWeekDay'\n }\">\n On the\n <cps-select\n width=\"106px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificWeekDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificWeekDay.monthWeek\"\n [options]=\"selectOptions.monthWeeks\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n <cps-select\n width=\"130px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificWeekDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificWeekDay.day\"\n [options]=\"selectOptions.days\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n of every\n <cps-select\n width=\"90px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificWeekDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificWeekDay.months\"\n [options]=\"selectOptions.monthsNumeric\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n month(s) starting in\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.monthly.subTab !== 'specificWeekDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.monthly.specificWeekDay.startMonth\"\n [options]=\"selectOptions.months\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n at\n <cps-timepicker\n [disabled]=\"disabled || state.monthly.subTab !== 'specificWeekDay'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.monthly.specificWeekDay)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"\n onTimeChanged($event, state.monthly.specificWeekDay)\n \">\n </cps-timepicker>\n </div>\n </cps-radio>\n </cps-radio-group>\n </div>\n\n <div *ngSwitchCase=\"'Yearly'\" class=\"cps-scheduler-tab-pane\">\n <cps-radio-group\n [(ngModel)]=\"state.yearly.subTab\"\n (valueChanged)=\"regenerateCron()\"\n [vertical]=\"true\">\n <cps-radio [option]=\"{ value: 'specificMonthDay', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.yearly.subTab !== 'specificMonthDay'\n }\">\n Every\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.yearly.specificMonthDay.month\"\n [options]=\"selectOptions.months\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n on the\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthDay'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.yearly.specificMonthDay.day\"\n [options]=\"selectOptions.monthDaysWithLasts\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n at\n <cps-timepicker\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthDay'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.yearly.specificMonthDay)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"\n onTimeChanged($event, state.yearly.specificMonthDay)\n \">\n </cps-timepicker>\n <cps-checkbox\n (valueChanged)=\"regenerateCron()\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthDay'\"\n label=\"During the nearest weekday\"\n [(ngModel)]=\"state.yearly.runOnWeekday\"\n class=\"cps-scheduler-nearest-weekday-checkbox\">\n </cps-checkbox>\n </div>\n </cps-radio>\n\n <cps-radio [option]=\"{ value: 'specificMonthWeek', disabled: disabled }\">\n <div\n class=\"cps-scheduler-tab-pane-row\"\n [ngClass]=\"{\n 'cps-scheduler-tab-pane-row-disabled':\n state.yearly.subTab !== 'specificMonthWeek'\n }\">\n On the\n <cps-select\n width=\"106px\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthWeek'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.yearly.specificMonthWeek.monthWeek\"\n [options]=\"selectOptions.monthWeeks\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthWeek'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.yearly.specificMonthWeek.day\"\n [options]=\"selectOptions.days\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n of\n <cps-select\n width=\"120px\"\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthWeek'\"\n [returnObject]=\"false\"\n [hideDetails]=\"true\"\n (valueChanged)=\"regenerateCron()\"\n [(ngModel)]=\"state.yearly.specificMonthWeek.month\"\n [options]=\"selectOptions.months\"\n class=\"cps-scheduler-select-control\">\n </cps-select>\n at\n <cps-timepicker\n [disabled]=\"disabled || state.yearly.subTab !== 'specificMonthWeek'\"\n [use24HourTime]=\"use24HourTime\"\n [mandatoryValue]=\"true\"\n [value]=\"formatTimeValue(state.yearly.specificMonthWeek)\"\n [hideDetails]=\"true\"\n (valueChanged)=\"\n onTimeChanged($event, state.yearly.specificMonthWeek)\n \">\n </cps-timepicker>\n </div>\n </cps-radio>\n </cps-radio-group>\n </div>\n\n <div *ngSwitchCase=\"'Advanced'\">\n <form [formGroup]=\"form\">\n <cps-input\n label=\"\"\n [disabled]=\"disabled\"\n width=\"500px\"\n placeholder=\"Please enter\"\n formControlName=\"advanced\"\n (valueChanged)=\"regenerateCron()\">\n </cps-input>\n </form>\n </div>\n <div class=\"cps-scheduler-time-zone\" *ngIf=\"cron && showTimeZone\">\n <cps-autocomplete\n label=\"Time zone\"\n [(ngModel)]=\"timeZone\"\n (valueChanged)=\"onTimeZoneChanged($event)\"\n [returnObject]=\"false\"\n width=\"300\"\n [options]=\"timeZoneOptions\"></cps-autocomplete>\n </div>\n</div>\n", styles: [":host .cps-scheduler-selector{margin-bottom:24px}:host .cps-scheduler-container{margin-top:10px;margin-left:16px}:host .cps-scheduler-container .cps-scheduler-select-control{margin-left:8px;margin-right:8px}:host .cps-scheduler-container .cps-scheduler-days-checkbox-group{max-width:700px;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-template-rows:1fr 1fr;grid-gap:20px;margin-bottom:16px}:host .cps-scheduler-container .cps-scheduler-tab-pane{margin-bottom:28px}:host .cps-scheduler-container .cps-scheduler-tab-pane cps-radio-group ::ng-deep .cps-radio-group-content{margin-left:0!important}:host .cps-scheduler-container .cps-scheduler-tab-pane .cps-scheduler-tab-pane-row{display:flex;align-items:center}:host .cps-scheduler-container .cps-scheduler-tab-pane .cps-scheduler-tab-pane-row-disabled{color:var(--cps-color-text-light)}:host .cps-scheduler-container .cps-scheduler-tab-pane .cps-scheduler-nearest-weekday-checkbox{margin-left:16px}:host .cps-scheduler-container .cps-scheduler-tab-pane cps-timepicker{margin-left:8px}:host .cps-scheduler-container-disabled{color:var(--cps-color-text-light)}\n"] }]
12212
+ }], ctorParameters: () => [{ type: i1.UntypedFormBuilder }, { type: i0.ChangeDetectorRef }], propDecorators: { label: [{
12213
+ type: Input
12214
+ }], cron: [{
12215
+ type: Input
12216
+ }], timeZone: [{
12217
+ type: Input
12218
+ }], showNotSet: [{
12219
+ type: Input
12220
+ }], showAdvanced: [{
12221
+ type: Input
12222
+ }], showTimeZone: [{
12223
+ type: Input
12224
+ }], defaultTime: [{
12225
+ type: Input
12226
+ }], use24HourTime: [{
12227
+ type: Input
12228
+ }], disabled: [{
12229
+ type: Input
12230
+ }], infoTooltip: [{
12231
+ type: Input
12232
+ }], cronChange: [{
12233
+ type: Output
12234
+ }], timeZoneChange: [{
12235
+ type: Output
12236
+ }] } });
12237
+
10952
12238
  class CpsDialogRef {
10953
12239
  constructor() {
10954
12240
  this._onOpen = new Subject();
@@ -11999,5 +13285,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
11999
13285
  * Generated bundle index. Do not edit.
12000
13286
  */
12001
13287
 
12002
- export { CPS_RADIO_GROUP, CpsAutocompleteComponent, CpsButtonComponent, CpsButtonToggleComponent, CpsCheckboxComponent, CpsChipComponent, CpsColumnFilterMatchMode, CpsDatepickerComponent, CpsDialogConfig, CpsDialogRef, CpsDialogService, CpsExpansionPanelComponent, CpsFileUploadComponent, CpsIconComponent, CpsInfoCircleComponent, CpsInputComponent, CpsLoaderComponent, CpsMenuComponent, CpsNotificationAppearance, CpsNotificationPosition, CpsNotificationService, CpsPaginatePipe, CpsPaginatorComponent, CpsProgressCircularComponent, CpsProgressLinearComponent, CpsRadioComponent, CpsRadioGroupComponent, CpsSelectComponent, CpsSidebarMenuComponent, CpsTabComponent, CpsTabGroupComponent, CpsTableColumnFilterDirective, CpsTableColumnSortableDirective, CpsTableComponent, CpsTableHeaderSelectableDirective, CpsTableRowSelectableDirective, CpsTagComponent, CpsTextareaComponent, CpsTimepickerComponent, CpsTooltipDirective, CpsTreeAutocompleteComponent, CpsTreeSelectComponent, CpsTreeTableColumnFilterDirective, CpsTreeTableColumnSortableDirective, CpsTreeTableComponent, CpsTreeTableHeaderSelectableDirective, CpsTreeTableRowSelectableDirective, CpsTreetableRowTogglerDirective, getCSSColor, getCpsColors, getTextColor, iconNames, tableFactory, treeTableFactory };
13288
+ export { CPS_RADIO_GROUP, CpsAutocompleteComponent, CpsButtonComponent, CpsButtonToggleComponent, CpsCheckboxComponent, CpsChipComponent, CpsColumnFilterMatchMode, CpsDatepickerComponent, CpsDialogConfig, CpsDialogRef, CpsDialogService, CpsExpansionPanelComponent, CpsFileUploadComponent, CpsIconComponent, CpsInfoCircleComponent, CpsInputComponent, CpsLoaderComponent, CpsMenuComponent, CpsNotificationAppearance, CpsNotificationPosition, CpsNotificationService, CpsPaginatePipe, CpsPaginatorComponent, CpsProgressCircularComponent, CpsProgressLinearComponent, CpsRadioComponent, CpsRadioGroupComponent, CpsSchedulerComponent, CpsSelectComponent, CpsSidebarMenuComponent, CpsTabComponent, CpsTabGroupComponent, CpsTableColumnFilterDirective, CpsTableColumnSortableDirective, CpsTableComponent, CpsTableHeaderSelectableDirective, CpsTableRowSelectableDirective, CpsTagComponent, CpsTextareaComponent, CpsTimepickerComponent, CpsTooltipDirective, CpsTreeAutocompleteComponent, CpsTreeSelectComponent, CpsTreeTableColumnFilterDirective, CpsTreeTableColumnSortableDirective, CpsTreeTableComponent, CpsTreeTableHeaderSelectableDirective, CpsTreeTableRowSelectableDirective, CpsTreetableRowTogglerDirective, getCSSColor, getCpsColors, getTextColor, iconNames, tableFactory, treeTableFactory };
12003
13289
  //# sourceMappingURL=cps-ui-kit.mjs.map