@dartcom/ui-kit 10.1.0 → 10.1.2

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 (39) hide show
  1. package/dist/components/date-field/date-field.d.ts +6 -2
  2. package/dist/components/date-field/date-field.d.ts.map +1 -1
  3. package/dist/components/layers/leaflet/layers/traffic-sign/config/constants.d.ts +1 -0
  4. package/dist/components/layers/leaflet/layers/traffic-sign/config/constants.d.ts.map +1 -1
  5. package/dist/components/layers/leaflet/layers/traffic-sign/lib/types.d.ts +6 -5
  6. package/dist/components/layers/leaflet/layers/traffic-sign/lib/types.d.ts.map +1 -1
  7. package/dist/components/layers/leaflet/layers/traffic-sign/lib/utils.d.ts +4 -8
  8. package/dist/components/layers/leaflet/layers/traffic-sign/lib/utils.d.ts.map +1 -1
  9. package/dist/components/layers/leaflet/layers/traffic-sign/traffic-sign-dop/ui/forms/create/create.d.ts.map +1 -1
  10. package/dist/components/layers/leaflet/layers/traffic-sign/traffic-sign-dop/ui/forms/update/update.d.ts.map +1 -1
  11. package/dist/components/layers/leaflet/layers/traffic-sign/ui/forms/create/create.d.ts.map +1 -1
  12. package/dist/components/layers/leaflet/layers/traffic-sign/ui/forms/create/create.stories.d.ts.map +1 -1
  13. package/dist/components/layers/leaflet/layers/traffic-sign/ui/forms/create/schema.d.ts.map +1 -1
  14. package/dist/components/layers/leaflet/layers/traffic-sign/ui/forms/create/types.d.ts +4 -2
  15. package/dist/components/layers/leaflet/layers/traffic-sign/ui/forms/create/types.d.ts.map +1 -1
  16. package/dist/components/layers/leaflet/layers/traffic-sign/ui/forms/schema.d.ts +41 -1
  17. package/dist/components/layers/leaflet/layers/traffic-sign/ui/forms/schema.d.ts.map +1 -1
  18. package/dist/components/layers/leaflet/layers/traffic-sign/ui/forms/update/schema.d.ts.map +1 -1
  19. package/dist/components/layers/leaflet/layers/traffic-sign/ui/forms/update/update.d.ts.map +1 -1
  20. package/dist/components/layers/leaflet/layers/traffic-sign/ui/forms/update/update.stories.d.ts.map +1 -1
  21. package/dist/components/layers/leaflet/layers/traffic-sign/ui/index.d.ts +1 -0
  22. package/dist/components/layers/leaflet/layers/traffic-sign/ui/index.d.ts.map +1 -1
  23. package/dist/components/layers/leaflet/layers/traffic-sign/ui/preview-image/preview-image.d.ts.map +1 -1
  24. package/dist/components/layers/leaflet/layers/traffic-sign/ui/preview-title/index.d.ts +2 -0
  25. package/dist/components/layers/leaflet/layers/traffic-sign/ui/preview-title/index.d.ts.map +1 -0
  26. package/dist/components/layers/leaflet/layers/traffic-sign/ui/preview-title/preview-title.d.ts +8 -0
  27. package/dist/components/layers/leaflet/layers/traffic-sign/ui/preview-title/preview-title.d.ts.map +1 -0
  28. package/dist/components/layers/leaflet/lib/hooks/useGetLeafletLayer.d.ts.map +1 -1
  29. package/dist/index.cjs +180 -87
  30. package/dist/index.cjs.map +1 -1
  31. package/dist/index.esm.js +4 -4
  32. package/dist/index.esm.js.map +1 -1
  33. package/dist/services/index.d.ts +1 -0
  34. package/dist/services/index.d.ts.map +1 -1
  35. package/dist/services/logger/index.d.ts +2 -0
  36. package/dist/services/logger/index.d.ts.map +1 -0
  37. package/dist/services/logger/logger.d.ts +21 -0
  38. package/dist/services/logger/logger.d.ts.map +1 -0
  39. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -16907,6 +16907,20 @@ const _testApiKeys = {
16907
16907
  invalid: 'abcdefghijklmnopqrstuvwxyz0123456789',
16908
16908
  };
16909
16909
 
16910
+ class LoggerService {
16911
+ constructor() { }
16912
+ log({ message, context, meta, }) {
16913
+ console.log(context, message, meta);
16914
+ }
16915
+ warn({ message, context, meta, }) {
16916
+ console.warn(context, message, meta);
16917
+ }
16918
+ error({ message, context, meta, }) {
16919
+ console.error(context, message, meta);
16920
+ }
16921
+ }
16922
+ const loggerService = new LoggerService();
16923
+
16910
16924
  exports.API_METHODS = void 0;
