@dartcom/ui-kit 10.1.13 → 10.1.14

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/accordion/accordion.d.ts +11 -0
  2. package/dist/components/accordion/accordion.d.ts.map +1 -0
  3. package/dist/components/accordion/accordion.stories.d.ts +8 -0
  4. package/dist/components/accordion/accordion.stories.d.ts.map +1 -0
  5. package/dist/components/accordion/index.d.ts +2 -0
  6. package/dist/components/accordion/index.d.ts.map +1 -0
  7. package/dist/components/accordion/types.d.ts +10 -0
  8. package/dist/components/accordion/types.d.ts.map +1 -0
  9. package/dist/components/index.d.ts +2 -0
  10. package/dist/components/index.d.ts.map +1 -1
  11. package/dist/components/layers/leaflet/layers/traffic-sign/config/constants.d.ts +7 -0
  12. package/dist/components/layers/leaflet/layers/traffic-sign/config/constants.d.ts.map +1 -1
  13. package/dist/components/layers/leaflet/layers/traffic-sign/traffic-sign-dop/ui/forms/create/create.d.ts.map +1 -1
  14. package/dist/components/layers/leaflet/layers/traffic-sign/traffic-sign-dop/ui/forms/update/update.d.ts.map +1 -1
  15. package/dist/components/layers/leaflet/layers/traffic-sign/ui/buttons/add-dop/add-dop.d.ts +9 -0
  16. package/dist/components/layers/leaflet/layers/traffic-sign/ui/buttons/add-dop/add-dop.d.ts.map +1 -0
  17. package/dist/components/layers/leaflet/layers/traffic-sign/ui/buttons/add-dop/index.d.ts +2 -0
  18. package/dist/components/layers/leaflet/layers/traffic-sign/ui/buttons/add-dop/index.d.ts.map +1 -0
  19. package/dist/components/layers/leaflet/layers/traffic-sign/ui/buttons/index.d.ts +2 -0
  20. package/dist/components/layers/leaflet/layers/traffic-sign/ui/buttons/index.d.ts.map +1 -0
  21. package/dist/components/layers/leaflet/layers/traffic-sign/ui/forms/create/create.d.ts.map +1 -1
  22. package/dist/components/layers/leaflet/layers/traffic-sign/ui/forms/create/schema.d.ts.map +1 -1
  23. package/dist/components/layers/leaflet/layers/traffic-sign/ui/forms/update/schema.d.ts.map +1 -1
  24. package/dist/components/layers/leaflet/layers/traffic-sign/ui/forms/update/update.d.ts.map +1 -1
  25. package/dist/components/layers/leaflet/layers/traffic-sign/ui/index.d.ts +1 -0
  26. package/dist/components/layers/leaflet/layers/traffic-sign/ui/index.d.ts.map +1 -1
  27. package/dist/components/tabs/index.d.ts +2 -0
  28. package/dist/components/tabs/index.d.ts.map +1 -0
  29. package/dist/components/tabs/tabs.d.ts +11 -0
  30. package/dist/components/tabs/tabs.d.ts.map +1 -0
  31. package/dist/components/tabs/tabs.stories.d.ts +7 -0
  32. package/dist/components/tabs/tabs.stories.d.ts.map +1 -0
  33. package/dist/components/tabs/types.d.ts +7 -0
  34. package/dist/components/tabs/types.d.ts.map +1 -0
  35. package/dist/index.cjs +197 -88
  36. package/dist/index.cjs.map +1 -1
  37. package/dist/index.esm.js +4 -4
  38. package/dist/index.esm.js.map +1 -1
  39. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -15,8 +15,8 @@ var reactDom = require('react-dom');
15
15
  var axios = require('axios');
16
16
  var xDatePickers = require('@mui/x-date-pickers');
17
17
  var AdapterDateFns = require('@mui/x-date-pickers/AdapterDateFns');
18
- var DateField$1 = require('@mui/x-date-pickers/DateField');
19
18
  var ArrowDownwardIcon = require('@mui/icons-material/ArrowDownward');
19
+ var DateField$1 = require('@mui/x-date-pickers/DateField');
20
20
  var lab = require('@mui/lab');
21
21
  var Box = require('@mui/material/Box');
22
22
  var Modal = require('@mui/material/Modal');
@@ -23361,6 +23361,13 @@ const trafficSignDateFields = [
23361
23361
  'warranty_expr_date',
23362
23362
  ];
23363
23363
  const trafficSignDateFormat = 'dd.MM.yyyy';
23364
+ const maxTrafficSignDopsCount = 2;
23365
+ const trafficSignWords = {
23366
+ title: 'Дорожные знаки',
23367
+ };
23368
+ const trafficSignDopWords = {
23369
+ title: 'Дополнительная информация',
23370
+ };
23364
23371
 
