brd-ui-kit 0.1.95 → 0.1.98
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.
- package/dist/{approval-log.view-BMiYO7Cf.cjs → approval-log.view-DICzq_XG.cjs} +2 -2
- package/dist/{approval-log.view-BMiYO7Cf.cjs.map → approval-log.view-DICzq_XG.cjs.map} +1 -1
- package/dist/{approval-log.view-D_-VDB_3.js → approval-log.view-DiYnnYJc.js} +2 -1
- package/dist/{approval-log.view-D_-VDB_3.js.map → approval-log.view-DiYnnYJc.js.map} +1 -1
- package/dist/brd-ui-kit.css +1 -1
- package/dist/components/basic-checkbox/basic-checkbox.d.ts +2 -1
- package/dist/components/checklist/checklist.d.ts +18 -0
- package/dist/components/checklist/index.d.ts +1 -0
- package/dist/components/checklist.d.ts +2 -0
- package/dist/components/stepper/index.d.ts +1 -0
- package/dist/components/stepper/stepper.d.ts +11 -0
- package/dist/components/stepper/stepper.styles.d.ts +4 -0
- package/dist/components/stepper.d.ts +2 -0
- package/dist/components/ui/checkbox/checkbox.d.ts +4 -6
- package/dist/components/ui/checkbox/checkbox.styles.d.ts +6 -1
- package/dist/components-approval-log-approval-log.cjs +1 -1
- package/dist/components-approval-log-approval-log.cjs.map +1 -1
- package/dist/components-approval-log-approval-log.js +4 -3
- package/dist/components-approval-log-approval-log.js.map +1 -1
- package/dist/components-approval-log-approval-log.view.cjs +1 -1
- package/dist/components-approval-log-approval-log.view.js +3 -2
- package/dist/components-approval-log-approval-log.view.js.map +1 -1
- package/dist/components-avatar-uploader-avatar-uploader.cjs +1 -1
- package/dist/components-avatar-uploader-avatar-uploader.cjs.map +1 -1
- package/dist/components-avatar-uploader-avatar-uploader.js +4 -3
- package/dist/components-avatar-uploader-avatar-uploader.js.map +1 -1
- package/dist/components-basic-avatar-basic-avatar.cjs +1 -1
- package/dist/components-basic-avatar-basic-avatar.js +3 -2
- package/dist/components-basic-avatar-basic-avatar.js.map +1 -1
- package/dist/components-basic-avatar.cjs +1 -1
- package/dist/components-basic-avatar.js +1 -1
- package/dist/components-basic-checkbox-basic-checkbox.cjs +1 -1
- package/dist/components-basic-checkbox-basic-checkbox.cjs.map +1 -1
- package/dist/components-basic-checkbox-basic-checkbox.js +48 -43
- package/dist/components-basic-checkbox-basic-checkbox.js.map +1 -1
- package/dist/components-checkbox-group-checkbox-group.cjs +1 -1
- package/dist/components-checkbox-group-checkbox-group.cjs.map +1 -1
- package/dist/components-checkbox-group-checkbox-group.js +4 -3
- package/dist/components-checkbox-group-checkbox-group.js.map +1 -1
- package/dist/components-checklist-checklist.cjs +3 -0
- package/dist/components-checklist-checklist.cjs.map +1 -0
- package/dist/components-checklist-checklist.js +61 -0
- package/dist/components-checklist-checklist.js.map +1 -0
- package/dist/components-checklist.cjs +2 -0
- package/dist/components-checklist.cjs.map +1 -0
- package/dist/components-checklist.js +5 -0
- package/dist/components-checklist.js.map +1 -0
- package/dist/components-forms-from-checkbox.cjs +1 -1
- package/dist/components-forms-from-checkbox.cjs.map +1 -1
- package/dist/components-forms-from-checkbox.js +13 -12
- package/dist/components-forms-from-checkbox.js.map +1 -1
- package/dist/components-input-contact-input-contact.cjs +1 -1
- package/dist/components-input-contact-input-contact.cjs.map +1 -1
- package/dist/components-input-contact-input-contact.js +4 -3
- package/dist/components-input-contact-input-contact.js.map +1 -1
- package/dist/components-input-search-input-search.cjs +1 -1
- package/dist/components-input-search-input-search.cjs.map +1 -1
- package/dist/components-input-search-input-search.js +4 -3
- package/dist/components-input-search-input-search.js.map +1 -1
- package/dist/components-stepper-stepper.cjs +2 -0
- package/dist/components-stepper-stepper.cjs.map +1 -0
- package/dist/components-stepper-stepper.js +46 -0
- package/dist/components-stepper-stepper.js.map +1 -0
- package/dist/components-stepper-stepper.styles.cjs +2 -0
- package/dist/components-stepper-stepper.styles.cjs.map +1 -0
- package/dist/components-stepper-stepper.styles.js +18 -0
- package/dist/components-stepper-stepper.styles.js.map +1 -0
- package/dist/components-stepper.cjs +2 -0
- package/dist/components-stepper.cjs.map +1 -0
- package/dist/components-stepper.js +5 -0
- package/dist/components-stepper.js.map +1 -0
- package/dist/components-story-drawer-story-drawer.cjs +1 -1
- package/dist/components-story-drawer-story-drawer.cjs.map +1 -1
- package/dist/components-story-drawer-story-drawer.js +4 -3
- package/dist/components-story-drawer-story-drawer.js.map +1 -1
- package/dist/components-ui-checkbox-checkbox.cjs +1 -1
- package/dist/components-ui-checkbox-checkbox.cjs.map +1 -1
- package/dist/components-ui-checkbox-checkbox.js +13 -13
- package/dist/components-ui-checkbox-checkbox.js.map +1 -1
- package/dist/components-ui-checkbox-checkbox.styles.cjs +12 -1
- package/dist/components-ui-checkbox-checkbox.styles.cjs.map +1 -1
- package/dist/components-ui-checkbox-checkbox.styles.js +28 -17
- package/dist/components-ui-checkbox-checkbox.styles.js.map +1 -1
- package/dist/components-ui-input-input.styles.cjs +7 -2
- package/dist/components-ui-input-input.styles.cjs.map +1 -1
- package/dist/components-ui-input-input.styles.js +9 -4
- package/dist/components-ui-input-input.styles.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/package.json +19 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsxs as x, jsx as o } from "react/jsx-runtime";
|
|
2
|
-
import { B as A } from "./approval-log.view-
|
|
2
|
+
import { B as A } from "./approval-log.view-DiYnnYJc.js";
|
|
3
3
|
import { cn as h } from "./lib-utils.js";
|
|
4
4
|
import "class-variance-authority";
|
|
5
5
|
import "./components-ui-badge-badge.styles.js";
|
|
@@ -62,7 +62,8 @@ import "brd-phosphor-strokes-icons/icons/TelegramLogo";
|
|
|
62
62
|
import "brd-phosphor-strokes-icons/icons/WhatsAppLogoFilled";
|
|
63
63
|
import "./components-input-phone-input-phone.js";
|
|
64
64
|
import "./components-card-info-card-info.styles.js";
|
|
65
|
-
|
|
65
|
+
import "./components-stepper-stepper.styles.js";
|
|
66
|
+
const w = 1, y = [".jpg", ".png"], _t = ({
|
|
66
67
|
src: i,
|
|
67
68
|
fullName: p,
|
|
68
69
|
maxFiles: n = w,
|
|
@@ -120,6 +121,6 @@ const w = 1, y = [".jpg", ".png"], Rt = ({
|
|
|
120
121
|
);
|
|
121
122
|
};
|
|
122
123
|
export {
|
|
123
|
-
|
|
124
|
+
_t as AvatarUpload
|
|
124
125
|
};
|
|
125
126
|
//# sourceMappingURL=components-avatar-uploader-avatar-uploader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-avatar-uploader-avatar-uploader.js","sources":["../src/components/avatar-uploader/avatar-uploader.tsx"],"sourcesContent":["import { cn } from \"@/index\";\nimport { useMemo } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\nimport { BasicAvatar, type BasicAvatarProps } from \"../basic-avatar\";\nimport { Typography } from \"../ui/typography\";\n\ntype Props = {\n maxFiles?: number;\n src?: string;\n fullName: string;\n accept?: string[];\n avatarProps?: BasicAvatarProps;\n containerClassName?: string;\n onChange?: (src: string | null) => void;\n};\n\nconst DEFAULT_MAX_FILES = 1;\nconst DEFAULT_ACCEPT = [\".jpg\", \".png\"];\n\nexport const AvatarUpload = ({\n src,\n fullName,\n maxFiles = DEFAULT_MAX_FILES,\n accept = DEFAULT_ACCEPT,\n avatarProps,\n containerClassName,\n onChange,\n}: Props) => {\n const initials = useMemo(() => {\n const [firstName = \"\", lastName = \"\"] = fullName.split(\" \");\n const first = firstName.charAt(0);\n const last = lastName.charAt(0);\n\n return (first + last).toUpperCase() || \"?\";\n }, [fullName]);\n\n const { getRootProps, getInputProps } = useDropzone({\n accept: { \"image/*\": accept },\n maxFiles,\n onDrop: (files) => {\n if (files.length === 0) return;\n const previewUrl = URL.createObjectURL(files[0]);\n onChange?.(previewUrl);\n },\n });\n\n const removeAvatar = (e: React.MouseEvent<HTMLDivElement>) => {\n e.stopPropagation();\n onChange?.(null);\n };\n\n return (\n <div\n {...getRootProps()}\n className={cn(\n `bg-info-new-bg flex h-18 w-18 cursor-pointer items-center justify-center\n overflow-hidden rounded-full transition-colors`,\n containerClassName,\n )}\n >\n <input {...getInputProps()} />\n {src ? (\n <BasicAvatar\n {...avatarProps}\n image={{\n src,\n }}\n initials={{ text: initials }}\n hasBadge\n onClick={removeAvatar}\n />\n ) : (\n <Typography\n variant=\"body-xxl-medium\"\n className=\"text-info-new-text flex items-center justify-center\"\n >\n {initials}\n </Typography>\n )}\n </div>\n );\n};\n\nexport type { Props as AvatarUploadProps };\n"],"names":["DEFAULT_MAX_FILES","DEFAULT_ACCEPT","AvatarUpload","src","fullName","maxFiles","accept","avatarProps","containerClassName","onChange","initials","useMemo","firstName","lastName","first","last","getRootProps","getInputProps","useDropzone","files","previewUrl","removeAvatar","e","jsxs","cn","jsx","BasicAvatar","Typography"],"mappings":"
|
|
1
|
+
{"version":3,"file":"components-avatar-uploader-avatar-uploader.js","sources":["../src/components/avatar-uploader/avatar-uploader.tsx"],"sourcesContent":["import { cn } from \"@/index\";\nimport { useMemo } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\nimport { BasicAvatar, type BasicAvatarProps } from \"../basic-avatar\";\nimport { Typography } from \"../ui/typography\";\n\ntype Props = {\n maxFiles?: number;\n src?: string;\n fullName: string;\n accept?: string[];\n avatarProps?: BasicAvatarProps;\n containerClassName?: string;\n onChange?: (src: string | null) => void;\n};\n\nconst DEFAULT_MAX_FILES = 1;\nconst DEFAULT_ACCEPT = [\".jpg\", \".png\"];\n\nexport const AvatarUpload = ({\n src,\n fullName,\n maxFiles = DEFAULT_MAX_FILES,\n accept = DEFAULT_ACCEPT,\n avatarProps,\n containerClassName,\n onChange,\n}: Props) => {\n const initials = useMemo(() => {\n const [firstName = \"\", lastName = \"\"] = fullName.split(\" \");\n const first = firstName.charAt(0);\n const last = lastName.charAt(0);\n\n return (first + last).toUpperCase() || \"?\";\n }, [fullName]);\n\n const { getRootProps, getInputProps } = useDropzone({\n accept: { \"image/*\": accept },\n maxFiles,\n onDrop: (files) => {\n if (files.length === 0) return;\n const previewUrl = URL.createObjectURL(files[0]);\n onChange?.(previewUrl);\n },\n });\n\n const removeAvatar = (e: React.MouseEvent<HTMLDivElement>) => {\n e.stopPropagation();\n onChange?.(null);\n };\n\n return (\n <div\n {...getRootProps()}\n className={cn(\n `bg-info-new-bg flex h-18 w-18 cursor-pointer items-center justify-center\n overflow-hidden rounded-full transition-colors`,\n containerClassName,\n )}\n >\n <input {...getInputProps()} />\n {src ? (\n <BasicAvatar\n {...avatarProps}\n image={{\n src,\n }}\n initials={{ text: initials }}\n hasBadge\n onClick={removeAvatar}\n />\n ) : (\n <Typography\n variant=\"body-xxl-medium\"\n className=\"text-info-new-text flex items-center justify-center\"\n >\n {initials}\n </Typography>\n )}\n </div>\n );\n};\n\nexport type { Props as AvatarUploadProps };\n"],"names":["DEFAULT_MAX_FILES","DEFAULT_ACCEPT","AvatarUpload","src","fullName","maxFiles","accept","avatarProps","containerClassName","onChange","initials","useMemo","firstName","lastName","first","last","getRootProps","getInputProps","useDropzone","files","previewUrl","removeAvatar","e","jsxs","cn","jsx","BasicAvatar","Typography"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAMA,IAAoB,GACpBC,IAAiB,CAAC,QAAQ,MAAM,GAEzBC,KAAe,CAAC;AAAA,EAC3B,KAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC,IAAWL;AAAA,EACX,QAAAM,IAASL;AAAA,EACT,aAAAM;AAAA,EACA,oBAAAC;AAAA,EACA,UAAAC;AACF,MAAa;AACX,QAAMC,IAAWC,EAAQ,MAAM;AAC7B,UAAM,CAACC,IAAY,IAAIC,IAAW,EAAE,IAAIT,EAAS,MAAM,GAAG,GACpDU,IAAQF,EAAU,OAAO,CAAC,GAC1BG,IAAOF,EAAS,OAAO,CAAC;AAE9B,YAAQC,IAAQC,GAAM,YAAA,KAAiB;AAAA,EACzC,GAAG,CAACX,CAAQ,CAAC,GAEP,EAAE,cAAAY,GAAc,eAAAC,EAAA,IAAkBC,EAAY;AAAA,IAClD,QAAQ,EAAE,WAAWZ,EAAA;AAAA,IACrB,UAAAD;AAAA,IACA,QAAQ,CAACc,MAAU;AACjB,UAAIA,EAAM,WAAW,EAAG;AACxB,YAAMC,IAAa,IAAI,gBAAgBD,EAAM,CAAC,CAAC;AAC/C,MAAAV,IAAWW,CAAU;AAAA,IACvB;AAAA,EAAA,CACD,GAEKC,IAAe,CAACC,MAAwC;AAC5D,IAAAA,EAAE,gBAAA,GACFb,IAAW,IAAI;AAAA,EACjB;AAEA,SACE,gBAAAc;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGP,EAAA;AAAA,MACJ,WAAWQ;AAAA,QACT;AAAA;AAAA,QAEAhB;AAAA,MAAA;AAAA,MAGF,UAAA;AAAA,QAAA,gBAAAiB,EAAC,SAAA,EAAO,GAAGR,EAAA,EAAc,CAAG;AAAA,QAC3Bd,IACC,gBAAAsB;AAAA,UAACC;AAAA,UAAA;AAAA,YACE,GAAGnB;AAAA,YACJ,OAAO;AAAA,cACL,KAAAJ;AAAA,YAAA;AAAA,YAEF,UAAU,EAAE,MAAMO,EAAA;AAAA,YAClB,UAAQ;AAAA,YACR,SAASW;AAAA,UAAA;AAAA,QAAA,IAGX,gBAAAI;AAAA,UAACE;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,WAAU;AAAA,YAET,UAAAjB;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("react/jsx-runtime");const e=require("./approval-log.view-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("react/jsx-runtime");const e=require("./approval-log.view-DICzq_XG.cjs");require("./lib-utils.cjs");require("class-variance-authority");require("./components-ui-badge-badge.styles.cjs");require("./components-ui-button-button.cjs");require("./components-ui-button-button.styles.cjs");require("./components-ui-card-card.cjs");require("./components-ui-checkbox-checkbox.cjs");require("brd-phosphor-strokes-icons/icons/CaretDown");require("react");require("./calendar-BClkfQSD.cjs");require("./components-ui-icon-icon.cjs");require("brd-phosphor-strokes-icons/icons");require("./components-ui-combobox-combobox.cjs");require("./components-ui-dialog-dialog.cjs");require("./components-ui-label-label.cjs");require("./components-ui-separator-separator.cjs");require("./components-ui-field-field.styles.cjs");require("./components-ui-input-input.styles.cjs");require("./components-ui-textarea-textarea.cjs");require("./components-ui-input-group-input-group.styles.cjs");require("./components-ui-navigation-item-navigation-item.styles.cjs");require("./components-ui-navigation-menu-navigation-menu.styles.cjs");require("./components-ui-pagination-pagination.cjs");require("./components-ui-progress-progress.cjs");require("./components-ui-radio-group-radio-group.cjs");require("./components-ui-switch-switch.cjs");require("./components-ui-toggle-toggle.styles.cjs");require("./components-ui-toggle-group-toggle-group.cjs");require("./components-ui-table-table.cjs");require("./components-ui-tabs-tabs.cjs");require("./components-ui-tooltip-tooltip.cjs");require("./components-ui-typography-typography.cjs");require("./components-ui-typography-typography.styles.cjs");require("./components-ui-avatar-avatar.cjs");require("./utils-helpers.cjs");require("brd-phosphor-strokes-icons/icons/CaretLeft");require("brd-phosphor-strokes-icons/icons/CaretRight");require("./components-app-pagination-app-pagination.styles.cjs");require("brd-phosphor-strokes-icons/icons/CaretUpDown");require("./components-app-sidebar-app-sidebar.styles.cjs");require("./components-data-table-data-table.styles.cjs");require("./components-ui-dropdown-menu-dropdown-menu.styles.cjs");require("brd-phosphor-strokes-icons/icons/Eye");require("brd-phosphor-strokes-icons/icons/EyeSlash");require("./components-select-field-select-field.cjs");require("./lodash-kqhtUJfz.cjs");require("./chart-9H_9wEfR.cjs");require("brd-phosphor-strokes-icons/icons/CheckCircle");require("brd-phosphor-strokes-icons/icons/Info");require("brd-phosphor-strokes-icons/icons/SpinnerGap");require("brd-phosphor-strokes-icons/icons/Warning");require("brd-phosphor-strokes-icons/icons/X");require("brd-phosphor-strokes-icons/icons/XCircle");require("./index-DGxwh2Ms.cjs");require("./index-fTTv8YY8.cjs");require("brd-phosphor-strokes-icons/icons/Plus");require("brd-phosphor-strokes-icons/icons/CaretUp");require("brd-phosphor-strokes-icons/icons/EnvelopeSimple");require("brd-phosphor-strokes-icons/icons/MaxLogo");require("brd-phosphor-strokes-icons/icons/Phone");require("brd-phosphor-strokes-icons/icons/TelegramLogo");require("brd-phosphor-strokes-icons/icons/WhatsAppLogoFilled");require("./components-input-phone-input-phone.cjs");require("./components-card-info-card-info.styles.cjs");require("./components-stepper-stepper.styles.cjs");exports.BasicAvatar=e.BasicAvatar;
|
|
2
2
|
//# sourceMappingURL=components-basic-avatar-basic-avatar.cjs.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "react/jsx-runtime";
|
|
2
|
-
import { B as
|
|
2
|
+
import { B as Ar } from "./approval-log.view-DiYnnYJc.js";
|
|
3
3
|
import "./lib-utils.js";
|
|
4
4
|
import "class-variance-authority";
|
|
5
5
|
import "./components-ui-badge-badge.styles.js";
|
|
@@ -64,7 +64,8 @@ import "brd-phosphor-strokes-icons/icons/TelegramLogo";
|
|
|
64
64
|
import "brd-phosphor-strokes-icons/icons/WhatsAppLogoFilled";
|
|
65
65
|
import "./components-input-phone-input-phone.js";
|
|
66
66
|
import "./components-card-info-card-info.styles.js";
|
|
67
|
+
import "./components-stepper-stepper.styles.js";
|
|
67
68
|
export {
|
|
68
|
-
|
|
69
|
+
Ar as BasicAvatar
|
|
69
70
|
};
|
|
70
71
|
//# sourceMappingURL=components-basic-avatar-basic-avatar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-basic-avatar-basic-avatar.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"components-basic-avatar-basic-avatar.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./approval-log.view-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./approval-log.view-DICzq_XG.cjs");exports.BasicAvatar=a.BasicAvatar;
|
|
2
2
|
//# sourceMappingURL=components-basic-avatar.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),u=require("./lib-utils.cjs"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),u=require("./lib-utils.cjs"),h=require("./components-ui-checkbox-checkbox.cjs"),r=require("./components-ui-field-field.cjs"),d=({name:i,orientation:n="horizontal",label:l,disabled:c,classNames:o,isValid:t,description:a,...x})=>{const s={...t===!0&&!c&&{"aria-valid":!0},...t===!1&&!c&&{"aria-invalid":!0},disabled:c};return e.jsx(r.FieldGroup,{className:o?.classNameGroup,children:e.jsx(r.Field,{...s,orientation:n,children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx(h.Checkbox,{...x,...s,id:i,name:i,disabled:c,className:o?.classNameCheckbox}),l&&e.jsx(r.FieldLabel,{htmlFor:i,className:u.cn("text-[14px]",o?.classNameLabel,c&&"cursor-not-allowed"),children:l})]}),a&&e.jsx(r.FieldDescription,{...s,children:a})]})})})};exports.BasicCheckbox=d;
|
|
2
2
|
//# sourceMappingURL=components-basic-checkbox-basic-checkbox.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-basic-checkbox-basic-checkbox.cjs","sources":["../src/components/basic-checkbox/basic-checkbox.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\";\nimport type * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Checkbox } from \"../ui/checkbox\";\nimport { Field, FieldGroup, FieldLabel } from \"../ui/field\";\n\ntype BaseProps = {\n name?: string;\n orientation?: \"vertical\" | \"horizontal\";\n label?: React.ReactNode;\n classNames?: {\n classNameCheckbox?: string;\n classNameLabel?: string;\n classNameGroup?: string;\n };\n isValid?: boolean;\n};\n\ntype CheckboxProps = BaseProps &\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>;\n\nexport const BasicCheckbox = ({\n name,\n orientation = \"horizontal\",\n label,\n disabled,\n classNames,\n isValid,\n ...rest\n}: CheckboxProps) => {\n const validationProps = {\n \"aria-
|
|
1
|
+
{"version":3,"file":"components-basic-checkbox-basic-checkbox.cjs","sources":["../src/components/basic-checkbox/basic-checkbox.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\";\nimport type * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Checkbox } from \"../ui/checkbox\";\nimport { Field, FieldDescription, FieldGroup, FieldLabel } from \"../ui/field\";\n\ntype BaseProps = {\n name?: string;\n orientation?: \"vertical\" | \"horizontal\";\n label?: React.ReactNode;\n description?: string;\n classNames?: {\n classNameCheckbox?: string;\n classNameLabel?: string;\n classNameGroup?: string;\n };\n isValid?: boolean;\n};\n\ntype CheckboxProps = BaseProps &\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>;\n\nexport const BasicCheckbox = ({\n name,\n orientation = \"horizontal\",\n label,\n disabled,\n classNames,\n isValid,\n description,\n ...rest\n}: CheckboxProps) => {\n const validationProps = {\n ...(isValid === true && !disabled && { \"aria-valid\": true }),\n ...(isValid === false && !disabled && { \"aria-invalid\": true }),\n disabled,\n };\n\n // TODO: добавить вывод ошибки\n return (\n <FieldGroup className={classNames?.classNameGroup}>\n <Field\n {...validationProps}\n orientation={orientation}\n >\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex gap-2\">\n <Checkbox\n {...rest}\n {...validationProps}\n id={name}\n name={name}\n disabled={disabled}\n className={classNames?.classNameCheckbox}\n />\n {label && (\n <FieldLabel\n htmlFor={name}\n className={cn(\n \"text-[14px]\",\n classNames?.classNameLabel,\n disabled && \"cursor-not-allowed\",\n )}\n >\n {label}\n </FieldLabel>\n )}\n </div>\n {description && (\n <FieldDescription {...validationProps}>{description}</FieldDescription>\n )}\n </div>\n </Field>\n </FieldGroup>\n );\n};\n\nexport type { CheckboxProps };\n"],"names":["BasicCheckbox","name","orientation","label","disabled","classNames","isValid","description","rest","validationProps","jsx","FieldGroup","Field","jsxs","Checkbox","FieldLabel","cn","FieldDescription"],"mappings":"kPAqBaA,EAAgB,CAAC,CAC5B,KAAAC,EACA,YAAAC,EAAc,aACd,MAAAC,EACA,SAAAC,EACA,WAAAC,EACA,QAAAC,EACA,YAAAC,EACA,GAAGC,CACL,IAAqB,CACnB,MAAMC,EAAkB,CACtB,GAAIH,IAAY,IAAQ,CAACF,GAAY,CAAE,aAAc,EAAA,EACrD,GAAIE,IAAY,IAAS,CAACF,GAAY,CAAE,eAAgB,EAAA,EACxD,SAAAA,CAAA,EAIF,OACEM,EAAAA,IAACC,EAAAA,WAAA,CAAW,UAAWN,GAAY,eACjC,SAAAK,EAAAA,IAACE,EAAAA,MAAA,CACE,GAAGH,EACJ,YAAAP,EAEA,SAAAW,EAAAA,KAAC,MAAA,CAAI,UAAU,sBACb,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,aACb,SAAA,CAAAH,EAAAA,IAACI,EAAAA,SAAA,CACE,GAAGN,EACH,GAAGC,EACJ,GAAIR,EACJ,KAAAA,EACA,SAAAG,EACA,UAAWC,GAAY,iBAAA,CAAA,EAExBF,GACCO,EAAAA,IAACK,EAAAA,WAAA,CACC,QAASd,EACT,UAAWe,EAAAA,GACT,cACAX,GAAY,eACZD,GAAY,oBAAA,EAGb,SAAAD,CAAA,CAAA,CACH,EAEJ,EACCI,GACCG,EAAAA,IAACO,EAAAA,iBAAA,CAAkB,GAAGR,EAAkB,SAAAF,CAAA,CAAY,CAAA,CAAA,CAExD,CAAA,CAAA,EAEJ,CAEJ"}
|
|
@@ -1,54 +1,59 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { cn as
|
|
3
|
-
import { Checkbox as
|
|
4
|
-
import { FieldGroup as
|
|
5
|
-
const
|
|
1
|
+
import { jsx as e, jsxs as s } from "react/jsx-runtime";
|
|
2
|
+
import { cn as h } from "./lib-utils.js";
|
|
3
|
+
import { Checkbox as p } from "./components-ui-checkbox-checkbox.js";
|
|
4
|
+
import { FieldGroup as x, Field as f, FieldLabel as d, FieldDescription as u } from "./components-ui-field-field.js";
|
|
5
|
+
const C = ({
|
|
6
6
|
name: o,
|
|
7
|
-
orientation:
|
|
7
|
+
orientation: m = "horizontal",
|
|
8
8
|
label: a,
|
|
9
|
-
disabled:
|
|
10
|
-
classNames:
|
|
11
|
-
isValid:
|
|
12
|
-
|
|
9
|
+
disabled: r,
|
|
10
|
+
classNames: l,
|
|
11
|
+
isValid: i,
|
|
12
|
+
description: t,
|
|
13
|
+
...n
|
|
13
14
|
}) => {
|
|
14
|
-
const
|
|
15
|
-
"aria-
|
|
16
|
-
"
|
|
15
|
+
const c = {
|
|
16
|
+
...i === !0 && !r && { "aria-valid": !0 },
|
|
17
|
+
...i === !1 && !r && { "aria-invalid": !0 },
|
|
18
|
+
disabled: r
|
|
17
19
|
};
|
|
18
|
-
return /* @__PURE__ */
|
|
19
|
-
|
|
20
|
+
return /* @__PURE__ */ e(x, { className: l?.classNameGroup, children: /* @__PURE__ */ e(
|
|
21
|
+
f,
|
|
20
22
|
{
|
|
21
|
-
...
|
|
22
|
-
orientation:
|
|
23
|
-
children: [
|
|
24
|
-
/* @__PURE__ */
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
23
|
+
...c,
|
|
24
|
+
orientation: m,
|
|
25
|
+
children: /* @__PURE__ */ s("div", { className: "flex flex-col gap-2", children: [
|
|
26
|
+
/* @__PURE__ */ s("div", { className: "flex gap-2", children: [
|
|
27
|
+
/* @__PURE__ */ e(
|
|
28
|
+
p,
|
|
29
|
+
{
|
|
30
|
+
...n,
|
|
31
|
+
...c,
|
|
32
|
+
id: o,
|
|
33
|
+
name: o,
|
|
34
|
+
disabled: r,
|
|
35
|
+
className: l?.classNameCheckbox
|
|
36
|
+
}
|
|
37
|
+
),
|
|
38
|
+
a && /* @__PURE__ */ e(
|
|
39
|
+
d,
|
|
40
|
+
{
|
|
41
|
+
htmlFor: o,
|
|
42
|
+
className: h(
|
|
43
|
+
"text-[14px]",
|
|
44
|
+
l?.classNameLabel,
|
|
45
|
+
r && "cursor-not-allowed"
|
|
46
|
+
),
|
|
47
|
+
children: a
|
|
48
|
+
}
|
|
49
|
+
)
|
|
50
|
+
] }),
|
|
51
|
+
t && /* @__PURE__ */ e(u, { ...c, children: t })
|
|
52
|
+
] })
|
|
48
53
|
}
|
|
49
54
|
) });
|
|
50
55
|
};
|
|
51
56
|
export {
|
|
52
|
-
|
|
57
|
+
C as BasicCheckbox
|
|
53
58
|
};
|
|
54
59
|
//# sourceMappingURL=components-basic-checkbox-basic-checkbox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-basic-checkbox-basic-checkbox.js","sources":["../src/components/basic-checkbox/basic-checkbox.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\";\nimport type * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Checkbox } from \"../ui/checkbox\";\nimport { Field, FieldGroup, FieldLabel } from \"../ui/field\";\n\ntype BaseProps = {\n name?: string;\n orientation?: \"vertical\" | \"horizontal\";\n label?: React.ReactNode;\n classNames?: {\n classNameCheckbox?: string;\n classNameLabel?: string;\n classNameGroup?: string;\n };\n isValid?: boolean;\n};\n\ntype CheckboxProps = BaseProps &\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>;\n\nexport const BasicCheckbox = ({\n name,\n orientation = \"horizontal\",\n label,\n disabled,\n classNames,\n isValid,\n ...rest\n}: CheckboxProps) => {\n const validationProps = {\n \"aria-
|
|
1
|
+
{"version":3,"file":"components-basic-checkbox-basic-checkbox.js","sources":["../src/components/basic-checkbox/basic-checkbox.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\";\nimport type * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Checkbox } from \"../ui/checkbox\";\nimport { Field, FieldDescription, FieldGroup, FieldLabel } from \"../ui/field\";\n\ntype BaseProps = {\n name?: string;\n orientation?: \"vertical\" | \"horizontal\";\n label?: React.ReactNode;\n description?: string;\n classNames?: {\n classNameCheckbox?: string;\n classNameLabel?: string;\n classNameGroup?: string;\n };\n isValid?: boolean;\n};\n\ntype CheckboxProps = BaseProps &\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>;\n\nexport const BasicCheckbox = ({\n name,\n orientation = \"horizontal\",\n label,\n disabled,\n classNames,\n isValid,\n description,\n ...rest\n}: CheckboxProps) => {\n const validationProps = {\n ...(isValid === true && !disabled && { \"aria-valid\": true }),\n ...(isValid === false && !disabled && { \"aria-invalid\": true }),\n disabled,\n };\n\n // TODO: добавить вывод ошибки\n return (\n <FieldGroup className={classNames?.classNameGroup}>\n <Field\n {...validationProps}\n orientation={orientation}\n >\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex gap-2\">\n <Checkbox\n {...rest}\n {...validationProps}\n id={name}\n name={name}\n disabled={disabled}\n className={classNames?.classNameCheckbox}\n />\n {label && (\n <FieldLabel\n htmlFor={name}\n className={cn(\n \"text-[14px]\",\n classNames?.classNameLabel,\n disabled && \"cursor-not-allowed\",\n )}\n >\n {label}\n </FieldLabel>\n )}\n </div>\n {description && (\n <FieldDescription {...validationProps}>{description}</FieldDescription>\n )}\n </div>\n </Field>\n </FieldGroup>\n );\n};\n\nexport type { CheckboxProps };\n"],"names":["BasicCheckbox","name","orientation","label","disabled","classNames","isValid","description","rest","validationProps","jsx","FieldGroup","Field","jsxs","Checkbox","FieldLabel","cn","FieldDescription"],"mappings":";;;;AAqBO,MAAMA,IAAgB,CAAC;AAAA,EAC5B,MAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,aAAAC;AAAA,EACA,GAAGC;AACL,MAAqB;AACnB,QAAMC,IAAkB;AAAA,IACtB,GAAIH,MAAY,MAAQ,CAACF,KAAY,EAAE,cAAc,GAAA;AAAA,IACrD,GAAIE,MAAY,MAAS,CAACF,KAAY,EAAE,gBAAgB,GAAA;AAAA,IACxD,UAAAA;AAAA,EAAA;AAIF,SACE,gBAAAM,EAACC,GAAA,EAAW,WAAWN,GAAY,gBACjC,UAAA,gBAAAK;AAAA,IAACE;AAAA,IAAA;AAAA,MACE,GAAGH;AAAA,MACJ,aAAAP;AAAA,MAEA,UAAA,gBAAAW,EAAC,OAAA,EAAI,WAAU,uBACb,UAAA;AAAA,QAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,cACb,UAAA;AAAA,UAAA,gBAAAH;AAAA,YAACI;AAAA,YAAA;AAAA,cACE,GAAGN;AAAA,cACH,GAAGC;AAAA,cACJ,IAAIR;AAAA,cACJ,MAAAA;AAAA,cACA,UAAAG;AAAA,cACA,WAAWC,GAAY;AAAA,YAAA;AAAA,UAAA;AAAA,UAExBF,KACC,gBAAAO;AAAA,YAACK;AAAA,YAAA;AAAA,cACC,SAASd;AAAA,cACT,WAAWe;AAAA,gBACT;AAAA,gBACAX,GAAY;AAAA,gBACZD,KAAY;AAAA,cAAA;AAAA,cAGb,UAAAD;AAAA,YAAA;AAAA,UAAA;AAAA,QACH,GAEJ;AAAA,QACCI,KACC,gBAAAG,EAACO,GAAA,EAAkB,GAAGR,GAAkB,UAAAF,EAAA,CAAY;AAAA,MAAA,EAAA,CAExD;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime");require("./approval-log.view-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime");require("./approval-log.view-DICzq_XG.cjs");const A=require("./lib-utils.cjs");require("class-variance-authority");require("./components-ui-badge-badge.styles.cjs");const h=require("./components-ui-button-button.cjs");require("./components-ui-button-button.styles.cjs");require("./components-ui-card-card.cjs");const g=require("./components-ui-checkbox-checkbox.cjs");require("brd-phosphor-strokes-icons/icons/CaretDown");const B=require("./hooks-usePopupControls.cjs");require("./calendar-BClkfQSD.cjs");const q=require("./components-ui-icon-icon.cjs");require("brd-phosphor-strokes-icons/icons");require("./components-ui-combobox-combobox.cjs");require("./components-ui-dialog-dialog.cjs");const o=require("react"),j=require("./components-ui-label-label.cjs");require("./components-ui-separator-separator.cjs");require("./components-ui-field-field.styles.cjs");require("./components-ui-input-input.styles.cjs");require("./components-ui-textarea-textarea.cjs");require("./components-ui-input-group-input-group.styles.cjs");require("./components-ui-navigation-item-navigation-item.styles.cjs");require("./components-ui-navigation-menu-navigation-menu.styles.cjs");require("./components-ui-pagination-pagination.cjs");require("./components-ui-progress-progress.cjs");require("./components-ui-radio-group-radio-group.cjs");require("./components-ui-switch-switch.cjs");require("./components-ui-toggle-toggle.styles.cjs");require("./components-ui-toggle-group-toggle-group.cjs");require("./components-ui-table-table.cjs");require("./components-ui-tabs-tabs.cjs");require("./components-ui-tooltip-tooltip.cjs");const d=require("./components-ui-typography-typography.cjs");require("./components-ui-typography-typography.styles.cjs");require("brd-phosphor-strokes-icons/icons/CaretLeft");require("brd-phosphor-strokes-icons/icons/CaretRight");require("./components-app-pagination-app-pagination.styles.cjs");require("brd-phosphor-strokes-icons/icons/CaretUpDown");require("./components-app-sidebar-app-sidebar.styles.cjs");require("./components-data-table-data-table.styles.cjs");require("./components-ui-dropdown-menu-dropdown-menu.styles.cjs");const L=require("./components-input-field-input-field.cjs");require("brd-phosphor-strokes-icons/icons/Eye");require("brd-phosphor-strokes-icons/icons/EyeSlash");require("./components-select-field-select-field.cjs");require("./lodash-kqhtUJfz.cjs");require("./chart-9H_9wEfR.cjs");require("brd-phosphor-strokes-icons/icons/CheckCircle");require("brd-phosphor-strokes-icons/icons/Info");require("brd-phosphor-strokes-icons/icons/SpinnerGap");require("brd-phosphor-strokes-icons/icons/Warning");require("brd-phosphor-strokes-icons/icons/X");require("brd-phosphor-strokes-icons/icons/XCircle");const k=require("./index-DGxwh2Ms.cjs");require("./index-fTTv8YY8.cjs");require("brd-phosphor-strokes-icons/icons/Plus");require("brd-phosphor-strokes-icons/icons/CaretUp");require("brd-phosphor-strokes-icons/icons/EnvelopeSimple");require("brd-phosphor-strokes-icons/icons/MaxLogo");require("brd-phosphor-strokes-icons/icons/Phone");require("brd-phosphor-strokes-icons/icons/TelegramLogo");require("brd-phosphor-strokes-icons/icons/WhatsAppLogoFilled");require("./components-input-phone-input-phone.cjs");require("./components-card-info-card-info.styles.cjs");require("./components-stepper-stepper.styles.cjs");const R=50,V=({data:s,errTexts:c,label:v="Нужно проверить для расчета",dataEmpty:_="Нет данных",btnAddText:C="Добавить свой пункт",onChange:u})=>{const p=o.useRef(null),{isOpened:N,openPopup:w}=B.usePopupControls(),[a,x]=o.useState(""),b=o.useMemo(()=>s.flatMap(r=>r.items.map(t=>t.value)),[s]),D=o.useMemo(()=>s.flatMap(r=>r.items.filter(t=>t.checked).map(t=>t.value)),[s]).length===b.length&&b.length>0,y=o.useCallback(()=>{setTimeout(()=>{p.current&&p.current.scrollTo({top:p.current.scrollHeight,behavior:"smooth"})},R)},[]),O=r=>{const t=s.map(n=>({...n,items:n.items.map(i=>({...i,checked:r}))}));u(t)},F=o.useCallback((r,t)=>{const n=s.map(i=>i.id!==r?i:{...i,items:i.items.map(l=>l.value===t?{...l,checked:!l.checked}:l)});u(n)},[s,u]),M=o.useCallback((r,t)=>{const n=s.map(i=>i.id!==r?i:{...i,items:i.items.filter(l=>l.value!==t)});u(n)},[s,u]),f=o.useCallback(()=>{if(a.trim().length===0){k.toast.error(c?.empty?.title,{description:c?.empty?.description});return}if(s[s.length-1].items.some(l=>l.value===a.trim())){k.toast.error(c?.add?.title,{description:c?.add?.description});return}const n={value:a.trim(),label:a.trim(),checked:!1},i=s.map((l,m)=>m===s.length-1?{...l,items:[...l.items,n]}:l);u(i),x(""),y()},[a,s,u,y,c?.empty?.title,c?.empty?.description,c?.add?.title,c?.add?.description]),S=o.useCallback(r=>{const t=r.target.value;x(t)},[]);return e.jsxs("div",{className:"border-delicate-border flex h-full max-w-200 flex-col rounded-xl border",children:[e.jsx("div",{className:"bg-primary-bg rounded-t-xl px-8 py-6",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(g.Checkbox,{id:"all",checked:D,onCheckedChange:O}),e.jsx(j.Label,{htmlFor:"all",children:e.jsx(d.Typography,{variant:"body-lg-semibold",className:"text-primary-text",children:v})})]})}),e.jsx("div",{ref:p,className:"bg-secondary-bg flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto",children:s.map(({id:r,name:t,items:n})=>e.jsxs(e.Fragment,{children:[e.jsx("div",{className:`bg-tertiary-bg border-delicate-border border-t border-b px-8
|
|
2
2
|
py-2`,children:e.jsx(d.Typography,{variant:"body-sm-medium",className:"text-primary-text",children:t})}),n.length>0?n.map(({value:i,label:l,checked:m},I)=>{const T=I===n.length-1;return e.jsx("div",{className:A.cn(`${T&&"mb-2"}`),children:e.jsxs("div",{className:`bg-primary-bg hover:bg-primary-hover-bg flex
|
|
3
3
|
justify-between px-8 py-4`,children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(g.Checkbox,{id:`checkbox-${i}`,checked:m,onCheckedChange:()=>F(r,i)}),e.jsx(j.Label,{htmlFor:`checkbox-${i}`,children:e.jsx(d.Typography,{variant:"body-md-regular",className:"text-primary-text",children:l})})]}),e.jsx(h.Button,{variant:"circleGhost",onClick:()=>M(r,i),children:e.jsx(q.Icon,{type:"x",className:"text-secondary-text cursor-pointer"})})]})},i)}):null,n.length===0&&e.jsx(d.Typography,{className:"px-8 py-4 text-center",children:_})]},r))}),N?e.jsx(L.InputField,{value:a,onChange:S,placeholder:"Написать свой пункт",classes:{fieldset:"flex-none! overflow-hidden"},onKeyDown:r=>{r.key==="Enter"&&(r.preventDefault(),f())},date:[{id:0,position:"inline-end",component:e.jsx(h.Button,{variant:"circleGhost",onClick:f,children:e.jsx(q.Icon,{type:"x-circle",className:"text-secondary-text rotate-45"})})}]}):e.jsxs(h.Button,{variant:"secondary",className:"border-delicate-border w-full overflow-hidden border-t",onClick:w,children:[e.jsx(d.Typography,{children:C}),e.jsx(q.Icon,{type:"plus",size:"small",className:"text-primary-text"})]})]})};exports.CheckboxGroup=V;
|
|
4
4
|
//# sourceMappingURL=components-checkbox-group-checkbox-group.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-checkbox-group-checkbox-group.cjs","sources":["../src/components/checkbox-group/checkbox-group.tsx"],"sourcesContent":["import {\n Button,\n Checkbox,\n cn,\n Icon,\n InputField,\n Label,\n sonner,\n Typography,\n usePopupControls,\n} from \"@/index\";\nimport { useCallback, useMemo, useRef, useState, type ChangeEvent } from \"react\";\nimport { Fragment } from \"react/jsx-runtime\";\n\ntype CheckboxGroupOptionItem = {\n value: string;\n label: string;\n checked: boolean;\n};\n\ntype CheckboxGroupOption = {\n id: number;\n name: string;\n items: CheckboxGroupOptionItem[];\n};\n\ntype Props = {\n data: CheckboxGroupOption[];\n onChange: (values: CheckboxGroupOption[]) => void;\n errTexts?: {\n add?: {\n title?: string;\n description?: string;\n };\n empty?: {\n title?: string;\n description?: string;\n };\n };\n label?: string;\n dataEmpty?: string;\n btnAddText?: string;\n};\n\nconst DEFAULT_MS_SCROLL_TO_BOTTOM = 50;\n\nexport const CheckboxGroup = ({\n data,\n errTexts,\n label = \"Нужно проверить для расчета\",\n dataEmpty = \"Нет данных\",\n btnAddText = \"Добавить свой пункт\",\n onChange,\n}: Props) => {\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n\n const { isOpened, openPopup: openAdd } = usePopupControls();\n const [value, setValue] = useState(\"\");\n\n const allValues = useMemo(() => {\n return data.flatMap((values) => values.items.map((item) => item.value));\n }, [data]);\n\n const selectedValues = useMemo(() => {\n return data.flatMap((values) =>\n values.items.filter((item) => item.checked).map((item) => item.value),\n );\n }, [data]);\n\n const isAllSelected =\n selectedValues.length === allValues.length && allValues.length > 0;\n\n const scrollToBottom = useCallback(() => {\n setTimeout(() => {\n if (scrollContainerRef.current) {\n scrollContainerRef.current.scrollTo({\n top: scrollContainerRef.current.scrollHeight,\n behavior: \"smooth\",\n });\n }\n }, DEFAULT_MS_SCROLL_TO_BOTTOM);\n }, []);\n\n const handleSelectAll = (checked: boolean) => {\n const newData = data.map((values) => ({\n ...values,\n items: values.items.map((item) => ({\n ...item,\n checked,\n })),\n }));\n onChange(newData);\n };\n\n const handleCheckboxChange = useCallback(\n (categoryId: number, itemValue: string) => {\n const newData = data.map((category) => {\n if (category.id !== categoryId) return category;\n return {\n ...category,\n items: category.items.map((item) =>\n item.value === itemValue ? { ...item, checked: !item.checked } : item,\n ),\n };\n });\n onChange(newData);\n },\n [data, onChange],\n );\n\n const handleOptionDelete = useCallback(\n (categoryId: number, itemValue: string) => {\n const newData = data.map((category) => {\n if (category.id !== categoryId) return category;\n return {\n ...category,\n items: category.items.filter((item) => item.value !== itemValue),\n };\n });\n onChange(newData);\n },\n [data, onChange],\n );\n\n const handleAddOption = useCallback(() => {\n if (value.trim().length === 0) {\n sonner.error(errTexts?.empty?.title, {\n description: errTexts?.empty?.description,\n });\n return;\n }\n\n const lastCategory = data[data.length - 1];\n\n const isExist = lastCategory.items.some((item) => item.value === value.trim());\n\n if (isExist) {\n sonner.error(errTexts?.add?.title, {\n description: errTexts?.add?.description,\n });\n return;\n }\n\n const newItem: CheckboxGroupOptionItem = {\n value: value.trim(),\n label: value.trim(),\n checked: false,\n };\n\n const newData = data.map((values, index) => {\n if (index === data.length - 1) {\n return {\n ...values,\n items: [...values.items, newItem],\n };\n }\n return values;\n });\n\n onChange(newData);\n setValue(\"\");\n scrollToBottom();\n }, [\n value,\n data,\n onChange,\n scrollToBottom,\n errTexts?.empty?.title,\n errTexts?.empty?.description,\n errTexts?.add?.title,\n errTexts?.add?.description,\n ]);\n\n const handleChangeValue = useCallback((e: ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n setValue(value);\n }, []);\n\n return (\n <div\n className=\"border-delicate-border flex h-full max-w-200 flex-col rounded-xl border\"\n >\n <div className=\"bg-primary-bg rounded-t-xl px-8 py-6\">\n <div className=\"flex items-center gap-4\">\n <Checkbox\n id=\"all\"\n checked={isAllSelected}\n onCheckedChange={handleSelectAll}\n />\n <Label htmlFor=\"all\">\n <Typography\n variant=\"body-lg-semibold\"\n className=\"text-primary-text\"\n >\n {label}\n </Typography>\n </Label>\n </div>\n </div>\n\n <div\n ref={scrollContainerRef}\n className=\"bg-secondary-bg flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto\"\n >\n {data.map(({ id, name, items }) => {\n return (\n <Fragment key={id}>\n <div\n className=\"bg-tertiary-bg border-delicate-border border-t border-b px-8\n py-2\"\n >\n <Typography\n variant=\"body-sm-medium\"\n className=\"text-primary-text\"\n >\n {name}\n </Typography>\n </div>\n\n {items.length > 0\n ? items.map(({ value, label, checked }, index) => {\n const lastItem = index === items.length - 1;\n\n return (\n <div\n key={value}\n className={cn(`${lastItem && \"mb-2\"}`)}\n >\n <div\n className=\"bg-primary-bg hover:bg-primary-hover-bg flex\n justify-between px-8 py-4\"\n >\n <div className=\"flex items-center gap-4\">\n <Checkbox\n id={`checkbox-${value}`}\n checked={checked}\n onCheckedChange={() => handleCheckboxChange(id, value)}\n />\n <Label htmlFor={`checkbox-${value}`}>\n <Typography\n variant=\"body-md-regular\"\n className=\"text-primary-text\"\n >\n {label}\n </Typography>\n </Label>\n </div>\n\n <Button\n variant=\"circleGhost\"\n onClick={() => handleOptionDelete(id, value)}\n >\n <Icon\n type=\"x\"\n className=\"text-secondary-text cursor-pointer\"\n />\n </Button>\n </div>\n </div>\n );\n })\n : null}\n {items.length === 0 && (\n <Typography className=\"px-8 py-4 text-center\">{dataEmpty}</Typography>\n )}\n </Fragment>\n );\n })}\n </div>\n\n {isOpened ? (\n <InputField\n value={value}\n onChange={handleChangeValue}\n placeholder=\"Написать свой пункт\"\n classes={{\n fieldset: \"flex-none! overflow-hidden\",\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleAddOption();\n }\n }}\n date={[\n {\n id: 0,\n position: \"inline-end\",\n component: (\n <Button\n variant=\"circleGhost\"\n onClick={handleAddOption}\n >\n <Icon\n type=\"x-circle\"\n className=\"text-secondary-text rotate-45\"\n />\n </Button>\n ),\n },\n ]}\n />\n ) : (\n <Button\n variant=\"secondary\"\n className=\"border-delicate-border w-full overflow-hidden border-t\"\n onClick={openAdd}\n >\n <Typography>{btnAddText}</Typography>\n <Icon\n type=\"plus\"\n size=\"small\"\n className=\"text-primary-text\"\n />\n </Button>\n )}\n </div>\n );\n};\n\nexport type { CheckboxGroupOption, CheckboxGroupOptionItem, Props as CheckboxGroupProps };\n"],"names":["DEFAULT_MS_SCROLL_TO_BOTTOM","CheckboxGroup","data","errTexts","label","dataEmpty","btnAddText","onChange","scrollContainerRef","useRef","isOpened","openAdd","usePopupControls","value","setValue","useState","allValues","useMemo","values","item","isAllSelected","scrollToBottom","useCallback","handleSelectAll","checked","newData","handleCheckboxChange","categoryId","itemValue","category","handleOptionDelete","handleAddOption","sonner","newItem","index","handleChangeValue","e","jsxs","jsx","Checkbox","Label","Typography","id","name","items","Fragment","lastItem","cn","Button","Icon","InputField"],"mappings":"+0GA4CA,MAAMA,EAA8B,GAEvBC,EAAgB,CAAC,CAC5B,KAAAC,EACA,SAAAC,EACA,MAAAC,EAAQ,8BACR,UAAAC,EAAY,aACZ,WAAAC,EAAa,sBACb,SAAAC,CACF,IAAa,CACX,MAAMC,EAAqBC,EAAAA,OAAuB,IAAI,EAEhD,CAAE,SAAAC,EAAU,UAAWC,CAAA,EAAYC,EAAAA,iBAAA,EACnC,CAACC,EAAOC,CAAQ,EAAIC,EAAAA,SAAS,EAAE,EAE/BC,EAAYC,EAAAA,QAAQ,IACjBf,EAAK,QAASgB,GAAWA,EAAO,MAAM,IAAKC,GAASA,EAAK,KAAK,CAAC,EACrE,CAACjB,CAAI,CAAC,EAQHkB,EANiBH,EAAAA,QAAQ,IACtBf,EAAK,QAASgB,GACnBA,EAAO,MAAM,OAAQC,GAASA,EAAK,OAAO,EAAE,IAAKA,GAASA,EAAK,KAAK,CAAA,EAErE,CAACjB,CAAI,CAAC,EAGQ,SAAWc,EAAU,QAAUA,EAAU,OAAS,EAE7DK,EAAiBC,EAAAA,YAAY,IAAM,CACvC,WAAW,IAAM,CACXd,EAAmB,SACrBA,EAAmB,QAAQ,SAAS,CAClC,IAAKA,EAAmB,QAAQ,aAChC,SAAU,QAAA,CACX,CAEL,EAAGR,CAA2B,CAChC,EAAG,CAAA,CAAE,EAECuB,EAAmBC,GAAqB,CAC5C,MAAMC,EAAUvB,EAAK,IAAKgB,IAAY,CACpC,GAAGA,EACH,MAAOA,EAAO,MAAM,IAAKC,IAAU,CACjC,GAAGA,EACH,QAAAK,CAAA,EACA,CAAA,EACF,EACFjB,EAASkB,CAAO,CAClB,EAEMC,EAAuBJ,EAAAA,YAC3B,CAACK,EAAoBC,IAAsB,CACzC,MAAMH,EAAUvB,EAAK,IAAK2B,GACpBA,EAAS,KAAOF,EAAmBE,EAChC,CACL,GAAGA,EACH,MAAOA,EAAS,MAAM,IAAKV,GACzBA,EAAK,QAAUS,EAAY,CAAE,GAAGT,EAAM,QAAS,CAACA,EAAK,SAAYA,CAAA,CACnE,CAEH,EACDZ,EAASkB,CAAO,CAClB,EACA,CAACvB,EAAMK,CAAQ,CAAA,EAGXuB,EAAqBR,EAAAA,YACzB,CAACK,EAAoBC,IAAsB,CACzC,MAAMH,EAAUvB,EAAK,IAAK2B,GACpBA,EAAS,KAAOF,EAAmBE,EAChC,CACL,GAAGA,EACH,MAAOA,EAAS,MAAM,OAAQV,GAASA,EAAK,QAAUS,CAAS,CAAA,CAElE,EACDrB,EAASkB,CAAO,CAClB,EACA,CAACvB,EAAMK,CAAQ,CAAA,EAGXwB,EAAkBT,EAAAA,YAAY,IAAM,CACxC,GAAIT,EAAM,OAAO,SAAW,EAAG,CAC7BmB,EAAAA,MAAO,MAAM7B,GAAU,OAAO,MAAO,CACnC,YAAaA,GAAU,OAAO,WAAA,CAC/B,EACD,MACF,CAMA,GAJqBD,EAAKA,EAAK,OAAS,CAAC,EAEZ,MAAM,KAAMiB,GAASA,EAAK,QAAUN,EAAM,MAAM,EAEhE,CACXmB,EAAAA,MAAO,MAAM7B,GAAU,KAAK,MAAO,CACjC,YAAaA,GAAU,KAAK,WAAA,CAC7B,EACD,MACF,CAEA,MAAM8B,EAAmC,CACvC,MAAOpB,EAAM,KAAA,EACb,MAAOA,EAAM,KAAA,EACb,QAAS,EAAA,EAGLY,EAAUvB,EAAK,IAAI,CAACgB,EAAQgB,IAC5BA,IAAUhC,EAAK,OAAS,EACnB,CACL,GAAGgB,EACH,MAAO,CAAC,GAAGA,EAAO,MAAOe,CAAO,CAAA,EAG7Bf,CACR,EAEDX,EAASkB,CAAO,EAChBX,EAAS,EAAE,EACXO,EAAA,CACF,EAAG,CACDR,EACAX,EACAK,EACAc,EACAlB,GAAU,OAAO,MACjBA,GAAU,OAAO,YACjBA,GAAU,KAAK,MACfA,GAAU,KAAK,WAAA,CAChB,EAEKgC,EAAoBb,cAAac,GAAqC,CAC1E,MAAMvB,EAAQuB,EAAE,OAAO,MACvBtB,EAASD,CAAK,CAChB,EAAG,CAAA,CAAE,EAEL,OACEwB,EAAAA,KAAC,MAAA,CACC,UAAU,0EAEV,SAAA,CAAAC,EAAAA,IAAC,OAAI,UAAU,uCACb,SAAAD,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAC,EAAAA,IAACC,EAAAA,SAAA,CACC,GAAG,MACH,QAASnB,EACT,gBAAiBG,CAAA,CAAA,EAEnBe,EAAAA,IAACE,EAAAA,MAAA,CAAM,QAAQ,MACb,SAAAF,EAAAA,IAACG,EAAAA,WAAA,CACC,QAAQ,mBACR,UAAU,oBAET,SAAArC,CAAA,CAAA,CACH,CACF,CAAA,CAAA,CACF,CAAA,CACF,EAEAkC,EAAAA,IAAC,MAAA,CACC,IAAK9B,EACL,UAAU,qEAET,WAAK,IAAI,CAAC,CAAE,GAAAkC,EAAI,KAAAC,EAAM,MAAAC,YAElBC,WAAA,CACC,SAAA,CAAAP,EAAAA,IAAC,MAAA,CACC,UAAU;AAAA,wBAGV,SAAAA,EAAAA,IAACG,EAAAA,WAAA,CACC,QAAQ,iBACR,UAAU,oBAET,SAAAE,CAAA,CAAA,CACH,CAAA,EAGDC,EAAM,OAAS,EACZA,EAAM,IAAI,CAAC,CAAE,MAAA/B,EAAO,MAAAT,EAAO,QAAAoB,CAAA,EAAWU,IAAU,CAC9C,MAAMY,EAAWZ,IAAUU,EAAM,OAAS,EAE1C,OACEN,EAAAA,IAAC,MAAA,CAEC,UAAWS,EAAAA,GAAG,GAAGD,GAAY,MAAM,EAAE,EAErC,SAAAT,EAAAA,KAAC,MAAA,CACC,UAAU;AAAA,uDAGV,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAC,EAAAA,IAACC,EAAAA,SAAA,CACC,GAAI,YAAY1B,CAAK,GACrB,QAAAW,EACA,gBAAiB,IAAME,EAAqBgB,EAAI7B,CAAK,CAAA,CAAA,EAEvDyB,MAACE,EAAAA,MAAA,CAAM,QAAS,YAAY3B,CAAK,GAC/B,SAAAyB,EAAAA,IAACG,EAAAA,WAAA,CACC,QAAQ,kBACR,UAAU,oBAET,SAAArC,CAAA,CAAA,CACH,CACF,CAAA,EACF,EAEAkC,EAAAA,IAACU,EAAAA,OAAA,CACC,QAAQ,cACR,QAAS,IAAMlB,EAAmBY,EAAI7B,CAAK,EAE3C,SAAAyB,EAAAA,IAACW,EAAAA,KAAA,CACC,KAAK,IACL,UAAU,oCAAA,CAAA,CACZ,CAAA,CACF,CAAA,CAAA,CACF,EAhCKpC,CAAA,CAmCX,CAAC,EACD,KACH+B,EAAM,SAAW,SACfH,EAAAA,WAAA,CAAW,UAAU,wBAAyB,SAAApC,CAAA,CAAU,CAAA,CAAA,EAzD9CqC,CA2Df,CAEH,CAAA,CAAA,EAGFhC,EACC4B,EAAAA,IAACY,EAAAA,WAAA,CACC,MAAArC,EACA,SAAUsB,EACV,YAAY,sBACZ,QAAS,CACP,SAAU,4BAAA,EAEZ,UAAYC,GAAM,CACZA,EAAE,MAAQ,UACZA,EAAE,eAAA,EACFL,EAAA,EAEJ,EACA,KAAM,CACJ,CACE,GAAI,EACJ,SAAU,aACV,UACEO,EAAAA,IAACU,EAAAA,OAAA,CACC,QAAQ,cACR,QAASjB,EAET,SAAAO,EAAAA,IAACW,EAAAA,KAAA,CACC,KAAK,WACL,UAAU,+BAAA,CAAA,CACZ,CAAA,CACF,CAEJ,CACF,CAAA,EAGFZ,EAAAA,KAACW,EAAAA,OAAA,CACC,QAAQ,YACR,UAAU,yDACV,QAASrC,EAET,SAAA,CAAA2B,EAAAA,IAACG,EAAAA,YAAY,SAAAnC,CAAA,CAAW,EACxBgC,EAAAA,IAACW,EAAAA,KAAA,CACC,KAAK,OACL,KAAK,QACL,UAAU,mBAAA,CAAA,CACZ,CAAA,CAAA,CACF,CAAA,CAAA,CAIR"}
|
|
1
|
+
{"version":3,"file":"components-checkbox-group-checkbox-group.cjs","sources":["../src/components/checkbox-group/checkbox-group.tsx"],"sourcesContent":["import {\n Button,\n Checkbox,\n cn,\n Icon,\n InputField,\n Label,\n sonner,\n Typography,\n usePopupControls,\n} from \"@/index\";\nimport { useCallback, useMemo, useRef, useState, type ChangeEvent } from \"react\";\nimport { Fragment } from \"react/jsx-runtime\";\n\ntype CheckboxGroupOptionItem = {\n value: string;\n label: string;\n checked: boolean;\n};\n\ntype CheckboxGroupOption = {\n id: number;\n name: string;\n items: CheckboxGroupOptionItem[];\n};\n\ntype Props = {\n data: CheckboxGroupOption[];\n onChange: (values: CheckboxGroupOption[]) => void;\n errTexts?: {\n add?: {\n title?: string;\n description?: string;\n };\n empty?: {\n title?: string;\n description?: string;\n };\n };\n label?: string;\n dataEmpty?: string;\n btnAddText?: string;\n};\n\nconst DEFAULT_MS_SCROLL_TO_BOTTOM = 50;\n\nexport const CheckboxGroup = ({\n data,\n errTexts,\n label = \"Нужно проверить для расчета\",\n dataEmpty = \"Нет данных\",\n btnAddText = \"Добавить свой пункт\",\n onChange,\n}: Props) => {\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n\n const { isOpened, openPopup: openAdd } = usePopupControls();\n const [value, setValue] = useState(\"\");\n\n const allValues = useMemo(() => {\n return data.flatMap((values) => values.items.map((item) => item.value));\n }, [data]);\n\n const selectedValues = useMemo(() => {\n return data.flatMap((values) =>\n values.items.filter((item) => item.checked).map((item) => item.value),\n );\n }, [data]);\n\n const isAllSelected =\n selectedValues.length === allValues.length && allValues.length > 0;\n\n const scrollToBottom = useCallback(() => {\n setTimeout(() => {\n if (scrollContainerRef.current) {\n scrollContainerRef.current.scrollTo({\n top: scrollContainerRef.current.scrollHeight,\n behavior: \"smooth\",\n });\n }\n }, DEFAULT_MS_SCROLL_TO_BOTTOM);\n }, []);\n\n const handleSelectAll = (checked: boolean) => {\n const newData = data.map((values) => ({\n ...values,\n items: values.items.map((item) => ({\n ...item,\n checked,\n })),\n }));\n onChange(newData);\n };\n\n const handleCheckboxChange = useCallback(\n (categoryId: number, itemValue: string) => {\n const newData = data.map((category) => {\n if (category.id !== categoryId) return category;\n return {\n ...category,\n items: category.items.map((item) =>\n item.value === itemValue ? { ...item, checked: !item.checked } : item,\n ),\n };\n });\n onChange(newData);\n },\n [data, onChange],\n );\n\n const handleOptionDelete = useCallback(\n (categoryId: number, itemValue: string) => {\n const newData = data.map((category) => {\n if (category.id !== categoryId) return category;\n return {\n ...category,\n items: category.items.filter((item) => item.value !== itemValue),\n };\n });\n onChange(newData);\n },\n [data, onChange],\n );\n\n const handleAddOption = useCallback(() => {\n if (value.trim().length === 0) {\n sonner.error(errTexts?.empty?.title, {\n description: errTexts?.empty?.description,\n });\n return;\n }\n\n const lastCategory = data[data.length - 1];\n\n const isExist = lastCategory.items.some((item) => item.value === value.trim());\n\n if (isExist) {\n sonner.error(errTexts?.add?.title, {\n description: errTexts?.add?.description,\n });\n return;\n }\n\n const newItem: CheckboxGroupOptionItem = {\n value: value.trim(),\n label: value.trim(),\n checked: false,\n };\n\n const newData = data.map((values, index) => {\n if (index === data.length - 1) {\n return {\n ...values,\n items: [...values.items, newItem],\n };\n }\n return values;\n });\n\n onChange(newData);\n setValue(\"\");\n scrollToBottom();\n }, [\n value,\n data,\n onChange,\n scrollToBottom,\n errTexts?.empty?.title,\n errTexts?.empty?.description,\n errTexts?.add?.title,\n errTexts?.add?.description,\n ]);\n\n const handleChangeValue = useCallback((e: ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n setValue(value);\n }, []);\n\n return (\n <div\n className=\"border-delicate-border flex h-full max-w-200 flex-col rounded-xl border\"\n >\n <div className=\"bg-primary-bg rounded-t-xl px-8 py-6\">\n <div className=\"flex items-center gap-4\">\n <Checkbox\n id=\"all\"\n checked={isAllSelected}\n onCheckedChange={handleSelectAll}\n />\n <Label htmlFor=\"all\">\n <Typography\n variant=\"body-lg-semibold\"\n className=\"text-primary-text\"\n >\n {label}\n </Typography>\n </Label>\n </div>\n </div>\n\n <div\n ref={scrollContainerRef}\n className=\"bg-secondary-bg flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto\"\n >\n {data.map(({ id, name, items }) => {\n return (\n <Fragment key={id}>\n <div\n className=\"bg-tertiary-bg border-delicate-border border-t border-b px-8\n py-2\"\n >\n <Typography\n variant=\"body-sm-medium\"\n className=\"text-primary-text\"\n >\n {name}\n </Typography>\n </div>\n\n {items.length > 0\n ? items.map(({ value, label, checked }, index) => {\n const lastItem = index === items.length - 1;\n\n return (\n <div\n key={value}\n className={cn(`${lastItem && \"mb-2\"}`)}\n >\n <div\n className=\"bg-primary-bg hover:bg-primary-hover-bg flex\n justify-between px-8 py-4\"\n >\n <div className=\"flex items-center gap-4\">\n <Checkbox\n id={`checkbox-${value}`}\n checked={checked}\n onCheckedChange={() => handleCheckboxChange(id, value)}\n />\n <Label htmlFor={`checkbox-${value}`}>\n <Typography\n variant=\"body-md-regular\"\n className=\"text-primary-text\"\n >\n {label}\n </Typography>\n </Label>\n </div>\n\n <Button\n variant=\"circleGhost\"\n onClick={() => handleOptionDelete(id, value)}\n >\n <Icon\n type=\"x\"\n className=\"text-secondary-text cursor-pointer\"\n />\n </Button>\n </div>\n </div>\n );\n })\n : null}\n {items.length === 0 && (\n <Typography className=\"px-8 py-4 text-center\">{dataEmpty}</Typography>\n )}\n </Fragment>\n );\n })}\n </div>\n\n {isOpened ? (\n <InputField\n value={value}\n onChange={handleChangeValue}\n placeholder=\"Написать свой пункт\"\n classes={{\n fieldset: \"flex-none! overflow-hidden\",\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleAddOption();\n }\n }}\n date={[\n {\n id: 0,\n position: \"inline-end\",\n component: (\n <Button\n variant=\"circleGhost\"\n onClick={handleAddOption}\n >\n <Icon\n type=\"x-circle\"\n className=\"text-secondary-text rotate-45\"\n />\n </Button>\n ),\n },\n ]}\n />\n ) : (\n <Button\n variant=\"secondary\"\n className=\"border-delicate-border w-full overflow-hidden border-t\"\n onClick={openAdd}\n >\n <Typography>{btnAddText}</Typography>\n <Icon\n type=\"plus\"\n size=\"small\"\n className=\"text-primary-text\"\n />\n </Button>\n )}\n </div>\n );\n};\n\nexport type { CheckboxGroupOption, CheckboxGroupOptionItem, Props as CheckboxGroupProps };\n"],"names":["DEFAULT_MS_SCROLL_TO_BOTTOM","CheckboxGroup","data","errTexts","label","dataEmpty","btnAddText","onChange","scrollContainerRef","useRef","isOpened","openAdd","usePopupControls","value","setValue","useState","allValues","useMemo","values","item","isAllSelected","scrollToBottom","useCallback","handleSelectAll","checked","newData","handleCheckboxChange","categoryId","itemValue","category","handleOptionDelete","handleAddOption","sonner","newItem","index","handleChangeValue","e","jsxs","jsx","Checkbox","Label","Typography","id","name","items","Fragment","lastItem","cn","Button","Icon","InputField"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsxs as s, jsx as r, Fragment as B } from "react/jsx-runtime";
|
|
2
|
-
import "./approval-log.view-
|
|
2
|
+
import "./approval-log.view-DiYnnYJc.js";
|
|
3
3
|
import { cn as G } from "./lib-utils.js";
|
|
4
4
|
import "class-variance-authority";
|
|
5
5
|
import "./components-ui-badge-badge.styles.js";
|
|
@@ -64,7 +64,8 @@ import "brd-phosphor-strokes-icons/icons/TelegramLogo";
|
|
|
64
64
|
import "brd-phosphor-strokes-icons/icons/WhatsAppLogoFilled";
|
|
65
65
|
import "./components-input-phone-input-phone.js";
|
|
66
66
|
import "./components-card-info-card-info.styles.js";
|
|
67
|
-
|
|
67
|
+
import "./components-stepper-stepper.styles.js";
|
|
68
|
+
const H = 50, it = ({
|
|
68
69
|
data: i,
|
|
69
70
|
errTexts: n,
|
|
70
71
|
label: D = "Нужно проверить для расчета",
|
|
@@ -301,6 +302,6 @@ const H = 50, ot = ({
|
|
|
301
302
|
);
|
|
302
303
|
};
|
|
303
304
|
export {
|
|
304
|
-
|
|
305
|
+
it as CheckboxGroup
|
|
305
306
|
};
|
|
306
307
|
//# sourceMappingURL=components-checkbox-group-checkbox-group.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-checkbox-group-checkbox-group.js","sources":["../src/components/checkbox-group/checkbox-group.tsx"],"sourcesContent":["import {\n Button,\n Checkbox,\n cn,\n Icon,\n InputField,\n Label,\n sonner,\n Typography,\n usePopupControls,\n} from \"@/index\";\nimport { useCallback, useMemo, useRef, useState, type ChangeEvent } from \"react\";\nimport { Fragment } from \"react/jsx-runtime\";\n\ntype CheckboxGroupOptionItem = {\n value: string;\n label: string;\n checked: boolean;\n};\n\ntype CheckboxGroupOption = {\n id: number;\n name: string;\n items: CheckboxGroupOptionItem[];\n};\n\ntype Props = {\n data: CheckboxGroupOption[];\n onChange: (values: CheckboxGroupOption[]) => void;\n errTexts?: {\n add?: {\n title?: string;\n description?: string;\n };\n empty?: {\n title?: string;\n description?: string;\n };\n };\n label?: string;\n dataEmpty?: string;\n btnAddText?: string;\n};\n\nconst DEFAULT_MS_SCROLL_TO_BOTTOM = 50;\n\nexport const CheckboxGroup = ({\n data,\n errTexts,\n label = \"Нужно проверить для расчета\",\n dataEmpty = \"Нет данных\",\n btnAddText = \"Добавить свой пункт\",\n onChange,\n}: Props) => {\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n\n const { isOpened, openPopup: openAdd } = usePopupControls();\n const [value, setValue] = useState(\"\");\n\n const allValues = useMemo(() => {\n return data.flatMap((values) => values.items.map((item) => item.value));\n }, [data]);\n\n const selectedValues = useMemo(() => {\n return data.flatMap((values) =>\n values.items.filter((item) => item.checked).map((item) => item.value),\n );\n }, [data]);\n\n const isAllSelected =\n selectedValues.length === allValues.length && allValues.length > 0;\n\n const scrollToBottom = useCallback(() => {\n setTimeout(() => {\n if (scrollContainerRef.current) {\n scrollContainerRef.current.scrollTo({\n top: scrollContainerRef.current.scrollHeight,\n behavior: \"smooth\",\n });\n }\n }, DEFAULT_MS_SCROLL_TO_BOTTOM);\n }, []);\n\n const handleSelectAll = (checked: boolean) => {\n const newData = data.map((values) => ({\n ...values,\n items: values.items.map((item) => ({\n ...item,\n checked,\n })),\n }));\n onChange(newData);\n };\n\n const handleCheckboxChange = useCallback(\n (categoryId: number, itemValue: string) => {\n const newData = data.map((category) => {\n if (category.id !== categoryId) return category;\n return {\n ...category,\n items: category.items.map((item) =>\n item.value === itemValue ? { ...item, checked: !item.checked } : item,\n ),\n };\n });\n onChange(newData);\n },\n [data, onChange],\n );\n\n const handleOptionDelete = useCallback(\n (categoryId: number, itemValue: string) => {\n const newData = data.map((category) => {\n if (category.id !== categoryId) return category;\n return {\n ...category,\n items: category.items.filter((item) => item.value !== itemValue),\n };\n });\n onChange(newData);\n },\n [data, onChange],\n );\n\n const handleAddOption = useCallback(() => {\n if (value.trim().length === 0) {\n sonner.error(errTexts?.empty?.title, {\n description: errTexts?.empty?.description,\n });\n return;\n }\n\n const lastCategory = data[data.length - 1];\n\n const isExist = lastCategory.items.some((item) => item.value === value.trim());\n\n if (isExist) {\n sonner.error(errTexts?.add?.title, {\n description: errTexts?.add?.description,\n });\n return;\n }\n\n const newItem: CheckboxGroupOptionItem = {\n value: value.trim(),\n label: value.trim(),\n checked: false,\n };\n\n const newData = data.map((values, index) => {\n if (index === data.length - 1) {\n return {\n ...values,\n items: [...values.items, newItem],\n };\n }\n return values;\n });\n\n onChange(newData);\n setValue(\"\");\n scrollToBottom();\n }, [\n value,\n data,\n onChange,\n scrollToBottom,\n errTexts?.empty?.title,\n errTexts?.empty?.description,\n errTexts?.add?.title,\n errTexts?.add?.description,\n ]);\n\n const handleChangeValue = useCallback((e: ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n setValue(value);\n }, []);\n\n return (\n <div\n className=\"border-delicate-border flex h-full max-w-200 flex-col rounded-xl border\"\n >\n <div className=\"bg-primary-bg rounded-t-xl px-8 py-6\">\n <div className=\"flex items-center gap-4\">\n <Checkbox\n id=\"all\"\n checked={isAllSelected}\n onCheckedChange={handleSelectAll}\n />\n <Label htmlFor=\"all\">\n <Typography\n variant=\"body-lg-semibold\"\n className=\"text-primary-text\"\n >\n {label}\n </Typography>\n </Label>\n </div>\n </div>\n\n <div\n ref={scrollContainerRef}\n className=\"bg-secondary-bg flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto\"\n >\n {data.map(({ id, name, items }) => {\n return (\n <Fragment key={id}>\n <div\n className=\"bg-tertiary-bg border-delicate-border border-t border-b px-8\n py-2\"\n >\n <Typography\n variant=\"body-sm-medium\"\n className=\"text-primary-text\"\n >\n {name}\n </Typography>\n </div>\n\n {items.length > 0\n ? items.map(({ value, label, checked }, index) => {\n const lastItem = index === items.length - 1;\n\n return (\n <div\n key={value}\n className={cn(`${lastItem && \"mb-2\"}`)}\n >\n <div\n className=\"bg-primary-bg hover:bg-primary-hover-bg flex\n justify-between px-8 py-4\"\n >\n <div className=\"flex items-center gap-4\">\n <Checkbox\n id={`checkbox-${value}`}\n checked={checked}\n onCheckedChange={() => handleCheckboxChange(id, value)}\n />\n <Label htmlFor={`checkbox-${value}`}>\n <Typography\n variant=\"body-md-regular\"\n className=\"text-primary-text\"\n >\n {label}\n </Typography>\n </Label>\n </div>\n\n <Button\n variant=\"circleGhost\"\n onClick={() => handleOptionDelete(id, value)}\n >\n <Icon\n type=\"x\"\n className=\"text-secondary-text cursor-pointer\"\n />\n </Button>\n </div>\n </div>\n );\n })\n : null}\n {items.length === 0 && (\n <Typography className=\"px-8 py-4 text-center\">{dataEmpty}</Typography>\n )}\n </Fragment>\n );\n })}\n </div>\n\n {isOpened ? (\n <InputField\n value={value}\n onChange={handleChangeValue}\n placeholder=\"Написать свой пункт\"\n classes={{\n fieldset: \"flex-none! overflow-hidden\",\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleAddOption();\n }\n }}\n date={[\n {\n id: 0,\n position: \"inline-end\",\n component: (\n <Button\n variant=\"circleGhost\"\n onClick={handleAddOption}\n >\n <Icon\n type=\"x-circle\"\n className=\"text-secondary-text rotate-45\"\n />\n </Button>\n ),\n },\n ]}\n />\n ) : (\n <Button\n variant=\"secondary\"\n className=\"border-delicate-border w-full overflow-hidden border-t\"\n onClick={openAdd}\n >\n <Typography>{btnAddText}</Typography>\n <Icon\n type=\"plus\"\n size=\"small\"\n className=\"text-primary-text\"\n />\n </Button>\n )}\n </div>\n );\n};\n\nexport type { CheckboxGroupOption, CheckboxGroupOptionItem, Props as CheckboxGroupProps };\n"],"names":["DEFAULT_MS_SCROLL_TO_BOTTOM","CheckboxGroup","data","errTexts","label","dataEmpty","btnAddText","onChange","scrollContainerRef","useRef","isOpened","openAdd","usePopupControls","value","setValue","useState","allValues","useMemo","values","item","isAllSelected","scrollToBottom","useCallback","handleSelectAll","checked","newData","handleCheckboxChange","categoryId","itemValue","category","handleOptionDelete","handleAddOption","sonner","newItem","index","handleChangeValue","jsxs","jsx","Checkbox","Label","Typography","id","name","items","Fragment","lastItem","cn","Button","Icon","InputField"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components-checkbox-group-checkbox-group.js","sources":["../src/components/checkbox-group/checkbox-group.tsx"],"sourcesContent":["import {\n Button,\n Checkbox,\n cn,\n Icon,\n InputField,\n Label,\n sonner,\n Typography,\n usePopupControls,\n} from \"@/index\";\nimport { useCallback, useMemo, useRef, useState, type ChangeEvent } from \"react\";\nimport { Fragment } from \"react/jsx-runtime\";\n\ntype CheckboxGroupOptionItem = {\n value: string;\n label: string;\n checked: boolean;\n};\n\ntype CheckboxGroupOption = {\n id: number;\n name: string;\n items: CheckboxGroupOptionItem[];\n};\n\ntype Props = {\n data: CheckboxGroupOption[];\n onChange: (values: CheckboxGroupOption[]) => void;\n errTexts?: {\n add?: {\n title?: string;\n description?: string;\n };\n empty?: {\n title?: string;\n description?: string;\n };\n };\n label?: string;\n dataEmpty?: string;\n btnAddText?: string;\n};\n\nconst DEFAULT_MS_SCROLL_TO_BOTTOM = 50;\n\nexport const CheckboxGroup = ({\n data,\n errTexts,\n label = \"Нужно проверить для расчета\",\n dataEmpty = \"Нет данных\",\n btnAddText = \"Добавить свой пункт\",\n onChange,\n}: Props) => {\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n\n const { isOpened, openPopup: openAdd } = usePopupControls();\n const [value, setValue] = useState(\"\");\n\n const allValues = useMemo(() => {\n return data.flatMap((values) => values.items.map((item) => item.value));\n }, [data]);\n\n const selectedValues = useMemo(() => {\n return data.flatMap((values) =>\n values.items.filter((item) => item.checked).map((item) => item.value),\n );\n }, [data]);\n\n const isAllSelected =\n selectedValues.length === allValues.length && allValues.length > 0;\n\n const scrollToBottom = useCallback(() => {\n setTimeout(() => {\n if (scrollContainerRef.current) {\n scrollContainerRef.current.scrollTo({\n top: scrollContainerRef.current.scrollHeight,\n behavior: \"smooth\",\n });\n }\n }, DEFAULT_MS_SCROLL_TO_BOTTOM);\n }, []);\n\n const handleSelectAll = (checked: boolean) => {\n const newData = data.map((values) => ({\n ...values,\n items: values.items.map((item) => ({\n ...item,\n checked,\n })),\n }));\n onChange(newData);\n };\n\n const handleCheckboxChange = useCallback(\n (categoryId: number, itemValue: string) => {\n const newData = data.map((category) => {\n if (category.id !== categoryId) return category;\n return {\n ...category,\n items: category.items.map((item) =>\n item.value === itemValue ? { ...item, checked: !item.checked } : item,\n ),\n };\n });\n onChange(newData);\n },\n [data, onChange],\n );\n\n const handleOptionDelete = useCallback(\n (categoryId: number, itemValue: string) => {\n const newData = data.map((category) => {\n if (category.id !== categoryId) return category;\n return {\n ...category,\n items: category.items.filter((item) => item.value !== itemValue),\n };\n });\n onChange(newData);\n },\n [data, onChange],\n );\n\n const handleAddOption = useCallback(() => {\n if (value.trim().length === 0) {\n sonner.error(errTexts?.empty?.title, {\n description: errTexts?.empty?.description,\n });\n return;\n }\n\n const lastCategory = data[data.length - 1];\n\n const isExist = lastCategory.items.some((item) => item.value === value.trim());\n\n if (isExist) {\n sonner.error(errTexts?.add?.title, {\n description: errTexts?.add?.description,\n });\n return;\n }\n\n const newItem: CheckboxGroupOptionItem = {\n value: value.trim(),\n label: value.trim(),\n checked: false,\n };\n\n const newData = data.map((values, index) => {\n if (index === data.length - 1) {\n return {\n ...values,\n items: [...values.items, newItem],\n };\n }\n return values;\n });\n\n onChange(newData);\n setValue(\"\");\n scrollToBottom();\n }, [\n value,\n data,\n onChange,\n scrollToBottom,\n errTexts?.empty?.title,\n errTexts?.empty?.description,\n errTexts?.add?.title,\n errTexts?.add?.description,\n ]);\n\n const handleChangeValue = useCallback((e: ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n setValue(value);\n }, []);\n\n return (\n <div\n className=\"border-delicate-border flex h-full max-w-200 flex-col rounded-xl border\"\n >\n <div className=\"bg-primary-bg rounded-t-xl px-8 py-6\">\n <div className=\"flex items-center gap-4\">\n <Checkbox\n id=\"all\"\n checked={isAllSelected}\n onCheckedChange={handleSelectAll}\n />\n <Label htmlFor=\"all\">\n <Typography\n variant=\"body-lg-semibold\"\n className=\"text-primary-text\"\n >\n {label}\n </Typography>\n </Label>\n </div>\n </div>\n\n <div\n ref={scrollContainerRef}\n className=\"bg-secondary-bg flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto\"\n >\n {data.map(({ id, name, items }) => {\n return (\n <Fragment key={id}>\n <div\n className=\"bg-tertiary-bg border-delicate-border border-t border-b px-8\n py-2\"\n >\n <Typography\n variant=\"body-sm-medium\"\n className=\"text-primary-text\"\n >\n {name}\n </Typography>\n </div>\n\n {items.length > 0\n ? items.map(({ value, label, checked }, index) => {\n const lastItem = index === items.length - 1;\n\n return (\n <div\n key={value}\n className={cn(`${lastItem && \"mb-2\"}`)}\n >\n <div\n className=\"bg-primary-bg hover:bg-primary-hover-bg flex\n justify-between px-8 py-4\"\n >\n <div className=\"flex items-center gap-4\">\n <Checkbox\n id={`checkbox-${value}`}\n checked={checked}\n onCheckedChange={() => handleCheckboxChange(id, value)}\n />\n <Label htmlFor={`checkbox-${value}`}>\n <Typography\n variant=\"body-md-regular\"\n className=\"text-primary-text\"\n >\n {label}\n </Typography>\n </Label>\n </div>\n\n <Button\n variant=\"circleGhost\"\n onClick={() => handleOptionDelete(id, value)}\n >\n <Icon\n type=\"x\"\n className=\"text-secondary-text cursor-pointer\"\n />\n </Button>\n </div>\n </div>\n );\n })\n : null}\n {items.length === 0 && (\n <Typography className=\"px-8 py-4 text-center\">{dataEmpty}</Typography>\n )}\n </Fragment>\n );\n })}\n </div>\n\n {isOpened ? (\n <InputField\n value={value}\n onChange={handleChangeValue}\n placeholder=\"Написать свой пункт\"\n classes={{\n fieldset: \"flex-none! overflow-hidden\",\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleAddOption();\n }\n }}\n date={[\n {\n id: 0,\n position: \"inline-end\",\n component: (\n <Button\n variant=\"circleGhost\"\n onClick={handleAddOption}\n >\n <Icon\n type=\"x-circle\"\n className=\"text-secondary-text rotate-45\"\n />\n </Button>\n ),\n },\n ]}\n />\n ) : (\n <Button\n variant=\"secondary\"\n className=\"border-delicate-border w-full overflow-hidden border-t\"\n onClick={openAdd}\n >\n <Typography>{btnAddText}</Typography>\n <Icon\n type=\"plus\"\n size=\"small\"\n className=\"text-primary-text\"\n />\n </Button>\n )}\n </div>\n );\n};\n\nexport type { CheckboxGroupOption, CheckboxGroupOptionItem, Props as CheckboxGroupProps };\n"],"names":["DEFAULT_MS_SCROLL_TO_BOTTOM","CheckboxGroup","data","errTexts","label","dataEmpty","btnAddText","onChange","scrollContainerRef","useRef","isOpened","openAdd","usePopupControls","value","setValue","useState","allValues","useMemo","values","item","isAllSelected","scrollToBottom","useCallback","handleSelectAll","checked","newData","handleCheckboxChange","categoryId","itemValue","category","handleOptionDelete","handleAddOption","sonner","newItem","index","handleChangeValue","jsxs","jsx","Checkbox","Label","Typography","id","name","items","Fragment","lastItem","cn","Button","Icon","InputField"],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),b=require("./components-ui-checkbox-checkbox.cjs"),s=require("./components-ui-typography-typography.cjs");require("./components-ui-typography-typography.styles.cjs");const l=require("./lib-utils.cjs"),p=({data:t,onChange:d,label:n,className:o,checkboxVariant:a})=>{const i=e=>()=>{const h=t.map(c=>c.id!==e?c:{...c,completed:!c.completed});d(h)};return r.jsxs("div",{children:[n&&r.jsx(s.Typography,{className:l.cn("text-sub-label-text mb-1",o?.label),variant:"body-sm-regular",children:n}),r.jsx("div",{className:"border-delicate-border w-full rounded-2xl border",children:t.map(e=>r.jsxs("div",{className:`not-last:border-delicate-border flex items-center gap-4 px-2.5 py-3
|
|
2
|
+
not-last:border-b`,children:[r.jsx(b.Checkbox,{checked:e.completed,variant:a,onCheckedChange:i(e.id),className:o?.checkbox}),r.jsx(s.Typography,{className:l.cn(`${e.completed&&"text-sub-label-text line-through"}`,o?.description),variant:"body-md-regular",children:e.description})]},e.id))})]})};exports.Checklist=p;
|
|
3
|
+
//# sourceMappingURL=components-checklist-checklist.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components-checklist-checklist.cjs","sources":["../src/components/checklist/checklist.tsx"],"sourcesContent":["import { Checkbox } from \"@/components/ui/checkbox\";\nimport { Typography } from \"../ui/typography\";\nimport { cn } from \"@/lib/utils\";\n\nexport type ChecklistData = {\n id: number;\n description: string;\n completed: boolean;\n};\n\ntype Props = {\n data: ChecklistData[];\n onChange: (values: ChecklistData[]) => void;\n label?: string;\n className?: {\n label?: string;\n checkbox?: string;\n description?: string;\n };\n checkboxVariant?: \"round\" | \"square\";\n};\n\nexport const Checklist = ({\n data,\n onChange,\n label,\n className,\n checkboxVariant,\n}: Props) => {\n const handleCheckboxChange = (id: number) => () => {\n const newData = data.map((item) => {\n if (item.id !== id) return item;\n return { ...item, completed: !item.completed };\n });\n onChange(newData);\n };\n\n return (\n <div>\n {label && (\n <Typography\n className={cn(\"text-sub-label-text mb-1\", className?.label)}\n variant=\"body-sm-regular\"\n >\n {label}\n </Typography>\n )}\n <div className=\"border-delicate-border w-full rounded-2xl border\">\n {data.map((item) => (\n <div\n className=\"not-last:border-delicate-border flex items-center gap-4 px-2.5 py-3\n not-last:border-b\"\n key={item.id}\n >\n <Checkbox\n checked={item.completed}\n variant={checkboxVariant}\n onCheckedChange={handleCheckboxChange(item.id)}\n className={className?.checkbox}\n />\n <Typography\n className={cn(\n `${item.completed && \"text-sub-label-text line-through\"}`,\n className?.description,\n )}\n variant=\"body-md-regular\"\n >\n {item.description}\n </Typography>\n </div>\n ))}\n </div>\n </div>\n );\n};\n"],"names":["Checklist","data","onChange","label","className","checkboxVariant","handleCheckboxChange","id","newData","item","jsx","Typography","cn","jsxs","Checkbox"],"mappings":"8TAsBaA,EAAY,CAAC,CACxB,KAAAC,EACA,SAAAC,EACA,MAAAC,EACA,UAAAC,EACA,gBAAAC,CACF,IAAa,CACX,MAAMC,EAAwBC,GAAe,IAAM,CACjD,MAAMC,EAAUP,EAAK,IAAKQ,GACpBA,EAAK,KAAOF,EAAWE,EACpB,CAAE,GAAGA,EAAM,UAAW,CAACA,EAAK,SAAA,CACpC,EACDP,EAASM,CAAO,CAClB,EAEA,cACG,MAAA,CACE,SAAA,CAAAL,GACCO,EAAAA,IAACC,EAAAA,WAAA,CACC,UAAWC,EAAAA,GAAG,2BAA4BR,GAAW,KAAK,EAC1D,QAAQ,kBAEP,SAAAD,CAAA,CAAA,QAGJ,MAAA,CAAI,UAAU,mDACZ,SAAAF,EAAK,IAAKQ,GACTI,EAAAA,KAAC,MAAA,CACC,UAAU;AAAA,iCAIV,SAAA,CAAAH,EAAAA,IAACI,EAAAA,SAAA,CACC,QAASL,EAAK,UACd,QAASJ,EACT,gBAAiBC,EAAqBG,EAAK,EAAE,EAC7C,UAAWL,GAAW,QAAA,CAAA,EAExBM,EAAAA,IAACC,EAAAA,WAAA,CACC,UAAWC,EAAAA,GACT,GAAGH,EAAK,WAAa,kCAAkC,GACvDL,GAAW,WAAA,EAEb,QAAQ,kBAEP,SAAAK,EAAK,WAAA,CAAA,CACR,CAAA,EAhBKA,EAAK,EAAA,CAkBb,CAAA,CACH,CAAA,EACF,CAEJ"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { jsxs as l, jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { Checkbox as h } from "./components-ui-checkbox-checkbox.js";
|
|
3
|
+
import { Typography as n } from "./components-ui-typography-typography.js";
|
|
4
|
+
import "./components-ui-typography-typography.styles.js";
|
|
5
|
+
import { cn as a } from "./lib-utils.js";
|
|
6
|
+
const k = ({
|
|
7
|
+
data: t,
|
|
8
|
+
onChange: i,
|
|
9
|
+
label: c,
|
|
10
|
+
className: d,
|
|
11
|
+
checkboxVariant: s
|
|
12
|
+
}) => {
|
|
13
|
+
const p = (e) => () => {
|
|
14
|
+
const b = t.map((r) => r.id !== e ? r : { ...r, completed: !r.completed });
|
|
15
|
+
i(b);
|
|
16
|
+
};
|
|
17
|
+
return /* @__PURE__ */ l("div", { children: [
|
|
18
|
+
c && /* @__PURE__ */ o(
|
|
19
|
+
n,
|
|
20
|
+
{
|
|
21
|
+
className: a("text-sub-label-text mb-1", d?.label),
|
|
22
|
+
variant: "body-sm-regular",
|
|
23
|
+
children: c
|
|
24
|
+
}
|
|
25
|
+
),
|
|
26
|
+
/* @__PURE__ */ o("div", { className: "border-delicate-border w-full rounded-2xl border", children: t.map((e) => /* @__PURE__ */ l(
|
|
27
|
+
"div",
|
|
28
|
+
{
|
|
29
|
+
className: `not-last:border-delicate-border flex items-center gap-4 px-2.5 py-3
|
|
30
|
+
not-last:border-b`,
|
|
31
|
+
children: [
|
|
32
|
+
/* @__PURE__ */ o(
|
|
33
|
+
h,
|
|
34
|
+
{
|
|
35
|
+
checked: e.completed,
|
|
36
|
+
variant: s,
|
|
37
|
+
onCheckedChange: p(e.id),
|
|
38
|
+
className: d?.checkbox
|
|
39
|
+
}
|
|
40
|
+
),
|
|
41
|
+
/* @__PURE__ */ o(
|
|
42
|
+
n,
|
|
43
|
+
{
|
|
44
|
+
className: a(
|
|
45
|
+
`${e.completed && "text-sub-label-text line-through"}`,
|
|
46
|
+
d?.description
|
|
47
|
+
),
|
|
48
|
+
variant: "body-md-regular",
|
|
49
|
+
children: e.description
|
|
50
|
+
}
|
|
51
|
+
)
|
|
52
|
+
]
|
|
53
|
+
},
|
|
54
|
+
e.id
|
|
55
|
+
)) })
|
|
56
|
+
] });
|
|
57
|
+
};
|
|
58
|
+
export {
|
|
59
|
+
k as Checklist
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=components-checklist-checklist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components-checklist-checklist.js","sources":["../src/components/checklist/checklist.tsx"],"sourcesContent":["import { Checkbox } from \"@/components/ui/checkbox\";\nimport { Typography } from \"../ui/typography\";\nimport { cn } from \"@/lib/utils\";\n\nexport type ChecklistData = {\n id: number;\n description: string;\n completed: boolean;\n};\n\ntype Props = {\n data: ChecklistData[];\n onChange: (values: ChecklistData[]) => void;\n label?: string;\n className?: {\n label?: string;\n checkbox?: string;\n description?: string;\n };\n checkboxVariant?: \"round\" | \"square\";\n};\n\nexport const Checklist = ({\n data,\n onChange,\n label,\n className,\n checkboxVariant,\n}: Props) => {\n const handleCheckboxChange = (id: number) => () => {\n const newData = data.map((item) => {\n if (item.id !== id) return item;\n return { ...item, completed: !item.completed };\n });\n onChange(newData);\n };\n\n return (\n <div>\n {label && (\n <Typography\n className={cn(\"text-sub-label-text mb-1\", className?.label)}\n variant=\"body-sm-regular\"\n >\n {label}\n </Typography>\n )}\n <div className=\"border-delicate-border w-full rounded-2xl border\">\n {data.map((item) => (\n <div\n className=\"not-last:border-delicate-border flex items-center gap-4 px-2.5 py-3\n not-last:border-b\"\n key={item.id}\n >\n <Checkbox\n checked={item.completed}\n variant={checkboxVariant}\n onCheckedChange={handleCheckboxChange(item.id)}\n className={className?.checkbox}\n />\n <Typography\n className={cn(\n `${item.completed && \"text-sub-label-text line-through\"}`,\n className?.description,\n )}\n variant=\"body-md-regular\"\n >\n {item.description}\n </Typography>\n </div>\n ))}\n </div>\n </div>\n );\n};\n"],"names":["Checklist","data","onChange","label","className","checkboxVariant","handleCheckboxChange","id","newData","item","jsx","Typography","cn","jsxs","Checkbox"],"mappings":";;;;;AAsBO,MAAMA,IAAY,CAAC;AAAA,EACxB,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,iBAAAC;AACF,MAAa;AACX,QAAMC,IAAuB,CAACC,MAAe,MAAM;AACjD,UAAMC,IAAUP,EAAK,IAAI,CAACQ,MACpBA,EAAK,OAAOF,IAAWE,IACpB,EAAE,GAAGA,GAAM,WAAW,CAACA,EAAK,UAAA,CACpC;AACD,IAAAP,EAASM,CAAO;AAAA,EAClB;AAEA,2BACG,OAAA,EACE,UAAA;AAAA,IAAAL,KACC,gBAAAO;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,WAAWC,EAAG,4BAA4BR,GAAW,KAAK;AAAA,QAC1D,SAAQ;AAAA,QAEP,UAAAD;AAAA,MAAA;AAAA,IAAA;AAAA,sBAGJ,OAAA,EAAI,WAAU,oDACZ,UAAAF,EAAK,IAAI,CAACQ,MACT,gBAAAI;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA;AAAA,QAIV,UAAA;AAAA,UAAA,gBAAAH;AAAA,YAACI;AAAA,YAAA;AAAA,cACC,SAASL,EAAK;AAAA,cACd,SAASJ;AAAA,cACT,iBAAiBC,EAAqBG,EAAK,EAAE;AAAA,cAC7C,WAAWL,GAAW;AAAA,YAAA;AAAA,UAAA;AAAA,UAExB,gBAAAM;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,WAAWC;AAAA,gBACT,GAAGH,EAAK,aAAa,kCAAkC;AAAA,gBACvDL,GAAW;AAAA,cAAA;AAAA,cAEb,SAAQ;AAAA,cAEP,UAAAK,EAAK;AAAA,YAAA;AAAA,UAAA;AAAA,QACR;AAAA,MAAA;AAAA,MAhBKA,EAAK;AAAA,IAAA,CAkBb,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components-checklist.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components-checklist.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|