16911
16925
  (function (API_METHODS) {
16912
16926
  API_METHODS["GET"] = "GET";
@@ -27249,6 +27263,7 @@ const trafficSignDateFields = [
27249
27263
  'verification_date',
27250
27264
  'warranty_expr_date',
27251
27265
  ];
27266
+ const trafficSignDateFormat = 'dd.MM.yyyy';
27252
27267
 
27253
27268
  const getTrafficSignLayers = (source) => {
27254
27269
  const layers = [];
@@ -27320,12 +27335,25 @@ const getTrafficSignTitlesOptions = () => {
27320
27335
  return options;
27321
27336
  };
27322
27337
  const getTrafficSignFrontendDates = (fields) => {
27323
- const frontendDates = trafficSignDateFields.reduce((acc, fieldName) => ({
27324
- ...acc,
27325
- [fieldName]: new Date(fields[fieldName]),
27326
- }), {});
27338
+ const frontendDates = {
27339
+ ...trafficSignFrontendDates,
27340
+ };
27341
+ trafficSignDateFields.forEach((dateField) => {
27342
+ const frontendDate = new Date(fields[dateField]);
27343
+ frontendDates[dateField] = frontendDate;
27344
+ });
27327
27345
  return frontendDates;
27328
27346
  };
27347
+ const getTrafficSignBackendDates = (fields) => {
27348
+ const backendDates = {
27349
+ ...trafficSignBackendDates,
27350
+ };
27351
+ trafficSignDateFields.forEach((dateField) => {
27352
+ const backendDate = getBackendDate(fields[dateField]);
27353
+ backendDates[dateField] = backendDate;
27354
+ });
27355
+ return backendDates;
27356
+ };
27329
27357
  const parseTrafficSignCSVFile = (data) => {
27330
27358
  const trafficSigns = data;
27331
27359
  const trafficSignData = {};
@@ -27342,6 +27370,13 @@ const getTrafficSignTitleByNumber = (number) => {
27342
27370
  const title = allTrafficSigns[number].title;
27343
27371
  return title;
27344
27372
  };
27373
+ const getBackendDate = (date) => {
27374
+ const year = date.getFullYear();
27375
+ const month = `${date.getUTCMonth() + 1}`.padStart(2, '0');
27376
+ const day = `${date.getUTCDate()}`.padStart(2, '0');
27377
+ const backendDate = `${year}-${month}-${day}`;
27378
+ return backendDate;
27379
+ };
27345
27380
 
27346
27381
  /**
27347
27382
  * table-core
@@ -30725,10 +30760,6 @@ const TrafficSignPreviewImage = ({ number, }) => {
30725
30760
  type: 'preview',
30726
30761
  number,
30727
30762
  });
30728
- const allTrafficSigns = {
30729
- ...trafficSigns,
30730
- ...trafficSignsDop,
30731
- };
30732
30763
  const { height } = allTrafficSigns[number];
30733
30764
  return (jsxRuntime.jsx("img", { src: imgSrc, id: imgId, width: trafficSignWidths['preview'], height: height * 2, ref: imgRef, alt: `traffic-sign-${number}` }));
30734
30765
  };
@@ -30977,11 +31008,11 @@ const CustomCard = ({ children, sx = {}, ...props }) => {
30977
31008
  }, children: children }));
30978
31009
  };
30979
31010
 
30980
- function DateField({ name, label }) {
31011
+ function DateField({ name, ...props }) {
30981
31012
  const { control } = useFormContext$1();
30982
31013
  const id = React__namespace.useId();
30983
31014
  return (jsxRuntime.jsx(Controller, { control: control, name: name, render: ({ field }) => {
30984
- return (jsxRuntime.jsx(DateField$1.DateField, { ...field, id: id, label: label, slots: {
31015
+ return (jsxRuntime.jsx(DateField$1.DateField, { ...props, ...field, id: id, slots: {
30985
31016
  field: TextField,
30986
31017
  } }));
30987
31018
  } }));
@@ -31007,7 +31038,7 @@ const TrafficSignDopUpdateForm = ({ index, onDelete, onUpdate, }) => {
31007
31038
  description: 'Вы действительно хотите удалить данный traffic sign?',
31008
31039
  }, onDelete: () => {
31009
31040
  onDelete(trafficSign);
31010
- } }), jsxRuntime.jsx(TrafficSignPreviewImage$1, { number: dop_sign_number }), jsxRuntime.jsxs(material.Typography, { children: [getTrafficSignTitleByNumber(dop_sign_number), " (", dop_sign_number, ")"] })] }) }), jsxRuntime.jsx(material.AccordionDetails, { children: jsxRuntime.jsx(TrafficSignTable$1, { pageSize: 5, filtered: {
31041
+ } }), jsxRuntime.jsx(TrafficSignPreviewTitle$1, { number: dop_sign_number })] }) }), jsxRuntime.jsx(material.AccordionDetails, { children: jsxRuntime.jsx(TrafficSignTable$1, { pageSize: 5, filtered: {
31011
31042
  type: false,
31012
31043
  }, trafficSigns: trafficSignsDop, onSelect: ({ title, number }) => {
31013
31044
  setValue(`${fieldName$1}.${index}.dop_sign_number`, number);
@@ -31017,19 +31048,19 @@ const TrafficSignDopUpdateForm = ({ index, onDelete, onUpdate, }) => {
31017
31048
  display: 'grid',
31018
31049
  gridTemplateColumns: 'repeat(2, 1fr)',
31019
31050
  gap: '12px',
31020
- }, children: [jsxRuntime.jsx(DateField, { ...register(`${fieldName$1}.${index}.placement_date`), label: trafficSignFieldsTitles.placement_date }), jsxRuntime.jsx(DateField, { ...register(`${fieldName$1}.${index}.verification_date`), label: trafficSignFieldsTitles.verification_date }), jsxRuntime.jsx(DateField, { ...register(`${fieldName$1}.${index}.future_maintanance_date`), label: trafficSignFieldsTitles.future_maintanance_date }), jsxRuntime.jsx(DateField, { ...register(`${fieldName$1}.${index}.rapair_performed_date`), label: trafficSignFieldsTitles.rapair_performed_date }), jsxRuntime.jsx(DateField, { ...register(`${fieldName$1}.${index}.warranty_expr_date`), label: trafficSignFieldsTitles.warranty_expr_date })] }), jsxRuntime.jsx(Button, { onClick: () => {
31051
+ }, children: [jsxRuntime.jsx(DateField, { ...register(`${fieldName$1}.${index}.placement_date`), label: trafficSignFieldsTitles.placement_date, format: trafficSignDateFormat }), jsxRuntime.jsx(DateField, { ...register(`${fieldName$1}.${index}.verification_date`), label: trafficSignFieldsTitles.verification_date, format: trafficSignDateFormat }), jsxRuntime.jsx(DateField, { ...register(`${fieldName$1}.${index}.future_maintanance_date`), label: trafficSignFieldsTitles.future_maintanance_date, format: trafficSignDateFormat }), jsxRuntime.jsx(DateField, { ...register(`${fieldName$1}.${index}.rapair_performed_date`), label: trafficSignFieldsTitles.rapair_performed_date, format: trafficSignDateFormat }), jsxRuntime.jsx(DateField, { ...register(`${fieldName$1}.${index}.warranty_expr_date`), label: trafficSignFieldsTitles.warranty_expr_date, format: trafficSignDateFormat })] }), jsxRuntime.jsx(Button, { onClick: () => {
31021
31052
  onUpdate(trafficSign);
31022
31053
  }, children: "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C" })] }));
31023
31054
  };
31024
31055
  var TrafficSignDopUpdateForm$1 = observer(TrafficSignDopUpdateForm);
31025
31056
 
31026
- const fieldName = 'dops';
31057
+ const fieldName = 'newDops';
31027
31058
  const TrafficSignDopCreateForm = ({ index, onDelete, }) => {
31059
+ const { palette } = material.useTheme();
31028
31060
  const [expanded, setExpanded] = React__namespace.useState(false);
31029
31061
  const { setValue, register, watch } = useFormContext$1();
31030
31062
  const trafficSign = watch(`${fieldName}.${index}`);
31031
31063
  const { dop_sign_number } = trafficSign;
31032
- const title = getTrafficSignTitleByNumber(dop_sign_number);
31033
31064
  return (jsxRuntime.jsxs(material.Box, { sx: {
31034
31065
  display: 'grid',
31035
31066
  gap: '12px',
@@ -31039,10 +31070,13 @@ const TrafficSignDopCreateForm = ({ index, onDelete, }) => {
31039
31070
  display: 'flex',
31040
31071
  alignItems: 'center',
31041
31072
  gap: '12px',
31042
- }, children: [jsxRuntime.jsx(DeleteButton, { notification: {
31073
+ }, children: [jsxRuntime.jsx(Paragraph, { variant: "h6", color: "error", sx: {
31074
+ fontWeight: 700,
31075
+ color: palette.primary['main'],
31076
+ }, children: "NEW" }), jsxRuntime.jsx(DeleteButton, { notification: {
31043
31077
  title: 'Удалить traffic sign',
31044
31078
  description: 'Вы действительно хотите удалить данный traffic sign?',
31045
- }, onDelete: onDelete }), jsxRuntime.jsx(TrafficSignPreviewImage$1, { number: dop_sign_number }), jsxRuntime.jsxs(material.Typography, { children: [title, " (", dop_sign_number, ")"] })] }) }), jsxRuntime.jsx(material.AccordionDetails, { children: jsxRuntime.jsx(TrafficSignTable$1, { pageSize: 5, filtered: {
31079
+ }, onDelete: onDelete }), jsxRuntime.jsx(TrafficSignPreviewTitle$1, { number: dop_sign_number })] }) }), jsxRuntime.jsx(material.AccordionDetails, { children: jsxRuntime.jsx(TrafficSignTable$1, { pageSize: 5, filtered: {
31046
31080
  type: false,
31047
31081
  }, trafficSigns: trafficSignsDop, onSelect: ({ title, number }) => {
31048
31082
  setValue(`${fieldName}.${index}.dop_sign_number`, number);
@@ -31052,10 +31086,20 @@ const TrafficSignDopCreateForm = ({ index, onDelete, }) => {
31052
31086
  display: 'grid',
31053
31087
  gridTemplateColumns: 'repeat(2, 1fr)',
31054
31088
  gap: '12px',
31055
- }, children: [jsxRuntime.jsx(DateField, { ...register(`${fieldName}.${index}.placement_date`), label: trafficSignFieldsTitles.placement_date }), jsxRuntime.jsx(DateField, { ...register(`${fieldName}.${index}.verification_date`), label: trafficSignFieldsTitles.verification_date }), jsxRuntime.jsx(DateField, { ...register(`${fieldName}.${index}.future_maintanance_date`), label: trafficSignFieldsTitles.future_maintanance_date }), jsxRuntime.jsx(DateField, { ...register(`${fieldName}.${index}.rapair_performed_date`), label: trafficSignFieldsTitles.rapair_performed_date }), jsxRuntime.jsx(DateField, { ...register(`${fieldName}.${index}.warranty_expr_date`), label: trafficSignFieldsTitles.warranty_expr_date })] })] }));
31089
+ }, children: [jsxRuntime.jsx(DateField, { ...register(`${fieldName}.${index}.placement_date`), label: trafficSignFieldsTitles.placement_date, format: trafficSignDateFormat }), jsxRuntime.jsx(DateField, { ...register(`${fieldName}.${index}.verification_date`), label: trafficSignFieldsTitles.verification_date, format: trafficSignDateFormat }), jsxRuntime.jsx(DateField, { ...register(`${fieldName}.${index}.future_maintanance_date`), label: trafficSignFieldsTitles.future_maintanance_date, format: trafficSignDateFormat }), jsxRuntime.jsx(DateField, { ...register(`${fieldName}.${index}.rapair_performed_date`), label: trafficSignFieldsTitles.rapair_performed_date, format: trafficSignDateFormat }), jsxRuntime.jsx(DateField, { ...register(`${fieldName}.${index}.warranty_expr_date`), label: trafficSignFieldsTitles.warranty_expr_date, format: trafficSignDateFormat })] })] }));
31056
31090
  };
31057
31091
  var TrafficSignDopCreateForm$1 = observer(TrafficSignDopCreateForm);
31058
31092
 
31093
+ const TrafficSignPreviewTitle = ({ number, }) => {
31094
+ const title = getTrafficSignTitleByNumber(number);
31095
+ return (jsxRuntime.jsxs(material.Box, { sx: {
31096
+ display: 'flex',
31097
+ alignItems: 'center',
31098
+ gap: '12px',
31099
+ }, children: [jsxRuntime.jsx(TrafficSignPreviewImage$1, { number: number }), jsxRuntime.jsxs(material.Typography, { children: [title, " (", number, ")"] })] }));
31100
+ };
31101
+ var TrafficSignPreviewTitle$1 = observer(TrafficSignPreviewTitle);
31102
+
31059
31103
  /**
31060
31104
  * Based on Kendo UI Core expression code <https://github.com/telerik/kendo-ui-core#license-information>
31061
31105
  */
@@ -33650,51 +33694,61 @@ class ArraySchema extends Schema {
33650
33694
  }
33651
33695
  create$2.prototype = ArraySchema.prototype;
33652
33696
 
33653
- const updatedTrafficSignDopSchema = create$3().shape({
33697
+ const trafficSignDopIdsFieldsSchema = {
33654
33698
  traffic_sign_id: create$6().required(),
33655
33699
  dop_id: create$6().required(),
33700
+ };
33701
+ const trafficSignDopMainFieldsSchema = {
33656
33702
  dop_sign_number: create$6().required(),
33657
33703
  dop_sign_title: create$6().required(),
33658
- dop_sign_text: create$6(),
33659
- comment: create$6(),
33660
33704
  status: create$6().required(),
33705
+ dop_sign_text: create$6().nullable(),
33706
+ comment: create$6().nullable(),
33707
+ };
33708
+ const trafficSignDopDatesFieldsSchema = {
33661
33709
  future_maintanance_date: create$4().required(),
33662
33710
  placement_date: create$4().required(),
33663
33711
  rapair_performed_date: create$4().required(),
33664
33712
  verification_date: create$4().required(),
33665
33713
  warranty_expr_date: create$4().required(),
33714
+ };
33715
+ const updatedTrafficSignDopSchema = create$3().shape({
33716
+ ...trafficSignDopIdsFieldsSchema,
33717
+ ...trafficSignDopMainFieldsSchema,
33718
+ ...trafficSignDopDatesFieldsSchema,
33666
33719
  });
33667
33720
  const createdTrafficSignDopSchema = create$3().shape({
33668
- dop_sign_number: create$6().required(),
33669
- dop_sign_title: create$6().required(),
33670
- dop_sign_text: create$6(),
33671
- comment: create$6(),
33672
- status: create$6().required(),
33673
- future_maintanance_date: create$4().required(),
33674
- placement_date: create$4().required(),
33675
- rapair_performed_date: create$4().required(),
33676
- verification_date: create$4().required(),
33677
- warranty_expr_date: create$4().required(),
33721
+ ...trafficSignDopMainFieldsSchema,
33722
+ ...trafficSignDopDatesFieldsSchema,
33678
33723
  });
33679
-
33680
- const schema$2 = create$3()
33681
- .shape({
33682
- traffic_sign_id: create$6().required(),
33683
- dit_id: create$5().required(),
33684
- tsodd_id: create$5().required(),
33685
- pillar_id: create$6(),
33724
+ const mainFieldsSchema = {
33686
33725
  traffic_sign_type: create$6().required(),
33687
33726
  traffic_sign_number: create$6().required(),
33688
33727
  traffic_sign_title: create$6().required(),
33689
33728
  status: create$6().required(),
33690
- comment: create$6(),
33691
- traffic_sign_value: create$6(),
33692
- direction: create$5(),
33729
+ comment: create$6().nullable(),
33730
+ traffic_sign_value: create$6().nullable(),
33731
+ direction: create$5().nullable(),
33732
+ };
33733
+ const datesFieldsSchema = {
33693
33734
  future_maintanance_date: create$4().required(),
33694
33735
  placement_date: create$4().required(),
33695
33736
  rapair_performed_date: create$4().required(),
33696
33737
  verification_date: create$4().required(),
33697
33738
  warranty_expr_date: create$4().required(),
33739
+ };
33740
+ const idsFieldsSchema = {
33741
+ traffic_sign_id: create$6().required(),
33742
+ dit_id: create$5().required(),
33743
+ tsodd_id: create$5().required(),
33744
+ pillar_id: create$6().nullable(),
33745
+ };
33746
+
33747
+ const schema$2 = create$3()
33748
+ .shape({
33749
+ ...mainFieldsSchema,
33750
+ ...datesFieldsSchema,
33751
+ ...idsFieldsSchema,
33698
33752
  oldDops: create$2().of(updatedTrafficSignDopSchema).required(),
33699
33753
  newDops: create$2().of(createdTrafficSignDopSchema).required(),
33700
33754
  });
@@ -33722,7 +33776,7 @@ const TrafficSignUpdateForm = ({ trafficSign, onSubmit, onDelete, onDeleteDop, o
33722
33776
  newDops: [],
33723
33777
  },
33724
33778
  });
33725
- const { control, register, setValue, watch, formState: { isValid }, } = form;
33779
+ const { control, register, setValue, watch, formState: { errors }, } = form;
33726
33780
  const oldDopsFieldArray = useFieldArray({
33727
33781
  control,
33728
33782
  name: 'oldDops',
@@ -33732,9 +33786,19 @@ const TrafficSignUpdateForm = ({ trafficSign, onSubmit, onDelete, onDeleteDop, o
33732
33786
  name: 'newDops',
33733
33787
  });
33734
33788
  const number = watch('traffic_sign_number');
33735
- return (jsxRuntime.jsxs(CustomForm, { form: form, onSubmit: onSubmit, children: [jsxRuntime.jsxs(lab.TabContext, { value: tabsValue, children: [jsxRuntime.jsx(material.Box, { sx: { borderBottom: 1, borderColor: 'divider' }, children: jsxRuntime.jsxs(lab.TabList, { onChange: handleChange, "aria-label": "lab API tabs example", children: [jsxRuntime.jsx(material.Tab, { label: "TrafficSign", value: "1", sx: {
33789
+ React__namespace.useEffect(() => {
33790
+ const isErrors = Object.keys(errors).length > 0;
33791
+ if (isErrors) {
33792
+ loggerService.warn({
33793
+ message: 'Ошибки валидации формы',
33794
+ context: 'TrafficSignUpdateForm',
33795
+ meta: errors,
33796
+ });
33797
+ }
33798
+ }, [errors]);
33799
+ return (jsxRuntime.jsxs(CustomForm, { form: form, onSubmit: onSubmit, children: [jsxRuntime.jsxs(lab.TabContext, { value: tabsValue, children: [jsxRuntime.jsx(material.Box, { sx: { borderBottom: 1, borderColor: 'divider' }, children: jsxRuntime.jsxs(lab.TabList, { onChange: handleChange, "aria-label": "lab API tabs example", children: [jsxRuntime.jsx(material.Tab, { label: "Traffic Sign", value: "1", sx: {
33736
33800
  textTransform: 'none',
33737
- } }), jsxRuntime.jsx(material.Tab, { label: "TrafficSignDop", value: "2", sx: {
33801
+ } }), jsxRuntime.jsx(material.Tab, { label: "Traffic Sign Dop", value: "2", sx: {
33738
33802
  textTransform: 'none',
33739
33803
  } })] }) }), jsxRuntime.jsx(lab.TabPanel, { value: "1", children: jsxRuntime.jsxs(material.Box, { sx: {
33740
33804
  display: 'grid',
@@ -33750,7 +33814,7 @@ const TrafficSignUpdateForm = ({ trafficSign, onSubmit, onDelete, onDeleteDop, o
33750
33814
  description: 'Вы действительно хотите удалить данный traffic sign?',
33751
33815
  }, onDelete: () => {
33752
33816
  onDelete(trafficSign);
33753
- } }), jsxRuntime.jsx(TrafficSignPreviewImage$1, { number: number }), jsxRuntime.jsxs(material.Typography, { children: [getTrafficSignTitleByNumber(number), " (", number, ")"] })] }) }), jsxRuntime.jsx(material.AccordionDetails, { children: jsxRuntime.jsx(TrafficSignTable$1, { trafficSigns: trafficSigns, pageSize: 5, onSelect: ({ title, number, type }) => {
33817
+ } }), jsxRuntime.jsx(TrafficSignPreviewTitle$1, { number: number })] }) }), jsxRuntime.jsx(material.AccordionDetails, { children: jsxRuntime.jsx(TrafficSignTable$1, { trafficSigns: trafficSigns, pageSize: 5, onSelect: ({ title, number, type }) => {
33754
33818
  setValue('traffic_sign_number', number);
33755
33819
  setValue('traffic_sign_title', title);
33756
33820
  setValue('traffic_sign_type', type);
@@ -33759,34 +33823,24 @@ const TrafficSignUpdateForm = ({ trafficSign, onSubmit, onDelete, onDeleteDop, o
33759
33823
  display: 'grid',
33760
33824
  gridTemplateColumns: 'repeat(2, 1fr)',
33761
33825
  gap: '12px',
33762
- }, children: [jsxRuntime.jsx(DateField, { ...register('placement_date'), label: trafficSignFieldsTitles.placement_date }), jsxRuntime.jsx(DateField, { ...register('verification_date'), label: trafficSignFieldsTitles.verification_date }), jsxRuntime.jsx(DateField, { ...register('future_maintanance_date'), label: trafficSignFieldsTitles.future_maintanance_date }), jsxRuntime.jsx(DateField, { ...register('rapair_performed_date'), label: trafficSignFieldsTitles.rapair_performed_date }), jsxRuntime.jsx(DateField, { ...register('warranty_expr_date'), label: trafficSignFieldsTitles.warranty_expr_date })] })] }) }), jsxRuntime.jsx(lab.TabPanel, { value: "2", children: jsxRuntime.jsxs(material.Box, { sx: {
33826
+ }, children: [jsxRuntime.jsx(DateField, { ...register('placement_date'), label: trafficSignFieldsTitles.placement_date, format: trafficSignDateFormat }), jsxRuntime.jsx(DateField, { ...register('verification_date'), label: trafficSignFieldsTitles.verification_date, format: trafficSignDateFormat }), jsxRuntime.jsx(DateField, { ...register('future_maintanance_date'), label: trafficSignFieldsTitles.future_maintanance_date, format: trafficSignDateFormat }), jsxRuntime.jsx(DateField, { ...register('rapair_performed_date'), label: trafficSignFieldsTitles.rapair_performed_date, format: trafficSignDateFormat }), jsxRuntime.jsx(DateField, { ...register('warranty_expr_date'), label: trafficSignFieldsTitles.warranty_expr_date, format: trafficSignDateFormat })] })] }) }), jsxRuntime.jsx(lab.TabPanel, { value: "2", children: jsxRuntime.jsxs(material.Box, { sx: {
33763
33827
  display: 'grid',
33764
33828
  gap: '24px',
33765
33829
  }, children: [jsxRuntime.jsx(material.Box, { children: jsxRuntime.jsx(Button, { onClick: () => {
33766
33830
  newDopsFieldArray.append({
33767
33831
  ...createdTrafficSignDop,
33768
33832
  });
33769
- }, children: "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u044B\u0439 traffic sign" }) }), oldDopsFieldArray.fields.map((_, index) => (jsxRuntime.jsx(CustomCard, { children: jsxRuntime.jsx(TrafficSignDopUpdateForm$1, { index: index, onDelete: onDeleteDop, onUpdate: onUpdateDop }) }, index))), newDopsFieldArray.fields.map((_, index) => (jsxRuntime.jsx(CustomCard, { children: jsxRuntime.jsx(TrafficSignDopCreateForm$1, { onDelete: () => {
33833
+ }, children: "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u044B\u0439 traffic sign" }) }), oldDopsFieldArray.fields.map(({ id }, index) => (jsxRuntime.jsx(CustomCard, { children: jsxRuntime.jsx(TrafficSignDopUpdateForm$1, { index: index, onDelete: onDeleteDop, onUpdate: onUpdateDop }) }, id))), newDopsFieldArray.fields.map(({ id }, index) => (jsxRuntime.jsx(CustomCard, { children: jsxRuntime.jsx(TrafficSignDopCreateForm$1, { onDelete: () => {
33770
33834
  newDopsFieldArray.remove(index);
33771
- }, index: index }) }, index)))] }) })] }), jsxRuntime.jsx(Button, { type: "submit", disabled: !isValid, children: "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C" })] }));
33835
+ }, index: index }) }, id)))] }) })] }), jsxRuntime.jsx(Button, { type: "submit", children: "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C" })] }));
33772
33836
  };