23365
23372
  const getTrafficSignLayers = (source) => {
23366
23373
  const layers = [];
@@ -27093,6 +27100,33 @@ const TrafficSignTable = ({ pageSize = 15, defaultValues, filtered = {}, onSelec
27093
27100
  };
27094
27101
  var TrafficSignTable$1 = observer(TrafficSignTable);
27095
27102
 
27103
+ const Accordion = ({ items, onOpen, defaultValue = null, }) => {
27104
+ const [currentValue, setCurrentValue] = React__namespace.useState(defaultValue);
27105
+ const handleClose = React__namespace.useCallback(() => {
27106
+ setCurrentValue(null);
27107
+ }, []);
27108
+ React__namespace.useEffect(() => {
27109
+ if (defaultValue) {
27110
+ setCurrentValue(defaultValue);
27111
+ }
27112
+ }, [defaultValue]);
27113
+ const id = React__namespace.useId();
27114
+ return (jsxRuntime.jsx(material.Box, { id: id, children: items.map(({ value, summary, getDetails }) => {
27115
+ const key = `${id}-accordion-${value}`;
27116
+ return (jsxRuntime.jsxs(material.Accordion, { expanded: value === currentValue, children: [jsxRuntime.jsx(material.AccordionSummary, { expandIcon: jsxRuntime.jsx(ArrowDownwardIcon, {}), onClick: () => {
27117
+ setCurrentValue((prevState) => {
27118
+ if (prevState === value) {
27119
+ return null;
27120
+ }
27121
+ onOpen?.(value);
27122
+ return value;
27123
+ });
27124
+ }, "aria-controls": `${key}-content`, id: `${key}-header`, children: summary }), jsxRuntime.jsx(material.AccordionDetails, { children: getDetails({
27125
+ onClose: handleClose,
27126
+ }) })] }, key));
27127
+ }) }));
27128
+ };
27129
+
27096
27130
  const CustomCard = ({ children, sx = {}, ...props }) => {
27097
27131
  return (jsxRuntime.jsx(material.Box, { ...props, sx: {
27098
27132
  padding: '20px 15px',
@@ -27115,33 +27149,60 @@ function DateField({ name, ...props }) {
27115
27149
  } }));
27116
27150
  }
27117
27151
 
27152
+ const Tabs = ({ items, initialValue, onChange }) => {
27153
+ const [value, setValue] = React__namespace.useState(() => initialValue ?? items[0].value);
27154
+ const id = React__namespace.useId();
27155
+ React__namespace.useEffect(() => {
27156
+ if (initialValue) {
27157
+ setValue(initialValue);
27158
+ }
27159
+ }, [initialValue]);
27160
+ return (jsxRuntime.jsxs(lab.TabContext, { value: value, children: [jsxRuntime.jsx(material.Box, { sx: { borderBottom: 1, borderColor: 'divider' }, children: jsxRuntime.jsx(lab.TabList, { "aria-label": `tabs-${id}`, onChange: (_, value) => {
27161
+ setValue(value);
27162
+ onChange?.(value);
27163
+ }, children: items.map(({ label, value }) => {
27164
+ const key = `${id}-tab-${value}`;
27165
+ return (jsxRuntime.jsx(material.Tab, { label: label, value: value, sx: {
27166
+ textTransform: 'none',
27167
+ } }, key));
27168
+ }) }) }), items.map(({ content, value }) => {
27169
+ const key = `${id}-tab-panel-${value}`;
27170
+ return (jsxRuntime.jsx(lab.TabPanel, { value: value, children: content }, key));
27171
+ })] }));
27172
+ };
27173
+
27118
27174
  const fieldName$1 = 'oldDops';
27119
27175
  const TrafficSignDopUpdateForm = ({ index, onDelete, onUpdate, }) => {
27120
- const [expanded, setExpanded] = React__namespace.useState(false);
27121
27176
  const { register, setValue, watch } = useFormContext$1();
27122
27177
  const trafficSign = watch(`${fieldName$1}.${index}`);
27123
27178
  const { dop_sign_number } = trafficSign;
27124
27179
  return (jsxRuntime.jsxs(material.Box, { sx: {
27125
27180
  display: 'grid',
27126
27181
  gap: '12px',
27127
- }, children: [jsxRuntime.jsxs(material.Accordion, { expanded: expanded, children: [jsxRuntime.jsx(material.AccordionSummary, { expandIcon: jsxRuntime.jsx(ArrowDownwardIcon, {}), onClick: () => {
27128
- setExpanded((prevState) => !prevState);
27129
- }, "aria-controls": "panel1-content", id: "panel1-header", children: jsxRuntime.jsxs(material.Box, { sx: {
27182
+ }, children: [jsxRuntime.jsx(Accordion, { items: [
27183
+ {
27184
+ value: 1,
27185
+ summary: (jsxRuntime.jsxs(material.Box, { sx: {
27130
27186
  display: 'flex',
27131
27187
  alignItems: 'center',
27132
27188
  gap: '12px',
27133
27189
  }, children: [jsxRuntime.jsx(DeleteButton, { notification: {
27134
- title: 'Удалить traffic sign',
27135
- description: 'Вы действительно хотите удалить данный traffic sign?',
27190
+ title: 'Удалить табличку',
27191
+ description: 'Вы действительно хотите удалить данную табличку?',
27136
27192
  }, onDelete: () => {
27137
27193
  onDelete(trafficSign);
27138
- } }), jsxRuntime.jsx(TrafficSignPreviewTitle$1, { number: dop_sign_number })] }) }), jsxRuntime.jsx(material.AccordionDetails, { children: jsxRuntime.jsx(TrafficSignTable$1, { pageSize: 5, filtered: {
27139
- type: false,
27140
- }, trafficSigns: trafficSignsDop, onSelect: ({ title, number }) => {
27141
- setValue(`${fieldName$1}.${index}.dop_sign_number`, number);
27142
- setValue(`${fieldName$1}.${index}.dop_sign_title`, title);
27143
- setExpanded(false);
27144
- } }) })] }), jsxRuntime.jsx(FormSelect, { ...register(`${fieldName$1}.${index}.status`), label: trafficSignFieldsTitles.status, items: trafficSignStatusOptions, getKey: ({ value }) => value, getLabel: ({ label }) => label, getValue: ({ value }) => value }), jsxRuntime.jsx(CustomInput, { ...register(`${fieldName$1}.${index}.comment`), label: trafficSignFieldsTitles.comment }), jsxRuntime.jsx(CustomInput, { ...register(`${fieldName$1}.${index}.dop_sign_text`), label: trafficSignFieldsTitles.dop_sign_text }), jsxRuntime.jsxs(material.Box, { sx: {
27194
+ } }), jsxRuntime.jsx(TrafficSignPreviewTitle$1, { number: dop_sign_number })] })),
27195
+ getDetails: ({ onClose }) => {
27196
+ return (jsxRuntime.jsx(TrafficSignTable$1, { pageSize: 5, filtered: {
27197
+ type: false,
27198
+ }, trafficSigns: trafficSignsDop, onSelect: ({ title, number }) => {
27199
+ setValue(`${fieldName$1}.${index}.dop_sign_number`, number);
27200
+ setValue(`${fieldName$1}.${index}.dop_sign_title`, title);
27201
+ onClose();
27202
+ } }));
27203
+ },
27204
+ },
27205
+ ] }), jsxRuntime.jsx(FormSelect, { ...register(`${fieldName$1}.${index}.status`), label: trafficSignFieldsTitles.status, items: trafficSignStatusOptions, getKey: ({ value }) => value, getLabel: ({ label }) => label, getValue: ({ value }) => value }), jsxRuntime.jsx(CustomInput, { ...register(`${fieldName$1}.${index}.comment`), label: trafficSignFieldsTitles.comment }), jsxRuntime.jsx(CustomInput, { ...register(`${fieldName$1}.${index}.dop_sign_text`), label: trafficSignFieldsTitles.dop_sign_text }), jsxRuntime.jsxs(material.Box, { sx: {
27145
27206
  display: 'grid',
27146
27207
  gridTemplateColumns: 'repeat(2, 1fr)',
27147
27208
  gap: '12px',
@@ -27153,33 +27214,34 @@ var TrafficSignDopUpdateForm$1 = observer(TrafficSignDopUpdateForm);
27153
27214
 
27154
27215
  const fieldName = 'newDops';
27155
27216
  const TrafficSignDopCreateForm = ({ index, onDelete, }) => {
27156
- const { palette } = material.useTheme();
27157
- const [expanded, setExpanded] = React__namespace.useState(false);
27158
27217
  const { setValue, register, watch } = useFormContext$1();
27159
27218
  const trafficSign = watch(`${fieldName}.${index}`);
27160
27219
  const { dop_sign_number } = trafficSign;
27161
27220
  return (jsxRuntime.jsxs(material.Box, { sx: {
27162
27221
  display: 'grid',
27163
27222
  gap: '12px',
27164
- }, children: [jsxRuntime.jsxs(material.Accordion, { expanded: expanded, children: [jsxRuntime.jsx(material.AccordionSummary, { expandIcon: jsxRuntime.jsx(ArrowDownwardIcon, {}), onClick: () => {
27165
- setExpanded((prevState) => !prevState);
27166
- }, "aria-controls": "panel1-content", id: "panel1-header", children: jsxRuntime.jsxs(material.Box, { sx: {
27223
+ }, children: [jsxRuntime.jsx(Accordion, { items: [
27224
+ {
27225
+ value: 1,
27226
+ summary: (jsxRuntime.jsxs(material.Box, { sx: {
27167
27227
  display: 'flex',
27168
27228
  alignItems: 'center',
27169
27229
  gap: '12px',
27170
- }, children: [jsxRuntime.jsx(Paragraph, { variant: "h6", color: "error", sx: {
27171
- fontWeight: 700,
27172
- color: palette.primary['main'],
27173
- }, children: "NEW" }), jsxRuntime.jsx(DeleteButton, { notification: {
27174
- title: 'Удалить traffic sign',
27175
- description: 'Вы действительно хотите удалить данный traffic sign?',
27176
- }, onDelete: onDelete }), jsxRuntime.jsx(TrafficSignPreviewTitle$1, { number: dop_sign_number })] }) }), jsxRuntime.jsx(material.AccordionDetails, { children: jsxRuntime.jsx(TrafficSignTable$1, { pageSize: 5, filtered: {
27177
- type: false,
27178
- }, trafficSigns: trafficSignsDop, onSelect: ({ title, number }) => {
27179
- setValue(`${fieldName}.${index}.dop_sign_number`, number);
27180
- setValue(`${fieldName}.${index}.dop_sign_title`, title);
27181
- setExpanded(false);
27182
- } }) })] }), jsxRuntime.jsx(FormSelect, { ...register(`${fieldName}.${index}.status`), label: trafficSignFieldsTitles.status, items: trafficSignStatusOptions, getKey: ({ value }) => value, getLabel: ({ label }) => label, getValue: ({ value }) => value }), jsxRuntime.jsx(CustomInput, { ...register(`${fieldName}.${index}.comment`), label: trafficSignFieldsTitles.comment }), jsxRuntime.jsx(CustomInput, { ...register(`${fieldName}.${index}.dop_sign_text`), label: trafficSignFieldsTitles.dop_sign_text }), jsxRuntime.jsxs(material.Box, { sx: {
27230
+ }, children: [jsxRuntime.jsx(DeleteButton, { notification: {
27231
+ title: 'Удалить табличку',
27232
+ description: 'Вы действительно хотите удалить данную табличку?',
27233
+ }, onDelete: onDelete }), jsxRuntime.jsx(TrafficSignPreviewTitle$1, { number: dop_sign_number })] })),
27234
+ getDetails: ({ onClose }) => {
27235
+ return (jsxRuntime.jsx(TrafficSignTable$1, { pageSize: 5, filtered: {
27236
+ type: false,
27237
+ }, trafficSigns: trafficSignsDop, onSelect: ({ title, number }) => {
27238
+ setValue(`${fieldName}.${index}.dop_sign_number`, number);
27239
+ setValue(`${fieldName}.${index}.dop_sign_title`, title);
27240
+ onClose();
27241
+ } }));
27242
+ },
27243
+ },
27244
+ ] }), jsxRuntime.jsx(FormSelect, { ...register(`${fieldName}.${index}.status`), label: trafficSignFieldsTitles.status, items: trafficSignStatusOptions, getKey: ({ value }) => value, getLabel: ({ label }) => label, getValue: ({ value }) => value }), jsxRuntime.jsx(CustomInput, { ...register(`${fieldName}.${index}.comment`), label: trafficSignFieldsTitles.comment }), jsxRuntime.jsx(CustomInput, { ...register(`${fieldName}.${index}.dop_sign_text`), label: trafficSignFieldsTitles.dop_sign_text }), jsxRuntime.jsxs(material.Box, { sx: {
27183
27245
  display: 'grid',
27184
27246
  gridTemplateColumns: 'repeat(2, 1fr)',
27185
27247
  gap: '12px',
@@ -27187,6 +27249,13 @@ const TrafficSignDopCreateForm = ({ index, onDelete, }) => {
27187
27249
  };
27188
27250
  var TrafficSignDopCreateForm$1 = observer(TrafficSignDopCreateForm);
27189
27251
 
27252
+ const TrafficSignAddDopButton = ({ disabled = false, onClick, }) => {
27253
+ return (jsxRuntime.jsx(Button, { sx: {
27254
+ margin: '0 auto',
27255
+ }, onClick: onClick, disabled: disabled, children: "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0442\u0430\u0431\u043B\u0438\u0447\u043A\u0443" }));
27256
+ };
27257
+ var TrafficSignAddDopButton$1 = observer(TrafficSignAddDopButton);
27258
+
27190
27259
  const TrafficSignPreviewTitle = ({ number, }) => {
27191
27260
  const title = getTrafficSignTitleByNumber(number);
27192
27261
  return (jsxRuntime.jsxs(material.Box, { sx: {
@@ -29846,8 +29915,14 @@ const schema$2 = create$3()
29846
29915
  ...mainFieldsSchema,
29847
29916
  ...datesFieldsSchema,
29848
29917
  ...idsFieldsSchema,
29849
- oldDops: create$2().of(updatedTrafficSignDopSchema).required(),
29850
- newDops: create$2().of(createdTrafficSignDopSchema).required(),
29918
+ oldDops: create$2()
29919
+ .max(maxTrafficSignDopsCount)
29920
+ .of(updatedTrafficSignDopSchema)
29921
+ .required(),
29922
+ newDops: create$2()
29923
+ .max(maxTrafficSignDopsCount)
29924
+ .of(createdTrafficSignDopSchema)
29925
+ .required(),
29851
29926
  });
29852
29927
 
29853
29928
  const r=(t,r,o)=>{if(t&&"reportValidity"in t){const s=get(o,r);t.setCustomValidity(s&&s.message||""),t.reportValidity();}},o$1=(e,t)=>{for(const o in t.fields){const s=t.fields[o];s&&s.ref&&"reportValidity"in s.ref?r(s.ref,o,e):s&&s.refs&&s.refs.forEach(t=>r(t,o,e));}},s=(r,s)=>{s.shouldUseNativeValidation&&o$1(r,s);const n={};for(const o in r){const f=get(s.fields,o),c=Object.assign(r[o]||{},{ref:f&&f.ref});if(i$1(s.names||Object.keys(r),o)){const r=Object.assign({},get(n,o));set(r,"root",c),set(n,o,r);}else set(n,o,c);}return n},i$1=(e,t)=>{const r=n(t);return e.some(e=>n(e).match(`^${r}\\.\\d+`))};function n(e){return e.replace(/\]|\[/g,"")}
@@ -29855,11 +29930,6 @@ const r=(t,r,o)=>{if(t&&"reportValidity"in t){const s=get(o,r);t.setCustomValidi
29855
29930
  function o(o,n,s$1){return void 0===s$1&&(s$1={}),function(a,i,c){try{return Promise.resolve(function(t,r){try{var u=(null!=n&&n.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),Promise.resolve(o["sync"===s$1.mode?"validateSync":"validate"](a,Object.assign({abortEarly:!1},n,{context:i}))).then(function(t){return c.shouldUseNativeValidation&&o$1({},c),{values:s$1.raw?Object.assign({},a):t,errors:{}}}));}catch(e){return r(e)}return u&&u.then?u.then(void 0,r):u}(0,function(e){if(!e.inner)throw e;return {values:{},errors:s((o=e,n=!c.shouldUseNativeValidation&&"all"===c.criteriaMode,(o.inner||[]).reduce(function(e,t){if(e[t.path]||(e[t.path]={message:t.message,type:t.type}),n){var o=e[t.path].types,s=o&&o[t.type];e[t.path]=appendErrors(t.path,n,e,t.type,s?[].concat(s,t.message):t.message);}return e},{})),c)};var o,n;}))}catch(e){return Promise.reject(e)}}}
29856
29931
 
29857
29932
  const TrafficSignUpdateForm = ({ trafficSign, onSubmit, onDelete, onDeleteDop, onUpdateDop, }) => {
29858
- const [tabsValue, setTabsValue] = React__namespace.useState('1');
29859
- const handleChange = React__namespace.useCallback((_, newValue) => {
29860
- setTabsValue(newValue);
29861
- }, []);
29862
- const [expanded, setExpanded] = React__namespace.useState(false);
29863
29933
  const defaultValues = React__namespace.useMemo(() => {
29864
29934
  const { dops, traffic_sign_id } = trafficSign;
29865
29935
  const defaultValues = {
@@ -29887,6 +29957,15 @@ const TrafficSignUpdateForm = ({ trafficSign, onSubmit, onDelete, onDeleteDop, o
29887
29957
  control,
29888
29958
  name: 'newDops',
29889
29959
  });
29960
+ const isAddNewDop = React__namespace.useMemo(() => {
29961
+ const isAddNewDop = oldDopsFieldArray.fields.length + newDopsFieldArray.fields.length <
29962
+ maxTrafficSignDopsCount;
29963
+ return isAddNewDop;
29964
+ }, [
29965
+ oldDopsFieldArray.fields.length,
29966
+ newDopsFieldArray.fields.length,
29967
+ maxTrafficSignDopsCount,
29968
+ ]);
29890
29969
  const number = watch('traffic_sign_number');
29891
29970
  React__namespace.useEffect(() => {
29892
29971
  const isErrors = Object.keys(errors).length > 0;
@@ -29901,43 +29980,56 @@ const TrafficSignUpdateForm = ({ trafficSign, onSubmit, onDelete, onDeleteDop, o
29901
29980
  React__namespace.useEffect(() => {
29902
29981
  reset(defaultValues);
29903
29982
  }, [trafficSign]);
29904
- 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: {
29905
- textTransform: 'none',
29906
- } }), jsxRuntime.jsx(material.Tab, { label: "Traffic Sign Dop", value: "2", sx: {
29907
- textTransform: 'none',
29908
- } })] }) }), jsxRuntime.jsx(lab.TabPanel, { value: "1", children: jsxRuntime.jsxs(material.Box, { sx: {
29983
+ return (jsxRuntime.jsxs(CustomForm, { form: form, onSubmit: onSubmit, children: [jsxRuntime.jsx(Tabs, { items: [
29984
+ {
29985
+ label: trafficSignWords.title,
29986
+ value: 1,
29987
+ content: (jsxRuntime.jsxs(material.Box, { sx: {
29909
29988
  display: 'grid',
29910
29989
  gap: '12px',
29911
- }, children: [jsxRuntime.jsxs(material.Accordion, { expanded: expanded, children: [jsxRuntime.jsx(material.AccordionSummary, { expandIcon: jsxRuntime.jsx(ArrowDownwardIcon, {}), onClick: () => {
29912
- setExpanded((prevState) => !prevState);
29913
- }, "aria-controls": "panel1-content", id: "panel1-header", children: jsxRuntime.jsxs(material.Box, { sx: {
29990
+ }, children: [jsxRuntime.jsx(Accordion, { items: [
29991
+ {
29992
+ value: 1,
29993
+ summary: (jsxRuntime.jsxs(material.Box, { sx: {
29914
29994
  display: 'flex',
29915
29995
  alignItems: 'center',
29916
29996
  gap: '12px',
29917
29997
  }, children: [jsxRuntime.jsx(DeleteButton, { notification: {
29918
- title: 'Удалить traffic sign',
29919
- description: 'Вы действительно хотите удалить данный traffic sign?',
29998
+ title: 'Удалить дорожный знак',
29999
+ description: 'Вы действительно хотите удалить данный дорожный знак?',
29920
30000
  }, onDelete: () => {
29921
30001
  onDelete(trafficSign);
29922
- } }), jsxRuntime.jsx(TrafficSignPreviewTitle$1, { number: number })] }) }), jsxRuntime.jsx(material.AccordionDetails, { children: jsxRuntime.jsx(TrafficSignTable$1, { trafficSigns: trafficSigns, pageSize: 5, onSelect: ({ title, number, type }) => {
29923
- setValue('traffic_sign_number', number);
29924
- setValue('traffic_sign_title', title);
29925
- setValue('traffic_sign_type', type);
29926
- setExpanded(false);
29927
- } }) })] }), jsxRuntime.jsx(FormSelect, { ...register('status'), label: trafficSignFieldsTitles.status, items: trafficSignStatusOptions, getKey: ({ value }) => value, getLabel: ({ label }) => label, getValue: ({ value }) => value }), jsxRuntime.jsx(CustomInput, { ...register('traffic_sign_value'), label: trafficSignFieldsTitles.traffic_sign_value }), jsxRuntime.jsx(CustomInput, { ...register('comment'), label: trafficSignFieldsTitles.comment }), jsxRuntime.jsx(CustomInput, { ...register('direction'), label: trafficSignFieldsTitles.direction, type: "number" }), jsxRuntime.jsxs(material.Box, { sx: {
30002
+ } }), jsxRuntime.jsx(TrafficSignPreviewTitle$1, { number: number })] })),
30003
+ getDetails: ({ onClose }) => {
30004
+ return (jsxRuntime.jsx(TrafficSignTable$1, { trafficSigns: trafficSigns, pageSize: 5, onSelect: ({ title, number, type }) => {
30005
+ setValue('traffic_sign_number', number);
30006
+ setValue('traffic_sign_title', title);
30007
+ setValue('traffic_sign_type', type);
30008
+ onClose();
30009
+ } }));
30010
+ },
30011
+ },
30012
+ ] }), jsxRuntime.jsx(FormSelect, { ...register('status'), label: trafficSignFieldsTitles.status, items: trafficSignStatusOptions, getKey: ({ value }) => value, getLabel: ({ label }) => label, getValue: ({ value }) => value }), jsxRuntime.jsx(CustomInput, { ...register('traffic_sign_value'), label: trafficSignFieldsTitles.traffic_sign_value }), jsxRuntime.jsx(CustomInput, { ...register('comment'), label: trafficSignFieldsTitles.comment }), jsxRuntime.jsx(CustomInput, { ...register('direction'), label: trafficSignFieldsTitles.direction, type: "number" }), jsxRuntime.jsxs(material.Box, { sx: {
29928
30013
  display: 'grid',
29929
30014
  gridTemplateColumns: 'repeat(2, 1fr)',
29930
30015
  gap: '12px',
29931
- }, 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: {
30016
+ }, 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 })] })] })),
30017
+ },
30018
+ {
30019
+ label: trafficSignDopWords.title,
30020
+ value: 2,
30021
+ content: (jsxRuntime.jsxs(material.Box, { sx: {
29932
30022
  display: 'grid',
29933
30023
  gap: '24px',
29934
- }, children: [jsxRuntime.jsx(material.Box, { children: jsxRuntime.jsx(Button, { onClick: () => {
29935
- newDopsFieldArray.append({
29936
- ...createdTrafficSignDop,
29937
- });
29938
- }, 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: () => {
30024
+ }, children: [jsxRuntime.jsx(TrafficSignAddDopButton$1, { disabled: !isAddNewDop, onClick: () => {
30025
+ newDopsFieldArray.append({
30026
+ ...createdTrafficSignDop,
30027
+ });
30028
+ } }), 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: () => {
29939
30029
  newDopsFieldArray.remove(index);
29940
- }, index: index }) }, id)))] }) })] }), jsxRuntime.jsx(Button, { type: "submit", children: "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C" })] }));
30030
+ }, index: index }) }, id)))] })),
30031
+ },
30032
+ ] }), jsxRuntime.jsx(Button, { type: "submit", children: "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C" })] }));
29941
30033
  };
29942
30034
  var update = observer(TrafficSignUpdateForm);
29943
30035
 
@@ -29945,15 +30037,13 @@ const schema$1 = create$3()
29945
30037
  .shape({
29946
30038
  ...mainFieldsSchema,
29947
30039
  ...datesFieldsSchema,
29948
- newDops: create$2().of(createdTrafficSignDopSchema).required(),
30040
+ newDops: create$2()
30041
+ .max(maxTrafficSignDopsCount)
30042
+ .of(createdTrafficSignDopSchema)
30043
+ .required(),
29949
30044
  });
29950
30045
 
29951
30046
  const TrafficSignCreateForm = ({ onSubmit, }) => {
29952
- const [tabsValue, setTabsValue] = React__namespace.useState('1');
29953
- const handleChange = (event, newValue) => {
29954
- setTabsValue(newValue);
29955
- };
29956
- const [expanded, setExpanded] = React__namespace.useState(false);
29957
30047
  const form = useForm({
29958
30048
  resolver: o(schema$1),
29959
30049
  defaultValues: {
@@ -29976,34 +30066,47 @@ const TrafficSignCreateForm = ({ onSubmit, }) => {
29976
30066
  });
29977
30067
  }
29978
30068
  }, [errors]);
29979
- 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: {
29980
- textTransform: 'none',
29981
- } }), jsxRuntime.jsx(material.Tab, { label: "TrafficSignDop", value: "2", sx: {
29982
- textTransform: 'none',
29983
- } })] }) }), jsxRuntime.jsx(lab.TabPanel, { value: "1", children: jsxRuntime.jsxs(material.Box, { sx: {
30069
+ return (jsxRuntime.jsxs(CustomForm, { form: form, onSubmit: onSubmit, children: [jsxRuntime.jsx(Tabs, { items: [
30070
+ {
30071
+ label: trafficSignWords.title,
30072
+ value: 1,
30073
+ content: (jsxRuntime.jsxs(material.Box, { sx: {
29984
30074
  display: 'grid',
29985
30075
  gap: '12px',
29986
- }, children: [jsxRuntime.jsxs(material.Accordion, { expanded: expanded, children: [jsxRuntime.jsx(material.AccordionSummary, { expandIcon: jsxRuntime.jsx(ArrowDownwardIcon, {}), onClick: () => {
29987
- setExpanded((prevState) => !prevState);
29988
- }, "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 }) => {
29989
- setValue('traffic_sign_number', number);
29990
- setValue('traffic_sign_title', title);
29991
- setValue('traffic_sign_type', type);
29992
- setExpanded(false);
29993
- } }) })] }), jsxRuntime.jsx(FormSelect, { ...register('status'), label: trafficSignFieldsTitles.status, items: trafficSignStatusOptions, getKey: ({ value }) => value, getLabel: ({ label }) => label, getValue: ({ value }) => value }), jsxRuntime.jsx(CustomInput, { ...register('traffic_sign_value'), label: trafficSignFieldsTitles.traffic_sign_value }), jsxRuntime.jsx(CustomInput, { ...register('comment'), label: trafficSignFieldsTitles.comment }), jsxRuntime.jsx(CustomInput, { ...register('direction'), label: trafficSignFieldsTitles.direction, type: "number" }), jsxRuntime.jsxs(material.Box, { sx: {
30076
+ }, children: [jsxRuntime.jsx(Accordion, { items: [
30077
+ {
30078
+ value: 1,
30079
+ summary: jsxRuntime.jsx(TrafficSignPreviewTitle$1, { number: number }),
30080
+ getDetails: ({ onClose }) => {
30081
+ return (jsxRuntime.jsx(TrafficSignTable$1, { trafficSigns: trafficSigns, pageSize: 5, onSelect: ({ title, number, type }) => {
30082
+ setValue('traffic_sign_number', number);
30083
+ setValue('traffic_sign_title', title);
30084
+ setValue('traffic_sign_type', type);
30085
+ onClose();
30086
+ } }));
30087
+ },
30088
+ },
30089
+ ] }), jsxRuntime.jsx(FormSelect, { ...register('status'), label: trafficSignFieldsTitles.status, items: trafficSignStatusOptions, getKey: ({ value }) => value, getLabel: ({ label }) => label, getValue: ({ value }) => value }), jsxRuntime.jsx(CustomInput, { ...register('traffic_sign_value'), label: trafficSignFieldsTitles.traffic_sign_value }), jsxRuntime.jsx(CustomInput, { ...register('comment'), label: trafficSignFieldsTitles.comment }), jsxRuntime.jsx(CustomInput, { ...register('direction'), label: trafficSignFieldsTitles.direction, type: "number" }), jsxRuntime.jsxs(material.Box, { sx: {
29994
30090
  display: 'grid',
29995
30091
  gridTemplateColumns: 'repeat(2, 1fr)',
29996
30092
  gap: '12px',
29997
- }, 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: {
30093
+ }, 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 })] })] })),
30094
+ },
30095
+ {
30096
+ label: trafficSignDopWords.title,
30097
+ value: 2,
30098
+ content: (jsxRuntime.jsxs(material.Box, { sx: {
29998
30099
  display: 'grid',
29999
30100
  gap: '24px',
30000
- }, children: [jsxRuntime.jsx(material.Box, { children: jsxRuntime.jsx(Button, { onClick: () => {
30001
- newDopsFieldArray.append({
30002
- ...createdTrafficSignDop,
30003
- });
30004
- }, 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: () => {
30101
+ }, children: [jsxRuntime.jsx(TrafficSignAddDopButton$1, { disabled: newDopsFieldArray.fields.length === maxTrafficSignDopsCount, onClick: () => {
30102
+ newDopsFieldArray.append({
30103
+ ...createdTrafficSignDop,
30104
+ });
30105
+ } }), newDopsFieldArray.fields.map(({ id }, index) => (jsxRuntime.jsx(CustomCard, { children: jsxRuntime.jsx(TrafficSignDopCreateForm$1, { onDelete: () => {
30005
30106
  newDopsFieldArray.remove(index);
30006
- }, index: index }) }, id)))] }) })] }), jsxRuntime.jsx(Button, { type: "submit", children: "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C" })] }));
30107
+ }, index: index }) }, id)))] })),
30108
+ },
30109
+ ] }), jsxRuntime.jsx(Button, { type: "submit", children: "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C" })] }));
30007
30110
  };
