bpm-core 0.0.129 → 0.0.131

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 (37) hide show
  1. package/README.md +57 -4
  2. package/fesm2022/bpm-core.mjs +354 -304
  3. package/fesm2022/bpm-core.mjs.map +1 -1
  4. package/lib/components/shared-components/form-field/attachment-section/attachment-section.component.d.ts +1 -2
  5. package/lib/components/shared-components/form-field/control-value-accessor.directive.d.ts +4 -4
  6. package/lib/components/shared-components/form-field/index.d.ts +0 -1
  7. package/lib/components/shared-components/form-field/input/input.component.d.ts +3 -2
  8. package/lib/components/shared-components/form-field/input-number/input-number.component.d.ts +2 -0
  9. package/lib/components/shared-components/form-field/radio/radio.component.d.ts +39 -2
  10. package/lib/components/shared-components/form-field/search-employee/search-employee.component.d.ts +5 -5
  11. package/lib/components/shared-components/form-field/shared-imports.d.ts +3 -6
  12. package/lib/components/shared-components/form-field/textarea/textarea.component.d.ts +76 -1
  13. package/lib/components/shared-components/table/table.component.d.ts +3 -3
  14. package/lib/{components/shared-components/form-field/input → directives}/input-map-filter/input-filters.d.ts +1 -0
  15. package/lib/{components/shared-components/form-field/input → directives}/input-map-filter/input-map-filter.directive.d.ts +4 -1
  16. package/lib/testComponent/request-details-section/request-details-section.component.d.ts +2 -5
  17. package/package.json +8 -3
  18. package/public-api.d.ts +1 -0
  19. package/src/lib/assets/scss/_general.scss +0 -205
  20. package/src/lib/assets/scss/base.scss +0 -2
  21. package/cli/deploy/build.js +0 -62
  22. package/cli/deploy/git-operations-handler.js +0 -104
  23. package/cli/deploy/index.js +0 -61
  24. package/cli/deploy/jenkins-manager.js +0 -107
  25. package/cli/deploy/utilities.js +0 -114
  26. package/cli/generate/index.js +0 -8
  27. package/cli/generate/mock/form-node.js +0 -77
  28. package/cli/generate/mock/index.js +0 -207
  29. package/cli/generate/mock/lov.js +0 -18
  30. package/cli/index.js +0 -14
  31. package/lib/directives/ar.directive.d.ts +0 -11
  32. package/lib/directives/en.directive.d.ts +0 -11
  33. package/lib/directives/number.directive.d.ts +0 -14
  34. package/src/lib/assets/scss/_charts.scss +0 -190
  35. /package/lib/{components/shared-components/form-field/input → directives}/input-map-filter/index.d.ts +0 -0
  36. /package/lib/{components/shared-components/form-field/input → directives}/input-map-filter/input-mappers.d.ts +0 -0
  37. /package/lib/{components/shared-components/form-field/input → directives}/input-map-filter/types.d.ts +0 -0
@@ -16,7 +16,6 @@ export declare class AttachmentSectionComponent extends ControlValueAccessorDire
16
16
  isSortable: boolean;
17
17
  downloadAll: boolean;
18
18
  popupData: any;
19
- isRequired: boolean;
20
19
  descriptionRequired: boolean;
21
20
  commentsRequired: boolean;
22
21
  allowedExtensions: string;
@@ -44,5 +43,5 @@ export declare class AttachmentSectionComponent extends ControlValueAccessorDire
44
43
  downloadFile(event: any, field: any): Promise<void>;
45
44
  customDownloadAction(event: any): void;
46
45
  static ɵfac: i0.ɵɵFactoryDeclaration<AttachmentSectionComponent, never>;
47
- static ɵcmp: i0.ɵɵComponentDeclaration<AttachmentSectionComponent, "app-attachment-section", never, { "className": { "alias": "className"; "required": false; }; "customDownload": { "alias": "customDownload"; "required": false; }; "attachmentsMax": { "alias": "attachmentsMax"; "required": false; }; "isSortable": { "alias": "isSortable"; "required": false; }; "downloadAll": { "alias": "downloadAll"; "required": false; }; "isRequired": { "alias": "isRequired"; "required": false; }; "descriptionRequired": { "alias": "descriptionRequired"; "required": false; }; "commentsRequired": { "alias": "commentsRequired"; "required": false; }; "allowedExtensions": { "alias": "allowedExtensions"; "required": false; }; }, { "downloadActionClicked": "downloadActionClicked"; "emitedValue": "emitedValue"; }, never, never, true, never>;
46
+ static ɵcmp: i0.ɵɵComponentDeclaration<AttachmentSectionComponent, "app-attachment-section", never, { "className": { "alias": "className"; "required": false; }; "customDownload": { "alias": "customDownload"; "required": false; }; "attachmentsMax": { "alias": "attachmentsMax"; "required": false; }; "isSortable": { "alias": "isSortable"; "required": false; }; "downloadAll": { "alias": "downloadAll"; "required": false; }; "descriptionRequired": { "alias": "descriptionRequired"; "required": false; }; "commentsRequired": { "alias": "commentsRequired"; "required": false; }; "allowedExtensions": { "alias": "allowedExtensions"; "required": false; }; }, { "downloadActionClicked": "downloadActionClicked"; "emitedValue": "emitedValue"; }, never, never, true, never>;
48
47
  }
