@dartcom/ui-kit 10.5.23 → 10.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../../src/components/buttons/delete/delete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAgB/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAW5C,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA4F7C,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../../src/components/buttons/delete/delete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAW5C,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAyF7C,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -1 +1 @@
1
- import{jsx as e,jsxs as i}from"react/jsx-runtime";import*as r from"react";import{Slide as n,Tooltip as o,Dialog as t,DialogTitle as l,DialogContent as c,DialogContentText as d,DialogActions as a,Button as s}from"@mui/material";import m from"../icon/icon.esm.js";const f=r.forwardRef(function(i,r){return e(n,{direction:"up",ref:r,...i})}),u=({notification:n,onDelete:u,disabled:p=!1,...h})=>{const x=r.useId(),[C,b]=r.useState(!1),k=()=>{b(!1)},g=r.useMemo(()=>({name:"delete",color:p?"disabled":"error"}),[p]);return i(r.Fragment,{children:[n?e(o,{title:n.title,children:e(m,{...h,iconProps:g,onClick:()=>{b(!0)},disabled:p})}):e(m,{...h,iconProps:g,onClick:u,disabled:p}),n?i(t,{slots:{transition:f},open:C,onClose:k,children:[e(l,{id:`${x}-dialog-title`,children:n.title}),e(c,{children:e(d,{id:`${x}-dialog-text`,children:n.description})}),i(a,{children:[e(s,{variant:"contained",color:"error",sx:{textTransform:"none"},onClick:k,children:"Отмена"}),e(s,{variant:"contained",sx:{textTransform:"none"},onClick:()=>{u(),k()},children:"Подтвердить"})]})]}):null]})};export{u as default};
1
+ import{jsx as e,jsxs as i}from"react/jsx-runtime";import*as o from"react";import{Slide as n,Tooltip as r,Dialog as t,DialogTitle as l,DialogContent as c,DialogContentText as d,DialogActions as a,Button as s}from"@mui/material";import m from"../icon/icon.esm.js";const f=o.forwardRef(function(i,o){return e(n,{direction:"up",ref:o,...i})}),u=({notification:n,onDelete:u,disabled:h=!1,...p})=>{const x=o.useId(),[C,b]=o.useState(!1),k=()=>{b(!1)},g=o.useMemo(()=>h?"disabled":"error",[h]);return i(o.Fragment,{children:[n?e(r,{title:n.title,children:e(m,{...p,iconName:"delete",iconColor:g,onClick:()=>{b(!0)},disabled:h})}):e(m,{...p,iconName:"delete",iconColor:g,onClick:u,disabled:h}),n?i(t,{slots:{transition:f},open:C,onClose:k,children:[e(l,{id:`${x}-dialog-title`,children:n.title}),e(c,{children:e(d,{id:`${x}-dialog-text`,children:n.description})}),i(a,{children:[e(s,{variant:"contained",color:"error",sx:{textTransform:"none"},onClick:k,children:"Отмена"}),e(s,{variant:"contained",sx:{textTransform:"none"},onClick:()=>{u(),k()},children:"Подтвердить"})]})]}):null]})};export{u as default};
@@ -17,5 +17,11 @@ export declare const icons: {
17
17
  clear: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
18
18
  muiName: string;
19
19
  };
20
+ show: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
21
+ muiName: string;
22
+ };
23
+ close: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
24
+ muiName: string;
25
+ };
20
26
  };