33773
33837
  var update = observer(TrafficSignUpdateForm);
33774
33838
 
33775
33839
  const schema$1 = create$3()
33776
33840
  .shape({
33777
- traffic_sign_type: create$6().required(),
33778
- traffic_sign_number: create$6().required(),
33779
- traffic_sign_title: create$6().required(),
33780
- status: create$6().required(),
33781
- comment: create$6(),
33782
- traffic_sign_value: create$6(),
33783
- direction: create$5(),
33784
- future_maintanance_date: create$4().required(),
33785
- placement_date: create$4().required(),
33786
- rapair_performed_date: create$4().required(),
33787
- verification_date: create$4().required(),
33788
- warranty_expr_date: create$4().required(),
33789
- dops: create$2().of(createdTrafficSignDopSchema).required(),
33841
+ ...mainFieldsSchema,
33842
+ ...datesFieldsSchema,
33843
+ newDops: create$2().of(createdTrafficSignDopSchema).required(),
33790
33844
  });
33791
33845
 
33792
33846
  const TrafficSignCreateForm = ({ onSubmit, }) => {
@@ -33801,12 +33855,22 @@ const TrafficSignCreateForm = ({ onSubmit, }) => {
33801
33855
  ...cratedTrafficSign,
33802
33856
  },
33803
33857
  });