@@ -41,11 +41,11 @@ export declare class ControlValueAccessorDirective<Type> implements ControlValue
41
41
  Validators: typeof Validators;
42
42
  minDateValue: any;
43
43
  maxDateValue: any;
44
- maxDate: string;
44
+ maxDate: 'today' | 'oneYear';
45
45
  datepickerObj: any;
46
- minDate: string;
47
- customMaxDate: any;
48
- customMinDate: any;
46
+ minDate: 'today';
47
+ customMaxDate: string;
48
+ customMinDate: string;
49
49
  value: any;
50
50
  control: FormControl | undefined;
51
51
  required: boolean;
@@ -6,7 +6,6 @@ export * from './date-range-picker/date-range-picker.component';
6
6
  export * from './form-label/form-label.component';
7
7
  export * from './info-item/info-item.component';
8
8
  export * from './input/input.component';
9
- export * from './input/input-map-filter';
10
9
  export * from './input-number/input-number.component';
11
10
  export * from './input-email/input-email.component';
12
11
  export * from './input-mask/input-mask.component';
@@ -1,6 +1,6 @@
1
1
  import { EventEmitter, DestroyRef } from '@angular/core';
2
2
  import { ControlValueAccessorDirective } from '../control-value-accessor.directive';
3
- import type { InputMapFn, InputFilterFn } from './input-map-filter/types';
3
+ import type { InputMapFn, InputFilterFn } from '../../../../directives/input-map-filter/types';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class InputComponent<Type> extends ControlValueAccessorDirective<Type> {
6
6
  floatLabel: any;
@@ -8,6 +8,7 @@ export declare class InputComponent<Type> extends ControlValueAccessorDirective<
8
8
  iconPrefixName: string;
9
9
  iconSuffixName: string;
10
10
  emitedChangedValue1: EventEmitter<any>;
11
+ maxLength: number | string;
11
12
  /**
12
13
  * A mapping function that modifies the input value during typing, pasting, or dropping text.
13
14
  * You can use it to modify the full input value **before it appears** (e.g., for auto-capitalization,
@@ -85,5 +86,5 @@ export declare class InputComponent<Type> extends ControlValueAccessorDirective<
85
86
  destroyRef: DestroyRef;
86
87
  ngOnInit(): void;
87
88
  static ɵfac: i0.ɵɵFactoryDeclaration<InputComponent<any>, never>;
88
- static ɵcmp: i0.ɵɵComponentDeclaration<InputComponent<any>, "app-input", never, { "floatLabel": { "alias": "floatLabel"; "required": false; }; "className": { "alias": "className"; "required": false; }; "iconPrefixName": { "alias": "iconPrefixName"; "required": false; }; "iconSuffixName": { "alias": "iconSuffixName"; "required": false; }; "emitedChangedValue1": { "alias": "emitedChangedValue1"; "required": false; }; "mapFn": { "alias": "mapFn"; "required": false; }; "filterFn": { "alias": "filterFn"; "required": false; }; }, {}, never, never, true, never>;
89
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputComponent<any>, "app-input", never, { "floatLabel": { "alias": "floatLabel"; "required": false; }; "className": { "alias": "className"; "required": false; }; "iconPrefixName": { "alias": "iconPrefixName"; "required": false; }; "iconSuffixName": { "alias": "iconSuffixName"; "required": false; }; "emitedChangedValue1": { "alias": "emitedChangedValue1"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; "mapFn": { "alias": "mapFn"; "required": false; }; "filterFn": { "alias": "filterFn"; "required": false; }; }, {}, never, never, true, never>;
89
90
  }
@@ -1,5 +1,6 @@
1
1
  import { DestroyRef, EventEmitter } from '@angular/core';
2
2
  import { ControlValueAccessorDirective } from '../control-value-accessor.directive';
3
+ import { InputFilterFn } from '../../../../directives/input-map-filter';
3
4
  import * as i0 from "@angular/core";
4
5
  export declare class InputNumberComponent<Type> extends ControlValueAccessorDirective<Type> {
5
6
  floatLabel: any;
@@ -10,6 +11,7 @@ export declare class InputNumberComponent<Type> extends ControlValueAccessorDire
10
11
  allowedPattern: string;
11
12
  destroyRef: DestroyRef;
12
13
  emitedChangedValue: EventEmitter<any>;
14
+ onlyNumbers: InputFilterFn;
13
15
  ngOnInit(): void;
14
16
  static ɵfac: i0.ɵɵFactoryDeclaration<InputNumberComponent<any>, never>;
15
17
  static ɵcmp: i0.ɵɵComponentDeclaration<InputNumberComponent<any>, "app-input-number", never, { "floatLabel": { "alias": "floatLabel"; "required": false; }; "className": { "alias": "className"; "required": false; }; "iconPrefixName": { "alias": "iconPrefixName"; "required": false; }; "iconSuffixName": { "alias": "iconSuffixName"; "required": false; }; "numberSuffixName": { "alias": "numberSuffixName"; "required": false; }; "allowedPattern": { "alias": "allowedPattern"; "required": false; }; }, { "emitedChangedValue": "emitedChangedValue"; }, never, never, true, never>;
@@ -1,10 +1,47 @@
1
1
  import { DestroyRef } from '@angular/core';
2
+ import { MatRadioChange } from '@angular/material/radio';
2
3
  import { ControlValueAccessorDirective } from '../control-value-accessor.directive';
3
4
  import * as i0 from "@angular/core";
5
+ /**
6
+ * Radio Component for selecting a single option from a list of options.
7
+ *
8
+ * Supports both Reactive Forms and Template-driven forms.
9
+ *
10
+ * Inputs:
11
+ * - `options`: Accepts an array of objects used as the selection list.
12
+ * - `displayedLabel`: Property name from the option object to display in the UI (default: `'description'`).
13
+ * - `key`: Property name from the option object used as the value (default: `'value'`).
14
+ * - `label`: Defines the label text shown above the radio buttons.
15
+ * - `isReadOnly`: Disables interaction and renders the component in a read-only display mode.
16
+ * - `mandatory`: Hides the "optional" label visually. Does not add validation.
17
+ * - `required`: Hides the "optional" label and also adds Angular's required validator.
18
+ * - `tooltip`: Displays a tooltip beside the label.
19
+ *
20
+ * Emits:
21
+ * - The selected value is emitted as an object with `key` and `value` properties:
22
+ * ```ts
23
+ * { key: option[key], value: option[displayedLabel] }
24
+ * ```
25
+ *
26
+ * Example usage:
27
+ * ```html
28
+ *<app-radio
29
+ * class="section-item"
30
+ * [isReadOnly]="isReadOnly"
31
+ * formControlName="radio"
32
+ * [options]="[]"
33
+ * label="Radio"
34
+ *>
35
+ *</app-radio>
36
+ * ```
37
+ */
4
38
  export declare class RadioComponent<Type> extends ControlValueAccessorDirective<Type> {
5
- options: any;
39
+ options: Array<Record<string, any>>;
40
+ displayedLabel: string;
41
+ key: string;
6
42
  destroyRef: DestroyRef;
7
43
  ngOnInit(): void;
44
+ onChange(event: MatRadioChange): void;
8
45
  static ɵfac: i0.ɵɵFactoryDeclaration<RadioComponent<any>, never>;
9
- static ɵcmp: i0.ɵɵComponentDeclaration<RadioComponent<any>, "app-radio", never, { "options": { "alias": "options"; "required": false; }; }, {}, never, never, true, never>;
46
+ static ɵcmp: i0.ɵɵComponentDeclaration<RadioComponent<any>, "app-radio", never, { "options": { "alias": "options"; "required": false; }; "displayedLabel": { "alias": "displayedLabel"; "required": false; }; "key": { "alias": "key"; "required": false; }; }, {}, never, never, true, never>;
10
47
  }
@@ -9,11 +9,11 @@ export declare class SearchEmployeeComponent<Type> extends ControlValueAccessorD
9
9
  floatLabel: any;
10
10
  error: string;
11
11
  selected: boolean;
12
- selectedEmp: EventEmitter<any>;
13
- onInputChange: EventEmitter<any>;
12
+ /**
13
+ * Emits the full details of the selected employee.
14
+ */
15
+ selectedEmployee: EventEmitter<any>;
14
16
  showEdit: boolean;
15
- editDirectManger: EventEmitter<any>;
16
- deleteDirectManger: EventEmitter<any>;
17
17
  arrayList: any[];
18
18
  isUniqueUsers: boolean;
19
19
  userAlreadyExist: boolean;
@@ -26,7 +26,7 @@ export declare class SearchEmployeeComponent<Type> extends ControlValueAccessorD
26
26
  getImage(id: string): string;
27
27
  selectOption(object: any, ev: any): void;
28
28
  static ɵfac: i0.ɵɵFactoryDeclaration<SearchEmployeeComponent<any>, never>;
29
- static ɵcmp: i0.ɵɵComponentDeclaration<SearchEmployeeComponent<any>, "app-search-employee", never, { "valueName": { "alias": "valueName"; "required": false; }; "className": { "alias": "className"; "required": false; }; "optional": { "alias": "optional"; "required": false; }; "data": { "alias": "data"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "error": { "alias": "error"; "required": false; }; "showEdit": { "alias": "showEdit"; "required": false; }; "arrayList": { "alias": "arrayList"; "required": false; }; "isUniqueUsers": { "alias": "isUniqueUsers"; "required": false; }; }, { "selectedEmp": "selectedEmp"; "onInputChange": "onInputChange"; "editDirectManger": "editDirectManger"; "deleteDirectManger": "deleteDirectManger"; "emitedDeletedValue": "emitedDeletedValue"; }, never, never, true, never>;
29
+ static ɵcmp: i0.ɵɵComponentDeclaration<SearchEmployeeComponent<any>, "app-search-employee", never, { "valueName": { "alias": "valueName"; "required": false; }; "className": { "alias": "className"; "required": false; }; "optional": { "alias": "optional"; "required": false; }; "data": { "alias": "data"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "error": { "alias": "error"; "required": false; }; "showEdit": { "alias": "showEdit"; "required": false; }; "arrayList": { "alias": "arrayList"; "required": false; }; "isUniqueUsers": { "alias": "isUniqueUsers"; "required": false; }; }, { "selectedEmployee": "selectedEmployee"; "emitedDeletedValue": "emitedDeletedValue"; }, never, never, true, never>;
30
30
  }
31
31
  export interface searchEmp {
32
32
  personName?: string;
@@ -5,11 +5,8 @@ import { FormLabelComponent } from "./form-label/form-label.component";
5
5
  import { ValidationErrorsComponent } from "./validation-errors/validation-errors.component";
6
6
  import { ReactiveFormsModule } from "@angular/forms";
7
7
  import { InfoItemComponent } from "./info-item/info-item.component";
8
- import { EnOnlyDirective } from "../../../directives/en.directive";
9
- import { ArOnlyDirective } from "../../../directives/ar.directive";
10
8
  import { NgClass } from "@angular/common";
11
9
  import { TranslatePipe } from "../../../pipes/translate.pipe";
12
- export declare const MatDatePickerImports: (typeof MatDatepickerInput | typeof MatDatepickerToggle | typeof MatDatepickerModule)[];
13
- export declare const MatFormImports: (typeof MatInput | typeof MatFormFieldModule | typeof MatFormField)[];
14
- export declare const Shareds: (typeof NgClass | typeof FormLabelComponent | typeof TranslatePipe | typeof ReactiveFormsModule | typeof ValidationErrorsComponent | typeof InfoItemComponent)[];
15
- export declare const TextLanguageDirectives: (typeof EnOnlyDirective | typeof ArOnlyDirective)[];
10
+ export declare const MatDatePickerImports: (typeof MatDatepickerToggle | typeof MatDatepickerInput | typeof MatDatepickerModule)[];
11
+ export declare const MatFormImports: (typeof MatFormFieldModule | typeof MatFormField | typeof MatInput)[];
12
+ export declare const Shareds: (typeof FormLabelComponent | typeof ValidationErrorsComponent | typeof InfoItemComponent | typeof ReactiveFormsModule | typeof NgClass | typeof TranslatePipe)[];
@@ -1,12 +1,87 @@
1
1
  import { DestroyRef } from '@angular/core';
2
2
  import { ControlValueAccessorDirective } from '../control-value-accessor.directive';
3
+ import type { InputMapFn, InputFilterFn } from '../../../../directives/input-map-filter/types';
3
4
  import * as i0 from "@angular/core";
4
5
  export declare class TextareaComponent<Type> extends ControlValueAccessorDirective<Type> {
5
6
  className: string;
6
7
  preventSpecailChar: boolean;
7
8
  maxLength: number | string;
9
+ /**
10
+ * A mapping function that modifies the input value during typing, pasting, or dropping text.
11
+ * You can use it to modify the full input value **before it appears** (e.g., for auto-capitalization,
12
+ * formatting, or custom replacements).
13
+ *
14
+ * This function is called:
15
+ * - On each **key press**, to determine how the input value should change when a character is typed.
16
+ * - On **paste**, to transform the pasted content before it’s applied.
17
+ * - On **drop**, to transform the dropped text before it’s applied.
18
+ *
19
+ * **Built-in mappers are available via the `InputMappers` utility class:**
20
+ *
21
+ * - `InputMappers.toUpperCase` — Transforms all input to UPPERCASE.
22
+ * - `InputMappers.toLowerCase` — Transforms all input to lowercase.
23
+ *
24
+ * @param char - The character(s) being inserted. This is:
25
+ * - A single character (e.g., `'a'`) during typing.
26
+ * - The full pasted string during paste events.
27
+ * - The full dropped string during drop events.
28
+ * @param currentValue - The current value of the input **before** the change is applied.
29
+ * @param nextValue - The simulated value of the input **after** the character, paste, or drop is inserted, but before transformation.
30
+ *
31
+ * @returns The final string to use as the new input value.
32
+ *
33
+ * @example
34
+ * // Use a built-in mapper to force UPPERCASE input:
35
+ * this.mapFn = InputMappers.toUpperCase;
36
+ *
37
+ * @example
38
+ * // Custom mapper: Capitalize the first letter of each word
39
+ * this.mapFn = (char, current, next) =>
40
+ * typeof next === 'string' ? next.replace(/\b\w/g, c => c.toUpperCase()) : next;
41
+ */
42
+ mapFn: InputMapFn;
43
+ /**
44
+ * A filtering function that determines whether a character or string should be allowed into the input.
45
+ *
46
+ * This function is called during:
47
+ * - **Typing**: When a key is pressed to decide if the character should be accepted.
48
+ * - **Paste**: When text is pasted to decide if the entire pasted string should be accepted.
49
+ * - **Drop**: When text is dropped into the input to decide if it should be allowed.
50
+ *
51
+ * You can use it to reject unwanted characters (e.g. numbers, symbols) or block input entirely based
52
+ * on the current or predicted value.
53
+ *
54
+ * **Built-in filters are available via the `InputFilters` utility class:**
55
+ *
56
+ * - `InputFilters.arabicOnly` — Allows Arabic letters and digits, as well as common symbols.
57
+ * - `InputFilters.englishOnly` — Allows English letters and digits, as well as common symbols.
58
+ * - `InputFilters.digitsOnly` — Allows digits only (`0–9`), no letters or symbols.
59
+ * - You can also use `InputFilters.buildPattern()` to define a custom filter.
60
+ *
61
+ * @param char - The character(s) being inserted:
62
+ * - A single typed character (e.g., `'a'`) during key presses
63
+ * - The full pasted or dropped string during paste/drop
64
+ * @param currentValue - The current value of the input before the character or string is applied.
65
+ * @param nextValue - The simulated next value if the character or string were applied.
66
+ * @param event - The originating event triggering the input change. This can be a
67
+ * `KeyboardEvent` (for typing), `ClipboardEvent` (for paste), or `DragEvent` (for drop).
68
+ *
69
+ * @returns `true` to allow the input, or `false` to block it.
70
+ *
71
+ *
72
+ * @example
73
+ * // Use a built-in filter to restrict to digits only
74
+ * this.filterFn = InputFilters.digitsOnly;
75
+ *
76
+ * @example
77
+ * // Custom filter: Allow only letters (no numbers or symbols)
78
+ * this.filterFn = (char, current, next, event) => {
79
+ * return /^[a-zA-Z]+$/.test(char);
80
+ * };
81
+ */
82
+ filterFn: InputFilterFn;
8
83
  destroyRef: DestroyRef;
9
84
  ngOnInit(): void;
10
85
  static ɵfac: i0.ɵɵFactoryDeclaration<TextareaComponent<any>, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<TextareaComponent<any>, "app-textarea", never, { "className": { "alias": "className"; "required": false; }; "preventSpecailChar": { "alias": "preventSpecailChar"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; }, {}, never, never, true, never>;
86
+ static ɵcmp: i0.ɵɵComponentDeclaration<TextareaComponent<any>, "app-textarea", never, { "className": { "alias": "className"; "required": false; }; "preventSpecailChar": { "alias": "preventSpecailChar"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; "mapFn": { "alias": "mapFn"; "required": false; }; "filterFn": { "alias": "filterFn"; "required": false; }; }, {}, never, never, true, never>;
12
87
  }
@@ -4,13 +4,13 @@ import { MatDialog } from '@angular/material/dialog';
4
4
  import { MatPaginator, PageEvent } from '@angular/material/paginator';
5
5
  import { MatSort, Sort } from '@angular/material/sort';
6
6
  import { MatTableDataSource } from '@angular/material/table';
7
- import { TranslateService } from '@ngx-translate/core';
8
7
  import { ActionModel } from '../../../interfaces/action.interface';
9
8
  import { Actions } from '../../../enums/actions.enum';
9
+ import { CoreI18nService } from '../../../services';
10
10
  import * as i0 from "@angular/core";
11
11
  export declare class TableComponent implements OnInit {
12
12
  dialog: MatDialog;
13
- translateService: TranslateService;
13
+ i18Service: CoreI18nService;
14
14
  private fb;
15
15
  matTableRef: ElementRef;
16
16
  control: FormControl<any>;
@@ -51,7 +51,7 @@ export declare class TableComponent implements OnInit {
51
51
  currentPage: number;
52
52
  pageChange: EventEmitter<any>;
53
53
  form: FormGroup;
54
- constructor(dialog: MatDialog, translateService: TranslateService, fb: FormBuilder);
54
+ constructor(dialog: MatDialog, i18Service: CoreI18nService, fb: FormBuilder);
55
55
  set keyWord(value: string);
56
56
  _rows: any;
57
57
  get rows(): any;
@@ -19,6 +19,7 @@ export declare class InputFilters {
19
19
  * @returns `true` if the character is a digit; otherwise, `false`
20
20
  */
21
21
  static digitsOnly(char: string, current: string, next: string, event: KeyboardEvent | ClipboardEvent | DragEvent): boolean;
22
+ static decimalDigitsOnly(char: string, current: string, next: string, event: KeyboardEvent | ClipboardEvent | DragEvent): boolean;
22
23
  /**
23
24
  * Creates a new `PatternBuilder` instance for building a custom input filter.
24
25
  *
@@ -5,11 +5,14 @@ export declare class InputMapFilterDirective {
5
5
  private ngControl;
6
6
  mapFn: InputMapFn;
7
7
  filterFn: InputFilterFn;
8
+ maxLength: number | string;
8
9
  constructor(ngControl: NgControl);
9
10
  handleKeydown(event: KeyboardEvent): boolean;
10
11
  handlePaste(event: ClipboardEvent): void;
11
12
  handleDrop(event: DragEvent): void;
13
+ private shouldProceed;
14
+ private hasMaxLength;
12
15
  private updateValue;
13
16
  static ɵfac: i0.ɵɵFactoryDeclaration<InputMapFilterDirective, [{ optional: true; self: true; }]>;
14
- static ɵdir: i0.ɵɵDirectiveDeclaration<InputMapFilterDirective, "[inputMapFilter]", never, { "mapFn": { "alias": "mapFn"; "required": false; }; "filterFn": { "alias": "filterFn"; "required": false; }; }, {}, never, never, true, never>;
17
+ static ɵdir: i0.ɵɵDirectiveDeclaration<InputMapFilterDirective, "[inputMapFilter]", never, { "mapFn": { "alias": "mapFn"; "required": false; }; "filterFn": { "alias": "filterFn"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; }, {}, never, never, true, never>;
15
18
  }
@@ -2,7 +2,6 @@ import { DestroyRef, OnInit } from '@angular/core';
2
2
  import { Form, Section } from "../../interfaces";
3
3
  import { ActionStateService, CoreI18nService } from "../../services";
4
4
  import { FormBuilder, FormGroup, ValidatorFn } from "@angular/forms";
5
- import { InputMappers } from '../../components/shared-components/form-field/input/input-map-filter/input-mappers';
6
5
  import * as i0 from "@angular/core";
7
6
  export declare class RequestDetailsSectionComponent implements OnInit {
8
7
  i18n: CoreI18nService;
@@ -54,12 +53,12 @@ export declare class RequestDetailsSectionComponent implements OnInit {
54
53
  totalElements: number;
55
54
  constructor(i18n: CoreI18nService, fb: FormBuilder, actionStateService: ActionStateService);
56
55
  ngOnInit(): void;
57
- timePicker: string;
58
- timePickerChange(e: any): void;
59
56
  initializeTableConfig(): void;
60
57
  initializeColumns(): void;
61
58
  initializeColumnConfig(): void;
62
59
  createForm(): void;
60
+ onAddRow(event: any): void;
61
+ onRemoveRow(event: any): void;
63
62
  editAsset(asset: any): void;
64
63
  startsWithDMOEOrCR(): ValidatorFn;
65
64
  deleteAsset(asset: any): void;
@@ -68,8 +67,6 @@ export declare class RequestDetailsSectionComponent implements OnInit {
68
67
  customCallSubmit(action: string): void;
69
68
  resetForm(): void;
70
69
  pageChanged(event: any): void;
71
- filterFn: import("../../components/shared-components").InputFilterFn;
72
- mapFn: typeof InputMappers.toUpperCase;
73
70
  static ɵfac: i0.ɵɵFactoryDeclaration<RequestDetailsSectionComponent, never>;
74
71
  static ɵcmp: i0.ɵɵComponentDeclaration<RequestDetailsSectionComponent, "app-request-details-section", never, { "isReadOnly": { "alias": "isReadOnly"; "required": false; }; "section": { "alias": "section"; "required": false; }; "form": { "alias": "form"; "required": false; }; "lov": { "alias": "lov"; "required": false; }; "className": { "alias": "className"; "required": false; }; }, {}, never, never, true, never>;
75
72
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bpm-core",
3
- "version": "0.0.129",
3
+ "version": "0.0.131",
4
4
  "bin": {
5
5
  "bpm-core": "./cli/index.js"
6
6
  },
@@ -11,7 +11,12 @@
11
11
  "ngx-intl-tel-input-gg": "^1.0.12"
12
12
  },
13
13
  "dependencies": {
14
- "tslib": "^2.3.0"
14
+ "tslib": "^2.3.0",
15
+ "cheerio": "^1.1.2",
16
+ "prettier": "^3.6.2",
17
+ "change-case": "^5.4.4",
18
+ "ejs": "^3.1.10",
19
+ "commander": "^13.0.0"
15
20
  },
16
21
  "sideEffects": false,
17
22
  "module": "fesm2022/bpm-core.mjs",
@@ -25,4 +30,4 @@
25
30
  "default": "./fesm2022/bpm-core.mjs"
26
31
  }
27
32
  }
28
- }
33
+ }
package/public-api.d.ts CHANGED
@@ -12,4 +12,5 @@ export * from './lib/functions';
12
12
  export * from './lib/validators';
13
13
  export * from './lib/services';
14
14
  export * from './lib/regex';
15
+ export * from './lib/directives/input-map-filter';
15
16
  export declare const MY_LIB_CONFIG_TOKEN: InjectionToken<MyLibConfig>;
@@ -1335,205 +1335,6 @@ div.mat-mdc-select-panel {
1335
1335
  overflow: auto !important;
1336
1336
  }
1337
1337
 
1338
- full-calendar.fc .fc-scroller-liquid-absolute,
1339
- full-calendar.fc .fc-scroller {
1340
- overflow: auto !important;
1341
- }
1342
-
1343
- full-calendar.fc {
1344
- --fc-padding: 12px;
1345
- --fc-header-bc: var(--light-gray);
1346
- --fc-border-color: #dee0e2;
1347
- --fc-day-size: 30px;
1348
- --fc-day-fs: 14px;
1349
- --fc-toolbar-button-size: 33px;
1350
- --fc-toolbar-button-radius: 0;
1351
- --fc-toolbar-button-shadow: 0px 7px 10px 0px rgba(0, 0, 0, 0.03);
1352
- --fc-toolbar-fs: 16px;
1353
- --fc-toolbar-fw: var(--font-medium);
1354
- --fc-highlight-color: transparent;
1355
- //--fc-daygrid-event-dot-width: 9px;
1356
- --fc-event-height: auto;
1357
- --fc-toolbar-button-bc: var(--light-gray);
1358
- --fc-toolbar-button-radius: 100%;
1359
- --fc-toolbar-button-size: 30px;
1360
- --fc-toolbar-button-shadow: none;
1361
- --fc-border: 1px var(--gray);
1362
- --fc-shadow: none;
1363
- --fc-event-text-color: var(--black);
1364
-
1365
- .fc-view table {
1366
- .fc-col-header {
1367
- --fc-header-fc: #00;
1368
- --fc-header-fs: 12px;
1369
- --fc-header-fw: 400;
1370
- border: 1px solid;
1371
-
1372
- th {
1373
- // text-align: center;
1374
- // border-right: 0px;
1375
- // border-left: 0px;
1376
- a {
1377
- color: var(--dark-gray);
1378
- font-size: 14px;
1379
- font-weight: 500;
1380
- }
1381
- }
1382
- }
1383
-
1384
- tbody .fc-scroller-harness {
1385
- td {
1386
- height: 122px;
1387
-
1388
- &.fc-day-other {
1389
- // background: var(--light-gray) !important;
1390
- }
1391
-
1392
- .fc-daygrid-day-frame {
1393
- // background-color: initial;
1394
- }
1395
-
1396
- &:hover {
1397
- .fc-daygrid-event-harness {
1398
- // display: none;
1399
- }
1400
-
1401
- .fc-daygrid-day-bottom:empty {
1402
- // background-image: url(../images/plus.svg);
1403
- display: block;
1404
- width: 100%;
1405
- height: 100%;
1406
- background-position: center center;
1407
- background-repeat: no-repeat;
1408
- cursor: pointer;
1409
- position: absolute;
1410
- z-index: 140;
1411
- top: 0;
1412
- }
1413
- }
1414
-
1415
- .fc-daygrid-event-harness {
1416
- width: 100%;
1417
- display: flex;
1418
- justify-content: end;
1419
- // background: white;
1420
- height: 100%;
1421
- z-index: 20;
1422
- align-items: start;
1423
- }
1424
-
1425
- .fc-daygrid-day-events {
1426
- position: initial;
1427
- height: 100%;
1428
- }
1429
-
1430
- .fc-daygrid-day-frame {
1431
- height: 100%;
1432
- }
1433
-
1434
- .fc-event {
1435
- padding: 8px 12px;
1436
- border-radius: 4px;
1437
- margin: 0;
1438
- gap: 8px;
1439
- // width: 100%;
1440
- text-align: center;
1441
- cursor: pointer;
1442
- overflow: hidden;
1443
- text-overflow: ellipsis;
1444
- white-space: nowrap;
1445
-
1446
- .fc-event-time {
1447
- display: none;
1448
- }
1449
-
1450
- .fc-event-title {
1451
- font-weight: 400;
1452
- font-size: 12px;
1453
- }
1454
-
1455
- .fc-daygrid-event-dot {
1456
- margin: 0 !important;
1457
- }
1458
-
1459
- &.created {
1460
- background: #007bff;
1461
- }
1462
-
1463
- &.submit {
1464
- background: #868e96;
1465
- }
1466
-
1467
- &.progress {
1468
- background: #ffc107;
1469
- }
1470
-
1471
- &.executed {
1472
- background: #dc3545;
1473
- }
1474
-
1475
- &.closed {
1476
- background: #28a745;
1477
- }
1478
-
1479
- &.type {
1480
- margin-bottom: 8px;
1481
- padding: 0;
1482
- display: flex;
1483
- align-items: center;
1484
- justify-content: center;
1485
- width: 30px !important;
1486
- height: 30px;
1487
-
1488
- .fc-event-title-container {
1489
- .fc-event-title {
1490
- margin-bottom: 0;
1491
- font-size: 14px;
1492
- line-height: 14px;
1493
- }
1494
-
1495
- &::after {
1496
- display: none;
1497
- }
1498
- }
1499
- }
1500
- }
1501
-
1502
- .fc-daygrid-day-bottom {
1503
- color: var(--coral);
1504
- justify-content: end;
1505
- display: flex;
1506
-
1507
- a {
1508
- padding: 5px;
1509
- }
1510
- }
1511
- }
1512
- }
1513
- }
1514
-
1515
- .fc-daygrid-body {
1516
- border-right: 1px solid rgb(222, 224, 226);
1517
- border-left: 1px solid rgb(222, 224, 226);
1518
- }
1519
-
1520
- .fc-toolbar.fc-header-toolbar {
1521
- margin-bottom: 20px;
1522
-
1523
- .fc-toolbar-chunk {
1524
- gap: 35px;
1525
-
1526
- .fc-toolbar-title {
1527
- min-width: auto;
1528
- }
1529
-
1530
- .fc-prev-button,
1531
- .fc-next-button {
1532
- }
1533
- }
1534
- }
1535
- }
1536
-
1537
1338
  .fc-theme-standard .fc-popover {
1538
1339
  border-radius: 5px;
1539
1340
 
@@ -1574,12 +1375,6 @@ full-calendar.fc {
1574
1375
  line-height: 1;
1575
1376
  }
1576
1377
 
1577
- full-calendar.fc .fc-view table {
1578
- // border-left-width: 1px;
1579
- // border-top-width: 1px;
1580
- // border-radius: 8px;
1581
- }
1582
-
1583
1378
  .CustomType {
1584
1379
  margin-bottom: 8px !important;
1585
1380
  // padding: 12px !important;
@@ -14,8 +14,6 @@
14
14
 
15
15
  @use "./upgrade";
16
16
 
17
- @use "./charts";
18
-
19
17
  // components
20
18
  @use "./components/fields";
21
19
  @use "./components/table";