30008
30111
  var create = observer(TrafficSignCreateForm);
30009
30112
 
@@ -33274,6 +33377,7 @@ var tangram_min = /*#__PURE__*/Object.freeze({
33274
33377
  __proto__: null
33275
33378
  });
33276
33379
 
33380
+ exports.Accordion = Accordion;
33277
33381
  exports.ApiService = ApiService;
33278
33382
  exports.AuthPage = AuthPage;
33279
33383
  exports.AuthStore = AuthStore;
@@ -33303,6 +33407,8 @@ exports.NoData = NoData;
33303
33407
  exports.QueryProvider = QueryProvider;
33304
33408
  exports.Select = FormSelect;
33305
33409
  exports.StoreContext = StoreContext;
33410
+ exports.Tabs = Tabs;
33411
+ exports.TrafficSignAddDopButton = TrafficSignAddDopButton$1;
33306
33412
  exports.TrafficSignCreateForm = create;
33307
33413
  exports.TrafficSignDopCreateForm = TrafficSignDopCreateForm$1;
33308
33414
  exports.TrafficSignDopUpdateForm = TrafficSignDopUpdateForm$1;
@@ -33366,6 +33472,7 @@ exports.getWaterAreaLayers = getWaterAreaLayers;
33366
33472
  exports.getWaterLinkLayers = getWaterLinkLayers;
