@dartech/arsenal-ui 1.4.1 → 1.4.3

Sign up to get free protection for your applications and to get access to all the features.
package/index.js CHANGED
@@ -746,12 +746,12 @@ const ControlAutocomplete = _a => {
746
746
  labelKey
747
747
  });
748
748
  const handleChange = (_, value) => {
749
- onChange(useStringValue ? value[valueKey] : value);
749
+ onChange(useStringValue ? _get(value, valueKey) : value);
750
750
  setLocalValue(value);
751
751
  };
752
752
  useEffect(() => {
753
753
  if (typeof value === 'string' && valueKey && useStringValue && !localValue && options.length && !!options[0] && typeof options[0] === 'object') {
754
- setLocalValue(options.find(el => el[valueKey] === value));
754
+ setLocalValue(options.find(el => _get(el, valueKey) === value));
755
755
  } else setLocalValue(value);
756
756
  }, [localValue, options, useStringValue, value, valueKey]);
757
757
  return jsx(Autocomplete, Object.assign({}, fieldProps, {
@@ -867,11 +867,11 @@ function ControlQueryAutocomplete(_a) {
867
867
  if (!isDirty && formValue && itemQueryFunction) {
868
868
  let requestValue = formValue;
869
869
  if (typeof formValue === 'object' && valueKey in formValue) {
870
- requestValue = formValue[valueKey];
870
+ requestValue = _get(formValue, valueKey);
871
871
  }
872
872
  itemQueryFunction(requestValue).then(item => {
873
873
  setFieldValue(item);
874
- setInputValue(item[labelKey]);
874
+ setInputValue(_get(item, labelKey));
875
875
  }).catch();
876
876
  }
877
877
  }, [formValue, isDirty, valueKey, labelKey, itemQueryFunction, setFieldValue]);
@@ -1507,7 +1507,7 @@ const isPropertyValueEmpty = value => {
1507
1507
  return true;
1508
1508
  };
1509
1509
  const formatPropertyValue = (propertyType, value, params) => {
1510
- if ((value === null || value === undefined) && propertyType !== PropertyType.BOOLEAN) {
1510
+ if (value === null || value === undefined) {
1511
1511
  return null;
1512
1512
  }
1513
1513
  let parsedValue = value;
@@ -1516,8 +1516,10 @@ const formatPropertyValue = (propertyType, value, params) => {
1516
1516
  case PropertyType.BOOLEAN:
1517
1517
  if (value) {
1518
1518
  parsedValue = true;
1519
- } else {
1519
+ } else if (!value && value !== null) {
1520
1520
  parsedValue = false;
1521
+ } else {
1522
+ parsedValue = null;
1521
1523
  }
1522
1524
  break;
1523
1525
  case PropertyType.INTEGER:
@@ -1627,15 +1629,12 @@ const propertiesArrayToObject = (properties, isGlobalParameter) => {
1627
1629
  name,
1628
1630
  isRequired,
1629
1631
  isMultiple,
1630
- isVisible,
1631
- isFillable,
1632
- isEditable,
1633
1632
  sortOrder,
1634
1633
  isEnabled,
1635
1634
  uiSettings,
1636
1635
  validationNode
1637
1636
  } = property;
1638
- const propertyType = typeof property.propertyType === 'string' ? property.propertyType : property.propertyType.value;
1637
+ const propertyType = property.propertyType ? typeof property.propertyType === 'string' ? property.propertyType : property.propertyType.value : null;
1639
1638
  const resultProperty = Object.assign({
1640
1639
  name,
1641
1640
  propertyType,
@@ -1648,9 +1647,6 @@ const propertiesArrayToObject = (properties, isGlobalParameter) => {
1648
1647
  }, getPropertyValue(Object.assign(Object.assign({}, property), {
1649
1648
  propertyType
1650
1649
  }), isGlobalParameter));
1651
- if (isVisible !== undefined) resultProperty.isVisible = isVisible;
1652
- if (isFillable !== undefined) resultProperty.isFillable = isFillable;
1653
- if (isEditable !== undefined) resultProperty.isEditable = isEditable;
1654
1650
  if ('isViewableInList' in property) {
1655
1651
  resultProperty['isViewableInList'] = property.isViewableInList;
1656
1652
  }
@@ -2283,10 +2279,12 @@ const ControlArrayInput = ({
2283
2279
  name,
2284
2280
  control,
2285
2281
  label,
2286
- required
2282
+ required,
2283
+ defaultValue: _defaultValue = null
2287
2284
  }) => {
2288
2285
  var _a, _b, _c;
2289
2286
  const [localValue, setLoacalValue] = useState('');
2287
+ const [error, setError] = useState(null);
2290
2288
  const {
2291
2289
  field: {
2292
2290
  onChange,
@@ -2298,22 +2296,25 @@ const ControlArrayInput = ({
2298
2296
  }
2299
2297
  } = useController({
2300
2298
  control,
2301
- name
2299
+ name,
2300
+ defaultValue: _defaultValue
2302
2301
  });
2303
2302
  const handleInputChange = useCallback(e => {
2304
2303
  const {
2305
2304
  value
2306
2305
  } = e.target;
2307
2306
  setLoacalValue(value);
2308
- if (Array.isArray(values) && values.includes(value)) ;
2309
- }, [values]);
2307
+ }, []);
2310
2308
  const handleAdd = useCallback(() => {
2311
2309
  var _a;
2312
- if (localValue && !((_a = errors[name]) === null || _a === void 0 ? void 0 : _a.message)) {
2310
+ setError(null);
2311
+ if (localValue && !((_a = errors[name]) === null || _a === void 0 ? void 0 : _a.message) && !(Array.isArray(values) && values.includes(localValue))) {
2313
2312
  onChange([...(values !== null && values !== void 0 ? values : []), localValue]);
2314
2313
  setLoacalValue('');
2314
+ } else if (Array.isArray(values) && values.includes(localValue)) {
2315
+ setError('This value already exists');
2315
2316
  }
2316
- }, [localValue, onChange, values, name, errors]);
2317
+ }, [localValue, errors, name, onChange, values]);
2317
2318
  const handleDelete = useCallback(value => {
2318
2319
  onChange(values.filter(code => code !== value));
2319
2320
  }, [values, onChange]);
@@ -2329,7 +2330,7 @@ const ControlArrayInput = ({
2329
2330
  variant: "subtitle1"
2330
2331
  }, {
2331
2332
  children: required ? jsxs(Fragment, {
2332
- children: [label, " ", jsx(Box, Object.assign({
2333
+ children: [label, ' ', jsx(Box, Object.assign({
2333
2334
  component: "span",
2334
2335
  color: "#D6331F"
2335
2336
  }, {
@@ -2377,7 +2378,11 @@ const ControlArrayInput = ({
2377
2378
  })
2378
2379
  }))
2379
2380
  }
2380
- })]
2381
+ }), error && jsx(FormHelperText, Object.assign({
2382
+ error: true
2383
+ }, {
2384
+ children: error
2385
+ }))]
2381
2386
  });
2382
2387
  };
2383
2388
 
@@ -4008,7 +4013,7 @@ const usePropertyFiller = ({
4008
4013
  case PropertyType.JSON:
4009
4014
  return {};
4010
4015
  case PropertyType.BOOLEAN:
4011
- return true;
4016
+ return false;
4012
4017
  case PropertyType.INTEGER:
4013
4018
  case PropertyType.BIG_DECIMAL:
4014
4019
  case PropertyType.BIG_INTEGER:
@@ -4030,8 +4035,8 @@ const usePropertyFiller = ({
4030
4035
  }, [value, fillOption, needRecursionCheck]);
4031
4036
  useEffect(() => {
4032
4037
  if (!fillOption) {
4033
- if (isPropertyValueEmpty(value) && (fillOptions === null || fillOptions === void 0 ? void 0 : fillOptions.length)) {
4034
- setFillOption(fillOptions[0].value);
4038
+ if (isPropertyValueEmpty(value) && !property.isRequired && (property.defaultValue === null || property.value === null)) {
4039
+ setFillOption('null');
4035
4040
  } else if (_useExpression && isExpression(value, needRecursionCheck)) {
4036
4041
  setFillOption('expression');
4037
4042
  } else {
@@ -4040,7 +4045,7 @@ const usePropertyFiller = ({
4040
4045
  } else if (!isDirty) {
4041
4046
  checkFillOption();
4042
4047
  }
4043
- }, [value, fillOption, fillOptions, _useExpression, isDirty, checkFillOption, needRecursionCheck]);
4048
+ }, [value, fillOption, fillOptions, _useExpression, isDirty, checkFillOption, needRecursionCheck, _required, property]);
4044
4049
  return {
4045
4050
  propertyType,
4046
4051
  valueLabel,
@@ -4248,6 +4253,7 @@ const ControlPropertyFiller = ({
4248
4253
  entityReferenceValueComponent: entityReferenceValueComponent,
4249
4254
  fileReferenceValueComponent: fileReferenceValueComponent
4250
4255
  }), fillOption === 'dem_builder' && jsx(CreateDefinition, {
4256
+ control: control,
4251
4257
  title: "JSON",
4252
4258
  definitionFieldName: name,
4253
4259
  entityReferenceDefinitionSources: entityReferenceDefinitionSources,
@@ -5329,6 +5335,7 @@ const defaultPropertyValues = {
5329
5335
  uiSettings: ''
5330
5336
  };
5331
5337
  const CreatePropertiesListContext = ({
5338
+ control,
5332
5339
  parentFieldName,
5333
5340
  hideAddButton,
5334
5341
  focusOnIndex,
@@ -5343,9 +5350,9 @@ const CreatePropertiesListContext = ({
5343
5350
  }) => {
5344
5351
  var _a;
5345
5352
  const fieldName = useMemo(() => parentFieldName ? `${parentFieldName}.properties` : `properties`, [parentFieldName]);
5353
+ // const { } = useControler({ name: fieldName })
5346
5354
  const {
5347
5355
  clearErrors,
5348
- control,
5349
5356
  setValue
5350
5357
  } = useFormContext();
5351
5358
  const {
@@ -5459,6 +5466,7 @@ const CreatePropertiesListContext = ({
5459
5466
  };
5460
5467
 
5461
5468
  const CreateDefinition = /*#__PURE__*/forwardRef(({
5469
+ control: extControl,
5462
5470
  definitionFieldName,
5463
5471
  title,
5464
5472
  hideCodeField,
@@ -5496,7 +5504,7 @@ const CreateDefinition = /*#__PURE__*/forwardRef(({
5496
5504
  }, {
5497
5505
  children: jsx(ControlInput, {
5498
5506
  required: true,
5499
- control: control,
5507
+ control: extControl !== null && extControl !== void 0 ? extControl : control,
5500
5508
  name: definitionFieldName ? `${definitionFieldName}.name` : `name`,
5501
5509
  label: "Name"
5502
5510
  })
@@ -5505,7 +5513,7 @@ const CreateDefinition = /*#__PURE__*/forwardRef(({
5505
5513
  }, {
5506
5514
  children: jsx(ControlInput, {
5507
5515
  required: true,
5508
- control: control,
5516
+ control: extControl !== null && extControl !== void 0 ? extControl : control,
5509
5517
  name: definitionFieldName ? `${definitionFieldName}.code` : `code`,
5510
5518
  label: "Code"
5511
5519
  })
@@ -5514,7 +5522,7 @@ const CreateDefinition = /*#__PURE__*/forwardRef(({
5514
5522
  }, {
5515
5523
  children: jsx(ControlNumberInput, {
5516
5524
  required: true,
5517
- control: control,
5525
+ control: extControl !== null && extControl !== void 0 ? extControl : control,
5518
5526
  name: definitionFieldName ? `${definitionFieldName}.version` : `version`,
5519
5527
  label: "Version"
5520
5528
  })
@@ -5527,6 +5535,7 @@ const CreateDefinition = /*#__PURE__*/forwardRef(({
5527
5535
  entityReferenceValueComponent: entityReferenceValueComponent,
5528
5536
  fileReferenceValueComponent: fileReferenceValueComponent
5529
5537
  }) : jsx(CreatePropertiesListContext, {
5538
+ control: extControl,
5530
5539
  required: _required,
5531
5540
  parentFieldName: definitionFieldName,
5532
5541
  entityReferenceDefinitionSources: entityReferenceDefinitionSources,
@@ -5829,7 +5838,6 @@ const PropertyFiller = ({
5829
5838
  } = useController({
5830
5839
  name,
5831
5840
  control,
5832
- defaultValue: property.defaultValue,
5833
5841
  rules: {
5834
5842
  validate: val => {
5835
5843
  if (required && val === null) return 'Please, fill this field';
@@ -5837,7 +5845,11 @@ const PropertyFiller = ({
5837
5845
  }
5838
5846
  }
5839
5847
  });
5840
- const value = watch(name);
5848
+ // const value = watch(name);
5849
+ const value = useWatch({
5850
+ control,
5851
+ name
5852
+ });
5841
5853
  const prevValueRef = useRef({});
5842
5854
  const {
5843
5855
  propertyType,
@@ -5911,14 +5923,24 @@ const PropertyFiller = ({
5911
5923
  clearErrors();
5912
5924
  }, [name, defaultProperyValue, clearErrors, value, setFillOption, fillOption, propertyType, setValue, property]);
5913
5925
  useEffect(() => {
5914
- if (!isDirty && (property.defaultValue || property.value) && !value) {
5915
- setValue(name, property.defaultValue || property.value);
5926
+ if (!isDirty && (property.defaultValue || property.value) && isPropertyValueEmpty(value)) {
5927
+ setValue(name, property.defaultValue || property.value, {
5928
+ shouldDirty: true
5929
+ });
5916
5930
  }
5917
- }, [isDirty, property, name, setValue, value]);
5931
+ }, [isDirty, property, name, setValue, value, required]);
5918
5932
  useEffect(() => {
5919
5933
  var _a;
5920
- if (value === undefined || property.isRequired && value === null && !(property.defaultValue || property.value)) {
5921
- setValue(name, (_a = prevValueRef.current[fillOption]) !== null && _a !== void 0 ? _a : defaultProperyValue);
5934
+ if (
5935
+ // value === undefined ||
5936
+ property.isRequired && isPropertyValueEmpty(value) && (property.defaultValue === null || property.value === null)) {
5937
+ setValue(name, (_a = prevValueRef.current[fillOption]) !== null && _a !== void 0 ? _a : defaultProperyValue, {
5938
+ shouldDirty: true
5939
+ });
5940
+ } else if ((value === undefined || value === null) && !property.isRequired && (property.defaultValue === null || property.value === null)) {
5941
+ setValue(name, null, {
5942
+ shouldDirty: true
5943
+ });
5922
5944
  }
5923
5945
  }, [value, setValue, defaultProperyValue, property, name, fillOption]);
5924
5946
  return jsxs(Grid, Object.assign({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dartech/arsenal-ui",
3
- "version": "1.4.1",
3
+ "version": "1.4.3",
4
4
  "author": "DAR",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -43,9 +43,6 @@ export interface Property {
43
43
  isMultiple: boolean;
44
44
  sortOrder: number;
45
45
  isEnabled: boolean;
46
- isVisible?: boolean;
47
- isFillable?: boolean;
48
- isEditable?: boolean;
49
46
  uiSettings: unknown;
50
47
  validationNode: unknown;
51
48
  key?: string;
@@ -1,7 +1,9 @@
1
1
  /// <reference types="react" />
2
2
  import { type RefMethods } from '../../Property/UpsertProperty';
3
+ import { Control } from 'react-hook-form';
3
4
  import { EntityReferenceProperty } from '../../../interfaces';
4
5
  type Props = {
6
+ control?: Control<any>;
5
7
  definitionFieldName?: string;
6
8
  title?: string;
7
9
  hideCodeField?: boolean;
@@ -5,6 +5,7 @@ type Props = {
5
5
  control: Control<any>;
6
6
  label: ReactNode;
7
7
  required?: boolean;
8
+ defaultValue?: [] | null;
8
9
  };
9
- export declare const ControlArrayInput: ({ name, control, label, required }: Props) => JSX.Element;
10
+ export declare const ControlArrayInput: ({ name, control, label, required, defaultValue, }: Props) => JSX.Element;
10
11
  export {};
@@ -1,6 +1,8 @@
1
1
  /// <reference types="react" />
2
+ import { Control } from 'react-hook-form';
2
3
  import { CustomPropertyFieldProps, EntityReferenceProperty } from '../../../interfaces';
3
4
  type Props = {
5
+ control: Control<any>;
4
6
  parentFieldName?: string;
5
7
  hideAddButton?: boolean;
6
8
  focusOnIndex?: number;
@@ -24,5 +26,5 @@ type Props = {
24
26
  name: string;
25
27
  }>;
26
28
  };
27
- export declare const CreatePropertiesListContext: ({ parentFieldName, hideAddButton, focusOnIndex, required, entityDefinition, globalParameter, customPropertyFields, parentRemove, entityReferenceDefinitionSources, entityReferenceValueComponent, fileReferenceValueComponent, }: Props) => JSX.Element;
29
+ export declare const CreatePropertiesListContext: ({ control, parentFieldName, hideAddButton, focusOnIndex, required, entityDefinition, globalParameter, customPropertyFields, parentRemove, entityReferenceDefinitionSources, entityReferenceValueComponent, fileReferenceValueComponent, }: Props) => JSX.Element;
28
30
  export default CreatePropertiesListContext;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import { Control } from 'react-hook-form';
2
3
  type Props = {
3
4
  control: Control<any>;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  type Props = {
2
3
  name: string;
3
4
  label?: string;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  type Props = {
2
3
  name: string;
3
4
  format: string;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  type Props = {
2
3
  name: string;
3
4
  label?: string;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  type Props = {
2
3
  name: string;
3
4
  label?: string;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import { PropertyUnion } from '../../../interfaces';
2
3
  type PropertyItemProps = {
3
4
  property: PropertyUnion;