brd-ui-kit 0.1.88 → 0.1.90

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 (70) hide show
  1. package/dist/approval-log.view-CZoufOXF.js +283 -0
  2. package/dist/approval-log.view-CZoufOXF.js.map +1 -0
  3. package/dist/approval-log.view-DC5xl6KF.cjs +5 -0
  4. package/dist/approval-log.view-DC5xl6KF.cjs.map +1 -0
  5. package/dist/brd-ui-kit.css +1 -1
  6. package/dist/components/approval-log/approval-log.d.ts +1 -1
  7. package/dist/components/approval-log/approval-log.view.d.ts +15 -0
  8. package/dist/components/forms/form-files-uploader.d.ts +1 -1
  9. package/dist/components/forms/form-input-password.d.ts +1 -1
  10. package/dist/components/transfer-list/transfer-list-card.d.ts +4 -2
  11. package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts +6 -1
  12. package/dist/components/ui/input/input.d.ts +1 -1
  13. package/dist/components-approval-log-approval-log.cjs +5 -6
  14. package/dist/components-approval-log-approval-log.cjs.map +1 -1
  15. package/dist/components-approval-log-approval-log.js +161 -268
  16. package/dist/components-approval-log-approval-log.js.map +1 -1
  17. package/dist/components-approval-log-approval-log.view.cjs +2 -0
  18. package/dist/components-approval-log-approval-log.view.cjs.map +1 -0
  19. package/dist/components-approval-log-approval-log.view.js +69 -0
  20. package/dist/components-approval-log-approval-log.view.js.map +1 -0
  21. package/dist/components-avatar-uploader-avatar-uploader.cjs +2 -2
  22. package/dist/components-avatar-uploader-avatar-uploader.cjs.map +1 -1
  23. package/dist/components-avatar-uploader-avatar-uploader.js +10 -11
  24. package/dist/components-avatar-uploader-avatar-uploader.js.map +1 -1
  25. package/dist/components-basic-avatar-basic-avatar.cjs +1 -3
  26. package/dist/components-basic-avatar-basic-avatar.cjs.map +1 -1
  27. package/dist/components-basic-avatar-basic-avatar.js +7 -69
  28. package/dist/components-basic-avatar-basic-avatar.js.map +1 -1
  29. package/dist/components-basic-avatar.cjs +1 -1
  30. package/dist/components-basic-avatar.js +1 -1
  31. package/dist/components-checkbox-group-checkbox-group.cjs +1 -1
  32. package/dist/components-checkbox-group-checkbox-group.cjs.map +1 -1
  33. package/dist/components-checkbox-group-checkbox-group.js +1 -1
  34. package/dist/components-forms-form-files-uploader.cjs +1 -12
  35. package/dist/components-forms-form-files-uploader.cjs.map +1 -1
  36. package/dist/components-forms-form-files-uploader.js +27 -3045
  37. package/dist/components-forms-form-files-uploader.js.map +1 -1
  38. package/dist/components-forms-form-input-password.cjs +1 -29
  39. package/dist/components-forms-form-input-password.cjs.map +1 -1
  40. package/dist/components-forms-form-input-password.js +29 -363
  41. package/dist/components-forms-form-input-password.js.map +1 -1
  42. package/dist/components-input-contact-input-contact.cjs +1 -1
  43. package/dist/components-input-contact-input-contact.cjs.map +1 -1
  44. package/dist/components-input-contact-input-contact.js +1 -1
  45. package/dist/components-story-drawer-story-drawer.cjs +1 -1
  46. package/dist/components-story-drawer-story-drawer.cjs.map +1 -1
  47. package/dist/components-story-drawer-story-drawer.js +10 -11
  48. package/dist/components-story-drawer-story-drawer.js.map +1 -1
  49. package/dist/components-transfer-list-transfer-list-card.cjs +4 -4
  50. package/dist/components-transfer-list-transfer-list-card.cjs.map +1 -1
  51. package/dist/components-transfer-list-transfer-list-card.js +69 -59
  52. package/dist/components-transfer-list-transfer-list-card.js.map +1 -1
  53. package/dist/components-transfer-list-transfer-list.cjs +1 -1
  54. package/dist/components-transfer-list-transfer-list.cjs.map +1 -1
  55. package/dist/components-transfer-list-transfer-list.js +58 -52
  56. package/dist/components-transfer-list-transfer-list.js.map +1 -1
  57. package/dist/components-ui-dropdown-menu-dropdown-menu.cjs +2 -2
  58. package/dist/components-ui-dropdown-menu-dropdown-menu.cjs.map +1 -1
  59. package/dist/components-ui-dropdown-menu-dropdown-menu.js +32 -23
  60. package/dist/components-ui-dropdown-menu-dropdown-menu.js.map +1 -1
  61. package/dist/components-ui-input-input.cjs.map +1 -1
  62. package/dist/components-ui-input-input.js.map +1 -1
  63. package/dist/index.cjs +1 -1
  64. package/dist/index.js +267 -268
  65. package/dist/index.js.map +1 -1
  66. package/package.json +4 -1
  67. package/dist/components-ui-typography-typography.styles-C6G6MFUq.js +0 -105
  68. package/dist/components-ui-typography-typography.styles-C6G6MFUq.js.map +0 -1
  69. package/dist/components-ui-typography-typography.styles-CMzY_pXl.cjs +0 -2
  70. package/dist/components-ui-typography-typography.styles-CMzY_pXl.cjs.map +0 -1
@@ -1,81 +1,85 @@
1
- import { jsxs as w, jsx as c } from "react/jsx-runtime";
2
- import { useMemo as s, useState as j, useCallback as l } from "react";
3
- import { TransferListCard as v } from "./components-transfer-list-transfer-list-card.js";
4
- import { Button as C } from "./components-ui-button-button.js";
1
+ import { jsxs as w, jsx as s } from "react/jsx-runtime";
2
+ import { useMemo as c, useState as j, useCallback as i } from "react";
3
+ import { Button as v } from "./components-ui-button-button.js";
5
4
  import "./components-ui-button-button.styles.js";
6
- import { Icon as M } from "./components-ui-icon-icon.js";
5
+ import { Icon as C } from "./components-ui-icon-icon.js";
7
6
  import "brd-phosphor-strokes-icons/icons";
