@libs-ui/components-inputs-multi-language 0.2.356-23 → 0.2.356-24

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.
@@ -38,7 +38,7 @@ export interface IConfigMultiLanguageHeader {
38
38
  export type TYPE_VIEW_MULTI_LANGUAGE = 'text' | 'integer' | 'number' | 'editor' | 'float' | 'bigint';
39
39
  export interface IInputMultiLanguageFunctionControlEvent {
40
40
  checkIsValid: () => Promise<boolean>;
41
- getData: () => Promise<IDataMultiLanguage[] | IDataMultiLanguage | undefined>;
41
+ getData: () => IDataMultiLanguage[] | IDataMultiLanguage | undefined;
42
42
  }
43
43
  export interface ICurrencyUnit {
44
44
  label: string;
@@ -3,14 +3,16 @@ import { IInputValidFunctionControlEvent, IValidRequired } from '@libs-ui/compon
3
3
  import { IConfigMultiLanguageHeader, IDataItem, IDataMultiLanguage, IInputMultiLanguageFunctionControlEvent } from '../interfaces/multi-language.interface';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class LibsUiComponentsInputsMultiLanguageItemsComponent implements OnInit {
6
- protected dataMultiKey: import("@angular/core").WritableSignal<any[]>;
6
+ protected dataMultiKey: import("@angular/core").WritableSignal<IDataItem[][]>;
7
7
  protected langDefault: import("@angular/core").WritableSignal<string>;
8
8
  protected configHeader: import("@angular/core").WritableSignal<IConfigMultiLanguageHeader | undefined>;
9
9
  protected validRequired: import("@angular/core").WritableSignal<IValidRequired>;
10
10
  protected validRequiredWhenInputHasValue: import("@angular/core").WritableSignal<IValidRequired | undefined>;
11
11
  protected dataHeader: import("@angular/core").WritableSignal<string | undefined>;
12
- protected multiLanguageFunctionControl: import("@angular/core").WritableSignal<IInputMultiLanguageFunctionControlEvent[]>;
13
- protected inputValidFunctionControl: import("@angular/core").WritableSignal<IInputValidFunctionControlEvent[]>;
12
+ /** Một control valid header cho mỗi dòng (theo index). */
13
+ private inputValidByRow;
14
+ /** Một control multi-language cho mỗi dòng (theo index). */
15
+ private multiLanguageByRow;
14
16
  readonly configItems: import("@angular/core").InputSignal<IDataItem[]>;
15
17
  readonly dataMultiLanguage: import("@angular/core").ModelSignal<IDataMultiLanguage[]>;
16
18
  readonly zIndex: import("@angular/core").InputSignal<number | undefined>;
@@ -21,22 +23,27 @@ export declare class LibsUiComponentsInputsMultiLanguageItemsComponent implement
21
23
  readonly valueUpDownNumber: import("@angular/core").InputSignal<number | undefined>;
22
24
  readonly maxValueNumber: import("@angular/core").InputSignal<number | undefined>;
23
25
  readonly onlyAcceptNegativeValue: import("@angular/core").InputSignal<boolean | undefined>;
26
+ readonly classIconAddLanguage: import("@angular/core").InputSignalWithTransform<string, string | undefined>;
24
27
  readonly outClick: import("@angular/core").OutputEmitterRef<void>;
25
28
  readonly outFunctionControl: import("@angular/core").OutputEmitterRef<IInputMultiLanguageFunctionControlEvent>;
26
29
  readonly outChangeValue: import("@angular/core").OutputEmitterRef<void>;
27
30
  constructor();
28
31
  ngOnInit(): void;
29
32
  get FunctionsControl(): IInputMultiLanguageFunctionControlEvent;
30
- protected handlerConfigMulti(): Promise<void>;
31
- protected handlerAdd(): Promise<void>;
32
- protected handlerRemove(index: number): Promise<void>;
33
- protected handlerClick(e: Event): Promise<void>;
34
- protected handlerFunctionsControlInputLanguage(event: IInputMultiLanguageFunctionControlEvent): Promise<void>;
35
- protected handlerFunctionsControlInputValid(event: IInputValidFunctionControlEvent): Promise<void>;
33
+ /**
34
+ * Mỗi dòng cần một bản `data` (shallow copy từng `IDataItem`) để multi-language con không dùng chung một mảng tham chiếu.
35
+ */
36
+ private syncDataMultiKey;
37
+ protected handlerAdd(): void;
38
+ protected handlerRemove(index: number): void;
39
+ private reindexRowMapsAfterRemove;
40
+ protected handlerClick(e: Event): void;
41
+ protected handlerFunctionsControlInputLanguage(event: IInputMultiLanguageFunctionControlEvent, rowIndex: number): void;
42
+ protected handlerFunctionsControlInputValid(event: IInputValidFunctionControlEvent, rowIndex: number): void;
36
43
  private validate;
37
- protected getData(): Promise<IDataMultiLanguage[]>;
38
- protected handlerChangeValue(value?: string | number, type?: string): Promise<void>;
39
- protected checkValidRequiredWhenInputHasValue(): Promise<void>;
44
+ protected getData(): IDataMultiLanguage[];
45
+ protected handlerChangeValue(value?: string | number, type?: string): void;
46
+ private applyValidRequiredWhenHeaderHasValue;
40
47
  static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiComponentsInputsMultiLanguageItemsComponent, never>;
41
- static ɵcmp: i0.ɵɵComponentDeclaration<LibsUiComponentsInputsMultiLanguageItemsComponent, "libs_ui-components-inputs-multi_language-items", never, { "configItems": { "alias": "configItems"; "required": false; "isSignal": true; }; "dataMultiLanguage": { "alias": "dataMultiLanguage"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "ignoreAdd": { "alias": "ignoreAdd"; "required": false; "isSignal": true; }; "labelAddItem": { "alias": "labelAddItem"; "required": false; "isSignal": true; }; "singleLanguage": { "alias": "singleLanguage"; "required": false; "isSignal": true; }; "acceptNegativeValue": { "alias": "acceptNegativeValue"; "required": false; "isSignal": true; }; "valueUpDownNumber": { "alias": "valueUpDownNumber"; "required": false; "isSignal": true; }; "maxValueNumber": { "alias": "maxValueNumber"; "required": false; "isSignal": true; }; "onlyAcceptNegativeValue": { "alias": "onlyAcceptNegativeValue"; "required": false; "isSignal": true; }; }, { "dataMultiLanguage": "dataMultiLanguageChange"; "outClick": "outClick"; "outFunctionControl": "outFunctionControl"; "outChangeValue": "outChangeValue"; }, never, never, true, never>;
48
+ static ɵcmp: i0.ɵɵComponentDeclaration<LibsUiComponentsInputsMultiLanguageItemsComponent, "libs_ui-components-inputs-multi_language-items", never, { "configItems": { "alias": "configItems"; "required": false; "isSignal": true; }; "dataMultiLanguage": { "alias": "dataMultiLanguage"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "ignoreAdd": { "alias": "ignoreAdd"; "required": false; "isSignal": true; }; "labelAddItem": { "alias": "labelAddItem"; "required": false; "isSignal": true; }; "singleLanguage": { "alias": "singleLanguage"; "required": false; "isSignal": true; }; "acceptNegativeValue": { "alias": "acceptNegativeValue"; "required": false; "isSignal": true; }; "valueUpDownNumber": { "alias": "valueUpDownNumber"; "required": false; "isSignal": true; }; "maxValueNumber": { "alias": "maxValueNumber"; "required": false; "isSignal": true; }; "onlyAcceptNegativeValue": { "alias": "onlyAcceptNegativeValue"; "required": false; "isSignal": true; }; "classIconAddLanguage": { "alias": "classIconAddLanguage"; "required": false; "isSignal": true; }; }, { "dataMultiLanguage": "dataMultiLanguageChange"; "outClick": "outClick"; "outFunctionControl": "outFunctionControl"; "outChangeValue": "outChangeValue"; }, never, never, true, never>;
42
49
  }
@@ -38,13 +38,13 @@ export declare class LibsUiComponentsInputsMultiLanguageComponent implements OnI
38
38
  readonly classIncludeKey: import("@angular/core").InputSignal<string>;
39
39
  readonly classIncludeValue: import("@angular/core").InputSignal<string>;
40
40
  readonly dataLanguage: import("@angular/core").ModelSignal<IDataMultiLanguage>;
41
- readonly multiLine: import("@angular/core").InputSignal<boolean | undefined>;
42
41
  readonly readonly: import("@angular/core").InputSignal<boolean | undefined>;
43
42
  readonly acceptNegativeValue: import("@angular/core").InputSignal<boolean | undefined>;
44
43
  readonly valueUpDownNumber: import("@angular/core").InputSignal<number | undefined>;
45
44
  readonly maxValueNumber: import("@angular/core").InputSignal<number | undefined>;
46
45
  readonly onlyAcceptNegativeValue: import("@angular/core").InputSignal<boolean | undefined>;
47
46
  readonly validOneDefaultMultiLanguage: import("@angular/core").InputSignal<string | undefined>;
47
+ readonly classIconAddLanguage: import("@angular/core").InputSignalWithTransform<string, string | undefined>;
48
48
  readonly outEventMultiLanguage: import("@angular/core").OutputEmitterRef<IEventMultiLanguage>;
49
49
  readonly outChangeTypeLanguage: import("@angular/core").OutputEmitterRef<boolean>;
50
50
  readonly outFunctionsControl: import("@angular/core").OutputEmitterRef<IInputMultiLanguageFunctionControlEvent>;
@@ -52,20 +52,26 @@ export declare class LibsUiComponentsInputsMultiLanguageComponent implements OnI
52
52
  constructor();
53
53
  ngOnInit(): void;
54
54
  get FunctionsControl(): IInputMultiLanguageFunctionControlEvent;
55
- protected handlerInputFunctionControl(event: IInputValidFunctionControlEvent, key: string): Promise<void>;
56
- protected handlerQuillFunctionControl(event: IQuillFunctionControlEvent): Promise<void>;
57
- protected handlerSelectChange(event: IEmitSelectKey | undefined, keyOld: string): Promise<void>;
58
- protected handlerAddLanguage(event: Event): Promise<void>;
59
- protected handlerRemoveLanguage(event: Event, key: string): Promise<void>;
55
+ /** Các key ngôn ngữ / tiền tệ cần hiển thị theo dữ liệu + cấu hình options. */
56
+ private computeLanguageDisplayKeys;
57
+ protected handlerInputFunctionControl(event: IInputValidFunctionControlEvent, key: string): void;
58
+ protected handlerQuillFunctionControl(event: IQuillFunctionControlEvent, index: number): void;
59
+ protected handlerSelectChange(event: IEmitSelectKey | undefined, keyOld: string): void;
60
+ protected handlerAddLanguage(event: Event): void;
61
+ protected handlerRemoveLanguage(event: Event, key: string): void;
60
62
  private getData;
61
- protected generateData(): Promise<void>;
63
+ protected generateData(): void;
62
64
  private setDefaultData;
63
65
  private validate;
64
66
  private validateDefault;
65
67
  private checkValidInput;
68
+ /**
69
+ * Khi có nhiều `IDataItem` (nhiều field bind), cập nhật `validRequiredLangDefault` theo dữ liệu đã nhập.
70
+ * Giữ nguyên thứ tự điều kiện / nhánh như phiên bản trước (forEach async), nhưng await đúng để validate không kết thúc sớm.
71
+ */
66
72
  private validateIsMultiKey;
67
- protected handlerInputChange(): Promise<void>;
73
+ protected handlerInputChange(): void;
68
74
  ngOnDestroy(): void;
69
75
  static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiComponentsInputsMultiLanguageComponent, never>;
70
- static ɵcmp: i0.ɵɵComponentDeclaration<LibsUiComponentsInputsMultiLanguageComponent, "libs_ui-components-inputs-multi_language", never, { "optionsLanguage": { "alias": "optionsLanguage"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "viewType": { "alias": "viewType"; "required": false; "isSignal": true; }; "singleLanguage": { "alias": "singleLanguage"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "validRequired": { "alias": "validRequired"; "required": false; "isSignal": true; }; "ignoreAdd": { "alias": "ignoreAdd"; "required": false; "isSignal": true; }; "titleField": { "alias": "titleField"; "required": false; "isSignal": true; }; "keyHeader": { "alias": "keyHeader"; "required": false; "isSignal": true; }; "textArea": { "alias": "textArea"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "extendClass": { "alias": "extendClass"; "required": false; "isSignal": true; }; "extendClassContent": { "alias": "extendClassContent"; "required": false; "isSignal": true; }; "viewPosition": { "alias": "viewPosition"; "required": false; "isSignal": true; }; "ignoreRemove": { "alias": "ignoreRemove"; "required": false; "isSignal": true; }; "validMaxLength": { "alias": "validMaxLength"; "required": false; "isSignal": true; }; "validMinLength": { "alias": "validMinLength"; "required": false; "isSignal": true; }; "countCharacters": { "alias": "countCharacters"; "required": false; "isSignal": true; }; "viewContent": { "alias": "viewContent"; "required": false; "isSignal": true; }; "classIncludeKey": { "alias": "classIncludeKey"; "required": false; "isSignal": true; }; "classIncludeValue": { "alias": "classIncludeValue"; "required": false; "isSignal": true; }; "dataLanguage": { "alias": "dataLanguage"; "required": false; "isSignal": true; }; "multiLine": { "alias": "multiLine"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "acceptNegativeValue": { "alias": "acceptNegativeValue"; "required": false; "isSignal": true; }; "valueUpDownNumber": { "alias": "valueUpDownNumber"; "required": false; "isSignal": true; }; "maxValueNumber": { "alias": "maxValueNumber"; "required": false; "isSignal": true; }; "onlyAcceptNegativeValue": { "alias": "onlyAcceptNegativeValue"; "required": false; "isSignal": true; }; "validOneDefaultMultiLanguage": { "alias": "validOneDefaultMultiLanguage"; "required": false; "isSignal": true; }; }, { "data": "dataChange"; "ignoreAdd": "ignoreAddChange"; "extendClass": "extendClassChange"; "dataLanguage": "dataLanguageChange"; "outEventMultiLanguage": "outEventMultiLanguage"; "outChangeTypeLanguage": "outChangeTypeLanguage"; "outFunctionsControl": "outFunctionsControl"; "outChangeValueInput": "outChangeValueInput"; }, never, never, true, never>;
76
+ static ɵcmp: i0.ɵɵComponentDeclaration<LibsUiComponentsInputsMultiLanguageComponent, "libs_ui-components-inputs-multi_language", never, { "optionsLanguage": { "alias": "optionsLanguage"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "viewType": { "alias": "viewType"; "required": false; "isSignal": true; }; "singleLanguage": { "alias": "singleLanguage"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "validRequired": { "alias": "validRequired"; "required": false; "isSignal": true; }; "ignoreAdd": { "alias": "ignoreAdd"; "required": false; "isSignal": true; }; "titleField": { "alias": "titleField"; "required": false; "isSignal": true; }; "keyHeader": { "alias": "keyHeader"; "required": false; "isSignal": true; }; "textArea": { "alias": "textArea"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "extendClass": { "alias": "extendClass"; "required": false; "isSignal": true; }; "extendClassContent": { "alias": "extendClassContent"; "required": false; "isSignal": true; }; "viewPosition": { "alias": "viewPosition"; "required": false; "isSignal": true; }; "ignoreRemove": { "alias": "ignoreRemove"; "required": false; "isSignal": true; }; "validMaxLength": { "alias": "validMaxLength"; "required": false; "isSignal": true; }; "validMinLength": { "alias": "validMinLength"; "required": false; "isSignal": true; }; "countCharacters": { "alias": "countCharacters"; "required": false; "isSignal": true; }; "viewContent": { "alias": "viewContent"; "required": false; "isSignal": true; }; "classIncludeKey": { "alias": "classIncludeKey"; "required": false; "isSignal": true; }; "classIncludeValue": { "alias": "classIncludeValue"; "required": false; "isSignal": true; }; "dataLanguage": { "alias": "dataLanguage"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "acceptNegativeValue": { "alias": "acceptNegativeValue"; "required": false; "isSignal": true; }; "valueUpDownNumber": { "alias": "valueUpDownNumber"; "required": false; "isSignal": true; }; "maxValueNumber": { "alias": "maxValueNumber"; "required": false; "isSignal": true; }; "onlyAcceptNegativeValue": { "alias": "onlyAcceptNegativeValue"; "required": false; "isSignal": true; }; "validOneDefaultMultiLanguage": { "alias": "validOneDefaultMultiLanguage"; "required": false; "isSignal": true; }; "classIconAddLanguage": { "alias": "classIconAddLanguage"; "required": false; "isSignal": true; }; }, { "data": "dataChange"; "ignoreAdd": "ignoreAddChange"; "extendClass": "extendClassChange"; "dataLanguage": "dataLanguageChange"; "outEventMultiLanguage": "outEventMultiLanguage"; "outChangeTypeLanguage": "outChangeTypeLanguage"; "outFunctionsControl": "outFunctionsControl"; "outChangeValueInput": "outChangeValueInput"; }, never, never, true, never>;
71
77
  }
package/package.json CHANGED
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "@libs-ui/components-inputs-multi-language",
3
- "version": "0.2.356-23",
3
+ "version": "0.2.356-24",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=18.0.0",
6
6
  "@angular/core": ">=18.0.0",
7
- "@libs-ui/components-inputs-valid": "0.2.356-23",
8
- "@libs-ui/components-buttons-button": "0.2.356-23",
9
- "@libs-ui/utils": "0.2.356-23",
7
+ "@libs-ui/components-inputs-valid": "0.2.356-24",
8
+ "@libs-ui/components-buttons-button": "0.2.356-24",
9
+ "@libs-ui/utils": "0.2.356-24",
10
10
  "@ngx-translate/core": "^15.0.0",
11
- "@libs-ui/components-dropdown": "0.2.356-23",
12
- "@libs-ui/components-popover": "0.2.356-23",
11
+ "@libs-ui/components-dropdown": "0.2.356-24",
12
+ "@libs-ui/components-popover": "0.2.356-24",
13
13
  "rxjs": "~7.8.0",
14
- "@libs-ui/pipes-escape-html": "0.2.356-23",
15
- "@libs-ui/components-inputs-quill": "0.2.356-23",
16
- "@libs-ui/components-list": "0.2.356-23",
17
- "@libs-ui/services-http-request": "0.2.356-23"
14
+ "@libs-ui/pipes-escape-html": "0.2.356-24",
15
+ "@libs-ui/components-inputs-quill": "0.2.356-24",
16
+ "@libs-ui/components-list": "0.2.356-24",
17
+ "@libs-ui/services-http-request": "0.2.356-24"
18
18
  },
19
19
  "sideEffects": false,
20
20
  "module": "fesm2022/libs-ui-components-inputs-multi-language.mjs",