33804
- const { control, register, setValue, watch, formState: { isValid }, } = form;
33805
- const dopsFieldArray = useFieldArray({
33858
+ const { control, register, setValue, watch, formState: { errors }, } = form;
33859
+ const newDopsFieldArray = useFieldArray({
33806
33860
  control,
33807
- name: 'dops',
33861
+ name: 'newDops',
33808
33862
  });
33809
33863
  const number = watch('traffic_sign_number');
33864
+ React__namespace.useEffect(() => {
33865
+ const isErrors = Object.keys(errors).length > 0;
33866
+ if (isErrors) {
33867
+ loggerService.warn({
33868
+ message: 'Ошибки валидации формы',
33869
+ context: 'TrafficSignCreateForm',
33870
+ meta: errors,
33871
+ });
33872
+ }
33873
+ }, [errors]);
33810
33874
  return (jsxRuntime.jsxs(CustomForm, { form: form, onSubmit: onSubmit, children: [jsxRuntime.jsxs(lab.TabContext, { value: tabsValue, children: [jsxRuntime.jsx(material.Box, { sx: { borderBottom: 1, borderColor: 'divider' }, children: jsxRuntime.jsxs(lab.TabList, { onChange: handleChange, "aria-label": "lab API tabs example", children: [jsxRuntime.jsx(material.Tab, { label: "TrafficSign", value: "1", sx: {
33811
33875
  textTransform: 'none',
33812
33876
  } }), jsxRuntime.jsx(material.Tab, { label: "TrafficSignDop", value: "2", sx: {
@@ -33816,11 +33880,7 @@ const TrafficSignCreateForm = ({ onSubmit, }) => {
33816
33880
  gap: '12px',
33817
33881
  }, children: [jsxRuntime.jsxs(material.Accordion, { expanded: expanded, children: [jsxRuntime.jsx(material.AccordionSummary, { expandIcon: jsxRuntime.jsx(ArrowDownwardIcon, {}), onClick: () => {
33818
33882
  setExpanded((prevState) => !prevState);
33819
- }, "aria-controls": "panel1-content", id: "panel1-header", children: jsxRuntime.jsxs(material.Box, { sx: {
33820
- display: 'flex',
33821
- alignItems: 'center',
33822
- gap: '12px',
33823
- }, children: [jsxRuntime.jsx(TrafficSignPreviewImage$1, { number: number }), jsxRuntime.jsxs(material.Typography, { children: [getTrafficSignTitleByNumber(number), " (", number, ")"] })] }) }), jsxRuntime.jsx(material.AccordionDetails, { children: jsxRuntime.jsx(TrafficSignTable$1, { trafficSigns: trafficSigns, pageSize: 5, onSelect: ({ title, number, type }) => {
33883
+ }, "aria-controls": "panel1-content", id: "panel1-header", children: jsxRuntime.jsx(TrafficSignPreviewTitle$1, { number: number }) }), jsxRuntime.jsx(material.AccordionDetails, { children: jsxRuntime.jsx(TrafficSignTable$1, { trafficSigns: trafficSigns, pageSize: 5, onSelect: ({ title, number, type }) => {
33824
33884
  setValue('traffic_sign_number', number);
33825
33885
  setValue('traffic_sign_title', title);
33826
33886
  setValue('traffic_sign_type', type);
@@ -33829,16 +33889,16 @@ const TrafficSignCreateForm = ({ onSubmit, }) => {
33829
33889
  display: 'grid',
33830
33890
  gridTemplateColumns: 'repeat(2, 1fr)',
33831
33891
  gap: '12px',
33832
- }, children: [jsxRuntime.jsx(DateField, { ...register('placement_date'), label: trafficSignFieldsTitles.placement_date }), jsxRuntime.jsx(DateField, { ...register('verification_date'), label: trafficSignFieldsTitles.verification_date }), jsxRuntime.jsx(DateField, { ...register('future_maintanance_date'), label: trafficSignFieldsTitles.future_maintanance_date }), jsxRuntime.jsx(DateField, { ...register('rapair_performed_date'), label: trafficSignFieldsTitles.rapair_performed_date }), jsxRuntime.jsx(DateField, { ...register('warranty_expr_date'), label: trafficSignFieldsTitles.warranty_expr_date })] })] }) }), jsxRuntime.jsx(lab.TabPanel, { value: "2", children: jsxRuntime.jsxs(material.Box, { sx: {
33892
+ }, children: [jsxRuntime.jsx(DateField, { ...register('placement_date'), label: trafficSignFieldsTitles.placement_date, format: trafficSignDateFormat }), jsxRuntime.jsx(DateField, { ...register('verification_date'), label: trafficSignFieldsTitles.verification_date, format: trafficSignDateFormat }), jsxRuntime.jsx(DateField, { ...register('future_maintanance_date'), label: trafficSignFieldsTitles.future_maintanance_date, format: trafficSignDateFormat }), jsxRuntime.jsx(DateField, { ...register('rapair_performed_date'), label: trafficSignFieldsTitles.rapair_performed_date, format: trafficSignDateFormat }), jsxRuntime.jsx(DateField, { ...register('warranty_expr_date'), label: trafficSignFieldsTitles.warranty_expr_date, format: trafficSignDateFormat })] })] }) }), jsxRuntime.jsx(lab.TabPanel, { value: "2", children: jsxRuntime.jsxs(material.Box, { sx: {
33833
33893
  display: 'grid',
33834
33894
  gap: '24px',
33835
33895
  }, children: [jsxRuntime.jsx(material.Box, { children: jsxRuntime.jsx(Button, { onClick: () => {
33836
- dopsFieldArray.append({
33896
+ newDopsFieldArray.append({
33837
33897
  ...createdTrafficSignDop,
33838
33898
  });
33839
- }, children: "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u044B\u0439 traffic sign" }) }), dopsFieldArray.fields.map((_, index) => (jsxRuntime.jsx(CustomCard, { children: jsxRuntime.jsx(TrafficSignDopCreateForm$1, { onDelete: () => {
33840
- dopsFieldArray.remove(index);
33841
- }, index: index }) }, index)))] }) })] }), jsxRuntime.jsx(Button, { type: "submit", disabled: !isValid, children: "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C" })] }));
33899
+ }, children: "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u044B\u0439 traffic sign" }) }), newDopsFieldArray.fields.map(({ id }, index) => (jsxRuntime.jsx(CustomCard, { children: jsxRuntime.jsx(TrafficSignDopCreateForm$1, { onDelete: () => {
33900
+ newDopsFieldArray.remove(index);
33901
+ }, index: index }) }, id)))] }) })] }), jsxRuntime.jsx(Button, { type: "submit", children: "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C" })] }));
33842
33902
  };