21
27
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/components/buttons/icon/constants.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;CAOjB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/components/buttons/icon/constants.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;CASjB,CAAC"}
@@ -1 +1 @@
1
- import i from"@mui/icons-material/Clear";import m from"@mui/icons-material/Delete";import r from"@mui/icons-material/Edit";import e from"@mui/icons-material/Moving";import o from"@mui/icons-material/RestartAlt";import t from"@mui/icons-material/Save";const a={reset:o,edit:r,move:e,save:t,delete:m,clear:i};export{a as icons};
1
+ import i from"@mui/icons-material/Clear";import m from"@mui/icons-material/CloseOutlined";import o from"@mui/icons-material/Delete";import r from"@mui/icons-material/Edit";import t from"@mui/icons-material/Moving";import e from"@mui/icons-material/RestartAlt";import a from"@mui/icons-material/Save";import l from"@mui/icons-material/Visibility";const s={reset:e,edit:r,move:t,save:a,delete:o,clear:i,show:l,close:m};export{s as icons};
@@ -1 +1 @@
1
- {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../src/components/buttons/icon/icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAQ1C,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAwCzC,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../src/components/buttons/icon/icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAQ1C,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAuCzC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import*as i from"react";import{styled as t,IconButton as r,Tooltip as n}from"@mui/material";import{icons as e}from"./constants.esm.js";const m=t(r)(()=>({padding:0})),c=({title:t,iconProps:r,...c})=>{const a=i.useId(),l=e[r.name],s=r.color??"primary";return t?o(n,{title:t,children:o(m,{id:a,...c,onClick:o=>{o.stopPropagation(),c.onClick?.(o)},children:o(l,{fontSize:"medium",color:s})})}):o(m,{id:a,...c,onClick:o=>{o.stopPropagation(),c.onClick?.(o)},children:o(l,{fontSize:"medium",color:s})})};export{c as default};
1
+ import{jsx as o}from"react/jsx-runtime";import*as i from"react";import{styled as t,IconButton as r,Tooltip as n}from"@mui/material";import{icons as e}from"./constants.esm.js";const m=t(r)(()=>({padding:0})),c=({title:t,iconName:r,iconColor:c="primary",...a})=>{const l=i.useId(),s=e[r];return t?o(n,{title:t,children:o(m,{id:l,...a,onClick:o=>{o.stopPropagation(),a.onClick?.(o)},children:o(s,{fontSize:"medium",color:c})})}):o(m,{id:l,...a,onClick:o=>{o.stopPropagation(),a.onClick?.(o)},children:o(s,{fontSize:"medium",color:c})})};export{c as default};
@@ -1,10 +1,8 @@
1
1
  import { IconButton, IconProps } from '@mui/material';
2
2
  import { icons } from './constants';
3
3
  export type IconButtonProps = React.ComponentProps<typeof IconButton> & {
4
- iconProps: {
5
- name: keyof typeof icons;
6
- color?: IconProps['color'];
7
- };
4
+ iconName: keyof typeof icons;
5
+ iconColor?: IconProps['color'];
8
6
  title?: React.ReactNode;
9
7
  };
10
8
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/buttons/icon/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,UAAU,CAAC,GAAG;IACtE,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,OAAO,KAAK,CAAC;QACzB,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;KAC5B,CAAC;IACF,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/buttons/icon/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,UAAU,CAAC,GAAG;IACtE,QAAQ,EAAE,MAAM,OAAO,KAAK,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/components/list/list.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,iBAAS,UAAU,CAAC,CAAC,EAAE,EACrB,KAAK,EACL,YAAgB,EAChB,UAAU,EACV,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,EACP,EAAE,EAEF,YAAmB,GACpB,EAAE,SAAS,CAAC,CAAC,CAAC,2CA0Gd;AAED,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/components/list/list.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,iBAAS,UAAU,CAAC,CAAC,EAAE,EACrB,KAAK,EACL,YAAgB,EAChB,UAAU,EACV,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,EACP,EAAE,EAEF,YAAmB,GACpB,EAAE,SAAS,CAAC,CAAC,CAAC,2CAwGd;AAED,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- import{jsxs as t,jsx as e}from"react/jsx-runtime";import*as n from"react";import{Box as i,Typography as o,List as a,ListItem as r}from"@mui/material";import"@mui/material/IconButton";import"../buttons/delete/delete.esm.js";import l from"../buttons/icon/icon.esm.js";import"@mui/icons-material/CloudUpload";import"../buttons/upload/styles.esm.js";import s from"../no-data/no-data.esm.js";function m({items:m,columnsCount:p=1,getContent:d,title:c,getKey:u,onClick:g,onClear:f,sx:h,isShowNoData:x=!0}){const C=n.useMemo(()=>m.length>0,[m.length]),b=n.useMemo(()=>Boolean(f)&&C,[f,C]);return t(i,{sx:({spacing:t,breakpoints:e})=>({display:"grid",gridTemplateColumns:"1fr",gap:t(2),...h?.root,[e.down("sm")]:{gap:t(1)}}),children:[c||f?t(i,{sx:({spacing:t})=>({display:"flex",alignItems:"center",justifyContent:"center",gap:t(1)}),children:[c?e(o,{variant:"h6",noWrap:!0,sx:{textAlign:"center",fontWeight:700,...h?.title},children:c}):null,b?e(l,{iconProps:{name:"clear",color:"warning"},onClick:f}):null]}):null,C?e(a,{sx:({spacing:t,breakpoints:e})=>({display:"grid",gridTemplateColumns:`repeat(${p}, 1fr)`,gap:t(2),...h?.list,[e.down("sm")]:{gap:t(1)}}),disablePadding:!0,children:m.map((t,n)=>e(r,{onClick:()=>g?.(t,n),sx:()=>({...h?.item}),disablePadding:!0,children:d(t,n)},u(t,n)))}):e(n.Fragment,{children:x?e(s,{}):null})]})}export{m as default};
1
+ import{jsxs as t,jsx as e}from"react/jsx-runtime";import*as n from"react";import{Box as i,Typography as o,List as a,ListItem as l}from"@mui/material";import"@mui/material/IconButton";import"../buttons/delete/delete.esm.js";import r from"../buttons/icon/icon.esm.js";import"@mui/icons-material/CloudUpload";import"../buttons/upload/styles.esm.js";import s from"../no-data/no-data.esm.js";function m({items:m,columnsCount:p=1,getContent:d,title:c,getKey:u,onClick:g,onClear:f,sx:h,isShowNoData:C=!0}){const x=n.useMemo(()=>m.length>0,[m.length]),b=n.useMemo(()=>Boolean(f)&&x,[f,x]);return t(i,{sx:({spacing:t,breakpoints:e})=>({display:"grid",gridTemplateColumns:"1fr",gap:t(2),...h?.root,[e.down("sm")]:{gap:t(1)}}),children:[c||f?t(i,{sx:({spacing:t})=>({display:"flex",alignItems:"center",justifyContent:"center",gap:t(1)}),children:[c?e(o,{variant:"h6",noWrap:!0,sx:{textAlign:"center",fontWeight:700,...h?.title},children:c}):null,b?e(r,{iconName:"clear",iconColor:"warning",onClick:f}):null]}):null,x?e(a,{sx:({spacing:t,breakpoints:e})=>({display:"grid",gridTemplateColumns:`repeat(${p}, 1fr)`,gap:t(2),...h?.list,[e.down("sm")]:{gap:t(1)}}),disablePadding:!0,children:m.map((t,n)=>e(l,{onClick:()=>g?.(t,n),sx:()=>({...h?.item}),disablePadding:!0,children:d(t,n)},u(t,n)))}):e(n.Fragment,{children:C?e(s,{}):null})]})}export{m as default};
package/dist/index.cjs CHANGED
@@ -8,11 +8,13 @@ var jsxRuntime = require('react/jsx-runtime');
8
8
  var ArrowDownwardIcon = require('@mui/icons-material/ArrowDownward');
9
9
  var IconButton$1 = require('@mui/material/IconButton');
10
10
  var ClearIcon = require('@mui/icons-material/Clear');
11
+ var CloseIcon = require('@mui/icons-material/CloseOutlined');
11
12
  var DeleteIcon = require('@mui/icons-material/Delete');
12
13
  var EditIcon = require('@mui/icons-material/Edit');
13
14
  var MovingIcon = require('@mui/icons-material/Moving');
14
15
  var RestartAltIcon = require('@mui/icons-material/RestartAlt');
15
16
  var SaveIcon = require('@mui/icons-material/Save');
17
+ var VisibilityIcon = require('@mui/icons-material/Visibility');
16
18
  var CloudUploadIcon = require('@mui/icons-material/CloudUpload');
17
19
  var Checkbox = require('@mui/material/Checkbox');
18
20
  var FormControlLabel = require('@mui/material/FormControlLabel');
@@ -5660,9 +5662,134 @@ class ApiService {
5660
5662
  }
5661
5663
  }
5662
5664
 
