awing-library 2.1.2-dev.526 → 2.1.2-dev.527

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.
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../src/AWING/DataForm/container.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,2CA0PzE"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../src/AWING/DataForm/container.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,2CAkQzE"}
@@ -80,6 +80,13 @@ function DataForm(props) {
80
80
  if (oldValue && oldValue[fieldName] === newValue) delete newFieldsToUpdate[fieldName];
81
81
  else if (newFieldsToUpdate[fieldName] !== newValue) newFieldsToUpdate[fieldName] = newValue;
82
82
  newValidation[fieldName] = valid;
83
+ if (props.fieldDependencies && props.fieldDependencies[fieldName]) {
84
+ const dependentFields = props.fieldDependencies[fieldName];
85
+ dependentFields.forEach((depField)=>{
86
+ delete newFieldsToUpdate[depField];
87
+ newValidation[depField] = void 0;
88
+ });
89
+ }
83
90
  let field = fields.find((x)=>x.fieldName === fieldName);
84
91
  if (field) {
85
92
  if (field.customeFieldChange) {
@@ -6,7 +6,7 @@ import { fireEvent, render, screen } from "@testing-library/react";
6
6
  import { Constants } from "../../Commons/Constant.js";
7
7
  import container from "./container.js";
8
8
  var __webpack_modules__ = {
9
- "AWING/DataInput": function(module) {
9
+ "../DataInput": function(module) {
10
10
  module.exports = __WEBPACK_EXTERNAL_MODULE__DataInput_index_js_c7933a4f__;
11
11
  },
12
12
  "../helper": function(module) {
@@ -23,7 +23,7 @@ function __webpack_require__(moduleId) {
23
23
  __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
24
24
  return module.exports;
25
25
  }
26
- var index_js_ = __webpack_require__("AWING/DataInput");
26
+ var index_js_ = __webpack_require__("../DataInput");
27
27
  jest.mock('../DataInput', ()=>({
28
28
  __esModule: true,
29
29
  default: jest.fn(),
@@ -91,7 +91,7 @@ jest.mock('@mui/material', ()=>({
91
91
  children: children
92
92
  })
93
93
  }));
94
- const mockInputFactory = __webpack_require__("AWING/DataInput")["default"];
94
+ const mockInputFactory = __webpack_require__("../DataInput")["default"];
95
95
  const mockCalculateValue = __webpack_require__("../helper").calculateValue;
96
96
  const mockConvertFormulaToBinaryTree = __webpack_require__("../helper").convertFormulaToBinaryTree;
97
97
  const mockReplaceFieldsValue = __webpack_require__("../helper").replaceFieldsValue;
@@ -23,6 +23,11 @@ export type DataFormProps<T extends object> = {
23
23
  onFormValid?(isValid: boolean): void;
24
24
  onValidateForm?(obj: Partial<T>): boolean;
25
25
  fieldPermissions?: FieldPermissions<T>;
26
+ /**
27
+ * Định nghĩa các field phụ thuộc:
28
+ * Khi một field thay đổi, các field trong mảng tương ứng sẽ được tự động reset giá trị.
29
+ */
30
+ fieldDependencies?: Partial<Record<keyof T, string[]>>;
26
31
  };
27
32
  export type FieldPermissions<T> = {
28
33
  [K in keyof T]?: boolean | FieldPermissions<T[K]>;
@@ -1 +1 @@
1
- {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/AWING/DataForm/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC5B,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE/C,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC9E;;OAEG;IACH,QAAQ,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACtE;;OAEG;IACH,WAAW,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,cAAc,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAC1C,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;KAC7B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACpD,CAAC"}
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/AWING/DataForm/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC5B,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE/C,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC9E;;OAEG;IACH,QAAQ,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACtE;;OAEG;IACH,WAAW,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,cAAc,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAC1C,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACvC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;KAC7B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACpD,CAAC"}
@@ -5,7 +5,7 @@ import { act, fireEvent, render, screen, waitFor } from "@testing-library/react"
5
5
  import containerOptimized from "./containerOptimized.js";
6
6
  import { createFormStateManager } from "./formStateManager.js";
7
7
  var __webpack_modules__ = {
8
- "AWING/DataInput": function(module) {
8
+ "../DataInput": function(module) {
9
9
  module.exports = __WEBPACK_EXTERNAL_MODULE__DataInput_index_js_c7933a4f__;
10
10
  }
11
11
  };
@@ -98,7 +98,7 @@ jest.mock('@mui/material', ()=>({
98
98
  children: children
99
99
  })
100
100
  }));
101
- const mockInputFactory = __webpack_require__("AWING/DataInput")["default"];
101
+ const mockInputFactory = __webpack_require__("../DataInput")["default"];
102
102
  describe('DataForm Optimized - Performance Tests', ()=>{
103
103
  let inputRenderCounts = {};
104
104
  const mockFields = [
@@ -41,7 +41,7 @@ const LazyAutocompleteInput_LazyAutocompleteInput = (fieldDefinition)=>{
41
41
  getOptionKey: (option)=>String(option.value ?? ''),
42
42
  disableClearable: !!disableClearable,
43
43
  getOptionDisabled: (option)=>Boolean(option?.disabled),
44
- noOptionsText: t('Common.NoOptions'),
44
+ noOptionsText: fetched ? t('Common.NoOptions') : t('Common.Loading'),
45
45
  loadingText: t('Common.Loading'),
46
46
  onChange: (_e, value)=>{
47
47
  const newValue = Array.isArray(value) ? value.map((x)=>x) : value;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "awing-library",
3
- "version": "2.1.2-dev.526",
3
+ "version": "2.1.2-dev.527",
4
4
  "license": "MIT",
5
5
  "exports": {
6
6
  ".": {