8
- const m = !1, h = !0, D = ({ list: o, onChange: u }) => {
9
- const i = s(() => o.filter((e) => !e.inTarget), [o]), a = s(() => o.filter((e) => e.inTarget), [o]), [n, g] = j([]), p = s(() => new Set(n), [n]), I = s(() => new Set(i.map((e) => e.id)), [i]), T = s(
10
- () => new Set(a.map((e) => e.id)),
11
- [a]
12
- ), b = s(
13
- () => n.filter((e) => I.has(e)).length,
14
- [n, I]
15
- ), k = s(
7
+ import { TransferListCard as M } from "./components-transfer-list-transfer-list-card.js";
8
+ const m = !1, f = !0, G = ({ list: t, onChange: g }) => {
9
+ const a = c(() => t.filter((e) => !e.inTarget), [t]), l = c(() => t.filter((e) => e.inTarget), [t]), [n, p] = j([]), u = c(() => new Set(n), [n]), T = c(() => new Set(a.map((e) => e.id)), [a]), I = c(
10
+ () => new Set(l.map((e) => e.id)),
11
+ [l]
12
+ ), b = c(
16
13
  () => n.filter((e) => T.has(e)).length,
17
14
  [n, T]
18
- ), S = l((e) => {
19
- g(
20
- (t) => t.includes(e) ? t.filter((d) => d !== e) : [...t, e]
15
+ ), k = c(
16
+ () => n.filter((e) => I.has(e)).length,
17
+ [n, I]
18
+ ), y = c(
19
+ () => t.length === l.length,
20
+ [t.length, l.length]
21
+ ), S = i((e) => {
22
+ p(
23
+ (o) => o.includes(e) ? o.filter((d) => d !== e) : [...o, e]
21
24
  );
22
- }, []), r = l(
23
- (e, t) => {
24
- const d = t ?? n;
25
+ }, []), r = i(
26
+ (e, o) => {
27
+ const d = o ?? n;
25
28
  if (d.length === 0) return;
26
- const O = new Set(d), _ = o.map((f) => !O.has(f.id) || f.inTarget === e ? f : {
27
- ...f,
29
+ const O = new Set(d), _ = t.map((h) => !O.has(h.id) || h.inTarget === e ? h : {
30
+ ...h,
28
31
  inTarget: e
29
32
  });
30
- u(_), g([]);
33
+ g(_), p([]);
31
34
  },
32
- [o, u, n]
33
- ), x = l(
35
+ [t, g, n]
36
+ ), x = i(
34
37
  (e) => {
35
38
  r(
36
39
  e,
37
- o.filter((t) => t.inTarget !== e).map((t) => t.id)
40
+ t.filter((o) => o.inTarget !== e).map((o) => o.id)
38
41
  );
39
42
  },
40
- [o, r]
41
- ), L = l(
43
+ [t, r]
44
+ ), L = i(
42
45
  (e) => {
43
- r(h, [e]);
46
+ r(f, [e]);
44
47
  },
45
48
  [r]
46
- ), N = l(
49
+ ), N = i(
47
50
  (e) => {
48
51
  r(m, [e]);
49
52
  },
50
53
  [r]
51
54
  );
52
55
  return /* @__PURE__ */ w("div", { className: "flex h-full min-h-0 w-fit gap-6", children: [
53
- /* @__PURE__ */ c(
54
- v,
56
+ /* @__PURE__ */ s(
57
+ M,
55
58
  {
56
- items: i,
57
- selectedSet: p,
59
+ items: a,
60
+ selectedSet: u,
58
61
  onSelectItem: S,
59
62
  onMoveItem: L,
60
63
  direction: "right",
61
64
  showHeaderTooltip: !0,
62
65
  headerButton: {
63
66
  icon: "caret-right",
64
- onClick: () => x(h),
65
- disabled: i.length === 0
67
+ onClick: () => x(f),
68
+ disabled: a.length === 0
66
69
  },
67
- showFooterIcons: !1
70
+ showFooterIcons: !1,
71
+ emptyText: "Все пункты выполнены"
68
72
  }
69
73
  ),
70
74
  /* @__PURE__ */ w("div", { className: "flex h-full flex-col justify-center gap-8", children: [
71
- /* @__PURE__ */ c(
72
- C,
75
+ /* @__PURE__ */ s(
76
+ v,
73
77
  {
74
78
  variant: "circle",
75
- onClick: () => r(h),
79
+ onClick: () => r(f),
76
80
  disabled: b === 0,
77
- children: /* @__PURE__ */ c(
78
- M,
81
+ children: /* @__PURE__ */ s(
82
+ C,
79
83
  {
80
84
  type: "caret-right",
81
85
  className: "text-placeholder-text"
@@ -83,14 +87,14 @@ const m = !1, h = !0, D = ({ list: o, onChange: u }) => {
83
87
  )
84
88
  }
85
89
  ),
86
- /* @__PURE__ */ c(
87
- C,
90
+ /* @__PURE__ */ s(
91
+ v,
88
92
  {
89
93
  variant: "circle",
90
94
  onClick: () => r(m),
91
95
  disabled: k === 0,
92
- children: /* @__PURE__ */ c(
93
- M,
96
+ children: /* @__PURE__ */ s(
97
+ C,
94
98
  {
95
99
  type: "caret-left",
96
100
  className: "text-placeholder-text"
@@ -99,25 +103,27 @@ const m = !1, h = !0, D = ({ list: o, onChange: u }) => {
99
103
  }
100
104
  )
101
105
  ] }),
102
- /* @__PURE__ */ c(
103
- v,
106
+ /* @__PURE__ */ s(
107
+ M,
104
108
  {
105
- items: a,
106
- selectedSet: p,
109
+ items: l,
110
+ selectedSet: u,
111
+ allCompleted: y,
107
112
  onSelectItem: S,
108
113
  onMoveItem: N,
109
114
  direction: "left",
110
115
  headerButton: {
111
116
  icon: "caret-left",
112
117
  onClick: () => x(m),
113
- disabled: a.length === 0
118
+ disabled: l.length === 0
114
119
  },
115
- showFooterIcons: !0
120
+ showFooterIcons: !0,
121
+ emptyText: "В ожидании заполнения"
116
122
  }
117
123
  )
118
124
  ] });
119
125
  };
120
126
  export {
121
- D as TransferList
127
+ G as TransferList
122
128
  };
123
129
  //# sourceMappingURL=components-transfer-list-transfer-list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components-transfer-list-transfer-list.js","sources":["../src/components/transfer-list/transfer-list.tsx"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\nimport { TransferListCard } from \"./transfer-list-card\";\nimport { Button } from \"../ui/button\";\nimport { Icon } from \"../ui/icon\";\n\nexport type TransferListItem = {\n id: string;\n label: string;\n disabled?: boolean;\n inTarget: boolean;\n};\n\ntype Props = {\n list: TransferListItem[];\n onChange: (item: TransferListItem[]) => void;\n};\n\nconst MOVE_TO_LEFT = false;\nconst MOVE_TO_RIGHT = true;\n\nexport const TransferList = ({ list, onChange }: Props) => {\n const leftItems = useMemo(() => list.filter((i) => !i.inTarget), [list]);\n const rightItems = useMemo(() => list.filter((i) => i.inTarget), [list]);\n\n const [selectedIds, setSelectedIds] = useState<string[]>([]);\n\n const selectedSet = useMemo(() => new Set(selectedIds), [selectedIds]);\n const leftIdSet = useMemo(() => new Set(leftItems.map((item) => item.id)), [leftItems]);\n const rightIdSet = useMemo(\n () => new Set(rightItems.map((item) => item.id)),\n [rightItems],\n );\n\n const selectedLeftCount = useMemo(\n () => selectedIds.filter((id) => leftIdSet.has(id)).length,\n [selectedIds, leftIdSet],\n );\n const selectedRightCount = useMemo(\n () => selectedIds.filter((id) => rightIdSet.has(id)).length,\n [selectedIds, rightIdSet],\n );\n\n const onSelectItem = useCallback((id: string) => {\n setSelectedIds((prev) =>\n prev.includes(id) ? prev.filter((itemId) => itemId !== id) : [...prev, id],\n );\n }, []);\n\n const moveSelectedItems = useCallback(\n (move: boolean, ids?: string[]) => {\n const resolvedIds = ids ?? selectedIds;\n if (resolvedIds.length === 0) return;\n\n const idsToMoveSet = new Set(resolvedIds);\n\n const newData = list.map((item) => {\n if (!idsToMoveSet.has(item.id) || item.inTarget === move) {\n return item;\n }\n\n return {\n ...item,\n inTarget: move,\n };\n });\n\n onChange(newData);\n setSelectedIds([]);\n },\n [list, onChange, selectedIds],\n );\n\n const allMoveSelectedItems = useCallback(\n (move: boolean) => {\n moveSelectedItems(\n move,\n list.filter((item) => item.inTarget !== move).map((item) => item.id),\n );\n },\n [list, moveSelectedItems],\n );\n\n const moveToRight = useCallback(\n (itemId: string) => {\n moveSelectedItems(MOVE_TO_RIGHT, [itemId]);\n },\n [moveSelectedItems],\n );\n\n const moveToLeft = useCallback(\n (itemId: string) => {\n moveSelectedItems(MOVE_TO_LEFT, [itemId]);\n },\n [moveSelectedItems],\n );\n\n return (\n <div className=\"flex h-full min-h-0 w-fit gap-6\">\n <TransferListCard\n items={leftItems}\n selectedSet={selectedSet}\n onSelectItem={onSelectItem}\n onMoveItem={moveToRight}\n direction=\"right\"\n showHeaderTooltip={true}\n headerButton={{\n icon: \"caret-right\",\n onClick: () => allMoveSelectedItems(MOVE_TO_RIGHT),\n disabled: leftItems.length === 0,\n }}\n showFooterIcons={false}\n />\n\n <div className=\"flex h-full flex-col justify-center gap-8\">\n <Button\n variant=\"circle\"\n onClick={() => moveSelectedItems(MOVE_TO_RIGHT)}\n disabled={selectedLeftCount === 0}\n >\n <Icon\n type=\"caret-right\"\n className=\"text-placeholder-text\"\n />\n </Button>\n\n <Button\n variant=\"circle\"\n onClick={() => moveSelectedItems(MOVE_TO_LEFT)}\n disabled={selectedRightCount === 0}\n >\n <Icon\n type=\"caret-left\"\n className=\"text-placeholder-text\"\n />\n </Button>\n </div>\n\n <TransferListCard\n items={rightItems}\n selectedSet={selectedSet}\n onSelectItem={onSelectItem}\n onMoveItem={moveToLeft}\n direction=\"left\"\n headerButton={{\n icon: \"caret-left\",\n onClick: () => allMoveSelectedItems(MOVE_TO_LEFT),\n disabled: rightItems.length === 0,\n }}\n showFooterIcons\n />\n </div>\n );\n};\n"],"names":["MOVE_TO_LEFT","MOVE_TO_RIGHT","TransferList","list","onChange","leftItems","useMemo","i","rightItems","selectedIds","setSelectedIds","useState","selectedSet","leftIdSet","item","rightIdSet","selectedLeftCount","id","selectedRightCount","onSelectItem","useCallback","prev","itemId","moveSelectedItems","move","ids","resolvedIds","idsToMoveSet","newData","allMoveSelectedItems","moveToRight","moveToLeft","jsxs","jsx","TransferListCard","Button","Icon"],"mappings":"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"}
1
+ {"version":3,"file":"components-transfer-list-transfer-list.js","sources":["../src/components/transfer-list/transfer-list.tsx"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\nimport { Button } from \"../ui/button\";\nimport { Icon } from \"../ui/icon\";\nimport { TransferListCard } from \"./transfer-list-card\";\n\nexport type TransferListItem = {\n id: string;\n label: string;\n disabled?: boolean;\n inTarget: boolean;\n};\n\ntype Props = {\n list: TransferListItem[];\n onChange: (item: TransferListItem[]) => void;\n};\n\nconst MOVE_TO_LEFT = false;\nconst MOVE_TO_RIGHT = true;\n\nexport const TransferList = ({ list, onChange }: Props) => {\n const leftItems = useMemo(() => list.filter((i) => !i.inTarget), [list]);\n const rightItems = useMemo(() => list.filter((i) => i.inTarget), [list]);\n\n const [selectedIds, setSelectedIds] = useState<string[]>([]);\n\n const selectedSet = useMemo(() => new Set(selectedIds), [selectedIds]);\n const leftIdSet = useMemo(() => new Set(leftItems.map((item) => item.id)), [leftItems]);\n const rightIdSet = useMemo(\n () => new Set(rightItems.map((item) => item.id)),\n [rightItems],\n );\n\n const selectedLeftCount = useMemo(\n () => selectedIds.filter((id) => leftIdSet.has(id)).length,\n [selectedIds, leftIdSet],\n );\n const selectedRightCount = useMemo(\n () => selectedIds.filter((id) => rightIdSet.has(id)).length,\n [selectedIds, rightIdSet],\n );\n\n const allCompleted = useMemo(\n () => list.length === rightItems.length,\n [list.length, rightItems.length],\n );\n\n const onSelectItem = useCallback((id: string) => {\n setSelectedIds((prev) =>\n prev.includes(id) ? prev.filter((itemId) => itemId !== id) : [...prev, id],\n );\n }, []);\n\n const moveSelectedItems = useCallback(\n (move: boolean, ids?: string[]) => {\n const resolvedIds = ids ?? selectedIds;\n if (resolvedIds.length === 0) return;\n\n const idsToMoveSet = new Set(resolvedIds);\n\n const newData = list.map((item) => {\n if (!idsToMoveSet.has(item.id) || item.inTarget === move) {\n return item;\n }\n\n return {\n ...item,\n inTarget: move,\n };\n });\n\n onChange(newData);\n setSelectedIds([]);\n },\n [list, onChange, selectedIds],\n );\n\n const allMoveSelectedItems = useCallback(\n (move: boolean) => {\n moveSelectedItems(\n move,\n list.filter((item) => item.inTarget !== move).map((item) => item.id),\n );\n },\n [list, moveSelectedItems],\n );\n\n const moveToRight = useCallback(\n (itemId: string) => {\n moveSelectedItems(MOVE_TO_RIGHT, [itemId]);\n },\n [moveSelectedItems],\n );\n\n const moveToLeft = useCallback(\n (itemId: string) => {\n moveSelectedItems(MOVE_TO_LEFT, [itemId]);\n },\n [moveSelectedItems],\n );\n\n return (\n <div className=\"flex h-full min-h-0 w-fit gap-6\">\n <TransferListCard\n items={leftItems}\n selectedSet={selectedSet}\n onSelectItem={onSelectItem}\n onMoveItem={moveToRight}\n direction=\"right\"\n showHeaderTooltip={true}\n headerButton={{\n icon: \"caret-right\",\n onClick: () => allMoveSelectedItems(MOVE_TO_RIGHT),\n disabled: leftItems.length === 0,\n }}\n showFooterIcons={false}\n emptyText=\"Все пункты выполнены\"\n />\n\n <div className=\"flex h-full flex-col justify-center gap-8\">\n <Button\n variant=\"circle\"\n onClick={() => moveSelectedItems(MOVE_TO_RIGHT)}\n disabled={selectedLeftCount === 0}\n >\n <Icon\n type=\"caret-right\"\n className=\"text-placeholder-text\"\n />\n </Button>\n\n <Button\n variant=\"circle\"\n onClick={() => moveSelectedItems(MOVE_TO_LEFT)}\n disabled={selectedRightCount === 0}\n >\n <Icon\n type=\"caret-left\"\n className=\"text-placeholder-text\"\n />\n </Button>\n </div>\n\n <TransferListCard\n items={rightItems}\n selectedSet={selectedSet}\n allCompleted={allCompleted}\n onSelectItem={onSelectItem}\n onMoveItem={moveToLeft}\n direction=\"left\"\n headerButton={{\n icon: \"caret-left\",\n onClick: () => allMoveSelectedItems(MOVE_TO_LEFT),\n disabled: rightItems.length === 0,\n }}\n showFooterIcons\n emptyText=\"В ожидании заполнения\"\n />\n </div>\n );\n};\n"],"names":["MOVE_TO_LEFT","MOVE_TO_RIGHT","TransferList","list","onChange","leftItems","useMemo","i","rightItems","selectedIds","setSelectedIds","useState","selectedSet","leftIdSet","item","rightIdSet","selectedLeftCount","id","selectedRightCount","allCompleted","onSelectItem","useCallback","prev","itemId","moveSelectedItems","move","ids","resolvedIds","idsToMoveSet","newData","allMoveSelectedItems","moveToRight","moveToLeft","jsxs","jsx","TransferListCard","Button","Icon"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime");require("@radix-ui/react-accessible-icon");require("@radix-ui/react-accordion");require("@radix-ui/react-alert-dialog");require("@radix-ui/react-aspect-ratio");require("@radix-ui/react-avatar");require("@radix-ui/react-checkbox");require("@radix-ui/react-collapsible");require("@radix-ui/react-context-menu");require("@radix-ui/react-dialog");require("@radix-ui/react-direction");const C=require("@radix-ui/react-dropdown-menu");require("@radix-ui/react-form");require("@radix-ui/react-hover-card");require("@radix-ui/react-label");require("@radix-ui/react-menubar");require("@radix-ui/react-navigation-menu");require("@radix-ui/react-one-time-password-field");require("@radix-ui/react-password-toggle-field");require("@radix-ui/react-popover");require("@radix-ui/react-portal");require("@radix-ui/react-progress");require("@radix-ui/react-radio-group");require("@radix-ui/react-scroll-area");require("@radix-ui/react-select");require("@radix-ui/react-separator");require("@radix-ui/react-slider");require("@radix-ui/react-slot");require("@radix-ui/react-switch");require("@radix-ui/react-tabs");require("@radix-ui/react-toast");require("@radix-ui/react-toggle");require("@radix-ui/react-toggle-group");require("@radix-ui/react-toolbar");require("@radix-ui/react-tooltip");require("@radix-ui/react-visually-hidden");const p=require("./components-ui-icon-icon.cjs");require("brd-phosphor-strokes-icons/icons");const t=require("./lib-utils.cjs"),d=require("./components-ui-dropdown-menu-dropdown-menu.styles.cjs");function D(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const u=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(r,o,u.get?u:{enumerable:!0,get:()=>e[o]})}}return r.default=e,Object.freeze(r)}const a=D(C);function w({...e}){return n.jsx(a.Root,{"data-slot":"dropdown-menu",...e})}function h({...e}){return n.jsx(a.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}function x({className:e,sideOffset:r=4,align:o="end",...u}){return n.jsx(a.Portal,{children:n.jsx(a.Content,{"data-slot":"dropdown-menu-content",sideOffset:r,align:o,className:t.cn(d.dropdownMenuContentClassName,e),...u})})}function b({className:e,...r}){return n.jsx(a.Item,{"data-slot":"dropdown-menu-item",className:t.cn(d.dropdownMenuItemClassName,e),...r})}function j({className:e,children:r,checked:o,itemIndicator:u,closeOnSelect:l=!0,onSelect:s,...c}){const N=u!==null;return n.jsxs(a.CheckboxItem,{"data-slot":"dropdown-menu-checkbox-item",className:t.cn(d.dropdownMenuItemClassName,"border-none",e),checked:o,onSelect:i=>{s?.(i),!l&&!i.defaultPrevented&&i.preventDefault()},...c,children:[N&&n.jsx(a.ItemIndicator,{children:u??n.jsx(p.Icon,{type:"check",size:"small",className:d.dropdownMenuIconClassName})}),r]})}function y({trigger:e,items:r,onItemCheckedChange:o,contentProps:u,keepOpenOnItemSelect:l=!0}){return n.jsxs(w,{children:[n.jsx(h,{asChild:!0,children:e}),n.jsx(x,{...u,children:r.map(s=>n.jsx(j,{checked:s.checked,disabled:s.disabled,className:t.cn(s.className,s.checked&&s.checkedClassName),textValue:s.textValue,itemIndicator:s.itemIndicator,closeOnSelect:!l,onCheckedChange:c=>o(s.key,c===!0),children:n.jsxs("div",{className:t.cn("flex w-full items-center gap-2",(s.endAdornment||s.checkedEndAdornment)&&"justify-between"),children:[n.jsx("span",{children:s.label}),s.checked?s.checkedEndAdornment??s.endAdornment:s.endAdornment]})},s.key))})]})}function M({className:e,...r}){return n.jsx(a.Label,{"data-slot":"dropdown-menu-label",className:t.cn(d.dropdownMenuLabelClassName,e),...r})}function f({className:e,...r}){return n.jsx(a.Separator,{"data-slot":"dropdown-menu-separator",className:t.cn(d.dropdownMenuSeparatorClassName,e),...r})}function q({className:e,...r}){return n.jsx(a.SubTrigger,{"data-slot":"dropdown-menu-sub-trigger",className:t.cn(d.dropdownMenuSubTriggerClassName,e),...r})}function g({className:e,sideOffset:r=4,...o}){return n.jsx(a.Portal,{children:n.jsx(a.SubContent,{"data-slot":"dropdown-menu-sub-content",sideOffset:r,className:t.cn(d.dropdownMenuContentClassName,e),...o})})}function I(e){return e.icon?n.jsx("span",{className:d.dropdownMenuIconClassName,children:e.icon}):e.iconType?n.jsx(p.Icon,{type:e.iconType,className:t.cn(d.dropdownMenuIconClassName,e.alert&&"text-error-text")}):null}function m(e,r){const o=e.id??e.type+("label"in e?e.label:"");if(e.type==="separator")return n.jsx(f,{},o);if(e.type==="label")return n.jsx(M,{children:e.label},o);const u=e.readOnly?null:I(e);return e.children?.length?n.jsxs(a.Sub,{children:[n.jsxs(q,{disabled:e.disabled,children:[n.jsxs("span",{className:"flex items-center gap-2",children:[u,n.jsx("span",{children:e.label})]}),n.jsx(p.Icon,{type:"caret-right",size:"small",className:d.dropdownMenuIconClassName})]}),n.jsx(g,{children:e.children.map(l=>m(l,r))})]},o):n.jsxs(b,{disabled:e.disabled,className:t.cn(e.readOnly&&`pointer-events-none cursor-default justify-center
2
- data-[highlighted]:bg-transparent`,e.alert&&"text-error-text"),onSelect:l=>{if(e.readOnly){l.preventDefault();return}e.onSelect?.(),r?.(e)},children:[u,n.jsx("span",{className:t.cn(d.dropdownMenuItemTextClassName,e.readOnly&&d.dropdownMenuReadonlyItemTextClassName),children:e.label}),e.shortcut&&!e.readOnly?n.jsx("span",{className:d.dropdownMenuShortcutClassName,children:e.shortcut}):null]},o)}function S({trigger:e,items:r,onAction:o,contentProps:u}){return n.jsxs(w,{children:[n.jsx(h,{asChild:!0,children:e}),n.jsx(x,{...u,children:r.map(l=>m(l,o))})]})}exports.DropdownMenuPrimitive=a;exports.CheckboxDropdownMenu=y;exports.ConfigurableDropdownMenu=S;exports.DropdownMenu=w;exports.DropdownMenuCheckboxItem=j;exports.DropdownMenuContent=x;exports.DropdownMenuItem=b;exports.DropdownMenuLabel=M;exports.DropdownMenuSeparator=f;exports.DropdownMenuSubContent=g;exports.DropdownMenuSubTrigger=q;exports.DropdownMenuTrigger=h;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime");require("@radix-ui/react-accessible-icon");require("@radix-ui/react-accordion");require("@radix-ui/react-alert-dialog");require("@radix-ui/react-aspect-ratio");require("@radix-ui/react-avatar");require("@radix-ui/react-checkbox");require("@radix-ui/react-collapsible");require("@radix-ui/react-context-menu");require("@radix-ui/react-dialog");require("@radix-ui/react-direction");const C=require("@radix-ui/react-dropdown-menu");require("@radix-ui/react-form");require("@radix-ui/react-hover-card");require("@radix-ui/react-label");require("@radix-ui/react-menubar");require("@radix-ui/react-navigation-menu");require("@radix-ui/react-one-time-password-field");require("@radix-ui/react-password-toggle-field");require("@radix-ui/react-popover");require("@radix-ui/react-portal");require("@radix-ui/react-progress");require("@radix-ui/react-radio-group");require("@radix-ui/react-scroll-area");require("@radix-ui/react-select");require("@radix-ui/react-separator");require("@radix-ui/react-slider");require("@radix-ui/react-slot");require("@radix-ui/react-switch");require("@radix-ui/react-tabs");require("@radix-ui/react-toast");require("@radix-ui/react-toggle");require("@radix-ui/react-toggle-group");require("@radix-ui/react-toolbar");require("@radix-ui/react-tooltip");require("@radix-ui/react-visually-hidden");const p=require("./components-ui-icon-icon.cjs");require("brd-phosphor-strokes-icons/icons");const t=require("./lib-utils.cjs"),d=require("./components-ui-dropdown-menu-dropdown-menu.styles.cjs");function D(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const s in e)if(s!=="default"){const u=Object.getOwnPropertyDescriptor(e,s);Object.defineProperty(r,s,u.get?u:{enumerable:!0,get:()=>e[s]})}}return r.default=e,Object.freeze(r)}const a=D(C);function w({...e}){return n.jsx(a.Root,{"data-slot":"dropdown-menu",...e})}function h({...e}){return n.jsx(a.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}function x({className:e,sideOffset:r=4,align:s="end",...u}){return n.jsx(a.Portal,{children:n.jsx(a.Content,{"data-slot":"dropdown-menu-content",sideOffset:r,align:s,className:t.cn(d.dropdownMenuContentClassName,e),...u})})}function b({className:e,...r}){return n.jsx(a.Item,{"data-slot":"dropdown-menu-item",className:t.cn(d.dropdownMenuItemClassName,e),...r})}function j({className:e,children:r,checked:s,itemIndicator:u,closeOnSelect:l=!0,onSelect:o,...c}){const N=u!==null;return n.jsxs(a.CheckboxItem,{"data-slot":"dropdown-menu-checkbox-item",className:t.cn(d.dropdownMenuItemClassName,"border-none",e),checked:s,onSelect:i=>{o?.(i),!l&&!i.defaultPrevented&&i.preventDefault()},...c,children:[N&&n.jsx(a.ItemIndicator,{children:u??n.jsx(p.Icon,{type:"check",size:"small",className:d.dropdownMenuIconClassName})}),r]})}function y({trigger:e,items:r,onItemCheckedChange:s,contentProps:u,keepOpenOnItemSelect:l=!0}){return n.jsxs(w,{children:[n.jsx(h,{asChild:!0,children:e}),n.jsx(x,{...u,children:r.map(o=>n.jsx(j,{checked:o.checked,disabled:o.disabled,className:t.cn(o.className,o.checked&&o.checkedClassName),textValue:o.textValue,itemIndicator:o.itemIndicator,closeOnSelect:!l,onCheckedChange:c=>s(o.key,c===!0),children:n.jsxs("div",{className:t.cn("flex w-full items-center gap-2",(o.endAdornment||o.checkedEndAdornment)&&"justify-between"),children:[n.jsx("span",{children:o.label}),o.checked?o.checkedEndAdornment??o.endAdornment:o.endAdornment]})},o.key))})]})}function M({className:e,...r}){return n.jsx(a.Label,{"data-slot":"dropdown-menu-label",className:t.cn(d.dropdownMenuLabelClassName,e),...r})}function f({className:e,...r}){return n.jsx(a.Separator,{"data-slot":"dropdown-menu-separator",className:t.cn(d.dropdownMenuSeparatorClassName,e),...r})}function q({className:e,...r}){return n.jsx(a.SubTrigger,{"data-slot":"dropdown-menu-sub-trigger",className:t.cn(d.dropdownMenuSubTriggerClassName,e),...r})}function g({className:e,sideOffset:r=4,...s}){return n.jsx(a.Portal,{children:n.jsx(a.SubContent,{"data-slot":"dropdown-menu-sub-content",sideOffset:r,className:t.cn(d.dropdownMenuContentClassName,e),...s})})}function I(e){return e.icon?n.jsx("span",{className:d.dropdownMenuIconClassName,children:e.icon}):e.iconType?n.jsx(p.Icon,{type:e.iconType,className:t.cn(d.dropdownMenuIconClassName,e.alert&&"text-error-text")}):null}function m(e,r){const s=e.id??e.type+("label"in e?e.label:"");if(e.type==="separator")return n.jsx(f,{},s);if(e.type==="label")return n.jsx(M,{children:e.label},s);const u=e.readOnly?null:I(e);return e.children?.length?n.jsxs(a.Sub,{children:[n.jsxs(q,{disabled:e.disabled,children:[n.jsxs("span",{className:"flex items-center gap-2",children:[u,n.jsx("span",{children:e.label})]}),n.jsx(p.Icon,{type:"caret-right",size:"small",className:d.dropdownMenuIconClassName})]}),n.jsx(g,{children:e.children.map(l=>m(l,r))})]},s):n.jsxs(b,{disabled:e.disabled,className:t.cn(e.readOnly&&`pointer-events-none cursor-default justify-center
2
+ data-[highlighted]:bg-transparent`,e.alert&&"text-error-text"),onSelect:l=>{if(e.readOnly){l.preventDefault();return}e.onSelect?.(),r?.(e)},children:[u,n.jsx("span",{className:t.cn(d.dropdownMenuItemTextClassName,e.readOnly&&d.dropdownMenuReadonlyItemTextClassName),children:e.label}),e.shortcut&&!e.readOnly?n.jsx("span",{className:d.dropdownMenuShortcutClassName,children:e.shortcut}):null]},s)}function S({trigger:e,items:r,onAction:s,contentProps:u,open:l,onOpenChange:o}){return n.jsxs(w,{open:l,onOpenChange:o,children:[n.jsx(h,{asChild:!0,children:e}),n.jsx(x,{...u,children:r.map(c=>m(c,s))})]})}exports.DropdownMenuPrimitive=a;exports.CheckboxDropdownMenu=y;exports.ConfigurableDropdownMenu=S;exports.DropdownMenu=w;exports.DropdownMenuCheckboxItem=j;exports.DropdownMenuContent=x;exports.DropdownMenuItem=b;exports.DropdownMenuLabel=M;exports.DropdownMenuSeparator=f;exports.DropdownMenuSubContent=g;exports.DropdownMenuSubTrigger=q;exports.DropdownMenuTrigger=h;
3
3
  //# sourceMappingURL=components-ui-dropdown-menu-dropdown-menu.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"components-ui-dropdown-menu-dropdown-menu.cjs","sources":["../src/components/ui/dropdown-menu/dropdown-menu.tsx"],"sourcesContent":["import { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\";\nimport type { ComponentPropsWithoutRef, ComponentRef, ReactNode, Ref } from \"react\";\n\nimport type { IconType } from \"@/components/ui/icon\";\nimport { Icon } from \"@/components/ui/icon\";\nimport { cn } from \"@/lib/utils\";\nimport {\n dropdownMenuContentClassName,\n dropdownMenuIconClassName,\n dropdownMenuItemClassName,\n dropdownMenuItemTextClassName,\n dropdownMenuLabelClassName,\n dropdownMenuReadonlyItemTextClassName,\n dropdownMenuSeparatorClassName,\n dropdownMenuShortcutClassName,\n dropdownMenuSubTriggerClassName,\n} from \"./dropdown-menu.styles\";\n\ntype DropdownMenuRef = ComponentRef<typeof DropdownMenuPrimitive.Root>;\ntype DropdownMenuProps = ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Root> & {\n ref?: Ref<DropdownMenuRef>;\n};\n\ntype DropdownMenuTriggerRef = ComponentRef<typeof DropdownMenuPrimitive.Trigger>;\ntype DropdownMenuTriggerProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Trigger\n> & {\n ref?: Ref<DropdownMenuTriggerRef>;\n};\n\ntype DropdownMenuContentRef = ComponentRef<typeof DropdownMenuPrimitive.Content>;\ntype DropdownMenuContentProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Content\n> & {\n ref?: Ref<DropdownMenuContentRef>;\n};\n\ntype DropdownMenuItemRef = ComponentRef<typeof DropdownMenuPrimitive.Item>;\ntype DropdownMenuItemProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Item\n> & {\n ref?: Ref<DropdownMenuItemRef>;\n};\n\ntype DropdownMenuCheckboxItemRef = ComponentRef<\n typeof DropdownMenuPrimitive.CheckboxItem\n>;\ntype DropdownMenuCheckboxItemProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.CheckboxItem\n> & {\n ref?: Ref<DropdownMenuCheckboxItemRef>;\n itemIndicator?: ReactNode;\n closeOnSelect?: boolean;\n};\n\ntype DropdownMenuLabelRef = ComponentRef<typeof DropdownMenuPrimitive.Label>;\ntype DropdownMenuLabelProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Label\n> & {\n ref?: Ref<DropdownMenuLabelRef>;\n};\n\ntype DropdownMenuSeparatorRef = ComponentRef<typeof DropdownMenuPrimitive.Separator>;\ntype DropdownMenuSeparatorProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Separator\n> & {\n ref?: Ref<DropdownMenuSeparatorRef>;\n};\n\ntype DropdownMenuSubTriggerRef = ComponentRef<typeof DropdownMenuPrimitive.SubTrigger>;\ntype DropdownMenuSubTriggerProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.SubTrigger\n> & {\n ref?: Ref<DropdownMenuSubTriggerRef>;\n};\n\ntype DropdownMenuSubContentRef = ComponentRef<typeof DropdownMenuPrimitive.SubContent>;\ntype DropdownMenuSubContentProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.SubContent\n> & {\n ref?: Ref<DropdownMenuSubContentRef>;\n};\n\ntype DropdownMenuCheckboxOption = {\n key: string;\n label: ReactNode;\n checked: boolean;\n disabled?: boolean;\n className?: string;\n checkedClassName?: string;\n textValue?: string;\n itemIndicator?: ReactNode;\n endAdornment?: ReactNode;\n checkedEndAdornment?: ReactNode;\n};\n\ntype CheckboxDropdownMenuProps = {\n trigger: ReactNode;\n items: DropdownMenuCheckboxOption[];\n onItemCheckedChange: (key: string, checked: boolean) => void;\n contentProps?: Omit<DropdownMenuContentProps, \"children\">;\n keepOpenOnItemSelect?: boolean;\n};\n\nfunction DropdownMenu({ ...props }: DropdownMenuProps) {\n return (\n <DropdownMenuPrimitive.Root\n data-slot=\"dropdown-menu\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuTrigger({ ...props }: DropdownMenuTriggerProps) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n align = \"end\",\n ...props\n}: DropdownMenuContentProps) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n align={align}\n className={cn(dropdownMenuContentClassName, className)}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuItem({ className, ...props }: DropdownMenuItemProps) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n className={cn(dropdownMenuItemClassName, className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n itemIndicator,\n closeOnSelect = true,\n onSelect,\n ...props\n}: DropdownMenuCheckboxItemProps) {\n const shouldRenderIndicator = itemIndicator !== null;\n\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(dropdownMenuItemClassName, \"border-none\", className)}\n checked={checked}\n onSelect={(event) => {\n onSelect?.(event);\n\n if (!closeOnSelect && !event.defaultPrevented) {\n event.preventDefault();\n }\n }}\n {...props}\n >\n {shouldRenderIndicator && (\n <DropdownMenuPrimitive.ItemIndicator>\n {itemIndicator ?? (\n <Icon\n type=\"check\"\n size=\"small\"\n className={dropdownMenuIconClassName}\n />\n )}\n </DropdownMenuPrimitive.ItemIndicator>\n )}\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction CheckboxDropdownMenu({\n trigger,\n items,\n onItemCheckedChange,\n contentProps,\n keepOpenOnItemSelect = true,\n}: CheckboxDropdownMenuProps) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>{trigger}</DropdownMenuTrigger>\n <DropdownMenuContent {...contentProps}>\n {items.map((item) => (\n <DropdownMenuCheckboxItem\n key={item.key}\n checked={item.checked}\n disabled={item.disabled}\n className={cn(item.className, item.checked && item.checkedClassName)}\n textValue={item.textValue}\n itemIndicator={item.itemIndicator}\n closeOnSelect={!keepOpenOnItemSelect}\n onCheckedChange={(checked) => onItemCheckedChange(item.key, checked === true)}\n >\n <div\n className={cn(\n \"flex w-full items-center gap-2\",\n (item.endAdornment || item.checkedEndAdornment) && \"justify-between\",\n )}\n >\n <span>{item.label}</span>\n {item.checked\n ? (item.checkedEndAdornment ?? item.endAdornment)\n : item.endAdornment}\n </div>\n </DropdownMenuCheckboxItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nfunction DropdownMenuLabel({ className, ...props }: DropdownMenuLabelProps) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n className={cn(dropdownMenuLabelClassName, className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSeparator({ className, ...props }: DropdownMenuSeparatorProps) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(dropdownMenuSeparatorClassName, className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSubTrigger({ className, ...props }: DropdownMenuSubTriggerProps) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n className={cn(dropdownMenuSubTriggerClassName, className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n sideOffset = 4,\n ...props\n}: DropdownMenuSubContentProps) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n sideOffset={sideOffset}\n className={cn(dropdownMenuContentClassName, className)}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\ntype DropdownMenuConfigBase = {\n id?: string;\n disabled?: boolean;\n readOnly?: boolean;\n};\n\ntype DropdownMenuConfigLabel = DropdownMenuConfigBase & {\n type: \"label\";\n label: string;\n};\n\ntype DropdownMenuConfigSeparator = DropdownMenuConfigBase & {\n type: \"separator\";\n};\n\ntype DropdownMenuConfigItem = DropdownMenuConfigBase & {\n type?: \"item\";\n label: string;\n icon?: ReactNode;\n iconType?: IconType;\n shortcut?: string;\n alert?: boolean;\n children?: DropdownMenuConfigNode[];\n onSelect?: () => void;\n};\n\ntype DropdownMenuConfigNode =\n | DropdownMenuConfigLabel\n | DropdownMenuConfigSeparator\n | DropdownMenuConfigItem;\n\ntype ConfigurableDropdownMenuProps = {\n trigger: ReactNode;\n items: DropdownMenuConfigNode[];\n onAction?: (item: DropdownMenuConfigItem) => void;\n contentProps?: Omit<DropdownMenuContentProps, \"children\">;\n};\n\nfunction renderLeadingIcon(item: DropdownMenuConfigItem) {\n if (item.icon) {\n return <span className={dropdownMenuIconClassName}>{item.icon}</span>;\n }\n\n if (item.iconType) {\n return (\n <Icon\n type={item.iconType}\n className={cn(dropdownMenuIconClassName, item.alert && \"text-error-text\")}\n />\n );\n }\n\n return null;\n}\n\nfunction renderConfigNode(\n item: DropdownMenuConfigNode,\n onAction?: (item: DropdownMenuConfigItem) => void,\n) {\n const key = item.id ?? item.type + (\"label\" in item ? item.label : \"\");\n\n if (item.type === \"separator\") {\n return <DropdownMenuSeparator key={key} />;\n }\n\n if (item.type === \"label\") {\n return <DropdownMenuLabel key={key}>{item.label}</DropdownMenuLabel>;\n }\n\n const iconNode = item.readOnly ? null : renderLeadingIcon(item);\n\n // TODO: добавить передачу пропсов на цвет и стили\n if (item.children?.length) {\n return (\n <DropdownMenuPrimitive.Sub key={key}>\n <DropdownMenuSubTrigger disabled={item.disabled}>\n <span className=\"flex items-center gap-2\">\n {iconNode}\n <span>{item.label}</span>\n </span>\n <Icon\n type=\"caret-right\"\n size=\"small\"\n className={dropdownMenuIconClassName}\n />\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent>\n {item.children.map((child) => renderConfigNode(child, onAction))}\n </DropdownMenuSubContent>\n </DropdownMenuPrimitive.Sub>\n );\n }\n\n return (\n <DropdownMenuItem\n key={key}\n disabled={item.disabled}\n className={cn(\n item.readOnly &&\n `pointer-events-none cursor-default justify-center\n data-[highlighted]:bg-transparent`,\n item.alert && \"text-error-text\",\n )}\n onSelect={(event) => {\n if (item.readOnly) {\n event.preventDefault();\n return;\n }\n\n item.onSelect?.();\n onAction?.(item);\n }}\n >\n {iconNode}\n <span\n className={cn(\n dropdownMenuItemTextClassName,\n item.readOnly && dropdownMenuReadonlyItemTextClassName,\n )}\n >\n {item.label}\n </span>\n {item.shortcut && !item.readOnly ? (\n <span className={dropdownMenuShortcutClassName}>{item.shortcut}</span>\n ) : null}\n </DropdownMenuItem>\n );\n}\n\nfunction ConfigurableDropdownMenu({\n trigger,\n items,\n onAction,\n contentProps,\n}: ConfigurableDropdownMenuProps) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>{trigger}</DropdownMenuTrigger>\n <DropdownMenuContent {...contentProps}>\n {items.map((item) => renderConfigNode(item, onAction))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nexport {\n CheckboxDropdownMenu,\n ConfigurableDropdownMenu,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPrimitive,\n DropdownMenuSeparator,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n};\n\nexport type {\n CheckboxDropdownMenuProps,\n ConfigurableDropdownMenuProps,\n DropdownMenuCheckboxItemProps,\n DropdownMenuCheckboxOption,\n DropdownMenuConfigItem,\n DropdownMenuConfigLabel,\n DropdownMenuConfigNode,\n DropdownMenuConfigSeparator,\n DropdownMenuContentProps,\n DropdownMenuItemProps,\n DropdownMenuLabelProps,\n DropdownMenuProps,\n DropdownMenuSeparatorProps,\n DropdownMenuSubContentProps,\n DropdownMenuSubTriggerProps,\n DropdownMenuTriggerProps,\n};\n"],"names":["DropdownMenu","props","jsx","DropdownMenuPrimitive","DropdownMenuTrigger","DropdownMenuContent","className","sideOffset","align","cn","dropdownMenuContentClassName","DropdownMenuItem","dropdownMenuItemClassName","DropdownMenuCheckboxItem","children","checked","itemIndicator","closeOnSelect","onSelect","shouldRenderIndicator","jsxs","event","Icon","dropdownMenuIconClassName","CheckboxDropdownMenu","trigger","items","onItemCheckedChange","contentProps","keepOpenOnItemSelect","item","DropdownMenuLabel","dropdownMenuLabelClassName","DropdownMenuSeparator","dropdownMenuSeparatorClassName","DropdownMenuSubTrigger","dropdownMenuSubTriggerClassName","DropdownMenuSubContent","renderLeadingIcon","renderConfigNode","onAction","key","iconNode","child","dropdownMenuItemTextClassName","dropdownMenuReadonlyItemTextClassName","dropdownMenuShortcutClassName","ConfigurableDropdownMenu"],"mappings":"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"}
1
+ {"version":3,"file":"components-ui-dropdown-menu-dropdown-menu.cjs","sources":["../src/components/ui/dropdown-menu/dropdown-menu.tsx"],"sourcesContent":["import { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\";\nimport type { ComponentPropsWithoutRef, ComponentRef, ReactNode, Ref } from \"react\";\n\nimport type { IconType } from \"@/components/ui/icon\";\nimport { Icon } from \"@/components/ui/icon\";\nimport { cn } from \"@/lib/utils\";\nimport {\n dropdownMenuContentClassName,\n dropdownMenuIconClassName,\n dropdownMenuItemClassName,\n dropdownMenuItemTextClassName,\n dropdownMenuLabelClassName,\n dropdownMenuReadonlyItemTextClassName,\n dropdownMenuSeparatorClassName,\n dropdownMenuShortcutClassName,\n dropdownMenuSubTriggerClassName,\n} from \"./dropdown-menu.styles\";\n\ntype DropdownMenuRef = ComponentRef<typeof DropdownMenuPrimitive.Root>;\ntype DropdownMenuProps = ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Root> & {\n ref?: Ref<DropdownMenuRef>;\n};\n\ntype DropdownMenuTriggerRef = ComponentRef<typeof DropdownMenuPrimitive.Trigger>;\ntype DropdownMenuTriggerProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Trigger\n> & {\n ref?: Ref<DropdownMenuTriggerRef>;\n};\n\ntype DropdownMenuContentRef = ComponentRef<typeof DropdownMenuPrimitive.Content>;\ntype DropdownMenuContentProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Content\n> & {\n ref?: Ref<DropdownMenuContentRef>;\n};\n\ntype DropdownMenuItemRef = ComponentRef<typeof DropdownMenuPrimitive.Item>;\ntype DropdownMenuItemProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Item\n> & {\n ref?: Ref<DropdownMenuItemRef>;\n};\n\ntype DropdownMenuCheckboxItemRef = ComponentRef<\n typeof DropdownMenuPrimitive.CheckboxItem\n>;\ntype DropdownMenuCheckboxItemProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.CheckboxItem\n> & {\n ref?: Ref<DropdownMenuCheckboxItemRef>;\n itemIndicator?: ReactNode;\n closeOnSelect?: boolean;\n};\n\ntype DropdownMenuLabelRef = ComponentRef<typeof DropdownMenuPrimitive.Label>;\ntype DropdownMenuLabelProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Label\n> & {\n ref?: Ref<DropdownMenuLabelRef>;\n};\n\ntype DropdownMenuSeparatorRef = ComponentRef<typeof DropdownMenuPrimitive.Separator>;\ntype DropdownMenuSeparatorProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Separator\n> & {\n ref?: Ref<DropdownMenuSeparatorRef>;\n};\n\ntype DropdownMenuSubTriggerRef = ComponentRef<typeof DropdownMenuPrimitive.SubTrigger>;\ntype DropdownMenuSubTriggerProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.SubTrigger\n> & {\n ref?: Ref<DropdownMenuSubTriggerRef>;\n};\n\ntype DropdownMenuSubContentRef = ComponentRef<typeof DropdownMenuPrimitive.SubContent>;\ntype DropdownMenuSubContentProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.SubContent\n> & {\n ref?: Ref<DropdownMenuSubContentRef>;\n};\n\ntype DropdownMenuCheckboxOption = {\n key: string;\n label: ReactNode;\n checked: boolean;\n disabled?: boolean;\n className?: string;\n checkedClassName?: string;\n textValue?: string;\n itemIndicator?: ReactNode;\n endAdornment?: ReactNode;\n checkedEndAdornment?: ReactNode;\n};\n\ntype CheckboxDropdownMenuProps = {\n trigger: ReactNode;\n items: DropdownMenuCheckboxOption[];\n onItemCheckedChange: (key: string, checked: boolean) => void;\n contentProps?: Omit<DropdownMenuContentProps, \"children\">;\n keepOpenOnItemSelect?: boolean;\n};\n\nfunction DropdownMenu({ ...props }: DropdownMenuProps) {\n return (\n <DropdownMenuPrimitive.Root\n data-slot=\"dropdown-menu\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuTrigger({ ...props }: DropdownMenuTriggerProps) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n align = \"end\",\n ...props\n}: DropdownMenuContentProps) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n align={align}\n className={cn(dropdownMenuContentClassName, className)}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuItem({ className, ...props }: DropdownMenuItemProps) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n className={cn(dropdownMenuItemClassName, className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n itemIndicator,\n closeOnSelect = true,\n onSelect,\n ...props\n}: DropdownMenuCheckboxItemProps) {\n const shouldRenderIndicator = itemIndicator !== null;\n\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(dropdownMenuItemClassName, \"border-none\", className)}\n checked={checked}\n onSelect={(event) => {\n onSelect?.(event);\n\n if (!closeOnSelect && !event.defaultPrevented) {\n event.preventDefault();\n }\n }}\n {...props}\n >\n {shouldRenderIndicator && (\n <DropdownMenuPrimitive.ItemIndicator>\n {itemIndicator ?? (\n <Icon\n type=\"check\"\n size=\"small\"\n className={dropdownMenuIconClassName}\n />\n )}\n </DropdownMenuPrimitive.ItemIndicator>\n )}\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction CheckboxDropdownMenu({\n trigger,\n items,\n onItemCheckedChange,\n contentProps,\n keepOpenOnItemSelect = true,\n}: CheckboxDropdownMenuProps) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>{trigger}</DropdownMenuTrigger>\n <DropdownMenuContent {...contentProps}>\n {items.map((item) => (\n <DropdownMenuCheckboxItem\n key={item.key}\n checked={item.checked}\n disabled={item.disabled}\n className={cn(item.className, item.checked && item.checkedClassName)}\n textValue={item.textValue}\n itemIndicator={item.itemIndicator}\n closeOnSelect={!keepOpenOnItemSelect}\n onCheckedChange={(checked) => onItemCheckedChange(item.key, checked === true)}\n >\n <div\n className={cn(\n \"flex w-full items-center gap-2\",\n (item.endAdornment || item.checkedEndAdornment) && \"justify-between\",\n )}\n >\n <span>{item.label}</span>\n {item.checked\n ? (item.checkedEndAdornment ?? item.endAdornment)\n : item.endAdornment}\n </div>\n </DropdownMenuCheckboxItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nfunction DropdownMenuLabel({ className, ...props }: DropdownMenuLabelProps) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n className={cn(dropdownMenuLabelClassName, className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSeparator({ className, ...props }: DropdownMenuSeparatorProps) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(dropdownMenuSeparatorClassName, className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSubTrigger({ className, ...props }: DropdownMenuSubTriggerProps) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n className={cn(dropdownMenuSubTriggerClassName, className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n sideOffset = 4,\n ...props\n}: DropdownMenuSubContentProps) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n sideOffset={sideOffset}\n className={cn(dropdownMenuContentClassName, className)}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\ntype DropdownMenuConfigBase = {\n id?: string;\n disabled?: boolean;\n readOnly?: boolean;\n};\n\ntype DropdownMenuConfigLabel = DropdownMenuConfigBase & {\n type: \"label\";\n label: string;\n};\n\ntype DropdownMenuConfigSeparator = DropdownMenuConfigBase & {\n type: \"separator\";\n};\n\ntype DropdownMenuConfigItem = DropdownMenuConfigBase & {\n type?: \"item\";\n label: string;\n icon?: ReactNode;\n iconType?: IconType;\n shortcut?: string;\n alert?: boolean;\n children?: DropdownMenuConfigNode[];\n className?: string;\n iconClassName?: string;\n labelClassName?: string;\n onSelect?: () => void;\n};\n\ntype DropdownMenuConfigNode =\n | DropdownMenuConfigLabel\n | DropdownMenuConfigSeparator\n | DropdownMenuConfigItem;\n\ntype ConfigurableDropdownMenuProps = {\n trigger: ReactNode;\n items: DropdownMenuConfigNode[];\n onAction?: (item: DropdownMenuConfigItem) => void;\n contentProps?: Omit<DropdownMenuContentProps, \"children\">;\n open?: DropdownMenuProps[\"open\"];\n onOpenChange?: DropdownMenuProps[\"onOpenChange\"];\n};\n\nfunction renderLeadingIcon(item: DropdownMenuConfigItem) {\n if (item.icon) {\n return <span className={dropdownMenuIconClassName}>{item.icon}</span>;\n }\n\n if (item.iconType) {\n return (\n <Icon\n type={item.iconType}\n className={cn(dropdownMenuIconClassName, item.alert && \"text-error-text\")}\n />\n );\n }\n\n return null;\n}\n\nfunction renderConfigNode(\n item: DropdownMenuConfigNode,\n onAction?: (item: DropdownMenuConfigItem) => void,\n) {\n const key = item.id ?? item.type + (\"label\" in item ? item.label : \"\");\n\n if (item.type === \"separator\") {\n return <DropdownMenuSeparator key={key} />;\n }\n\n if (item.type === \"label\") {\n return <DropdownMenuLabel key={key}>{item.label}</DropdownMenuLabel>;\n }\n\n const iconNode = item.readOnly ? null : renderLeadingIcon(item);\n\n // TODO: добавить передачу пропсов на цвет и стили\n if (item.children?.length) {\n return (\n <DropdownMenuPrimitive.Sub key={key}>\n <DropdownMenuSubTrigger disabled={item.disabled}>\n <span className=\"flex items-center gap-2\">\n {iconNode}\n <span>{item.label}</span>\n </span>\n <Icon\n type=\"caret-right\"\n size=\"small\"\n className={dropdownMenuIconClassName}\n />\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent>\n {item.children.map((child) => renderConfigNode(child, onAction))}\n </DropdownMenuSubContent>\n </DropdownMenuPrimitive.Sub>\n );\n }\n\n return (\n <DropdownMenuItem\n key={key}\n disabled={item.disabled}\n className={cn(\n item.readOnly &&\n `pointer-events-none cursor-default justify-center\n data-[highlighted]:bg-transparent`,\n item.alert && \"text-error-text\",\n )}\n onSelect={(event) => {\n if (item.readOnly) {\n event.preventDefault();\n return;\n }\n\n item.onSelect?.();\n onAction?.(item);\n }}\n >\n {iconNode}\n <span\n className={cn(\n dropdownMenuItemTextClassName,\n item.readOnly && dropdownMenuReadonlyItemTextClassName,\n )}\n >\n {item.label}\n </span>\n {item.shortcut && !item.readOnly ? (\n <span className={dropdownMenuShortcutClassName}>{item.shortcut}</span>\n ) : null}\n </DropdownMenuItem>\n );\n}\n\nfunction ConfigurableDropdownMenu({\n trigger,\n items,\n onAction,\n contentProps,\n open,\n onOpenChange,\n}: ConfigurableDropdownMenuProps) {\n return (\n <DropdownMenu\n open={open}\n onOpenChange={onOpenChange}\n >\n <DropdownMenuTrigger asChild>{trigger}</DropdownMenuTrigger>\n <DropdownMenuContent {...contentProps}>\n {items.map((item) => renderConfigNode(item, onAction))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nexport {\n CheckboxDropdownMenu,\n ConfigurableDropdownMenu,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPrimitive,\n DropdownMenuSeparator,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n};\n\nexport type {\n CheckboxDropdownMenuProps,\n ConfigurableDropdownMenuProps,\n DropdownMenuCheckboxItemProps,\n DropdownMenuCheckboxOption,\n DropdownMenuConfigItem,\n DropdownMenuConfigLabel,\n DropdownMenuConfigNode,\n DropdownMenuConfigSeparator,\n DropdownMenuContentProps,\n DropdownMenuItemProps,\n DropdownMenuLabelProps,\n DropdownMenuProps,\n DropdownMenuSeparatorProps,\n DropdownMenuSubContentProps,\n DropdownMenuSubTriggerProps,\n DropdownMenuTriggerProps,\n};\n"],"names":["DropdownMenu","props","jsx","DropdownMenuPrimitive","DropdownMenuTrigger","DropdownMenuContent","className","sideOffset","align","cn","dropdownMenuContentClassName","DropdownMenuItem","dropdownMenuItemClassName","DropdownMenuCheckboxItem","children","checked","itemIndicator","closeOnSelect","onSelect","shouldRenderIndicator","jsxs","event","Icon","dropdownMenuIconClassName","CheckboxDropdownMenu","trigger","items","onItemCheckedChange","contentProps","keepOpenOnItemSelect","item","DropdownMenuLabel","dropdownMenuLabelClassName","DropdownMenuSeparator","dropdownMenuSeparatorClassName","DropdownMenuSubTrigger","dropdownMenuSubTriggerClassName","DropdownMenuSubContent","renderLeadingIcon","renderConfigNode","onAction","key","iconNode","child","dropdownMenuItemTextClassName","dropdownMenuReadonlyItemTextClassName","dropdownMenuShortcutClassName","ConfigurableDropdownMenu","open","onOpenChange"],"mappings":"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"}
@@ -37,7 +37,7 @@ import "@radix-ui/react-visually-hidden";
37
37
  import { Icon as m } from "./components-ui-icon-icon.js";
38
38
  import "brd-phosphor-strokes-icons/icons";
39
39
  import { cn as d } from "./lib-utils.js";
40
- import { dropdownMenuIconClassName as p, dropdownMenuItemClassName as h, dropdownMenuContentClassName as f, dropdownMenuLabelClassName as M, dropdownMenuSeparatorClassName as y, dropdownMenuSubTriggerClassName as x, dropdownMenuReadonlyItemTextClassName as k, dropdownMenuItemTextClassName as D, dropdownMenuShortcutClassName as I } from "./components-ui-dropdown-menu-dropdown-menu.styles.js";
40
+ import { dropdownMenuContentClassName as h, dropdownMenuIconClassName as u, dropdownMenuReadonlyItemTextClassName as M, dropdownMenuItemTextClassName as y, dropdownMenuShortcutClassName as x, dropdownMenuSeparatorClassName as k, dropdownMenuLabelClassName as D, dropdownMenuSubTriggerClassName as I, dropdownMenuItemClassName as f } from "./components-ui-dropdown-menu-dropdown-menu.styles.js";
41
41
  function b({ ...e }) {
42
42
  return /* @__PURE__ */ r(
43
43
  a.Root,
@@ -68,7 +68,7 @@ function N({
68
68
  "data-slot": "dropdown-menu-content",
69
69
  sideOffset: n,
70
70
  align: t,
71
- className: d(f, e),
71
+ className: d(h, e),
72
72
  ...l
73
73
  }
74
74
  ) });
@@ -78,7 +78,7 @@ function S({ className: e, ...n }) {
78
78
  a.Item,
79
79
  {
80
80
  "data-slot": "dropdown-menu-item",
81
- className: d(h, e),
81
+ className: d(f, e),
82
82
  ...n
83
83
  }
84
84
  );
@@ -90,26 +90,26 @@ function T({
90
90
  itemIndicator: l,
91
91
  closeOnSelect: c = !0,
92
92
  onSelect: o,
93
- ...u
93
+ ...p
94
94
  }) {
95
95
  const C = l !== null;
96
96
  return /* @__PURE__ */ s(
97
97
  a.CheckboxItem,
98
98
  {
99
99
  "data-slot": "dropdown-menu-checkbox-item",
100
- className: d(h, "border-none", e),
100
+ className: d(f, "border-none", e),
101
101
  checked: t,
102
102
  onSelect: (i) => {
103
103
  o?.(i), !c && !i.defaultPrevented && i.preventDefault();
104
104
  },
105
- ...u,
105
+ ...p,
106
106
  children: [
107
107
  C && /* @__PURE__ */ r(a.ItemIndicator, { children: l ?? /* @__PURE__ */ r(
108
108
  m,
109
109
  {
110
110
  type: "check",
111
111
  size: "small",
112
- className: p
112
+ className: u
113
113
  }
114
114
  ) }),
115
115
  n
@@ -135,7 +135,7 @@ function ge({
135
135
  textValue: o.textValue,
136
136
  itemIndicator: o.itemIndicator,
137
137
  closeOnSelect: !c,
138
- onCheckedChange: (u) => t(o.key, u === !0),
138
+ onCheckedChange: (p) => t(o.key, p === !0),
139
139
  children: /* @__PURE__ */ s(
140
140
  "div",
141
141
  {
@@ -159,7 +159,7 @@ function O({ className: e, ...n }) {
159
159
  a.Label,
160
160
  {
161
161
  "data-slot": "dropdown-menu-label",
162
- className: d(M, e),
162
+ className: d(D, e),
163
163
  ...n
164
164
  }
165
165
  );
@@ -169,7 +169,7 @@ function j({ className: e, ...n }) {
169
169
  a.Separator,
170
170
  {
171
171
  "data-slot": "dropdown-menu-separator",
172
- className: d(y, e),
172
+ className: d(k, e),
173
173
  ...n
174
174
  }
175
175
  );
@@ -179,7 +179,7 @@ function v({ className: e, ...n }) {
179
179
  a.SubTrigger,
180
180
  {
181
181
  "data-slot": "dropdown-menu-sub-trigger",
182
- className: d(x, e),
182
+ className: d(I, e),
183
183
  ...n
184
184
  }
185
185
  );
@@ -194,17 +194,17 @@ function A({
194
194
  {
195
195
  "data-slot": "dropdown-menu-sub-content",
196
196
  sideOffset: n,
197
- className: d(f, e),
197
+ className: d(h, e),
198
198
  ...t
199
199
  }
200
200
  ) });
201
201
  }
202
202
  function L(e) {
203
- return e.icon ? /* @__PURE__ */ r("span", { className: p, children: e.icon }) : e.iconType ? /* @__PURE__ */ r(
203
+ return e.icon ? /* @__PURE__ */ r("span", { className: u, children: e.icon }) : e.iconType ? /* @__PURE__ */ r(
204
204
  m,
205
205
  {
206
206
  type: e.iconType,
207
- className: d(p, e.alert && "text-error-text")
207
+ className: d(u, e.alert && "text-error-text")
208
208
  }
209
209
  ) : null;
210
210
  }
@@ -226,7 +226,7 @@ function g(e, n) {
226
226
  {
227
227
  type: "caret-right",
228
228
  size: "small",
229
- className: p
229
+ className: u
230
230
  }
231
231
  )
232
232
  ] }),
@@ -253,13 +253,13 @@ function g(e, n) {
253
253
  "span",
254
254
  {
255
255
  className: d(
256
- D,
257
- e.readOnly && k
256
+ y,
257
+ e.readOnly && M
258
258
  ),
259
259
  children: e.label
260
260
  }
261
261
  ),
262
- e.shortcut && !e.readOnly ? /* @__PURE__ */ r("span", { className: I, children: e.shortcut }) : null
262
+ e.shortcut && !e.readOnly ? /* @__PURE__ */ r("span", { className: x, children: e.shortcut }) : null
263
263
  ]
264
264
  },
265
265
  t
@@ -269,12 +269,21 @@ function Ce({
269
269
  trigger: e,
270
270
  items: n,
271
271
  onAction: t,
272
- contentProps: l
272
+ contentProps: l,
273
+ open: c,
274
+ onOpenChange: o
273
275
  }) {
274
- return /* @__PURE__ */ s(b, { children: [
275
- /* @__PURE__ */ r(w, { asChild: !0, children: e }),
276
- /* @__PURE__ */ r(N, { ...l, children: n.map((c) => g(c, t)) })
277
- ] });
276
+ return /* @__PURE__ */ s(
277
+ b,
278
+ {
279
+ open: c,
280
+ onOpenChange: o,
281
+ children: [
282
+ /* @__PURE__ */ r(w, { asChild: !0, children: e }),
283
+ /* @__PURE__ */ r(N, { ...l, children: n.map((p) => g(p, t)) })
284
+ ]
285
+ }
286
+ );
278
287
  }
279
288
  export {
280
289
  ge as CheckboxDropdownMenu,
@@ -1 +1 @@
1
- {"version":3,"file":"components-ui-dropdown-menu-dropdown-menu.js","sources":["../src/components/ui/dropdown-menu/dropdown-menu.tsx"],"sourcesContent":["import { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\";\nimport type { ComponentPropsWithoutRef, ComponentRef, ReactNode, Ref } from \"react\";\n\nimport type { IconType } from \"@/components/ui/icon\";\nimport { Icon } from \"@/components/ui/icon\";\nimport { cn } from \"@/lib/utils\";\nimport {\n dropdownMenuContentClassName,\n dropdownMenuIconClassName,\n dropdownMenuItemClassName,\n dropdownMenuItemTextClassName,\n dropdownMenuLabelClassName,\n dropdownMenuReadonlyItemTextClassName,\n dropdownMenuSeparatorClassName,\n dropdownMenuShortcutClassName,\n dropdownMenuSubTriggerClassName,\n} from \"./dropdown-menu.styles\";\n\ntype DropdownMenuRef = ComponentRef<typeof DropdownMenuPrimitive.Root>;\ntype DropdownMenuProps = ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Root> & {\n ref?: Ref<DropdownMenuRef>;\n};\n\ntype DropdownMenuTriggerRef = ComponentRef<typeof DropdownMenuPrimitive.Trigger>;\ntype DropdownMenuTriggerProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Trigger\n> & {\n ref?: Ref<DropdownMenuTriggerRef>;\n};\n\ntype DropdownMenuContentRef = ComponentRef<typeof DropdownMenuPrimitive.Content>;\ntype DropdownMenuContentProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Content\n> & {\n ref?: Ref<DropdownMenuContentRef>;\n};\n\ntype DropdownMenuItemRef = ComponentRef<typeof DropdownMenuPrimitive.Item>;\ntype DropdownMenuItemProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Item\n> & {\n ref?: Ref<DropdownMenuItemRef>;\n};\n\ntype DropdownMenuCheckboxItemRef = ComponentRef<\n typeof DropdownMenuPrimitive.CheckboxItem\n>;\ntype DropdownMenuCheckboxItemProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.CheckboxItem\n> & {\n ref?: Ref<DropdownMenuCheckboxItemRef>;\n itemIndicator?: ReactNode;\n closeOnSelect?: boolean;\n};\n\ntype DropdownMenuLabelRef = ComponentRef<typeof DropdownMenuPrimitive.Label>;\ntype DropdownMenuLabelProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Label\n> & {\n ref?: Ref<DropdownMenuLabelRef>;\n};\n\ntype DropdownMenuSeparatorRef = ComponentRef<typeof DropdownMenuPrimitive.Separator>;\ntype DropdownMenuSeparatorProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Separator\n> & {\n ref?: Ref<DropdownMenuSeparatorRef>;\n};\n\ntype DropdownMenuSubTriggerRef = ComponentRef<typeof DropdownMenuPrimitive.SubTrigger>;\ntype DropdownMenuSubTriggerProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.SubTrigger\n> & {\n ref?: Ref<DropdownMenuSubTriggerRef>;\n};\n\ntype DropdownMenuSubContentRef = ComponentRef<typeof DropdownMenuPrimitive.SubContent>;\ntype DropdownMenuSubContentProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.SubContent\n> & {\n ref?: Ref<DropdownMenuSubContentRef>;\n};\n\ntype DropdownMenuCheckboxOption = {\n key: string;\n label: ReactNode;\n checked: boolean;\n disabled?: boolean;\n className?: string;\n checkedClassName?: string;\n textValue?: string;\n itemIndicator?: ReactNode;\n endAdornment?: ReactNode;\n checkedEndAdornment?: ReactNode;\n};\n\ntype CheckboxDropdownMenuProps = {\n trigger: ReactNode;\n items: DropdownMenuCheckboxOption[];\n onItemCheckedChange: (key: string, checked: boolean) => void;\n contentProps?: Omit<DropdownMenuContentProps, \"children\">;\n keepOpenOnItemSelect?: boolean;\n};\n\nfunction DropdownMenu({ ...props }: DropdownMenuProps) {\n return (\n <DropdownMenuPrimitive.Root\n data-slot=\"dropdown-menu\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuTrigger({ ...props }: DropdownMenuTriggerProps) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n align = \"end\",\n ...props\n}: DropdownMenuContentProps) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n align={align}\n className={cn(dropdownMenuContentClassName, className)}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuItem({ className, ...props }: DropdownMenuItemProps) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n className={cn(dropdownMenuItemClassName, className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n itemIndicator,\n closeOnSelect = true,\n onSelect,\n ...props\n}: DropdownMenuCheckboxItemProps) {\n const shouldRenderIndicator = itemIndicator !== null;\n\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(dropdownMenuItemClassName, \"border-none\", className)}\n checked={checked}\n onSelect={(event) => {\n onSelect?.(event);\n\n if (!closeOnSelect && !event.defaultPrevented) {\n event.preventDefault();\n }\n }}\n {...props}\n >\n {shouldRenderIndicator && (\n <DropdownMenuPrimitive.ItemIndicator>\n {itemIndicator ?? (\n <Icon\n type=\"check\"\n size=\"small\"\n className={dropdownMenuIconClassName}\n />\n )}\n </DropdownMenuPrimitive.ItemIndicator>\n )}\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction CheckboxDropdownMenu({\n trigger,\n items,\n onItemCheckedChange,\n contentProps,\n keepOpenOnItemSelect = true,\n}: CheckboxDropdownMenuProps) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>{trigger}</DropdownMenuTrigger>\n <DropdownMenuContent {...contentProps}>\n {items.map((item) => (\n <DropdownMenuCheckboxItem\n key={item.key}\n checked={item.checked}\n disabled={item.disabled}\n className={cn(item.className, item.checked && item.checkedClassName)}\n textValue={item.textValue}\n itemIndicator={item.itemIndicator}\n closeOnSelect={!keepOpenOnItemSelect}\n onCheckedChange={(checked) => onItemCheckedChange(item.key, checked === true)}\n >\n <div\n className={cn(\n \"flex w-full items-center gap-2\",\n (item.endAdornment || item.checkedEndAdornment) && \"justify-between\",\n )}\n >\n <span>{item.label}</span>\n {item.checked\n ? (item.checkedEndAdornment ?? item.endAdornment)\n : item.endAdornment}\n </div>\n </DropdownMenuCheckboxItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nfunction DropdownMenuLabel({ className, ...props }: DropdownMenuLabelProps) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n className={cn(dropdownMenuLabelClassName, className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSeparator({ className, ...props }: DropdownMenuSeparatorProps) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(dropdownMenuSeparatorClassName, className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSubTrigger({ className, ...props }: DropdownMenuSubTriggerProps) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n className={cn(dropdownMenuSubTriggerClassName, className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n sideOffset = 4,\n ...props\n}: DropdownMenuSubContentProps) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n sideOffset={sideOffset}\n className={cn(dropdownMenuContentClassName, className)}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\ntype DropdownMenuConfigBase = {\n id?: string;\n disabled?: boolean;\n readOnly?: boolean;\n};\n\ntype DropdownMenuConfigLabel = DropdownMenuConfigBase & {\n type: \"label\";\n label: string;\n};\n\ntype DropdownMenuConfigSeparator = DropdownMenuConfigBase & {\n type: \"separator\";\n};\n\ntype DropdownMenuConfigItem = DropdownMenuConfigBase & {\n type?: \"item\";\n label: string;\n icon?: ReactNode;\n iconType?: IconType;\n shortcut?: string;\n alert?: boolean;\n children?: DropdownMenuConfigNode[];\n onSelect?: () => void;\n};\n\ntype DropdownMenuConfigNode =\n | DropdownMenuConfigLabel\n | DropdownMenuConfigSeparator\n | DropdownMenuConfigItem;\n\ntype ConfigurableDropdownMenuProps = {\n trigger: ReactNode;\n items: DropdownMenuConfigNode[];\n onAction?: (item: DropdownMenuConfigItem) => void;\n contentProps?: Omit<DropdownMenuContentProps, \"children\">;\n};\n\nfunction renderLeadingIcon(item: DropdownMenuConfigItem) {\n if (item.icon) {\n return <span className={dropdownMenuIconClassName}>{item.icon}</span>;\n }\n\n if (item.iconType) {\n return (\n <Icon\n type={item.iconType}\n className={cn(dropdownMenuIconClassName, item.alert && \"text-error-text\")}\n />\n );\n }\n\n return null;\n}\n\nfunction renderConfigNode(\n item: DropdownMenuConfigNode,\n onAction?: (item: DropdownMenuConfigItem) => void,\n) {\n const key = item.id ?? item.type + (\"label\" in item ? item.label : \"\");\n\n if (item.type === \"separator\") {\n return <DropdownMenuSeparator key={key} />;\n }\n\n if (item.type === \"label\") {\n return <DropdownMenuLabel key={key}>{item.label}</DropdownMenuLabel>;\n }\n\n const iconNode = item.readOnly ? null : renderLeadingIcon(item);\n\n // TODO: добавить передачу пропсов на цвет и стили\n if (item.children?.length) {\n return (\n <DropdownMenuPrimitive.Sub key={key}>\n <DropdownMenuSubTrigger disabled={item.disabled}>\n <span className=\"flex items-center gap-2\">\n {iconNode}\n <span>{item.label}</span>\n </span>\n <Icon\n type=\"caret-right\"\n size=\"small\"\n className={dropdownMenuIconClassName}\n />\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent>\n {item.children.map((child) => renderConfigNode(child, onAction))}\n </DropdownMenuSubContent>\n </DropdownMenuPrimitive.Sub>\n );\n }\n\n return (\n <DropdownMenuItem\n key={key}\n disabled={item.disabled}\n className={cn(\n item.readOnly &&\n `pointer-events-none cursor-default justify-center\n data-[highlighted]:bg-transparent`,\n item.alert && \"text-error-text\",\n )}\n onSelect={(event) => {\n if (item.readOnly) {\n event.preventDefault();\n return;\n }\n\n item.onSelect?.();\n onAction?.(item);\n }}\n >\n {iconNode}\n <span\n className={cn(\n dropdownMenuItemTextClassName,\n item.readOnly && dropdownMenuReadonlyItemTextClassName,\n )}\n >\n {item.label}\n </span>\n {item.shortcut && !item.readOnly ? (\n <span className={dropdownMenuShortcutClassName}>{item.shortcut}</span>\n ) : null}\n </DropdownMenuItem>\n );\n}\n\nfunction ConfigurableDropdownMenu({\n trigger,\n items,\n onAction,\n contentProps,\n}: ConfigurableDropdownMenuProps) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>{trigger}</DropdownMenuTrigger>\n <DropdownMenuContent {...contentProps}>\n {items.map((item) => renderConfigNode(item, onAction))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nexport {\n CheckboxDropdownMenu,\n ConfigurableDropdownMenu,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPrimitive,\n DropdownMenuSeparator,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n};\n\nexport type {\n CheckboxDropdownMenuProps,\n ConfigurableDropdownMenuProps,\n DropdownMenuCheckboxItemProps,\n DropdownMenuCheckboxOption,\n DropdownMenuConfigItem,\n DropdownMenuConfigLabel,\n DropdownMenuConfigNode,\n DropdownMenuConfigSeparator,\n DropdownMenuContentProps,\n DropdownMenuItemProps,\n DropdownMenuLabelProps,\n DropdownMenuProps,\n DropdownMenuSeparatorProps,\n DropdownMenuSubContentProps,\n DropdownMenuSubTriggerProps,\n DropdownMenuTriggerProps,\n};\n"],"names":["DropdownMenu","props","jsx","DropdownMenuPrimitive","DropdownMenuTrigger","DropdownMenuContent","className","sideOffset","align","cn","dropdownMenuContentClassName","DropdownMenuItem","dropdownMenuItemClassName","DropdownMenuCheckboxItem","children","checked","itemIndicator","closeOnSelect","onSelect","shouldRenderIndicator","jsxs","event","Icon","dropdownMenuIconClassName","CheckboxDropdownMenu","trigger","items","onItemCheckedChange","contentProps","keepOpenOnItemSelect","item","DropdownMenuLabel","dropdownMenuLabelClassName","DropdownMenuSeparator","dropdownMenuSeparatorClassName","DropdownMenuSubTrigger","dropdownMenuSubTriggerClassName","DropdownMenuSubContent","renderLeadingIcon","renderConfigNode","onAction","key","iconNode","child","dropdownMenuItemTextClassName","dropdownMenuReadonlyItemTextClassName","dropdownMenuShortcutClassName","ConfigurableDropdownMenu"],"mappings":"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"}
1
+ {"version":3,"file":"components-ui-dropdown-menu-dropdown-menu.js","sources":["../src/components/ui/dropdown-menu/dropdown-menu.tsx"],"sourcesContent":["import { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\";\nimport type { ComponentPropsWithoutRef, ComponentRef, ReactNode, Ref } from \"react\";\n\nimport type { IconType } from \"@/components/ui/icon\";\nimport { Icon } from \"@/components/ui/icon\";\nimport { cn } from \"@/lib/utils\";\nimport {\n dropdownMenuContentClassName,\n dropdownMenuIconClassName,\n dropdownMenuItemClassName,\n dropdownMenuItemTextClassName,\n dropdownMenuLabelClassName,\n dropdownMenuReadonlyItemTextClassName,\n dropdownMenuSeparatorClassName,\n dropdownMenuShortcutClassName,\n dropdownMenuSubTriggerClassName,\n} from \"./dropdown-menu.styles\";\n\ntype DropdownMenuRef = ComponentRef<typeof DropdownMenuPrimitive.Root>;\ntype DropdownMenuProps = ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Root> & {\n ref?: Ref<DropdownMenuRef>;\n};\n\ntype DropdownMenuTriggerRef = ComponentRef<typeof DropdownMenuPrimitive.Trigger>;\ntype DropdownMenuTriggerProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Trigger\n> & {\n ref?: Ref<DropdownMenuTriggerRef>;\n};\n\ntype DropdownMenuContentRef = ComponentRef<typeof DropdownMenuPrimitive.Content>;\ntype DropdownMenuContentProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Content\n> & {\n ref?: Ref<DropdownMenuContentRef>;\n};\n\ntype DropdownMenuItemRef = ComponentRef<typeof DropdownMenuPrimitive.Item>;\ntype DropdownMenuItemProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Item\n> & {\n ref?: Ref<DropdownMenuItemRef>;\n};\n\ntype DropdownMenuCheckboxItemRef = ComponentRef<\n typeof DropdownMenuPrimitive.CheckboxItem\n>;\ntype DropdownMenuCheckboxItemProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.CheckboxItem\n> & {\n ref?: Ref<DropdownMenuCheckboxItemRef>;\n itemIndicator?: ReactNode;\n closeOnSelect?: boolean;\n};\n\ntype DropdownMenuLabelRef = ComponentRef<typeof DropdownMenuPrimitive.Label>;\ntype DropdownMenuLabelProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Label\n> & {\n ref?: Ref<DropdownMenuLabelRef>;\n};\n\ntype DropdownMenuSeparatorRef = ComponentRef<typeof DropdownMenuPrimitive.Separator>;\ntype DropdownMenuSeparatorProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Separator\n> & {\n ref?: Ref<DropdownMenuSeparatorRef>;\n};\n\ntype DropdownMenuSubTriggerRef = ComponentRef<typeof DropdownMenuPrimitive.SubTrigger>;\ntype DropdownMenuSubTriggerProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.SubTrigger\n> & {\n ref?: Ref<DropdownMenuSubTriggerRef>;\n};\n\ntype DropdownMenuSubContentRef = ComponentRef<typeof DropdownMenuPrimitive.SubContent>;\ntype DropdownMenuSubContentProps = ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.SubContent\n> & {\n ref?: Ref<DropdownMenuSubContentRef>;\n};\n\ntype DropdownMenuCheckboxOption = {\n key: string;\n label: ReactNode;\n checked: boolean;\n disabled?: boolean;\n className?: string;\n checkedClassName?: string;\n textValue?: string;\n itemIndicator?: ReactNode;\n endAdornment?: ReactNode;\n checkedEndAdornment?: ReactNode;\n};\n\ntype CheckboxDropdownMenuProps = {\n trigger: ReactNode;\n items: DropdownMenuCheckboxOption[];\n onItemCheckedChange: (key: string, checked: boolean) => void;\n contentProps?: Omit<DropdownMenuContentProps, \"children\">;\n keepOpenOnItemSelect?: boolean;\n};\n\nfunction DropdownMenu({ ...props }: DropdownMenuProps) {\n return (\n <DropdownMenuPrimitive.Root\n data-slot=\"dropdown-menu\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuTrigger({ ...props }: DropdownMenuTriggerProps) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n align = \"end\",\n ...props\n}: DropdownMenuContentProps) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n align={align}\n className={cn(dropdownMenuContentClassName, className)}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuItem({ className, ...props }: DropdownMenuItemProps) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n className={cn(dropdownMenuItemClassName, className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n itemIndicator,\n closeOnSelect = true,\n onSelect,\n ...props\n}: DropdownMenuCheckboxItemProps) {\n const shouldRenderIndicator = itemIndicator !== null;\n\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(dropdownMenuItemClassName, \"border-none\", className)}\n checked={checked}\n onSelect={(event) => {\n onSelect?.(event);\n\n if (!closeOnSelect && !event.defaultPrevented) {\n event.preventDefault();\n }\n }}\n {...props}\n >\n {shouldRenderIndicator && (\n <DropdownMenuPrimitive.ItemIndicator>\n {itemIndicator ?? (\n <Icon\n type=\"check\"\n size=\"small\"\n className={dropdownMenuIconClassName}\n />\n )}\n </DropdownMenuPrimitive.ItemIndicator>\n )}\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction CheckboxDropdownMenu({\n trigger,\n items,\n onItemCheckedChange,\n contentProps,\n keepOpenOnItemSelect = true,\n}: CheckboxDropdownMenuProps) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>{trigger}</DropdownMenuTrigger>\n <DropdownMenuContent {...contentProps}>\n {items.map((item) => (\n <DropdownMenuCheckboxItem\n key={item.key}\n checked={item.checked}\n disabled={item.disabled}\n className={cn(item.className, item.checked && item.checkedClassName)}\n textValue={item.textValue}\n itemIndicator={item.itemIndicator}\n closeOnSelect={!keepOpenOnItemSelect}\n onCheckedChange={(checked) => onItemCheckedChange(item.key, checked === true)}\n >\n <div\n className={cn(\n \"flex w-full items-center gap-2\",\n (item.endAdornment || item.checkedEndAdornment) && \"justify-between\",\n )}\n >\n <span>{item.label}</span>\n {item.checked\n ? (item.checkedEndAdornment ?? item.endAdornment)\n : item.endAdornment}\n </div>\n </DropdownMenuCheckboxItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nfunction DropdownMenuLabel({ className, ...props }: DropdownMenuLabelProps) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n className={cn(dropdownMenuLabelClassName, className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSeparator({ className, ...props }: DropdownMenuSeparatorProps) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(dropdownMenuSeparatorClassName, className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSubTrigger({ className, ...props }: DropdownMenuSubTriggerProps) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n className={cn(dropdownMenuSubTriggerClassName, className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n sideOffset = 4,\n ...props\n}: DropdownMenuSubContentProps) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n sideOffset={sideOffset}\n className={cn(dropdownMenuContentClassName, className)}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\ntype DropdownMenuConfigBase = {\n id?: string;\n disabled?: boolean;\n readOnly?: boolean;\n};\n\ntype DropdownMenuConfigLabel = DropdownMenuConfigBase & {\n type: \"label\";\n label: string;\n};\n\ntype DropdownMenuConfigSeparator = DropdownMenuConfigBase & {\n type: \"separator\";\n};\n\ntype DropdownMenuConfigItem = DropdownMenuConfigBase & {\n type?: \"item\";\n label: string;\n icon?: ReactNode;\n iconType?: IconType;\n shortcut?: string;\n alert?: boolean;\n children?: DropdownMenuConfigNode[];\n className?: string;\n iconClassName?: string;\n labelClassName?: string;\n onSelect?: () => void;\n};\n\ntype DropdownMenuConfigNode =\n | DropdownMenuConfigLabel\n | DropdownMenuConfigSeparator\n | DropdownMenuConfigItem;\n\ntype ConfigurableDropdownMenuProps = {\n trigger: ReactNode;\n items: DropdownMenuConfigNode[];\n onAction?: (item: DropdownMenuConfigItem) => void;\n contentProps?: Omit<DropdownMenuContentProps, \"children\">;\n open?: DropdownMenuProps[\"open\"];\n onOpenChange?: DropdownMenuProps[\"onOpenChange\"];\n};\n\nfunction renderLeadingIcon(item: DropdownMenuConfigItem) {\n if (item.icon) {\n return <span className={dropdownMenuIconClassName}>{item.icon}</span>;\n }\n\n if (item.iconType) {\n return (\n <Icon\n type={item.iconType}\n className={cn(dropdownMenuIconClassName, item.alert && \"text-error-text\")}\n />\n );\n }\n\n return null;\n}\n\nfunction renderConfigNode(\n item: DropdownMenuConfigNode,\n onAction?: (item: DropdownMenuConfigItem) => void,\n) {\n const key = item.id ?? item.type + (\"label\" in item ? item.label : \"\");\n\n if (item.type === \"separator\") {\n return <DropdownMenuSeparator key={key} />;\n }\n\n if (item.type === \"label\") {\n return <DropdownMenuLabel key={key}>{item.label}</DropdownMenuLabel>;\n }\n\n const iconNode = item.readOnly ? null : renderLeadingIcon(item);\n\n // TODO: добавить передачу пропсов на цвет и стили\n if (item.children?.length) {\n return (\n <DropdownMenuPrimitive.Sub key={key}>\n <DropdownMenuSubTrigger disabled={item.disabled}>\n <span className=\"flex items-center gap-2\">\n {iconNode}\n <span>{item.label}</span>\n </span>\n <Icon\n type=\"caret-right\"\n size=\"small\"\n className={dropdownMenuIconClassName}\n />\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent>\n {item.children.map((child) => renderConfigNode(child, onAction))}\n </DropdownMenuSubContent>\n </DropdownMenuPrimitive.Sub>\n );\n }\n\n return (\n <DropdownMenuItem\n key={key}\n disabled={item.disabled}\n className={cn(\n item.readOnly &&\n `pointer-events-none cursor-default justify-center\n data-[highlighted]:bg-transparent`,\n item.alert && \"text-error-text\",\n )}\n onSelect={(event) => {\n if (item.readOnly) {\n event.preventDefault();\n return;\n }\n\n item.onSelect?.();\n onAction?.(item);\n }}\n >\n {iconNode}\n <span\n className={cn(\n dropdownMenuItemTextClassName,\n item.readOnly && dropdownMenuReadonlyItemTextClassName,\n )}\n >\n {item.label}\n </span>\n {item.shortcut && !item.readOnly ? (\n <span className={dropdownMenuShortcutClassName}>{item.shortcut}</span>\n ) : null}\n </DropdownMenuItem>\n );\n}\n\nfunction ConfigurableDropdownMenu({\n trigger,\n items,\n onAction,\n contentProps,\n open,\n onOpenChange,\n}: ConfigurableDropdownMenuProps) {\n return (\n <DropdownMenu\n open={open}\n onOpenChange={onOpenChange}\n >\n <DropdownMenuTrigger asChild>{trigger}</DropdownMenuTrigger>\n <DropdownMenuContent {...contentProps}>\n {items.map((item) => renderConfigNode(item, onAction))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nexport {\n CheckboxDropdownMenu,\n ConfigurableDropdownMenu,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPrimitive,\n DropdownMenuSeparator,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n};\n\nexport type {\n CheckboxDropdownMenuProps,\n ConfigurableDropdownMenuProps,\n DropdownMenuCheckboxItemProps,\n DropdownMenuCheckboxOption,\n DropdownMenuConfigItem,\n DropdownMenuConfigLabel,\n DropdownMenuConfigNode,\n DropdownMenuConfigSeparator,\n DropdownMenuContentProps,\n DropdownMenuItemProps,\n DropdownMenuLabelProps,\n DropdownMenuProps,\n DropdownMenuSeparatorProps,\n DropdownMenuSubContentProps,\n DropdownMenuSubTriggerProps,\n DropdownMenuTriggerProps,\n};\n"],"names":["DropdownMenu","props","jsx","DropdownMenuPrimitive","DropdownMenuTrigger","DropdownMenuContent","className","sideOffset","align","cn","dropdownMenuContentClassName","DropdownMenuItem","dropdownMenuItemClassName","DropdownMenuCheckboxItem","children","checked","itemIndicator","closeOnSelect","onSelect","shouldRenderIndicator","jsxs","event","Icon","dropdownMenuIconClassName","CheckboxDropdownMenu","trigger","items","onItemCheckedChange","contentProps","keepOpenOnItemSelect","item","DropdownMenuLabel","dropdownMenuLabelClassName","DropdownMenuSeparator","dropdownMenuSeparatorClassName","DropdownMenuSubTrigger","dropdownMenuSubTriggerClassName","DropdownMenuSubContent","renderLeadingIcon","renderConfigNode","onAction","key","iconNode","child","dropdownMenuItemTextClassName","dropdownMenuReadonlyItemTextClassName","dropdownMenuShortcutClassName","ConfigurableDropdownMenu","open","onOpenChange"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"components-ui-input-input.cjs","sources":["../src/components/ui/input/input.tsx"],"sourcesContent":["import type { ComponentPropsWithRef } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { type VariantProps } from \"class-variance-authority\";\n\nimport { inputVariants } from \"./input.styles\";\n\ntype InputProps = ComponentPropsWithRef<\"input\"> &\n VariantProps<typeof inputVariants> & { className?: string };\n\nconst Input = ({ className, sizeInput, type, variant, ...props }: InputProps) => {\n return (\n <input\n data-slot=\"input\"\n type={type || \"text\"}\n className={cn(inputVariants({ variant, sizeInput }), className)}\n {...props}\n />\n );\n};\nexport { Input };\n"],"names":["Input","className","sizeInput","type","variant","props","jsx","cn","inputVariants"],"mappings":"gPASMA,EAAQ,CAAC,CAAE,UAAAC,EAAW,UAAAC,EAAW,KAAAC,EAAM,QAAAC,EAAS,GAAGC,KAErDC,EAAAA,IAAC,QAAA,CACC,YAAU,QACV,KAAMH,GAAQ,OACd,UAAWI,EAAAA,GAAGC,gBAAc,CAAE,QAAAJ,EAAS,UAAAF,CAAA,CAAW,EAAGD,CAAS,EAC7D,GAAGI,CAAA,CAAA"}
1
+ {"version":3,"file":"components-ui-input-input.cjs","sources":["../src/components/ui/input/input.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\";\nimport { type VariantProps } from \"class-variance-authority\";\nimport type { ComponentPropsWithRef } from \"react\";\n\nimport { inputVariants } from \"./input.styles\";\n\ntype InputProps = ComponentPropsWithRef<\"input\"> &\n VariantProps<typeof inputVariants> & { className?: string };\n\nconst Input = ({ className, sizeInput, type, variant, ...props }: InputProps) => {\n return (\n <input\n data-slot=\"input\"\n type={type || \"text\"}\n className={cn(inputVariants({ variant, sizeInput }), className)}\n {...props}\n />\n );\n};\nexport { Input };\n"],"names":["Input","className","sizeInput","type","variant","props","jsx","cn","inputVariants"],"mappings":"gPASMA,EAAQ,CAAC,CAAE,UAAAC,EAAW,UAAAC,EAAW,KAAAC,EAAM,QAAAC,EAAS,GAAGC,KAErDC,EAAAA,IAAC,QAAA,CACC,YAAU,QACV,KAAMH,GAAQ,OACd,UAAWI,EAAAA,GAAGC,gBAAc,CAAE,QAAAJ,EAAS,UAAAF,CAAA,CAAW,EAAGD,CAAS,EAC7D,GAAGI,CAAA,CAAA"}