33367
33473
  exports.imagesPath = imagesPath;
33368
33474
  exports.loggerService = loggerService;
33475
+ exports.maxTrafficSignDopsCount = maxTrafficSignDopsCount;
33369
33476
  exports.modalStore = modalStore;
33370
33477
  exports.modalStyle = modalStyle;
33371
33478
  exports.parseTrafficSignCSVFile = parseTrafficSignCSVFile;
@@ -33378,6 +33485,7 @@ exports.trafficSignBackendDates = trafficSignBackendDates;
33378
33485
  exports.trafficSignDateFields = trafficSignDateFields;
33379
33486
  exports.trafficSignDateFormat = trafficSignDateFormat;
33380
33487
  exports.trafficSignDopMainFields = trafficSignDopMainFields;
33488
+ exports.trafficSignDopWords = trafficSignDopWords;
33381
33489
  exports.trafficSignExtension = trafficSignExtension;
33382
33490
  exports.trafficSignFieldsTitles = trafficSignFieldsTitles;
33383
33491
  exports.trafficSignFrontendDates = trafficSignFrontendDates;
@@ -33385,6 +33493,7 @@ exports.trafficSignLayerName = trafficSignLayerName;
33385
33493
  exports.trafficSignMainFields = trafficSignMainFields;
33386
33494
  exports.trafficSignStatusOptions = trafficSignStatusOptions;
33387
33495
  exports.trafficSignWidths = trafficSignWidths;
33496
+ exports.trafficSignWords = trafficSignWords;
33388
33497
  exports.trafficSigns = trafficSigns;
33389
33498
  exports.trafficSignsDop = trafficSignsDop;
33390
33499
  exports.updatedTrafficSign = updatedTrafficSign;