5665
+ /**
5666
+ * SetService<T>
5667
+ *
5668
+ * Небольшой обёрткой над observable Set из MobX, которая:
5669
+ * - хранит уникальные значения типа T;
5670
+ * - предоставляет реактивные геттеры items / list;
5671
+ * - даёт удобные методы add / delete / toggle / clear;
5672
+ * - поддерживает batch‑операции addMany / deleteMany.
5673
+ *
5674
+ * Типичный сценарий использования:
5675
+ * - хранение множества выбранных id;
5676
+ * - хранение множества активных фильтров;
5677
+ * - хранение множества "выделенных" элементов в UI.
5678
+ *
5679
+ * Пример:
5680
+ * const selection = new SetService<string>();
5681
+ * selection.add('id-1');
5682
+ * selection.toggle('id-2');
5683
+ * selection.isContain('id-1'); // true
5684
+ */
5685
+ class SetService {
5686
+ /**
5687
+ * Внутренний набор значений.
5688
+ *
5689
+ * Используется observable.set, чтобы:
5690
+ * - изменения были реактивны для MobX;
5691
+ * - операции add/delete были O(1) по времени.
5692
+ */
5693
+ _items = observable.set();
5694
+ /**
5695
+ * Возвращает observable Set со всеми значениями.
5696
+ *
5697
+ * Подходит, если нужно работать с Set напрямую:
5698
+ * setService.items.has(value)
5699
+ */
5700
+ get items() {
5701
+ return this._items;
5702
+ }
5703
+ /**
5704
+ * Возвращает значения набора в виде обычного массива.
5705
+ *
5706
+ * Удобно использовать в React-компонентах:
5707
+ * setService.list.map(...)
5708
+ */
5709
+ get list() {
5710
+ return Array.from(this.items.values());
5711
+ }
5712
+ /**
5713
+ * Проверяет, содержится ли значение в наборе.
5714
+ *
5715
+ * @param value Значение для проверки.
5716
+ * @returns true, если value есть в наборе; иначе false.
5717
+ */
5718
+ has(value) {
5719
+ return this.items.has(value);
5720
+ }
5721
+ /**
5722
+ * Возвращает значение, пустой ли список
5723
+ * @returns true, если в списке нет ни одного элемента; иначе false.
5724
+ */
5725
+ get isEmpty() {
5726
+ return this.items.size === 0;
5727
+ }
5728
+ /**
5729
+ * Добавляет значение в набор.
5730
+ *
5731
+ * @param value Значение для добавления.
5732
+ */
5733
+ add(value) {
5734
+ this._items.add(value);
5735
+ }
5736
+ /**
5737
+ * Добавляет в набор несколько значений подряд.
5738
+ *
5739
+ * @param values Массив значений для добавления.
5740
+ */
5741
+ addMany(values) {
5742
+ values.forEach((value) => {
5743
+ this.add(value);
5744
+ });
5745
+ }
5746
+ /**
5747
+ * Удаляет значение из набора.
5748
+ *
5749
+ * @param value Значение для удаления.
5750
+ */
5751
+ delete(value) {
5752
+ this._items.delete(value);
5753
+ }
5754
+ /**
5755
+ * Удаляет из набора несколько значений подряд.
5756
+ *
5757
+ * @param values Массив значений для удаления.
5758
+ */
5759
+ deleteMany(values) {
5760
+ values.forEach((value) => {
5761
+ this.delete(value);
5762
+ });
5763
+ }
5764
+ /**
5765
+ * Переключает присутствие значения в наборе.
5766
+ *
5767
+ * Поведение:
5768
+ * - если значение уже есть, оно будет удалено;
5769
+ * - если значения нет, оно будет добавлено.
5770
+ *
5771
+ * @param value Значение для переключения.
5772
+ */
5773
+ toggle(value) {
5774
+ if (this.has(value)) {
5775
+ this.delete(value);
5776
+ }
5777
+ else {
5778
+ this.add(value);
5779
+ }
5780
+ }
5781
+ /**
5782
+ * Полностью очищает набор.
5783
+ */
5784
+ clear() {
5785
+ this._items.clear();
5786
+ }
5787
+ }
5788
+
5663
5789
  class CollectionService {
5664
5790
  props;
5665
5791
  _items = observable.map();
5792
+ selectedIds = new SetService();
5666
5793
  constructor(props) {
5667
5794
  this.props = props;
5668
5795
  makeAutoObservable(this);
@@ -5778,8 +5905,8 @@ class CollectionService {
5778
5905
  clear() {
5779
5906
  this._items.clear();
5780
5907
  this.updatedId = null;
5781
- this.selectedId = null;
5782
5908
  this.deletedId = null;
5909
+ this.selectedIds.clear();
5783
5910
  }
5784
5911
  _updatedId = null;
5785
5912
  get updatedId() {
@@ -5794,18 +5921,8 @@ class CollectionService {
5794
5921
  return item;
5795
5922
  }
5796
5923
  }
5797
- _selectedId = null;
5798
- get selectedId() {
5799
- return this._selectedId;
5800
- }
5801
- set selectedId(value) {
5802
- this._selectedId = value;
5803
- }
5804
- get selectedItem() {
5805
- if (this.selectedId != null) {
5806
- const item = this.getById(this.selectedId);
5807
- return item;
5808
- }
5924
+ get isUpdated() {
5925
+ return this.updatedId !== null;
5809
5926
  }
5810
5927
  _deletedId = null;
5811
5928
  get deletedId() {
@@ -5820,6 +5937,9 @@ class CollectionService {
5820
5937
  return item;
5821
5938
  }
5822
5939
  }
5940
+ get isDeleted() {
5941
+ return this.deletedId !== null;
5942
+ }
5823
5943
  }
5824
5944
 
5825
5945
  /**
@@ -17410,6 +17530,8 @@ const icons = {
17410
17530
  save: SaveIcon,
17411
17531
  delete: DeleteIcon,
17412
17532
  clear: ClearIcon,
17533
+ show: VisibilityIcon,
17534
+ close: CloseIcon,
17413
17535
  };
17414
17536
 
17415
17537
  const StyledIconButton = material.styled(material.IconButton)(() => {
@@ -17417,10 +17539,9 @@ const StyledIconButton = material.styled(material.IconButton)(() => {
17417
17539
  padding: 0,
17418
17540
  };
17419
17541
  });
17420
- const IconButton = ({ title, iconProps, ...props }) => {
17542
+ const IconButton = ({ title, iconName, iconColor = 'primary', ...props }) => {
17421
17543
  const buttonId = React__namespace.useId();
17422
- const Icon = icons[iconProps.name];
17423
- const iconColor = iconProps.color ?? 'primary';
17544
+ const Icon = icons[iconName];
17424
17545
  if (title) {
17425
17546
  return (jsxRuntime.jsx(material.Tooltip, { title: title, children: jsxRuntime.jsx(StyledIconButton, { id: buttonId, ...props, onClick: (event) => {
17426
17547
  event.stopPropagation();
@@ -17445,13 +17566,10 @@ const DeleteButton = ({ notification, onDelete, disabled = false, ...props }) =>
17445
17566
  const handleCloseNotification = () => {
17446
17567
  setOpenNotification(false);
17447
17568
  };
17448
- const iconProps = React__namespace.useMemo(() => {
17449
- return {
17450
- name: 'delete',
17451
- color: disabled ? 'disabled' : 'error',
17452
- };
17569
+ const iconColor = React__namespace.useMemo(() => {
17570
+ return disabled ? 'disabled' : 'error';
17453
17571
  }, [disabled]);
17454
- return (jsxRuntime.jsxs(React__namespace.Fragment, { children: [notification ? (jsxRuntime.jsx(material.Tooltip, { title: notification.title, children: jsxRuntime.jsx(IconButton, { ...props, iconProps: iconProps, onClick: handleOpenNotification, disabled: disabled }) })) : (jsxRuntime.jsx(IconButton, { ...props, iconProps: iconProps, onClick: onDelete, disabled: disabled })), notification ? (jsxRuntime.jsxs(material.Dialog, { slots: {
17572
+ return (jsxRuntime.jsxs(React__namespace.Fragment, { children: [notification ? (jsxRuntime.jsx(material.Tooltip, { title: notification.title, children: jsxRuntime.jsx(IconButton, { ...props, iconName: "delete", iconColor: iconColor, onClick: handleOpenNotification, disabled: disabled }) })) : (jsxRuntime.jsx(IconButton, { ...props, iconName: "delete", iconColor: iconColor, onClick: onDelete, disabled: disabled })), notification ? (jsxRuntime.jsxs(material.Dialog, { slots: {
17455
17573
  transition: Transition,
17456
17574
  }, open: openNotification, onClose: handleCloseNotification, children: [jsxRuntime.jsx(material.DialogTitle, { id: `${id}-dialog-title`, children: notification.title }), jsxRuntime.jsx(material.DialogContent, { children: jsxRuntime.jsx(material.DialogContentText, { id: `${id}-dialog-text`, children: notification.description }) }), jsxRuntime.jsxs(material.DialogActions, { children: [jsxRuntime.jsx(material.Button, { variant: "contained", color: "error", sx: {
17457
17575
  textTransform: 'none',
@@ -20315,10 +20433,7 @@ function CustomList({ items, columnsCount = 1, getContent, title, getKey, onClic
20315
20433
  textAlign: 'center',
20316
20434
  fontWeight: 700,
20317
20435
  ...sx?.title,
20318
- }, children: title })) : null, isShowClear ? (jsxRuntime.jsx(IconButton, { iconProps: {
20319
- name: 'clear',
20320
- color: 'warning',
20321
- }, onClick: onClear })) : null] })) : null, isData ? (jsxRuntime.jsx(material.List, { sx: ({ spacing, breakpoints }) => {
20436
+ }, children: title })) : null, isShowClear ? (jsxRuntime.jsx(IconButton, { iconName: "clear", iconColor: "warning", onClick: onClear })) : null] })) : null, isData ? (jsxRuntime.jsx(material.List, { sx: ({ spacing, breakpoints }) => {
20322
20437
  return {
20323
20438
  display: 'grid',
20324
20439
  gridTemplateColumns: `repeat(${columnsCount}, 1fr)`,
@@ -48197,6 +48312,7 @@ exports.Modal = modal;
48197
48312
  exports.NoData = NoData;
48198
48313
  exports.Paragraph = Paragraph;
48199
48314
  exports.Select = FormSelect;
48315
+ exports.SetService = SetService;
48200
48316
  exports.Tabs = Tabs;
48201
48317
  exports.TangramLayer = TangramLayer;
48202
48318
  exports.TextField = TextField;
package/dist/index.esm.js CHANGED
@@ -1 +1 @@
1
- export{alertStore}from"./stores/alert/alert.esm.js";export{modalStore}from"./stores/modal/modal.esm.js";export{Operations}from"./lib/types.esm.js";export{useDeviceType}from"./lib/hooks/useDeviceType.esm.js";export{useGetUser,useLazyGetUser}from"./lib/hooks/useGetUser.esm.js";export{useShowErrorSnackbar}from"./lib/hooks/useShowErrorSnackbar.esm.js";export{useShowSnackbar}from"./lib/hooks/useShowSnackbar.esm.js";export{useSignIn}from"./lib/hooks/useSignIn.esm.js";export{useSignOut}from"./lib/hooks/useSignOut.esm.js";export{copyInformation,encodeString,getEntityNames,getImageSrc,getNewId,getUniqueKey,getUrlencodedBody,showSnackbar}from"./lib/utils.esm.js";export{_testApiKeys}from"./configs/global/constants.esm.js";export{GlobalConfig}from"./configs/global/global.esm.js";export{API_METHODS}from"./constants/api.esm.js";export{PanelsNames}from"./constants/map.esm.js";export{arraySchema,dateRequiredSchema,dateSchema,getStringRequiredSchema,getStringSchema,numberRequiredSchema,numberSchema}from"./constants/schema.esm.js";export{default as Accordion}from"./components/accordion/accordion.esm.js";export{default as AlertDialog}from"./components/alert-dialog/alert-dialog.esm.js";export{default as Button}from"./components/buttons/button/button.esm.js";export{default as DeleteButton}from"./components/buttons/delete/delete.esm.js";export{default as IconButton}from"./components/buttons/icon/icon.esm.js";export{default as UploadButton}from"./components/buttons/upload/upload.esm.js";export{default as Card}from"./components/card/card.esm.js";export{default as Checkbox}from"./components/checkbox/checkbox.esm.js";export{default as CopyText}from"./components/copy-text/copy-text.esm.js";export{default as DateField}from"./components/date-field/date-field.esm.js";export{default as DragList}from"./components/drag-list/drag-list.esm.js";export{default as DraggableContainer}from"./components/draggable-container/draggable-container.esm.js";export{default as ErrorBoundary}from"./components/error-boundary/error-boundary.esm.js";export{default as FormErrorMessage}from"./components/form/error-message/error-message.esm.js";export{default as Form}from"./components/form/form.esm.js";export{useFormContext}from"./components/form/hooks/useFormContext.esm.js";export{default as Input}from"./components/input/input.esm.js";export{SourceLayers,TangramSourceNames}from"./components/layers/leaflet/lib/types.esm.js";export{getAllLayers,getAllPointLayers,getAllPolygonLayers,getAllPolylineLayers,getBackendDate,getLayerModalsNames,getLayerName,getValidLayer}from"./components/layers/leaflet/lib/utils.esm.js";export{sourceUrl,tile_size}from"./components/layers/leaflet/config/constants.esm.js";export{getBuildingLayers}from"./components/layers/leaflet/layers/building/utils.esm.js";export{getBuiltupAreaLayers}from"./components/layers/leaflet/layers/builtup-area/utils.esm.js";export{getAdminAreaLayers}from"./components/layers/leaflet/layers/admin-area/utils.esm.js";export{getCameraLayers}from"./components/layers/leaflet/layers/camera/lib/utils.esm.js";export{cameraConfig}from"./components/layers/leaflet/layers/camera/config/constants.esm.js";export{getCityPOILayers}from"./components/layers/leaflet/layers/city-POI/utils.esm.js";export{getConditionLayers}from"./components/layers/leaflet/layers/condition/utils.esm.js";export{getFacilityAreaLayers}from"./components/layers/leaflet/layers/facility-area/utils.esm.js";export{landuseAreaFeatureTypes,landuseAreaLayerGeometryData,landuseAreaLayerLabelData}from"./components/layers/leaflet/layers/landuse-area/constants.esm.js";export{getLanduseAreaGeometryLayer,getLanduseAreaLabelLayer,getLanduseAreaLayers}from"./components/layers/leaflet/layers/landuse-area/utils.esm.js";export{getLaneMarkingArrowLayers}from"./components/layers/leaflet/layers/lane-marking-arrow/utils.esm.js";export{getLinkLayers}from"./components/layers/leaflet/layers/link/utils.esm.js";export{getNatureFieldLayers}from"./components/layers/leaflet/layers/nature-field/utils.esm.js";export{getNatureForestGeometryLayer,getNatureForestLayers}from"./components/layers/leaflet/layers/nature-forest/utils.esm.js";export{getOceanAreaLayers}from"./components/layers/leaflet/layers/ocean-area/utils.esm.js";export{getOneWayLayers}from"./components/layers/leaflet/layers/one-way/utils.esm.js";export{getPillarLayers}from"./components/layers/leaflet/layers/pillar/lib/utils.esm.js";export{pillarConfig}from"./components/layers/leaflet/layers/pillar/config/constants.esm.js";export{catIds,text_source}from"./components/layers/leaflet/layers/POI/constants.esm.js";export{getDefaultPOI,getPOILayers,getPOITypeLayer}from"./components/layers/leaflet/layers/POI/utils.esm.js";export{getPointAddressLayers}from"./components/layers/leaflet/layers/point-address/utils.esm.js";export{getRailroadLayers}from"./components/layers/leaflet/layers/railroad/utils.esm.js";export{getTrafficSignImgSrc,getTrafficSignLayers,parseTrafficSignCSVFile}from"./components/layers/leaflet/layers/traffic-sign/lib/utils.esm.js";export{allTrafficSigns,trafficSignConfig,trafficSigns,trafficSignsDop}from"./components/layers/leaflet/layers/traffic-sign/config/constants.esm.js";export{getTrafficSignalLayers}from"./components/layers/leaflet/layers/traffic-signal/lib/utils.esm.js";export{trafficSignalConfig}from"./components/layers/leaflet/layers/traffic-signal/config/constants.esm.js";export{getWaterAreaLayers}from"./components/layers/leaflet/layers/water-area/utils.esm.js";export{getWaterLinkLayers}from"./components/layers/leaflet/layers/water-link/utils.esm.js";export{default as LeafletLayer}from"./components/layers/leaflet/leaflet.esm.js";export{TangramLayer}from"./components/layers/leaflet/services/tangram-layer.esm.js";export{default as List}from"./components/list/list.esm.js";export{default as Loader}from"./components/loader/loader.esm.js";export{default as Modal}from"./components/modal/modal.esm.js";export{modalStyle}from"./components/modal/styles.esm.js";export{default as NoData}from"./components/no-data/no-data.esm.js";export{default as Paragraph}from"./components/paragraph/paragraph.esm.js";export{default as Select}from"./components/select/select.esm.js";export{default as Tabs}from"./components/tabs/tabs.esm.js";export{default as TextField}from"./components/text-field/text-field.esm.js";export{CSVUploader}from"./components/uploader/csv/csv.esm.js";export{default as ExcelUploader}from"./components/uploader/excel/excel.esm.js";export{default as AuthPage}from"./pages/auth/auth.esm.js";export{default as DartcomAuthProvider}from"./providers/auth/auth.esm.js";export{default as DartcomInitializeProvider}from"./providers/initialize/initialize.esm.js";export{default as DartcomLocalizationProvider}from"./providers/localization/localization.esm.js";export{default as DartcomProviders}from"./providers/providers.esm.js";export{ApiService}from"./services/api/api.service.esm.js";export{CollectionService}from"./services/collection/collection.service.esm.js";export{GeometryHistoryService}from"./services/geometry-history/geometry-history.service.esm.js";export{localStateService}from"./services/local-state/local-state.esm.js";export{localizationService}from"./services/localization/localization.esm.js";export{loggerService}from"./services/logger/logger.esm.js";export{mapService}from"./services/map/map.service.esm.js";export{queryService}from"./services/query/query.esm.js";
1
+ export{alertStore}from"./stores/alert/alert.esm.js";export{modalStore}from"./stores/modal/modal.esm.js";export{Operations}from"./lib/types.esm.js";export{useDeviceType}from"./lib/hooks/useDeviceType.esm.js";export{useGetUser,useLazyGetUser}from"./lib/hooks/useGetUser.esm.js";export{useShowErrorSnackbar}from"./lib/hooks/useShowErrorSnackbar.esm.js";export{useShowSnackbar}from"./lib/hooks/useShowSnackbar.esm.js";export{useSignIn}from"./lib/hooks/useSignIn.esm.js";export{useSignOut}from"./lib/hooks/useSignOut.esm.js";export{copyInformation,encodeString,getEntityNames,getImageSrc,getNewId,getUniqueKey,getUrlencodedBody,showSnackbar}from"./lib/utils.esm.js";export{_testApiKeys}from"./configs/global/constants.esm.js";export{GlobalConfig}from"./configs/global/global.esm.js";export{API_METHODS}from"./constants/api.esm.js";export{PanelsNames}from"./constants/map.esm.js";export{arraySchema,dateRequiredSchema,dateSchema,getStringRequiredSchema,getStringSchema,numberRequiredSchema,numberSchema}from"./constants/schema.esm.js";export{default as Accordion}from"./components/accordion/accordion.esm.js";export{default as AlertDialog}from"./components/alert-dialog/alert-dialog.esm.js";export{default as Button}from"./components/buttons/button/button.esm.js";export{default as DeleteButton}from"./components/buttons/delete/delete.esm.js";export{default as IconButton}from"./components/buttons/icon/icon.esm.js";export{default as UploadButton}from"./components/buttons/upload/upload.esm.js";export{default as Card}from"./components/card/card.esm.js";export{default as Checkbox}from"./components/checkbox/checkbox.esm.js";export{default as CopyText}from"./components/copy-text/copy-text.esm.js";export{default as DateField}from"./components/date-field/date-field.esm.js";export{default as DragList}from"./components/drag-list/drag-list.esm.js";export{default as DraggableContainer}from"./components/draggable-container/draggable-container.esm.js";export{default as ErrorBoundary}from"./components/error-boundary/error-boundary.esm.js";export{default as FormErrorMessage}from"./components/form/error-message/error-message.esm.js";export{default as Form}from"./components/form/form.esm.js";export{useFormContext}from"./components/form/hooks/useFormContext.esm.js";export{default as Input}from"./components/input/input.esm.js";export{SourceLayers,TangramSourceNames}from"./components/layers/leaflet/lib/types.esm.js";export{getAllLayers,getAllPointLayers,getAllPolygonLayers,getAllPolylineLayers,getBackendDate,getLayerModalsNames,getLayerName,getValidLayer}from"./components/layers/leaflet/lib/utils.esm.js";export{sourceUrl,tile_size}from"./components/layers/leaflet/config/constants.esm.js";export{getBuildingLayers}from"./components/layers/leaflet/layers/building/utils.esm.js";export{getBuiltupAreaLayers}from"./components/layers/leaflet/layers/builtup-area/utils.esm.js";export{getAdminAreaLayers}from"./components/layers/leaflet/layers/admin-area/utils.esm.js";export{getCameraLayers}from"./components/layers/leaflet/layers/camera/lib/utils.esm.js";export{cameraConfig}from"./components/layers/leaflet/layers/camera/config/constants.esm.js";export{getCityPOILayers}from"./components/layers/leaflet/layers/city-POI/utils.esm.js";export{getConditionLayers}from"./components/layers/leaflet/layers/condition/utils.esm.js";export{getFacilityAreaLayers}from"./components/layers/leaflet/layers/facility-area/utils.esm.js";export{landuseAreaFeatureTypes,landuseAreaLayerGeometryData,landuseAreaLayerLabelData}from"./components/layers/leaflet/layers/landuse-area/constants.esm.js";export{getLanduseAreaGeometryLayer,getLanduseAreaLabelLayer,getLanduseAreaLayers}from"./components/layers/leaflet/layers/landuse-area/utils.esm.js";export{getLaneMarkingArrowLayers}from"./components/layers/leaflet/layers/lane-marking-arrow/utils.esm.js";export{getLinkLayers}from"./components/layers/leaflet/layers/link/utils.esm.js";export{getNatureFieldLayers}from"./components/layers/leaflet/layers/nature-field/utils.esm.js";export{getNatureForestGeometryLayer,getNatureForestLayers}from"./components/layers/leaflet/layers/nature-forest/utils.esm.js";export{getOceanAreaLayers}from"./components/layers/leaflet/layers/ocean-area/utils.esm.js";export{getOneWayLayers}from"./components/layers/leaflet/layers/one-way/utils.esm.js";export{getPillarLayers}from"./components/layers/leaflet/layers/pillar/lib/utils.esm.js";export{pillarConfig}from"./components/layers/leaflet/layers/pillar/config/constants.esm.js";export{catIds,text_source}from"./components/layers/leaflet/layers/POI/constants.esm.js";export{getDefaultPOI,getPOILayers,getPOITypeLayer}from"./components/layers/leaflet/layers/POI/utils.esm.js";export{getPointAddressLayers}from"./components/layers/leaflet/layers/point-address/utils.esm.js";export{getRailroadLayers}from"./components/layers/leaflet/layers/railroad/utils.esm.js";export{getTrafficSignImgSrc,getTrafficSignLayers,parseTrafficSignCSVFile}from"./components/layers/leaflet/layers/traffic-sign/lib/utils.esm.js";export{allTrafficSigns,trafficSignConfig,trafficSigns,trafficSignsDop}from"./components/layers/leaflet/layers/traffic-sign/config/constants.esm.js";export{getTrafficSignalLayers}from"./components/layers/leaflet/layers/traffic-signal/lib/utils.esm.js";export{trafficSignalConfig}from"./components/layers/leaflet/layers/traffic-signal/config/constants.esm.js";export{getWaterAreaLayers}from"./components/layers/leaflet/layers/water-area/utils.esm.js";export{getWaterLinkLayers}from"./components/layers/leaflet/layers/water-link/utils.esm.js";export{default as LeafletLayer}from"./components/layers/leaflet/leaflet.esm.js";export{TangramLayer}from"./components/layers/leaflet/services/tangram-layer.esm.js";export{default as List}from"./components/list/list.esm.js";export{default as Loader}from"./components/loader/loader.esm.js";export{default as Modal}from"./components/modal/modal.esm.js";export{modalStyle}from"./components/modal/styles.esm.js";export{default as NoData}from"./components/no-data/no-data.esm.js";export{default as Paragraph}from"./components/paragraph/paragraph.esm.js";export{default as Select}from"./components/select/select.esm.js";export{default as Tabs}from"./components/tabs/tabs.esm.js";export{default as TextField}from"./components/text-field/text-field.esm.js";export{CSVUploader}from"./components/uploader/csv/csv.esm.js";export{default as ExcelUploader}from"./components/uploader/excel/excel.esm.js";export{default as AuthPage}from"./pages/auth/auth.esm.js";export{default as DartcomAuthProvider}from"./providers/auth/auth.esm.js";export{default as DartcomInitializeProvider}from"./providers/initialize/initialize.esm.js";export{default as DartcomLocalizationProvider}from"./providers/localization/localization.esm.js";export{default as DartcomProviders}from"./providers/providers.esm.js";export{ApiService}from"./services/api/api.service.esm.js";export{CollectionService}from"./services/collection/collection.service.esm.js";export{GeometryHistoryService}from"./services/geometry-history/geometry-history.service.esm.js";export{localStateService}from"./services/local-state/local-state.esm.js";export{localizationService}from"./services/localization/localization.esm.js";export{loggerService}from"./services/logger/logger.esm.js";export{mapService}from"./services/map/map.service.esm.js";export{queryService}from"./services/query/query.esm.js";export{SetService}from"./services/set/set.service.esm.js";
@@ -1,7 +1,9 @@
1
1
  import { Nullable, StringOrNumber } from '../../lib';
2
+ import { SetService } from '../set';
2
3
  export declare class CollectionService<T, Id extends StringOrNumber> {
3
4
  private readonly props;
4
- private _items;
5
+ private readonly _items;
6
+ readonly selectedIds: SetService<Id>;
5
7
  constructor(props: {
6
8
  getId: (item: T) => Id;
7
9
  normalizeItem: (item: T) => T;
@@ -88,13 +90,11 @@ export declare class CollectionService<T, Id extends StringOrNumber> {
88
90
  get updatedId(): Nullable<Id>;
89
91
  set updatedId(value: Nullable<Id>);
90
92
  get updatedItem(): T | undefined;
91
- private _selectedId;
92
- get selectedId(): Nullable<Id>;
93
- set selectedId(value: Nullable<Id>);
94
- get selectedItem(): T | undefined;
93
+ get isUpdated(): boolean;
95
94
  private _deletedId;
96
95
  get deletedId(): Nullable<Id>;
97
96
  set deletedId(value: Nullable<Id>);
98
97
  get deletedItem(): T | undefined;
98
+ get isDeleted(): boolean;
99
99
  }
100
100
  //# sourceMappingURL=collection.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collection.service.d.ts","sourceRoot":"","sources":["../../../src/services/collection/collection.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAIjD,qBAAa,iBAAiB,CAAC,CAAC,EAAE,EAAE,SAAS,cAAc;IAIvD,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHxB,OAAO,CAAC,MAAM,CAAuC;gBAGlC,KAAK,EAAE;QACtB,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;QACvB,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;KAC/B;IAKH;;OAEG;IACI,WAAW,CAAC,IAAI,EAAE,CAAC;IAI1B;;OAEG;IACH,IAAW,KAAK,oDAEf;IAED;;OAEG;IACH,IAAW,IAAI,QAEd;IAED;;;;;;;;OAQG;IACI,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAIvD;;;;;;;;OAQG;IACI,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;IAMnE;;;;;;;;;OASG;IACI,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAQxC;;;;;OAKG;IACI,OAAO,CAAC,EAAE,EAAE,EAAE;IAMrB;;;;OAIG;IACI,GAAG,CAAC,IAAI,EAAE,CAAC;IAQlB;;;;OAIG;IACI,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE;IAMzB;;;;OAIG;IACI,MAAM,CAAC,EAAE,EAAE,EAAE;IAIpB;;;;OAIG;IACI,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE;IAM3B;;OAEG;IACI,KAAK;IAQZ,OAAO,CAAC,UAAU,CAAsB;IACxC,IAAW,SAAS,iBAEnB;IACD,IAAW,SAAS,CAAC,KAAK,cAAA,EAEzB;IACD,IAAW,WAAW,kBAMrB;IAED,OAAO,CAAC,WAAW,CAAsB;IACzC,IAAW,UAAU,iBAEpB;IACD,IAAW,UAAU,CAAC,KAAK,cAAA,EAE1B;IACD,IAAW,YAAY,kBAMtB;IAED,OAAO,CAAC,UAAU,CAAsB;IACxC,IAAW,SAAS,iBAEnB;IACD,IAAW,SAAS,CAAC,KAAK,cAAA,EAEzB;IACD,IAAW,WAAW,kBAMrB;CACF"}
1
+ {"version":3,"file":"collection.service.d.ts","sourceRoot":"","sources":["../../../src/services/collection/collection.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAIjD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,qBAAa,iBAAiB,CAAC,CAAC,EAAE,EAAE,SAAS,cAAc;IAMvD,OAAO,CAAC,QAAQ,CAAC,KAAK;IALxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAE9D,SAAgB,WAAW,iBAAwB;gBAGhC,KAAK,EAAE;QACtB,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;QACvB,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;KAC/B;IAKH;;OAEG;IACI,WAAW,CAAC,IAAI,EAAE,CAAC;IAI1B;;OAEG;IACH,IAAW,KAAK,oDAEf;IAED;;OAEG;IACH,IAAW,IAAI,QAEd;IAED;;;;;;;;OAQG;IACI,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAIvD;;;;;;;;OAQG;IACI,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;IAMnE;;;;;;;;;OASG;IACI,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAQxC;;;;;OAKG;IACI,OAAO,CAAC,EAAE,EAAE,EAAE;IAMrB;;;;OAIG;IACI,GAAG,CAAC,IAAI,EAAE,CAAC;IAQlB;;;;OAIG;IACI,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE;IAMzB;;;;OAIG;IACI,MAAM,CAAC,EAAE,EAAE,EAAE;IAIpB;;;;OAIG;IACI,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE;IAM3B;;OAEG;IACI,KAAK;IASZ,OAAO,CAAC,UAAU,CAAsB;IACxC,IAAW,SAAS,iBAEnB;IACD,IAAW,SAAS,CAAC,KAAK,cAAA,EAEzB;IACD,IAAW,WAAW,kBAMrB;IACD,IAAW,SAAS,YAEnB;IAED,OAAO,CAAC,UAAU,CAAsB;IACxC,IAAW,SAAS,iBAEnB;IACD,IAAW,SAAS,CAAC,KAAK,cAAA,EAEzB;IACD,IAAW,WAAW,kBAMrB;IACD,IAAW,SAAS,YAEnB;CACF"}
@@ -1 +1 @@
1
- import{observable as e,makeAutoObservable as t}from"../../node_modules/mobx/dist/mobx.esm.esm.js";class d{props;_items=e.map();constructor(e){this.props=e,t(this)}getIdByItem(e){return this.props.getId(e)}get items(){return this._items}get list(){return Array.from(this.items.values())}findAllBy(e,t){return this.list.filter(d=>d[e]===t)}findAllIn(e,t){const d=new Set(t);return this.list.filter(t=>d.has(t[e]))}findAllWhere(e){const t=Object.entries(e);return this.list.filter(e=>t.every(([t,d])=>e[t]===d))}getById(e){return this.items.get(e)}add(e){const t=this.props.getId(e),d=this.props.normalizeItem(e);this._items.set(t,d)}addMany(e){e.forEach(e=>{this.add(e)})}delete(e){this._items.delete(e)}deleteMany(e){e.forEach(e=>{this.delete(e)})}clear(){this._items.clear(),this.updatedId=null,this.selectedId=null,this.deletedId=null}_updatedId=null;get updatedId(){return this._updatedId}set updatedId(e){this._updatedId=e}get updatedItem(){if(null!=this.updatedId){return this.getById(this.updatedId)}}_selectedId=null;get selectedId(){return this._selectedId}set selectedId(e){this._selectedId=e}get selectedItem(){if(null!=this.selectedId){return this.getById(this.selectedId)}}_deletedId=null;get deletedId(){return this._deletedId}set deletedId(e){this._deletedId=e}get deletedItem(){if(null!=this.deletedId){return this.getById(this.deletedId)}}}export{d as CollectionService};
1
+ import{observable as e,makeAutoObservable as t}from"../../node_modules/mobx/dist/mobx.esm.esm.js";import{SetService as d}from"../set/set.service.esm.js";class s{props;_items=e.map();selectedIds=new d;constructor(e){this.props=e,t(this)}getIdByItem(e){return this.props.getId(e)}get items(){return this._items}get list(){return Array.from(this.items.values())}findAllBy(e,t){return this.list.filter(d=>d[e]===t)}findAllIn(e,t){const d=new Set(t);return this.list.filter(t=>d.has(t[e]))}findAllWhere(e){const t=Object.entries(e);return this.list.filter(e=>t.every(([t,d])=>e[t]===d))}getById(e){return this.items.get(e)}add(e){const t=this.props.getId(e),d=this.props.normalizeItem(e);this._items.set(t,d)}addMany(e){e.forEach(e=>{this.add(e)})}delete(e){this._items.delete(e)}deleteMany(e){e.forEach(e=>{this.delete(e)})}clear(){this._items.clear(),this.updatedId=null,this.deletedId=null,this.selectedIds.clear()}_updatedId=null;get updatedId(){return this._updatedId}set updatedId(e){this._updatedId=e}get updatedItem(){if(null!=this.updatedId){return this.getById(this.updatedId)}}get isUpdated(){return null!==this.updatedId}_deletedId=null;get deletedId(){return this._deletedId}set deletedId(e){this._deletedId=e}get deletedItem(){if(null!=this.deletedId){return this.getById(this.deletedId)}}get isDeleted(){return null!==this.deletedId}}export{s as CollectionService};
@@ -6,4 +6,5 @@ export * from './localization';
6
6
  export * from './logger';
7
7
  export * from './map';
8
8
  export * from './query';
9
+ export * from './set';
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './set.service';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/set/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * SetService<T>
3
+ *
4
+ * Небольшой обёрткой над observable Set из MobX, которая:
5
+ * - хранит уникальные значения типа T;
6
+ * - предоставляет реактивные геттеры items / list;
7
+ * - даёт удобные методы add / delete / toggle / clear;
8
+ * - поддерживает batch‑операции addMany / deleteMany.
9
+ *
10
+ * Типичный сценарий использования:
11
+ * - хранение множества выбранных id;
12
+ * - хранение множества активных фильтров;
13
+ * - хранение множества "выделенных" элементов в UI.
14
+ *
15
+ * Пример:
16
+ * const selection = new SetService<string>();
17
+ * selection.add('id-1');
18
+ * selection.toggle('id-2');
19
+ * selection.isContain('id-1'); // true
20
+ */
21
+ export declare class SetService<T> {
22
+ /**
23
+ * Внутренний набор значений.
24
+ *
25
+ * Используется observable.set, чтобы:
26
+ * - изменения были реактивны для MobX;
27
+ * - операции add/delete были O(1) по времени.
28
+ */
29
+ private readonly _items;
30
+ /**
31
+ * Возвращает observable Set со всеми значениями.
32
+ *
33
+ * Подходит, если нужно работать с Set напрямую:
34
+ * setService.items.has(value)
35
+ */
36
+ get items(): import("mobx").ObservableSet<T>;
37
+ /**
38
+ * Возвращает значения набора в виде обычного массива.
39
+ *
40
+ * Удобно использовать в React-компонентах:
41
+ * setService.list.map(...)
42
+ */
43
+ get list(): T[];
44
+ /**
45
+ * Проверяет, содержится ли значение в наборе.
46
+ *
47
+ * @param value Значение для проверки.
48
+ * @returns true, если value есть в наборе; иначе false.
49
+ */
50
+ has(value: T): boolean;
51
+ /**
52
+ * Возвращает значение, пустой ли список
53
+ * @returns true, если в списке нет ни одного элемента; иначе false.
54
+ */
55
+ get isEmpty(): boolean;
56
+ /**
57
+ * Добавляет значение в набор.
58
+ *
59
+ * @param value Значение для добавления.
60
+ */
61
+ add(value: T): void;
62
+ /**
63
+ * Добавляет в набор несколько значений подряд.
64
+ *
65
+ * @param values Массив значений для добавления.
66
+ */
67
+ addMany(values: T[]): void;
68
+ /**
69
+ * Удаляет значение из набора.
70
+ *
71
+ * @param value Значение для удаления.
72
+ */
73
+ delete(value: T): void;
74
+ /**
75
+ * Удаляет из набора несколько значений подряд.
76
+ *
77
+ * @param values Массив значений для удаления.
78
+ */
79
+ deleteMany(values: T[]): void;
80
+ /**
81
+ * Переключает присутствие значения в наборе.
82
+ *
83
+ * Поведение:
84
+ * - если значение уже есть, оно будет удалено;
85
+ * - если значения нет, оно будет добавлено.
86
+ *
87
+ * @param value Значение для переключения.
88
+ */
89
+ toggle(value: T): void;
90
+ /**
91
+ * Полностью очищает набор.
92
+ */
93
+ clear(): void;
94
+ }
95
+ //# sourceMappingURL=set.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.service.d.ts","sourceRoot":"","sources":["../../../src/services/set/set.service.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,UAAU,CAAC,CAAC;IACvB;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAE9C;;;;;OAKG;IACH,IAAW,KAAK,oCAEf;IAED;;;;;OAKG;IACH,IAAW,IAAI,QAEd;IAED;;;;;OAKG;IACI,GAAG,CAAC,KAAK,EAAE,CAAC;IAInB;;;OAGG;IACH,IAAW,OAAO,YAEjB;IAED;;;;OAIG;IACI,GAAG,CAAC,KAAK,EAAE,CAAC;IAInB;;;;OAIG;IACI,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;IAM1B;;;;OAIG;IACI,MAAM,CAAC,KAAK,EAAE,CAAC;IAItB;;;;OAIG;IACI,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE;IAM7B;;;;;;;;OAQG;IACI,MAAM,CAAC,KAAK,EAAE,CAAC;IAQtB;;OAEG;IACI,KAAK;CAGb"}
@@ -0,0 +1 @@
1
+ import{observable as e}from"../../node_modules/mobx/dist/mobx.esm.esm.js";class t{_items=e.set();get items(){return this._items}get list(){return Array.from(this.items.values())}has(e){return this.items.has(e)}get isEmpty(){return 0===this.items.size}add(e){this._items.add(e)}addMany(e){e.forEach(e=>{this.add(e)})}delete(e){this._items.delete(e)}deleteMany(e){e.forEach(e=>{this.delete(e)})}toggle(e){this.has(e)?this.delete(e):this.add(e)}clear(){this._items.clear()}}export{t as SetService};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dartcom/ui-kit",
3
- "version": "10.5.23",
3
+ "version": "10.6.0",
4
4
  "description": "Кастомная библиотека компонентов Dartcom",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",