33843
33903
  var create = observer(TrafficSignCreateForm);
33844
33904
 
@@ -34184,11 +34244,15 @@ const useGetLeafletLayer = ({ eventHandlers, }) => {
34184
34244
  }, [eventHandlers]);
34185
34245
  const addSource = React__namespace.useCallback((sourceConfig) => {
34186
34246
  if (!scene) {
34187
- console.warn('Scene не инициализирована');
34247
+ loggerService.warn({
34248
+ message: 'Scene не инициализирована',
34249
+ });
34188
34250
  return;
34189
34251
  }
34190
34252
  if (!config) {
34191
- console.warn('Config не инициализирована');
34253
+ loggerService.warn({
34254
+ message: 'Config не инициализирована',
34255
+ });
34192
34256
  return;
34193
34257
  }
34194
34258
  const { name } = sourceConfig;
@@ -34198,18 +34262,24 @@ const useGetLeafletLayer = ({ eventHandlers, }) => {
34198
34262
  }, [scene, config]);
34199
34263
  const getSource = React__namespace.useCallback((sourceName) => {
34200
34264
  if (!config) {
34201
- console.warn('Config не инициализирована');
34265
+ loggerService.warn({
34266
+ message: 'Config не инициализирована',
34267
+ });
34202
34268
  return;
34203
34269
  }
34204
34270
  return structuredClone(config.sources[sourceName]);
34205
34271
  }, [config]);
34206
34272
  const updateSource = React__namespace.useCallback((sourceName, newUrl) => {
34207
34273
  if (!scene) {
34208
- console.warn('Scene не инициализирована');
34274
+ loggerService.warn({
34275
+ message: 'Scene не инициализирована',
34276
+ });
34209
34277
  return;
34210
34278
  }
34211
34279
  if (!config) {
34212
- console.warn('Config не инициализирована');
34280
+ loggerService.warn({
34281
+ message: 'Config не инициализирована',
34282
+ });
34213
34283
  return;
34214
34284
  }
34215
34285
  config.sources[sourceName].url = newUrl;
@@ -34218,11 +34288,15 @@ const useGetLeafletLayer = ({ eventHandlers, }) => {
34218
34288
  }, [config, scene]);
34219
34289
  const addLayer = React__namespace.useCallback((layer) => {
34220
34290
  if (!scene) {
34221
- console.warn('Scene не инициализирован');
34291
+ loggerService.warn({
34292
+ message: 'Scene не инициализирован',
34293
+ });
34222
34294
  return;
34223
34295
  }
34224
34296
  if (!config) {
34225
- console.warn('Config не инициализирован');
34297
+ loggerService.warn({
34298
+ message: 'Config не инициализирован',
34299
+ });
34226
34300
  return;
34227
34301
  }
34228
34302
  const order = getLayers().length + 1;
@@ -34255,11 +34329,15 @@ const useGetLeafletLayer = ({ eventHandlers, }) => {
34255
34329
  }, [config, scene, eventHandlers]);
34256
34330
  const removeLayer = React__namespace.useCallback((layer) => {
34257
34331
  if (!scene) {
34258
- console.warn('Scene не инициализирован');
34332
+ loggerService.warn({
34333
+ message: 'Scene не инициализирован',
34334
+ });
34259
34335
  return;
34260
34336
  }
34261
34337
  if (!config) {
34262
- console.warn('Config не инициализирован');
34338
+ loggerService.warn({
34339
+ message: 'Config не инициализирован',
34340
+ });
34263
34341
  return;
34264
34342
  }
34265
34343
  const layerName = getLayerName(layer);
@@ -34271,11 +34349,15 @@ const useGetLeafletLayer = ({ eventHandlers, }) => {
34271
34349
  }, [config, scene]);
34272
34350
  const addStyle = React__namespace.useCallback(({ name, style }) => {
34273
34351
  if (!scene) {
34274
- console.warn('Scene не инициализирована');
34352
+ loggerService.warn({
34353
+ message: 'Scene не инициализирована',
34354
+ });
34275
34355
  return;
34276
34356
  }
34277
34357
  if (!config) {
34278
- console.warn('Config не инициализирована');
34358
+ loggerService.warn({
34359
+ message: 'Config не инициализирована',
34360
+ });
34279
34361
  return;
34280
34362
  }
34281
34363
  config.styles[name] = structuredClone(style);
@@ -34283,7 +34365,9 @@ const useGetLeafletLayer = ({ eventHandlers, }) => {
34283
34365
  }, [config, scene]);
34284
34366
  const getLayerVisibility = React__namespace.useCallback((layer) => {
34285
34367
  if (!config) {
34286
- console.warn('Config не инициализирована');
34368
+ loggerService.warn({
34369
+ message: 'Config не инициализирована',
34370
+ });
34287
34371
  return;
34288
34372
  }
34289
34373
  const layerName = getLayerName(layer);
@@ -34292,11 +34376,15 @@ const useGetLeafletLayer = ({ eventHandlers, }) => {
34292
34376
  }, [config]);
34293
34377
  const toggleLayerVisibility = React__namespace.useCallback(({ layer, visible }) => {
34294
34378
  if (!scene) {
34295
- console.warn('Scene не инициализирована');
34379
+ loggerService.warn({
34380
+ message: 'Config не инициализирована',
34381
+ });
34296
34382
  return;
34297
34383
  }
34298
34384
  if (!config) {
34299
- console.warn('Config не инициализирована');
34385
+ loggerService.warn({
34386
+ message: 'Config не инициализирована',
34387
+ });
34300
34388
  return;
34301
34389
  }
34302
34390
  const layerName = getLayerName(layer);
@@ -37152,6 +37240,7 @@ exports.TrafficSignCreateForm = create;
37152
37240
  exports.TrafficSignDopCreateForm = TrafficSignDopCreateForm$1;
37153
37241
  exports.TrafficSignDopUpdateForm = TrafficSignDopUpdateForm$1;
37154
37242
  exports.TrafficSignPreviewImage = TrafficSignPreviewImage$1;
37243
+ exports.TrafficSignPreviewTitle = TrafficSignPreviewTitle$1;
37155
37244
  exports.TrafficSignTable = TrafficSignTable$1;
37156
37245
  exports.TrafficSignUpdateForm = update;
37157
37246
  exports.UploadButton = UploadButton;
@@ -37171,6 +37260,7 @@ exports.getAllLayers = getAllLayers;
37171
37260
  exports.getAllPointLayers = getAllPointLayers;
37172
37261
  exports.getAllPolygonLayers = getAllPolygonLayers;
37173
37262
  exports.getAllPolylineLayers = getAllPolylineLayers;
37263
+ exports.getBackendDate = getBackendDate;
37174
37264
  exports.getBuildingLayers = getBuildingLayers;
37175
37265
  exports.getBuiltupAreaLayers = getBuiltupAreaLayers;
37176
37266
  exports.getCameraLayers = getCameraLayers;
@@ -37194,6 +37284,7 @@ exports.getPillarLayers = getPillarLayers;
37194
37284
  exports.getPointAddressLayers = getPointAddressLayers;
37195
37285
  exports.getRailroadLayers = getRailroadLayers;
37196
37286
  exports.getRoadPolyLayers = getRoadPolyLayers;
37287
+ exports.getTrafficSignBackendDates = getTrafficSignBackendDates;
37197
37288
  exports.getTrafficSignFrontendDates = getTrafficSignFrontendDates;
37198
37289
  exports.getTrafficSignImgSrc = getTrafficSignImgSrc;
37199
37290
  exports.getTrafficSignLayers = getTrafficSignLayers;
@@ -37206,6 +37297,7 @@ exports.getValidLayer = getValidLayer;
37206
37297
  exports.getWaterAreaLayers = getWaterAreaLayers;
37207
37298
  exports.getWaterLinkLayers = getWaterLinkLayers;
37208
37299
  exports.imagesPath = imagesPath;
37300
+ exports.loggerService = loggerService;
37209
37301
  exports.modalStyle = modalStyle;
37210
37302
  exports.parseTrafficSignCSVFile = parseTrafficSignCSVFile;
37211
37303
  exports.queryClient = queryClient;
@@ -37215,6 +37307,7 @@ exports.text_source = text_source;
37215
37307
  exports.tile_size = tile_size;
37216
37308
  exports.trafficSignBackendDates = trafficSignBackendDates;
37217
37309
  exports.trafficSignDateFields = trafficSignDateFields;
37310
+ exports.trafficSignDateFormat = trafficSignDateFormat;
37218
37311
  exports.trafficSignDopMainFields = trafficSignDopMainFields;
37219
37312
  exports.trafficSignExtension = trafficSignExtension;
37220
37313
  exports.trafficSignFieldsTitles = trafficSignFieldsTitles;