brd-ui-kit 0.1.75 → 0.1.77
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/brd-ui-kit.css +1 -1
- package/dist/calendar-PqChui7l.cjs +2 -0
- package/dist/{calendar-DReGV_22.cjs.map → calendar-PqChui7l.cjs.map} +1 -1
- package/dist/{calendar-C0DXP3T-.js → calendar-XWqEaWHP.js} +267 -272
- package/dist/{calendar-C0DXP3T-.js.map → calendar-XWqEaWHP.js.map} +1 -1
- package/dist/{calendar-locale-CP2pxhFK.cjs → calendar-locale-CosU_VZY.cjs} +2 -2
- package/dist/{calendar-locale-CP2pxhFK.cjs.map → calendar-locale-CosU_VZY.cjs.map} +1 -1
- package/dist/{calendar-locale-DJf03PI9.js → calendar-locale-DqQZymBn.js} +2 -2
- package/dist/{calendar-locale-DJf03PI9.js.map → calendar-locale-DqQZymBn.js.map} +1 -1
- package/dist/chart-9H_9wEfR.cjs +63 -0
- package/dist/{chart-C69jBlXa.cjs.map → chart-9H_9wEfR.cjs.map} +1 -1
- package/dist/{chart-CAPCe8o5.js → chart-DFbmMKiQ.js} +2956 -2951
- package/dist/{chart-CAPCe8o5.js.map → chart-DFbmMKiQ.js.map} +1 -1
- package/dist/components/app-sidebar/app-sidebar.d.ts +2 -2
- package/dist/components/basic-chart/basic-chart.d.ts +1 -1
- package/dist/components/basic-table/basic-table.d.ts +5 -5
- package/dist/components/data-table/data-table-actions-column.d.ts +3 -3
- package/dist/components/data-table/data-table-bulk-actions.d.ts +3 -3
- package/dist/components/data-table/data-table-column-visibility.d.ts +2 -2
- package/dist/components/data-table/data-table-filter.d.ts +2 -2
- package/dist/components/data-table/data-table-row-actions-column.d.ts +5 -5
- package/dist/components/data-table/use-data-table-editable-rows.d.ts +5 -5
- package/dist/components/files-uploader/files-uploader.d.ts +2 -2
- package/dist/components/icons/ArrowCounterClockwise.d.ts +1 -0
- package/dist/components/icons/BoundingBox.d.ts +1 -0
- package/dist/components/icons/Briefcase.d.ts +1 -0
- package/dist/components/icons/Building.d.ts +1 -0
- package/dist/components/icons/Buildings.d.ts +1 -0
- package/dist/components/icons/CaretDown.d.ts +1 -0
- package/dist/components/icons/CaretLeft.d.ts +1 -0
- package/dist/components/icons/CaretRight.d.ts +1 -0
- package/dist/components/icons/CaretUp.d.ts +1 -0
- package/dist/components/icons/CaretUpDown.d.ts +1 -0
- package/dist/components/icons/ChartLine.d.ts +1 -0
- package/dist/components/icons/Check.d.ts +1 -0
- package/dist/components/icons/CheckCircle.d.ts +1 -0
- package/dist/components/icons/Clock.d.ts +1 -0
- package/dist/components/icons/CreditCard.d.ts +1 -0
- package/dist/components/icons/DotsThree.d.ts +1 -0
- package/dist/components/icons/DownloadSimple.d.ts +1 -0
- package/dist/components/icons/EnvelopeSimple.d.ts +1 -0
- package/dist/components/icons/Eye.d.ts +1 -0
- package/dist/components/icons/EyeSlash.d.ts +1 -0
- package/dist/components/icons/FileText.d.ts +1 -0
- package/dist/components/icons/Folder.d.ts +1 -0
- package/dist/components/icons/Funnel.d.ts +1 -0
- package/dist/components/icons/Gear.d.ts +1 -0
- package/dist/components/icons/Info.d.ts +1 -0
- package/dist/components/icons/LockKey.d.ts +1 -0
- package/dist/components/icons/MagnifyingGlass.d.ts +1 -0
- package/dist/components/icons/MaxLogo.d.ts +1 -0
- package/dist/components/icons/Package.d.ts +1 -0
- package/dist/components/icons/Pencil.d.ts +1 -0
- package/dist/components/icons/Phone.d.ts +1 -0
- package/dist/components/icons/Plus.d.ts +1 -0
- package/dist/components/icons/PresentationChart.d.ts +1 -0
- package/dist/components/icons/SpinnerGap.d.ts +1 -0
- package/dist/components/icons/TelegramLogo.d.ts +1 -0
- package/dist/components/icons/Trash.d.ts +1 -0
- package/dist/components/icons/UserCircleGear.d.ts +1 -0
- package/dist/components/icons/Users.d.ts +1 -0
- package/dist/components/icons/UsersFour.d.ts +1 -0
- package/dist/components/icons/Warning.d.ts +1 -0
- package/dist/components/icons/WarningCircle.d.ts +1 -0
- package/dist/components/icons/WhatsAppLogoFilled.d.ts +1 -0
- package/dist/components/icons/Wrench.d.ts +1 -0
- package/dist/components/icons/X.d.ts +1 -0
- package/dist/components/icons/XCircle.d.ts +1 -0
- package/dist/components/icons/index.d.ts +50 -0
- package/dist/components/icons/stroke-icon.d.ts +19 -0
- package/dist/components/icons.d.ts +2 -0
- package/dist/components/input-field/input-field.d.ts +3 -3
- package/dist/components/input-password/input-password.d.ts +1 -1
- package/dist/components/input-phone/input-phone.d.ts +4 -4
- package/dist/components/popover-modal/popover-modal.d.ts +4 -4
- package/dist/components/select-field/select-field.d.ts +2 -2
- package/dist/components/ui/avatar/avatar.d.ts +7 -7
- package/dist/components/ui/badge/badge.d.ts +2 -2
- package/dist/components/ui/button/button.d.ts +3 -3
- package/dist/components/ui/calendar/calendar.d.ts +6 -6
- package/dist/components/ui/calendar/calendar.styles.d.ts +1 -1
- package/dist/components/ui/card/card.d.ts +13 -13
- package/dist/components/ui/chart/chart.d.ts +23 -21
- package/dist/components/ui/checkbox/checkbox.d.ts +4 -4
- package/dist/components/ui/combobox/combobox.d.ts +6 -6
- package/dist/components/ui/dialog/dialog.d.ts +11 -11
- package/dist/components/ui/drawer/drawer.d.ts +11 -11
- package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts +42 -42
- package/dist/components/ui/icon/icon-map.d.ts +68 -0
- package/dist/components/ui/icon/icon.d.ts +6 -6
- package/dist/components/ui/icon/index.d.ts +3 -1
- package/dist/components/ui/input/input.d.ts +2 -2
- package/dist/components/ui/input-group/input-group.d.ts +7 -7
- package/dist/components/ui/label/label.d.ts +4 -4
- package/dist/components/ui/pagination/pagination.d.ts +8 -8
- package/dist/components/ui/popover/popover.d.ts +8 -8
- package/dist/components/ui/progress/progress.d.ts +4 -4
- package/dist/components/ui/radio-group/radio-group.d.ts +7 -7
- package/dist/components/ui/select/select.d.ts +11 -11
- package/dist/components/ui/select-calendar-menu/select-calendar-menu.d.ts +4 -4
- package/dist/components/ui/separator/separator.d.ts +4 -4
- package/dist/components/ui/switch/switch.d.ts +4 -4
- package/dist/components/ui/table/table.d.ts +17 -17
- package/dist/components/ui/tabs/tabs.d.ts +8 -8
- package/dist/components/ui/toggle-group/toggle-group.styles.d.ts +1 -1
- package/dist/components/ui/tooltip/tooltip.d.ts +8 -8
- package/dist/components/ui/typography/typography.d.ts +174 -174
- package/dist/components-app-pagination-app-pagination.cjs +1 -1
- package/dist/components-app-pagination-app-pagination.cjs.map +1 -1
- package/dist/components-app-pagination-app-pagination.js +34 -32
- package/dist/components-app-pagination-app-pagination.js.map +1 -1
- package/dist/components-app-sidebar-app-sidebar.cjs +1 -1
- package/dist/components-app-sidebar-app-sidebar.cjs.map +1 -1
- package/dist/components-app-sidebar-app-sidebar.js +33 -32
- package/dist/components-app-sidebar-app-sidebar.js.map +1 -1
- package/dist/components-avatar-uploader-avatar-uploader.cjs +2 -2
- package/dist/components-avatar-uploader-avatar-uploader.cjs.map +1 -1
- package/dist/components-avatar-uploader-avatar-uploader.js +54 -36
- package/dist/components-avatar-uploader-avatar-uploader.js.map +1 -1
- package/dist/components-basic-avatar-basic-avatar.cjs +2 -2
- package/dist/components-basic-avatar-basic-avatar.cjs.map +1 -1
- package/dist/components-basic-avatar-basic-avatar.js +25 -5
- package/dist/components-basic-avatar-basic-avatar.js.map +1 -1
- package/dist/components-basic-chart-basic-chart.cjs +2 -2
- package/dist/components-basic-chart-basic-chart.cjs.map +1 -1
- package/dist/components-basic-chart-basic-chart.js +106 -108
- package/dist/components-basic-chart-basic-chart.js.map +1 -1
- package/dist/components-basic-table-basic-table.cjs +2 -2
- package/dist/components-basic-table-basic-table.cjs.map +1 -1
- package/dist/components-basic-table-basic-table.js +232 -231
- package/dist/components-basic-table-basic-table.js.map +1 -1
- package/dist/components-data-table-data-table-actions-column.cjs +1 -1
- package/dist/components-data-table-data-table-actions-column.cjs.map +1 -1
- package/dist/components-data-table-data-table-actions-column.js +1 -1
- package/dist/components-data-table-data-table-actions-column.js.map +1 -1
- package/dist/components-data-table-data-table-bulk-actions.cjs +1 -1
- package/dist/components-data-table-data-table-bulk-actions.cjs.map +1 -1
- package/dist/components-data-table-data-table-bulk-actions.js +9 -9
- package/dist/components-data-table-data-table-bulk-actions.js.map +1 -1
- package/dist/components-data-table-data-table-column-visibility.cjs +1 -1
- package/dist/components-data-table-data-table-column-visibility.cjs.map +1 -1
- package/dist/components-data-table-data-table-column-visibility.js +11 -10
- package/dist/components-data-table-data-table-column-visibility.js.map +1 -1
- package/dist/components-data-table-data-table-filter.cjs +1 -1
- package/dist/components-data-table-data-table-filter.cjs.map +1 -1
- package/dist/components-data-table-data-table-filter.js +15 -15
- package/dist/components-data-table-data-table-filter.js.map +1 -1
- package/dist/components-data-table-data-table-row-actions-column.cjs +1 -1
- package/dist/components-data-table-data-table-row-actions-column.cjs.map +1 -1
- package/dist/components-data-table-data-table-row-actions-column.js +1 -1
- package/dist/components-data-table-data-table-row-actions-column.js.map +1 -1
- package/dist/components-data-table-use-data-table-editable-rows.cjs +1 -1
- package/dist/components-data-table-use-data-table-editable-rows.cjs.map +1 -1
- package/dist/components-data-table-use-data-table-editable-rows.js +88 -90
- package/dist/components-data-table-use-data-table-editable-rows.js.map +1 -1
- package/dist/components-files-uploader-files-uploader.cjs +3 -3
- package/dist/components-files-uploader-files-uploader.cjs.map +1 -1
- package/dist/components-files-uploader-files-uploader.js +41 -38
- package/dist/components-files-uploader-files-uploader.js.map +1 -1
- package/dist/components-icons-ArrowCounterClockwise.cjs +2 -0
- package/dist/components-icons-ArrowCounterClockwise.cjs.map +1 -0
- package/dist/components-icons-ArrowCounterClockwise.js +5 -0
- package/dist/components-icons-ArrowCounterClockwise.js.map +1 -0
- package/dist/components-icons-BoundingBox.cjs +2 -0
- package/dist/components-icons-BoundingBox.cjs.map +1 -0
- package/dist/components-icons-BoundingBox.js +5 -0
- package/dist/components-icons-BoundingBox.js.map +1 -0
- package/dist/components-icons-Briefcase.cjs +2 -0
- package/dist/components-icons-Briefcase.cjs.map +1 -0
- package/dist/components-icons-Briefcase.js +5 -0
- package/dist/components-icons-Briefcase.js.map +1 -0
- package/dist/components-icons-Building.cjs +2 -0
- package/dist/components-icons-Building.cjs.map +1 -0
- package/dist/components-icons-Building.js +5 -0
- package/dist/components-icons-Building.js.map +1 -0
- package/dist/components-icons-Buildings.cjs +2 -0
- package/dist/components-icons-Buildings.cjs.map +1 -0
- package/dist/components-icons-Buildings.js +5 -0
- package/dist/components-icons-Buildings.js.map +1 -0
- package/dist/components-icons-CaretDown.cjs +2 -0
- package/dist/components-icons-CaretDown.cjs.map +1 -0
- package/dist/components-icons-CaretDown.js +5 -0
- package/dist/components-icons-CaretDown.js.map +1 -0
- package/dist/components-icons-CaretLeft.cjs +2 -0
- package/dist/components-icons-CaretLeft.cjs.map +1 -0
- package/dist/components-icons-CaretLeft.js +5 -0
- package/dist/components-icons-CaretLeft.js.map +1 -0
- package/dist/components-icons-CaretRight.cjs +2 -0
- package/dist/components-icons-CaretRight.cjs.map +1 -0
- package/dist/components-icons-CaretRight.js +5 -0
- package/dist/components-icons-CaretRight.js.map +1 -0
- package/dist/components-icons-CaretUp.cjs +2 -0
- package/dist/components-icons-CaretUp.cjs.map +1 -0
- package/dist/components-icons-CaretUp.js +5 -0
- package/dist/components-icons-CaretUp.js.map +1 -0
- package/dist/components-icons-CaretUpDown.cjs +2 -0
- package/dist/components-icons-CaretUpDown.cjs.map +1 -0
- package/dist/components-icons-CaretUpDown.js +5 -0
- package/dist/components-icons-CaretUpDown.js.map +1 -0
- package/dist/components-icons-ChartLine.cjs +2 -0
- package/dist/components-icons-ChartLine.cjs.map +1 -0
- package/dist/components-icons-ChartLine.js +5 -0
- package/dist/components-icons-ChartLine.js.map +1 -0
- package/dist/components-icons-Check.cjs +2 -0
- package/dist/components-icons-Check.cjs.map +1 -0
- package/dist/components-icons-Check.js +5 -0
- package/dist/components-icons-Check.js.map +1 -0
- package/dist/components-icons-CheckCircle.cjs +2 -0
- package/dist/components-icons-CheckCircle.cjs.map +1 -0
- package/dist/components-icons-CheckCircle.js +5 -0
- package/dist/components-icons-CheckCircle.js.map +1 -0
- package/dist/components-icons-Clock.cjs +2 -0
- package/dist/components-icons-Clock.cjs.map +1 -0
- package/dist/components-icons-Clock.js +5 -0
- package/dist/components-icons-Clock.js.map +1 -0
- package/dist/components-icons-CreditCard.cjs +2 -0
- package/dist/components-icons-CreditCard.cjs.map +1 -0
- package/dist/components-icons-CreditCard.js +5 -0
- package/dist/components-icons-CreditCard.js.map +1 -0
- package/dist/components-icons-DotsThree.cjs +2 -0
- package/dist/components-icons-DotsThree.cjs.map +1 -0
- package/dist/components-icons-DotsThree.js +5 -0
- package/dist/components-icons-DotsThree.js.map +1 -0
- package/dist/components-icons-DownloadSimple.cjs +2 -0
- package/dist/components-icons-DownloadSimple.cjs.map +1 -0
- package/dist/components-icons-DownloadSimple.js +5 -0
- package/dist/components-icons-DownloadSimple.js.map +1 -0
- package/dist/components-icons-EnvelopeSimple.cjs +2 -0
- package/dist/components-icons-EnvelopeSimple.cjs.map +1 -0
- package/dist/components-icons-EnvelopeSimple.js +5 -0
- package/dist/components-icons-EnvelopeSimple.js.map +1 -0
- package/dist/components-icons-Eye.cjs +2 -0
- package/dist/components-icons-Eye.cjs.map +1 -0
- package/dist/components-icons-Eye.js +5 -0
- package/dist/components-icons-Eye.js.map +1 -0
- package/dist/components-icons-EyeSlash.cjs +2 -0
- package/dist/components-icons-EyeSlash.cjs.map +1 -0
- package/dist/components-icons-EyeSlash.js +5 -0
- package/dist/components-icons-EyeSlash.js.map +1 -0
- package/dist/components-icons-FileText.cjs +2 -0
- package/dist/components-icons-FileText.cjs.map +1 -0
- package/dist/components-icons-FileText.js +5 -0
- package/dist/components-icons-FileText.js.map +1 -0
- package/dist/components-icons-Folder.cjs +2 -0
- package/dist/components-icons-Folder.cjs.map +1 -0
- package/dist/components-icons-Folder.js +5 -0
- package/dist/components-icons-Folder.js.map +1 -0
- package/dist/components-icons-Funnel.cjs +2 -0
- package/dist/components-icons-Funnel.cjs.map +1 -0
- package/dist/components-icons-Funnel.js +5 -0
- package/dist/components-icons-Funnel.js.map +1 -0
- package/dist/components-icons-Gear.cjs +2 -0
- package/dist/components-icons-Gear.cjs.map +1 -0
- package/dist/components-icons-Gear.js +5 -0
- package/dist/components-icons-Gear.js.map +1 -0
- package/dist/components-icons-Info.cjs +2 -0
- package/dist/components-icons-Info.cjs.map +1 -0
- package/dist/components-icons-Info.js +5 -0
- package/dist/components-icons-Info.js.map +1 -0
- package/dist/components-icons-LockKey.cjs +2 -0
- package/dist/components-icons-LockKey.cjs.map +1 -0
- package/dist/components-icons-LockKey.js +5 -0
- package/dist/components-icons-LockKey.js.map +1 -0
- package/dist/components-icons-MagnifyingGlass.cjs +2 -0
- package/dist/components-icons-MagnifyingGlass.cjs.map +1 -0
- package/dist/components-icons-MagnifyingGlass.js +5 -0
- package/dist/components-icons-MagnifyingGlass.js.map +1 -0
- package/dist/components-icons-MaxLogo.cjs +2 -0
- package/dist/components-icons-MaxLogo.cjs.map +1 -0
- package/dist/components-icons-MaxLogo.js +5 -0
- package/dist/components-icons-MaxLogo.js.map +1 -0
- package/dist/components-icons-Package.cjs +2 -0
- package/dist/components-icons-Package.cjs.map +1 -0
- package/dist/components-icons-Package.js +5 -0
- package/dist/components-icons-Package.js.map +1 -0
- package/dist/components-icons-Pencil.cjs +2 -0
- package/dist/components-icons-Pencil.cjs.map +1 -0
- package/dist/components-icons-Pencil.js +5 -0
- package/dist/components-icons-Pencil.js.map +1 -0
- package/dist/components-icons-Phone.cjs +2 -0
- package/dist/components-icons-Phone.cjs.map +1 -0
- package/dist/components-icons-Phone.js +5 -0
- package/dist/components-icons-Phone.js.map +1 -0
- package/dist/components-icons-Plus.cjs +2 -0
- package/dist/components-icons-Plus.cjs.map +1 -0
- package/dist/components-icons-Plus.js +5 -0
- package/dist/components-icons-Plus.js.map +1 -0
- package/dist/components-icons-PresentationChart.cjs +2 -0
- package/dist/components-icons-PresentationChart.cjs.map +1 -0
- package/dist/components-icons-PresentationChart.js +5 -0
- package/dist/components-icons-PresentationChart.js.map +1 -0
- package/dist/components-icons-SpinnerGap.cjs +2 -0
- package/dist/components-icons-SpinnerGap.cjs.map +1 -0
- package/dist/components-icons-SpinnerGap.js +5 -0
- package/dist/components-icons-SpinnerGap.js.map +1 -0
- package/dist/components-icons-TelegramLogo.cjs +2 -0
- package/dist/components-icons-TelegramLogo.cjs.map +1 -0
- package/dist/components-icons-TelegramLogo.js +5 -0
- package/dist/components-icons-TelegramLogo.js.map +1 -0
- package/dist/components-icons-Trash.cjs +2 -0
- package/dist/components-icons-Trash.cjs.map +1 -0
- package/dist/components-icons-Trash.js +5 -0
- package/dist/components-icons-Trash.js.map +1 -0
- package/dist/components-icons-UserCircleGear.cjs +2 -0
- package/dist/components-icons-UserCircleGear.cjs.map +1 -0
- package/dist/components-icons-UserCircleGear.js +5 -0
- package/dist/components-icons-UserCircleGear.js.map +1 -0
- package/dist/components-icons-Users.cjs +2 -0
- package/dist/components-icons-Users.cjs.map +1 -0
- package/dist/components-icons-Users.js +5 -0
- package/dist/components-icons-Users.js.map +1 -0
- package/dist/components-icons-UsersFour.cjs +2 -0
- package/dist/components-icons-UsersFour.cjs.map +1 -0
- package/dist/components-icons-UsersFour.js +5 -0
- package/dist/components-icons-UsersFour.js.map +1 -0
- package/dist/components-icons-Warning.cjs +2 -0
- package/dist/components-icons-Warning.cjs.map +1 -0
- package/dist/components-icons-Warning.js +5 -0
- package/dist/components-icons-Warning.js.map +1 -0
- package/dist/components-icons-WarningCircle.cjs +2 -0
- package/dist/components-icons-WarningCircle.cjs.map +1 -0
- package/dist/components-icons-WarningCircle.js +5 -0
- package/dist/components-icons-WarningCircle.js.map +1 -0
- package/dist/components-icons-WhatsAppLogoFilled.cjs +2 -0
- package/dist/components-icons-WhatsAppLogoFilled.cjs.map +1 -0
- package/dist/components-icons-WhatsAppLogoFilled.js +5 -0
- package/dist/components-icons-WhatsAppLogoFilled.js.map +1 -0
- package/dist/components-icons-Wrench.cjs +2 -0
- package/dist/components-icons-Wrench.cjs.map +1 -0
- package/dist/components-icons-Wrench.js +5 -0
- package/dist/components-icons-Wrench.js.map +1 -0
- package/dist/components-icons-X.cjs +2 -0
- package/dist/components-icons-X.cjs.map +1 -0
- package/dist/components-icons-X.js +5 -0
- package/dist/components-icons-X.js.map +1 -0
- package/dist/components-icons-XCircle.cjs +2 -0
- package/dist/components-icons-XCircle.cjs.map +1 -0
- package/dist/components-icons-XCircle.js +5 -0
- package/dist/components-icons-XCircle.js.map +1 -0
- package/dist/components-icons-stroke-icon.cjs +2 -0
- package/dist/components-icons-stroke-icon.cjs.map +1 -0
- package/dist/components-icons-stroke-icon.js +39 -0
- package/dist/components-icons-stroke-icon.js.map +1 -0
- package/dist/components-icons.cjs +2 -0
- package/dist/components-icons.cjs.map +1 -0
- package/dist/components-icons.js +97 -0
- package/dist/components-icons.js.map +1 -0
- package/dist/components-input-contact-input-contact.cjs +4 -4
- package/dist/components-input-contact-input-contact.cjs.map +1 -1
- package/dist/components-input-contact-input-contact.js +104 -75
- package/dist/components-input-contact-input-contact.js.map +1 -1
- package/dist/components-input-field-input-field.cjs +1 -1
- package/dist/components-input-field-input-field.cjs.map +1 -1
- package/dist/components-input-field-input-field.js +18 -19
- package/dist/components-input-field-input-field.js.map +1 -1
- package/dist/components-input-password-input-password.cjs +1 -1
- package/dist/components-input-password-input-password.cjs.map +1 -1
- package/dist/components-input-password-input-password.js +14 -52
- package/dist/components-input-password-input-password.js.map +1 -1
- package/dist/components-input-phone-input-phone.cjs.map +1 -1
- package/dist/components-input-phone-input-phone.js.map +1 -1
- package/dist/components-popover-modal-popover-modal.cjs +1 -1
- package/dist/components-popover-modal-popover-modal.cjs.map +1 -1
- package/dist/components-popover-modal-popover-modal.js +40 -29
- package/dist/components-popover-modal-popover-modal.js.map +1 -1
- package/dist/components-select-field-select-field.cjs.map +1 -1
- package/dist/components-select-field-select-field.js.map +1 -1
- package/dist/components-ui-avatar-avatar.cjs +1 -1
- package/dist/components-ui-avatar-avatar.cjs.map +1 -1
- package/dist/components-ui-avatar-avatar.js +12 -13
- package/dist/components-ui-avatar-avatar.js.map +1 -1
- package/dist/components-ui-badge-badge.cjs +1 -1
- package/dist/components-ui-badge-badge.cjs.map +1 -1
- package/dist/components-ui-badge-badge.js +10 -11
- package/dist/components-ui-badge-badge.js.map +1 -1
- package/dist/components-ui-button-button.cjs +1 -1
- package/dist/components-ui-button-button.cjs.map +1 -1
- package/dist/components-ui-button-button.js +10 -11
- package/dist/components-ui-button-button.js.map +1 -1
- package/dist/components-ui-button-button.styles.cjs +4 -4
- package/dist/components-ui-button-button.styles.cjs.map +1 -1
- package/dist/components-ui-button-button.styles.js +4 -4
- package/dist/components-ui-button-button.styles.js.map +1 -1
- package/dist/components-ui-calendar-calendar.cjs +1 -1
- package/dist/components-ui-calendar-calendar.js +4 -3
- package/dist/components-ui-calendar-calendar.js.map +1 -1
- package/dist/components-ui-calendar-calendar.styles.cjs +1 -1
- package/dist/components-ui-calendar-calendar.styles.cjs.map +1 -1
- package/dist/components-ui-calendar-calendar.styles.js +1 -1
- package/dist/components-ui-calendar-calendar.styles.js.map +1 -1
- package/dist/components-ui-calendar.cjs +1 -1
- package/dist/components-ui-calendar.js +2 -2
- package/dist/components-ui-card-card.cjs +1 -1
- package/dist/components-ui-card-card.cjs.map +1 -1
- package/dist/components-ui-card-card.js +10 -11
- package/dist/components-ui-card-card.js.map +1 -1
- package/dist/components-ui-chart-chart.cjs +1 -1
- package/dist/components-ui-chart-chart.js +1 -1
- package/dist/components-ui-chart.cjs +1 -1
- package/dist/components-ui-chart.js +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-combobox-combobox.cjs +5 -5
- package/dist/components-ui-combobox-combobox.cjs.map +1 -1
- package/dist/components-ui-combobox-combobox.js +1478 -1479
- package/dist/components-ui-combobox-combobox.js.map +1 -1
- package/dist/components-ui-dialog-dialog.cjs +1 -1
- package/dist/components-ui-dialog-dialog.cjs.map +1 -1
- package/dist/components-ui-dialog-dialog.js +23 -23
- package/dist/components-ui-dialog-dialog.js.map +1 -1
- package/dist/components-ui-drawer-drawer.cjs +2 -2
- package/dist/components-ui-drawer-drawer.cjs.map +1 -1
- package/dist/components-ui-drawer-drawer.js +16 -19
- package/dist/components-ui-drawer-drawer.js.map +1 -1
- package/dist/components-ui-dropdown-menu-dropdown-menu.cjs +1 -1
- package/dist/components-ui-dropdown-menu-dropdown-menu.cjs.map +1 -1
- package/dist/components-ui-dropdown-menu-dropdown-menu.js +1 -1
- package/dist/components-ui-dropdown-menu-dropdown-menu.js.map +1 -1
- package/dist/components-ui-icon-icon-map.cjs +2 -0
- package/dist/components-ui-icon-icon-map.cjs.map +1 -0
- package/dist/components-ui-icon-icon-map.js +71 -0
- package/dist/components-ui-icon-icon-map.js.map +1 -0
- package/dist/components-ui-icon-icon.cjs +1 -1
- package/dist/components-ui-icon-icon.cjs.map +1 -1
- package/dist/components-ui-icon-icon.js +29 -61735
- package/dist/components-ui-icon-icon.js.map +1 -1
- package/dist/components-ui-icon.cjs +1 -1
- package/dist/components-ui-icon.js +3 -1
- package/dist/components-ui-icon.js.map +1 -1
- package/dist/components-ui-input-group-input-group.cjs +1 -1
- package/dist/components-ui-input-group-input-group.cjs.map +1 -1
- package/dist/components-ui-input-group-input-group.js +12 -13
- package/dist/components-ui-input-group-input-group.js.map +1 -1
- package/dist/components-ui-input-input.cjs +1 -1
- package/dist/components-ui-input-input.cjs.map +1 -1
- package/dist/components-ui-input-input.js +2 -3
- package/dist/components-ui-input-input.js.map +1 -1
- package/dist/components-ui-label-label.cjs +1 -1
- package/dist/components-ui-label-label.cjs.map +1 -1
- package/dist/components-ui-label-label.js +1 -1
- package/dist/components-ui-label-label.js.map +1 -1
- package/dist/components-ui-pagination-pagination.cjs +2 -2
- package/dist/components-ui-pagination-pagination.cjs.map +1 -1
- package/dist/components-ui-pagination-pagination.js +48 -46
- package/dist/components-ui-pagination-pagination.js.map +1 -1
- package/dist/components-ui-popover-popover.cjs +1 -1
- package/dist/components-ui-popover-popover.cjs.map +1 -1
- package/dist/components-ui-popover-popover.js +14 -19
- package/dist/components-ui-popover-popover.js.map +1 -1
- package/dist/components-ui-progress-progress.cjs +1 -1
- package/dist/components-ui-progress-progress.cjs.map +1 -1
- package/dist/components-ui-progress-progress.js +1 -1
- package/dist/components-ui-progress-progress.js.map +1 -1
- package/dist/components-ui-radio-group-radio-group.cjs +1 -1
- package/dist/components-ui-radio-group-radio-group.cjs.map +1 -1
- package/dist/components-ui-radio-group-radio-group.js +0 -1
- package/dist/components-ui-radio-group-radio-group.js.map +1 -1
- package/dist/components-ui-select-calendar-menu-select-calendar-menu.cjs +1 -1
- package/dist/components-ui-select-calendar-menu-select-calendar-menu.cjs.map +1 -1
- package/dist/components-ui-select-calendar-menu-select-calendar-menu.js +54 -47
- package/dist/components-ui-select-calendar-menu-select-calendar-menu.js.map +1 -1
- package/dist/components-ui-select-select.cjs +1 -1
- package/dist/components-ui-select-select.cjs.map +1 -1
- package/dist/components-ui-select-select.js +36 -36
- package/dist/components-ui-select-select.js.map +1 -1
- package/dist/components-ui-separator-separator.cjs +1 -1
- package/dist/components-ui-separator-separator.cjs.map +1 -1
- package/dist/components-ui-separator-separator.js +11 -12
- package/dist/components-ui-separator-separator.js.map +1 -1
- package/dist/components-ui-sonner-sonner.cjs +1 -1
- package/dist/components-ui-sonner-sonner.cjs.map +1 -1
- package/dist/components-ui-sonner-sonner.js +38 -32
- package/dist/components-ui-sonner-sonner.js.map +1 -1
- package/dist/components-ui-switch-switch.cjs +1 -1
- package/dist/components-ui-switch-switch.cjs.map +1 -1
- package/dist/components-ui-switch-switch.js +6 -7
- package/dist/components-ui-switch-switch.js.map +1 -1
- package/dist/components-ui-table-table.cjs +1 -1
- package/dist/components-ui-table-table.cjs.map +1 -1
- package/dist/components-ui-table-table.js +0 -1
- package/dist/components-ui-table-table.js.map +1 -1
- package/dist/components-ui-tabs-tabs.cjs +2 -2
- package/dist/components-ui-tabs-tabs.cjs.map +1 -1
- package/dist/components-ui-tabs-tabs.js +16 -16
- package/dist/components-ui-tabs-tabs.js.map +1 -1
- package/dist/components-ui-tooltip-tooltip.cjs +1 -1
- package/dist/components-ui-tooltip-tooltip.cjs.map +1 -1
- package/dist/components-ui-tooltip-tooltip.js +9 -10
- package/dist/components-ui-tooltip-tooltip.js.map +1 -1
- package/dist/components-ui-typography-typography.cjs +1 -1
- package/dist/components-ui-typography-typography.cjs.map +1 -1
- package/dist/components-ui-typography-typography.js +7 -7
- package/dist/components-ui-typography-typography.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +234 -233
- package/dist/index.js.map +1 -1
- package/package.json +10 -1
- package/dist/calendar-DReGV_22.cjs +0 -2
- package/dist/chart-C69jBlXa.cjs +0 -63
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react");function D(e){return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function M(e,s){return typeof s=="function"?s(e):s}function P(e,s,x){const[E,k]=i.useState(x),p=e!==void 0,g=p?e:E,y=i.useCallback(C=>{const V=M(g,C);p||k(V),s?.(V)},[p,s,g]);return[g,y]}function O({rows:e,getRowId:s,setRows:x,editingRowId:E,onEditingRowIdChange:k,editingValues:p,onEditingValuesChange:g,onRowDelete:y,onRowEditCancel:C,onRowEditSave:V,onRowEditStart:S,onRowsChange:m}){const[a,l]=P(E,k,null),[r,u]=P(p,g,{}),[U,T]=i.useState(!0),f=i.useCallback(t=>e.find(n=>s(n)===t)??null,[s,e]),R=i.useCallback((t,n)=>{T(!1),x?.(t),m?.(n),i.startTransition(()=>{T(!0)})},[m,x]),j=i.useCallback((t,n,c)=>{const o=s(t),b=n.reduce((v,d)=>(v[d]=c?.[d]??D(t[d]),v),{});l(o),u(b),S?.({editableKeys:n,initialValues:b,row:t,rowId:o})},[s,S,l,u]),q=i.useCallback(()=>{const t=a?f(a):null,n=r;l(null),u({}),C?.({editingValues:n,row:t,rowId:a})},[a,r,f,C,l,u]),A=i.useCallback(t=>{const n=f(t);if(!n)return;const c={...n,...r},o=e,b=o.map(d=>s(d)===t?c:d);R(b,{editingValues:r,nextRow:c,nextRows:b,previousRow:n,previousRows:o,rowId:t,type:"edit-save"}),l(null),u({}),V?.({editingValues:r,nextRow:c,previousRow:n,rowId:t})},[R,r,f,s,V,e,l,u]),B=i.useCallback(t=>{const n=f(t);if(!n)return;const c=e,o=c.filter(v=>s(v)!==t);R(o,{nextRows:o,previousRows:c,row:n,rowId:t,type:"delete"}),a===t&&(l(null),u({})),y?.({row:n,rowId:t})},[R,a,f,s,y,e,l,u]);return{autoResetPageIndex:U,cancelEditingRow:q,deleteRow:B,editingRowId:a,editingValues:r,saveEditingRow:A,setEditingValues:u,setEditingRowId:l,startEditingRow:j}}exports.useDataTableEditableRows=O;
|
|
2
2
|
//# sourceMappingURL=components-data-table-use-data-table-editable-rows.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-data-table-use-data-table-editable-rows.cjs","sources":["../src/components/data-table/use-data-table-editable-rows.ts"],"sourcesContent":["import * as React from \"react\";\n\ntype EditableRowKey<TData> = Extract<keyof TData, string>;\ntype EditableValues = Record<string, string>;\n\ntype DataTableRowEditStartEvent<TData> = {\n editableKeys: readonly EditableRowKey<TData>[];\n initialValues: EditableValues;\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowEditCancelEvent<TData> = {\n editingValues: EditableValues;\n row: TData | null;\n rowId: string | null;\n};\n\ntype DataTableRowEditSaveEvent<TData> = {\n editingValues: EditableValues;\n nextRow: TData;\n previousRow: TData;\n rowId: string;\n};\n\ntype DataTableRowDeleteEvent<TData> = {\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowsChangeEvent<TData> =\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"edit-save\";\n } & DataTableRowEditSaveEvent<TData>)\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"delete\";\n } & DataTableRowDeleteEvent<TData>);\n\ntype UseDataTableEditableRowsOptions<TData> = {\n rows: TData[];\n getRowId: (row: TData) => string;\n setRows?: React.Dispatch<React.SetStateAction<TData[]>>;\n editingRowId?: string | null;\n onEditingRowIdChange?: (rowId: string | null) => void;\n editingValues?: EditableValues;\n onEditingValuesChange?: React.Dispatch<React.SetStateAction<EditableValues>>;\n onRowDelete?: (event: DataTableRowDeleteEvent<TData>) => void;\n onRowEditCancel?: (event: DataTableRowEditCancelEvent<TData>) => void;\n onRowEditSave?: (event: DataTableRowEditSaveEvent<TData>) => void;\n onRowEditStart?: (event: DataTableRowEditStartEvent<TData>) => void;\n onRowsChange?: (event: DataTableRowsChangeEvent<TData>) => void;\n};\n\nfunction toEditableString(value: unknown) {\n if (typeof value === \"string\") {\n return value;\n }\n\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction applyUpdater<TData>(previousValue: TData, updater: React.SetStateAction<TData>) {\n return typeof updater === \"function\"\n ? (updater as (value: TData) => TData)(previousValue)\n : updater;\n}\n\nfunction useControllableState<TData>(\n controlledValue: TData | undefined,\n onChange: ((nextValue: TData) => void) | undefined,\n defaultValue: TData,\n) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n const setValue = React.useCallback(\n (updater: React.SetStateAction<TData>) => {\n const nextValue = applyUpdater(value, updater);\n\n if (!isControlled) {\n setUncontrolledValue(nextValue);\n }\n\n onChange?.(nextValue);\n },\n [isControlled, onChange, value],\n );\n\n return [value, setValue] as const;\n}\n\nfunction useDataTableEditableRows<TData>({\n rows,\n getRowId,\n setRows,\n editingRowId: controlledEditingRowId,\n onEditingRowIdChange,\n editingValues: controlledEditingValues,\n onEditingValuesChange,\n onRowDelete,\n onRowEditCancel,\n onRowEditSave,\n onRowEditStart,\n onRowsChange,\n}: UseDataTableEditableRowsOptions<TData>) {\n const [editingRowId, setEditingRowId] = useControllableState<string | null>(\n controlledEditingRowId,\n onEditingRowIdChange,\n null,\n );\n const [editingValues, setEditingValues] = useControllableState<EditableValues>(\n controlledEditingValues,\n onEditingValuesChange,\n {},\n );\n const [autoResetPageIndex, setAutoResetPageIndex] = React.useState(true);\n\n React.useEffect(() => {\n setAutoResetPageIndex(true);\n }, [rows]);\n\n const findRowById = React.useCallback(\n (rowId: string) => rows.find((row) => getRowId(row) === rowId) ?? null,\n [getRowId, rows],\n );\n\n const commitRowsChange = React.useCallback(\n (nextRows: TData[], event: DataTableRowsChangeEvent<TData>) => {\n setAutoResetPageIndex(false);\n setRows?.(nextRows);\n onRowsChange?.(event);\n },\n [onRowsChange, setRows],\n );\n\n const startEditingRow = React.useCallback(\n (\n row: TData,\n editableKeys: readonly EditableRowKey<TData>[],\n overrides?: Partial<Record<EditableRowKey<TData>, string>>,\n ) => {\n const rowId = getRowId(row);\n const initialValues = editableKeys.reduce<EditableValues>((accumulator, key) => {\n accumulator[key] = overrides?.[key] ?? toEditableString(row[key]);\n return accumulator;\n }, {});\n\n setEditingRowId(rowId);\n setEditingValues(initialValues);\n onRowEditStart?.({\n editableKeys,\n initialValues,\n row,\n rowId,\n });\n },\n [getRowId, onRowEditStart, setEditingRowId, setEditingValues],\n );\n\n const cancelEditingRow = React.useCallback(() => {\n const row = editingRowId ? findRowById(editingRowId) : null;\n const nextEditingValues = editingValues;\n\n setEditingRowId(null);\n setEditingValues({});\n onRowEditCancel?.({\n editingValues: nextEditingValues,\n row,\n rowId: editingRowId,\n });\n }, [\n editingRowId,\n editingValues,\n findRowById,\n onRowEditCancel,\n setEditingRowId,\n setEditingValues,\n ]);\n\n const saveEditingRow = React.useCallback(\n (rowId: string) => {\n const previousRow = findRowById(rowId);\n\n if (!previousRow) {\n return;\n }\n\n const nextRow = {\n ...previousRow,\n ...editingValues,\n };\n const previousRows = rows;\n const nextRows = previousRows.map((row) =>\n getRowId(row) === rowId ? nextRow : row,\n );\n const event: DataTableRowsChangeEvent<TData> = {\n editingValues,\n nextRow,\n nextRows,\n previousRow,\n previousRows,\n rowId,\n type: \"edit-save\",\n };\n\n commitRowsChange(nextRows, event);\n setEditingRowId(null);\n setEditingValues({});\n onRowEditSave?.({\n editingValues,\n nextRow,\n previousRow,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingValues,\n findRowById,\n getRowId,\n onRowEditSave,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n const deleteRow = React.useCallback(\n (rowId: string) => {\n const row = findRowById(rowId);\n\n if (!row) {\n return;\n }\n\n const previousRows = rows;\n const nextRows = previousRows.filter((item) => getRowId(item) !== rowId);\n const event: DataTableRowsChangeEvent<TData> = {\n nextRows,\n previousRows,\n row,\n rowId,\n type: \"delete\",\n };\n\n commitRowsChange(nextRows, event);\n\n if (editingRowId === rowId) {\n setEditingRowId(null);\n setEditingValues({});\n }\n\n onRowDelete?.({\n row,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingRowId,\n findRowById,\n getRowId,\n onRowDelete,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n return {\n autoResetPageIndex,\n cancelEditingRow,\n deleteRow,\n editingRowId,\n editingValues,\n saveEditingRow,\n setEditingValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nexport { useDataTableEditableRows };\nexport type {\n DataTableRowDeleteEvent,\n DataTableRowEditCancelEvent,\n DataTableRowEditSaveEvent,\n DataTableRowEditStartEvent,\n DataTableRowsChangeEvent,\n EditableRowKey,\n UseDataTableEditableRowsOptions,\n};\n"],"names":["toEditableString","value","applyUpdater","previousValue","updater","useControllableState","controlledValue","onChange","defaultValue","uncontrolledValue","setUncontrolledValue","React","isControlled","setValue","nextValue","useDataTableEditableRows","rows","getRowId","setRows","controlledEditingRowId","onEditingRowIdChange","controlledEditingValues","onEditingValuesChange","onRowDelete","onRowEditCancel","onRowEditSave","onRowEditStart","onRowsChange","editingRowId","setEditingRowId","editingValues","setEditingValues","autoResetPageIndex","setAutoResetPageIndex","findRowById","rowId","row","commitRowsChange","nextRows","event","startEditingRow","editableKeys","overrides","initialValues","accumulator","key","cancelEditingRow","nextEditingValues","saveEditingRow","previousRow","nextRow","previousRows","deleteRow","item"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components-data-table-use-data-table-editable-rows.cjs","sources":["../src/components/data-table/use-data-table-editable-rows.ts"],"sourcesContent":["import { startTransition, useCallback, useState } from \"react\";\nimport type { Dispatch, SetStateAction } from \"react\";\n\ntype EditableRowKey<TData> = Extract<keyof TData, string>;\ntype EditableValues = Record<string, string>;\n\ntype DataTableRowEditStartEvent<TData> = {\n editableKeys: readonly EditableRowKey<TData>[];\n initialValues: EditableValues;\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowEditCancelEvent<TData> = {\n editingValues: EditableValues;\n row: TData | null;\n rowId: string | null;\n};\n\ntype DataTableRowEditSaveEvent<TData> = {\n editingValues: EditableValues;\n nextRow: TData;\n previousRow: TData;\n rowId: string;\n};\n\ntype DataTableRowDeleteEvent<TData> = {\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowsChangeEvent<TData> =\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"edit-save\";\n } & DataTableRowEditSaveEvent<TData>)\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"delete\";\n } & DataTableRowDeleteEvent<TData>);\n\ntype UseDataTableEditableRowsOptions<TData> = {\n rows: TData[];\n getRowId: (row: TData) => string;\n setRows?: Dispatch<SetStateAction<TData[]>>;\n editingRowId?: string | null;\n onEditingRowIdChange?: (rowId: string | null) => void;\n editingValues?: EditableValues;\n onEditingValuesChange?: Dispatch<SetStateAction<EditableValues>>;\n onRowDelete?: (event: DataTableRowDeleteEvent<TData>) => void;\n onRowEditCancel?: (event: DataTableRowEditCancelEvent<TData>) => void;\n onRowEditSave?: (event: DataTableRowEditSaveEvent<TData>) => void;\n onRowEditStart?: (event: DataTableRowEditStartEvent<TData>) => void;\n onRowsChange?: (event: DataTableRowsChangeEvent<TData>) => void;\n};\n\nfunction toEditableString(value: unknown) {\n if (typeof value === \"string\") {\n return value;\n }\n\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction applyUpdater<TData>(previousValue: TData, updater: SetStateAction<TData>) {\n return typeof updater === \"function\"\n ? (updater as (value: TData) => TData)(previousValue)\n : updater;\n}\n\nfunction useControllableState<TData>(\n controlledValue: TData | undefined,\n onChange: ((nextValue: TData) => void) | undefined,\n defaultValue: TData,\n) {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n const setValue = useCallback(\n (updater: SetStateAction<TData>) => {\n const nextValue = applyUpdater(value, updater);\n\n if (!isControlled) {\n setUncontrolledValue(nextValue);\n }\n\n onChange?.(nextValue);\n },\n [isControlled, onChange, value],\n );\n\n return [value, setValue] as const;\n}\n\nfunction useDataTableEditableRows<TData>({\n rows,\n getRowId,\n setRows,\n editingRowId: controlledEditingRowId,\n onEditingRowIdChange,\n editingValues: controlledEditingValues,\n onEditingValuesChange,\n onRowDelete,\n onRowEditCancel,\n onRowEditSave,\n onRowEditStart,\n onRowsChange,\n}: UseDataTableEditableRowsOptions<TData>) {\n const [editingRowId, setEditingRowId] = useControllableState<string | null>(\n controlledEditingRowId,\n onEditingRowIdChange,\n null,\n );\n const [editingValues, setEditingValues] = useControllableState<EditableValues>(\n controlledEditingValues,\n onEditingValuesChange,\n {},\n );\n const [autoResetPageIndex, setAutoResetPageIndex] = useState(true);\n\n const findRowById = useCallback(\n (rowId: string) => rows.find((row) => getRowId(row) === rowId) ?? null,\n [getRowId, rows],\n );\n\n const commitRowsChange = useCallback(\n (nextRows: TData[], event: DataTableRowsChangeEvent<TData>) => {\n setAutoResetPageIndex(false);\n setRows?.(nextRows);\n onRowsChange?.(event);\n startTransition(() => {\n setAutoResetPageIndex(true);\n });\n },\n [onRowsChange, setRows],\n );\n\n const startEditingRow = useCallback(\n (\n row: TData,\n editableKeys: readonly EditableRowKey<TData>[],\n overrides?: Partial<Record<EditableRowKey<TData>, string>>,\n ) => {\n const rowId = getRowId(row);\n const initialValues = editableKeys.reduce<EditableValues>((accumulator, key) => {\n accumulator[key] = overrides?.[key] ?? toEditableString(row[key]);\n return accumulator;\n }, {});\n\n setEditingRowId(rowId);\n setEditingValues(initialValues);\n onRowEditStart?.({\n editableKeys,\n initialValues,\n row,\n rowId,\n });\n },\n [getRowId, onRowEditStart, setEditingRowId, setEditingValues],\n );\n\n const cancelEditingRow = useCallback(() => {\n const row = editingRowId ? findRowById(editingRowId) : null;\n const nextEditingValues = editingValues;\n\n setEditingRowId(null);\n setEditingValues({});\n onRowEditCancel?.({\n editingValues: nextEditingValues,\n row,\n rowId: editingRowId,\n });\n }, [\n editingRowId,\n editingValues,\n findRowById,\n onRowEditCancel,\n setEditingRowId,\n setEditingValues,\n ]);\n\n const saveEditingRow = useCallback(\n (rowId: string) => {\n const previousRow = findRowById(rowId);\n\n if (!previousRow) {\n return;\n }\n\n const nextRow = {\n ...previousRow,\n ...editingValues,\n };\n const previousRows = rows;\n const nextRows = previousRows.map((row) =>\n getRowId(row) === rowId ? nextRow : row,\n );\n const event: DataTableRowsChangeEvent<TData> = {\n editingValues,\n nextRow,\n nextRows,\n previousRow,\n previousRows,\n rowId,\n type: \"edit-save\",\n };\n\n commitRowsChange(nextRows, event);\n setEditingRowId(null);\n setEditingValues({});\n onRowEditSave?.({\n editingValues,\n nextRow,\n previousRow,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingValues,\n findRowById,\n getRowId,\n onRowEditSave,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n const deleteRow = useCallback(\n (rowId: string) => {\n const row = findRowById(rowId);\n\n if (!row) {\n return;\n }\n\n const previousRows = rows;\n const nextRows = previousRows.filter((item) => getRowId(item) !== rowId);\n const event: DataTableRowsChangeEvent<TData> = {\n nextRows,\n previousRows,\n row,\n rowId,\n type: \"delete\",\n };\n\n commitRowsChange(nextRows, event);\n\n if (editingRowId === rowId) {\n setEditingRowId(null);\n setEditingValues({});\n }\n\n onRowDelete?.({\n row,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingRowId,\n findRowById,\n getRowId,\n onRowDelete,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n return {\n autoResetPageIndex,\n cancelEditingRow,\n deleteRow,\n editingRowId,\n editingValues,\n saveEditingRow,\n setEditingValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nexport { useDataTableEditableRows };\nexport type {\n DataTableRowDeleteEvent,\n DataTableRowEditCancelEvent,\n DataTableRowEditSaveEvent,\n DataTableRowEditStartEvent,\n DataTableRowsChangeEvent,\n EditableRowKey,\n UseDataTableEditableRowsOptions,\n};\n"],"names":["toEditableString","value","applyUpdater","previousValue","updater","useControllableState","controlledValue","onChange","defaultValue","uncontrolledValue","setUncontrolledValue","useState","isControlled","setValue","useCallback","nextValue","useDataTableEditableRows","rows","getRowId","setRows","controlledEditingRowId","onEditingRowIdChange","controlledEditingValues","onEditingValuesChange","onRowDelete","onRowEditCancel","onRowEditSave","onRowEditStart","onRowsChange","editingRowId","setEditingRowId","editingValues","setEditingValues","autoResetPageIndex","setAutoResetPageIndex","findRowById","rowId","row","commitRowsChange","nextRows","event","startTransition","startEditingRow","editableKeys","overrides","initialValues","accumulator","key","cancelEditingRow","nextEditingValues","saveEditingRow","previousRow","nextRow","previousRows","deleteRow","item"],"mappings":"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"}
|
|
@@ -1,156 +1,154 @@
|
|
|
1
|
-
import
|
|
2
|
-
function
|
|
1
|
+
import { useState as B, useCallback as a, startTransition as F } from "react";
|
|
2
|
+
function G(n) {
|
|
3
3
|
return typeof n == "string" ? n : typeof n == "number" || typeof n == "boolean" ? String(n) : "";
|
|
4
4
|
}
|
|
5
|
-
function
|
|
5
|
+
function H(n, s) {
|
|
6
6
|
return typeof s == "function" ? s(n) : s;
|
|
7
7
|
}
|
|
8
|
-
function
|
|
9
|
-
const [
|
|
10
|
-
(
|
|
11
|
-
const
|
|
12
|
-
|
|
8
|
+
function A(n, s, v) {
|
|
9
|
+
const [R, P] = B(v), V = n !== void 0, g = V ? n : R, m = a(
|
|
10
|
+
(y) => {
|
|
11
|
+
const x = H(g, y);
|
|
12
|
+
V || P(x), s?.(x);
|
|
13
13
|
},
|
|
14
|
-
[
|
|
14
|
+
[V, s, g]
|
|
15
15
|
);
|
|
16
|
-
return [
|
|
16
|
+
return [g, m];
|
|
17
17
|
}
|
|
18
|
-
function
|
|
18
|
+
function L({
|
|
19
19
|
rows: n,
|
|
20
20
|
getRowId: s,
|
|
21
|
-
setRows:
|
|
22
|
-
editingRowId:
|
|
23
|
-
onEditingRowIdChange:
|
|
24
|
-
editingValues:
|
|
25
|
-
onEditingValuesChange:
|
|
26
|
-
onRowDelete:
|
|
27
|
-
onRowEditCancel:
|
|
28
|
-
onRowEditSave:
|
|
29
|
-
onRowEditStart:
|
|
30
|
-
onRowsChange:
|
|
21
|
+
setRows: v,
|
|
22
|
+
editingRowId: R,
|
|
23
|
+
onEditingRowIdChange: P,
|
|
24
|
+
editingValues: V,
|
|
25
|
+
onEditingValuesChange: g,
|
|
26
|
+
onRowDelete: m,
|
|
27
|
+
onRowEditCancel: y,
|
|
28
|
+
onRowEditSave: x,
|
|
29
|
+
onRowEditStart: S,
|
|
30
|
+
onRowsChange: T
|
|
31
31
|
}) {
|
|
32
|
-
const [
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
const [l, i] = A(
|
|
33
|
+
R,
|
|
34
|
+
P,
|
|
35
35
|
null
|
|
36
|
-
), [
|
|
37
|
-
d,
|
|
36
|
+
), [r, o] = A(
|
|
38
37
|
V,
|
|
38
|
+
g,
|
|
39
39
|
{}
|
|
40
|
-
), [
|
|
41
|
-
i.useEffect(() => {
|
|
42
|
-
P(!0);
|
|
43
|
-
}, [n]);
|
|
44
|
-
const r = i.useCallback(
|
|
40
|
+
), [C, U] = B(!0), f = a(
|
|
45
41
|
(t) => n.find((e) => s(e) === t) ?? null,
|
|
46
42
|
[s, n]
|
|
47
|
-
),
|
|
43
|
+
), E = a(
|
|
48
44
|
(t, e) => {
|
|
49
|
-
|
|
45
|
+
U(!1), v?.(t), T?.(e), F(() => {
|
|
46
|
+
U(!0);
|
|
47
|
+
});
|
|
50
48
|
},
|
|
51
|
-
[
|
|
52
|
-
),
|
|
53
|
-
(t, e,
|
|
54
|
-
const
|
|
55
|
-
|
|
49
|
+
[T, v]
|
|
50
|
+
), j = a(
|
|
51
|
+
(t, e, u) => {
|
|
52
|
+
const c = s(t), p = e.reduce((b, d) => (b[d] = u?.[d] ?? G(t[d]), b), {});
|
|
53
|
+
i(c), o(p), S?.({
|
|
56
54
|
editableKeys: e,
|
|
57
55
|
initialValues: p,
|
|
58
56
|
row: t,
|
|
59
|
-
rowId:
|
|
57
|
+
rowId: c
|
|
60
58
|
});
|
|
61
59
|
},
|
|
62
|
-
[s,
|
|
63
|
-
),
|
|
64
|
-
const t =
|
|
65
|
-
|
|
60
|
+
[s, S, i, o]
|
|
61
|
+
), q = a(() => {
|
|
62
|
+
const t = l ? f(l) : null, e = r;
|
|
63
|
+
i(null), o({}), y?.({
|
|
66
64
|
editingValues: e,
|
|
67
65
|
row: t,
|
|
68
|
-
rowId:
|
|
66
|
+
rowId: l
|
|
69
67
|
});
|
|
70
68
|
}, [
|
|
71
|
-
a,
|
|
72
|
-
f,
|
|
73
|
-
r,
|
|
74
|
-
E,
|
|
75
69
|
l,
|
|
76
|
-
|
|
77
|
-
|
|
70
|
+
r,
|
|
71
|
+
f,
|
|
72
|
+
y,
|
|
73
|
+
i,
|
|
74
|
+
o
|
|
75
|
+
]), z = a(
|
|
78
76
|
(t) => {
|
|
79
|
-
const e =
|
|
77
|
+
const e = f(t);
|
|
80
78
|
if (!e)
|
|
81
79
|
return;
|
|
82
|
-
const
|
|
80
|
+
const u = {
|
|
83
81
|
...e,
|
|
84
|
-
...
|
|
85
|
-
},
|
|
86
|
-
(
|
|
82
|
+
...r
|
|
83
|
+
}, c = n, p = c.map(
|
|
84
|
+
(d) => s(d) === t ? u : d
|
|
87
85
|
);
|
|
88
|
-
|
|
89
|
-
editingValues:
|
|
90
|
-
nextRow:
|
|
86
|
+
E(p, {
|
|
87
|
+
editingValues: r,
|
|
88
|
+
nextRow: u,
|
|
91
89
|
nextRows: p,
|
|
92
90
|
previousRow: e,
|
|
93
|
-
previousRows:
|
|
91
|
+
previousRows: c,
|
|
94
92
|
rowId: t,
|
|
95
93
|
type: "edit-save"
|
|
96
|
-
}),
|
|
97
|
-
editingValues:
|
|
98
|
-
nextRow:
|
|
94
|
+
}), i(null), o({}), x?.({
|
|
95
|
+
editingValues: r,
|
|
96
|
+
nextRow: u,
|
|
99
97
|
previousRow: e,
|
|
100
98
|
rowId: t
|
|
101
99
|
});
|
|
102
100
|
},
|
|
103
101
|
[
|
|
104
|
-
|
|
105
|
-
f,
|
|
102
|
+
E,
|
|
106
103
|
r,
|
|
104
|
+
f,
|
|
107
105
|
s,
|
|
108
|
-
|
|
106
|
+
x,
|
|
109
107
|
n,
|
|
110
|
-
|
|
111
|
-
|
|
108
|
+
i,
|
|
109
|
+
o
|
|
112
110
|
]
|
|
113
|
-
),
|
|
111
|
+
), D = a(
|
|
114
112
|
(t) => {
|
|
115
|
-
const e =
|
|
113
|
+
const e = f(t);
|
|
116
114
|
if (!e)
|
|
117
115
|
return;
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
nextRows:
|
|
121
|
-
previousRows:
|
|
116
|
+
const u = n, c = u.filter((b) => s(b) !== t);
|
|
117
|
+
E(c, {
|
|
118
|
+
nextRows: c,
|
|
119
|
+
previousRows: u,
|
|
122
120
|
row: e,
|
|
123
121
|
rowId: t,
|
|
124
122
|
type: "delete"
|
|
125
|
-
}),
|
|
123
|
+
}), l === t && (i(null), o({})), m?.({
|
|
126
124
|
row: e,
|
|
127
125
|
rowId: t
|
|
128
126
|
});
|
|
129
127
|
},
|
|
130
128
|
[
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
129
|
+
E,
|
|
130
|
+
l,
|
|
131
|
+
f,
|
|
134
132
|
s,
|
|
135
|
-
|
|
133
|
+
m,
|
|
136
134
|
n,
|
|
137
|
-
|
|
138
|
-
|
|
135
|
+
i,
|
|
136
|
+
o
|
|
139
137
|
]
|
|
140
138
|
);
|
|
141
139
|
return {
|
|
142
|
-
autoResetPageIndex:
|
|
143
|
-
cancelEditingRow:
|
|
144
|
-
deleteRow:
|
|
145
|
-
editingRowId:
|
|
146
|
-
editingValues:
|
|
147
|
-
saveEditingRow:
|
|
148
|
-
setEditingValues:
|
|
149
|
-
setEditingRowId:
|
|
150
|
-
startEditingRow:
|
|
140
|
+
autoResetPageIndex: C,
|
|
141
|
+
cancelEditingRow: q,
|
|
142
|
+
deleteRow: D,
|
|
143
|
+
editingRowId: l,
|
|
144
|
+
editingValues: r,
|
|
145
|
+
saveEditingRow: z,
|
|
146
|
+
setEditingValues: o,
|
|
147
|
+
setEditingRowId: i,
|
|
148
|
+
startEditingRow: j
|
|
151
149
|
};
|
|
152
150
|
}
|
|
153
151
|
export {
|
|
154
|
-
|
|
152
|
+
L as useDataTableEditableRows
|
|
155
153
|
};
|
|
156
154
|
//# sourceMappingURL=components-data-table-use-data-table-editable-rows.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-data-table-use-data-table-editable-rows.js","sources":["../src/components/data-table/use-data-table-editable-rows.ts"],"sourcesContent":["import * as React from \"react\";\n\ntype EditableRowKey<TData> = Extract<keyof TData, string>;\ntype EditableValues = Record<string, string>;\n\ntype DataTableRowEditStartEvent<TData> = {\n editableKeys: readonly EditableRowKey<TData>[];\n initialValues: EditableValues;\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowEditCancelEvent<TData> = {\n editingValues: EditableValues;\n row: TData | null;\n rowId: string | null;\n};\n\ntype DataTableRowEditSaveEvent<TData> = {\n editingValues: EditableValues;\n nextRow: TData;\n previousRow: TData;\n rowId: string;\n};\n\ntype DataTableRowDeleteEvent<TData> = {\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowsChangeEvent<TData> =\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"edit-save\";\n } & DataTableRowEditSaveEvent<TData>)\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"delete\";\n } & DataTableRowDeleteEvent<TData>);\n\ntype UseDataTableEditableRowsOptions<TData> = {\n rows: TData[];\n getRowId: (row: TData) => string;\n setRows?: React.Dispatch<React.SetStateAction<TData[]>>;\n editingRowId?: string | null;\n onEditingRowIdChange?: (rowId: string | null) => void;\n editingValues?: EditableValues;\n onEditingValuesChange?: React.Dispatch<React.SetStateAction<EditableValues>>;\n onRowDelete?: (event: DataTableRowDeleteEvent<TData>) => void;\n onRowEditCancel?: (event: DataTableRowEditCancelEvent<TData>) => void;\n onRowEditSave?: (event: DataTableRowEditSaveEvent<TData>) => void;\n onRowEditStart?: (event: DataTableRowEditStartEvent<TData>) => void;\n onRowsChange?: (event: DataTableRowsChangeEvent<TData>) => void;\n};\n\nfunction toEditableString(value: unknown) {\n if (typeof value === \"string\") {\n return value;\n }\n\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction applyUpdater<TData>(previousValue: TData, updater: React.SetStateAction<TData>) {\n return typeof updater === \"function\"\n ? (updater as (value: TData) => TData)(previousValue)\n : updater;\n}\n\nfunction useControllableState<TData>(\n controlledValue: TData | undefined,\n onChange: ((nextValue: TData) => void) | undefined,\n defaultValue: TData,\n) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n const setValue = React.useCallback(\n (updater: React.SetStateAction<TData>) => {\n const nextValue = applyUpdater(value, updater);\n\n if (!isControlled) {\n setUncontrolledValue(nextValue);\n }\n\n onChange?.(nextValue);\n },\n [isControlled, onChange, value],\n );\n\n return [value, setValue] as const;\n}\n\nfunction useDataTableEditableRows<TData>({\n rows,\n getRowId,\n setRows,\n editingRowId: controlledEditingRowId,\n onEditingRowIdChange,\n editingValues: controlledEditingValues,\n onEditingValuesChange,\n onRowDelete,\n onRowEditCancel,\n onRowEditSave,\n onRowEditStart,\n onRowsChange,\n}: UseDataTableEditableRowsOptions<TData>) {\n const [editingRowId, setEditingRowId] = useControllableState<string | null>(\n controlledEditingRowId,\n onEditingRowIdChange,\n null,\n );\n const [editingValues, setEditingValues] = useControllableState<EditableValues>(\n controlledEditingValues,\n onEditingValuesChange,\n {},\n );\n const [autoResetPageIndex, setAutoResetPageIndex] = React.useState(true);\n\n React.useEffect(() => {\n setAutoResetPageIndex(true);\n }, [rows]);\n\n const findRowById = React.useCallback(\n (rowId: string) => rows.find((row) => getRowId(row) === rowId) ?? null,\n [getRowId, rows],\n );\n\n const commitRowsChange = React.useCallback(\n (nextRows: TData[], event: DataTableRowsChangeEvent<TData>) => {\n setAutoResetPageIndex(false);\n setRows?.(nextRows);\n onRowsChange?.(event);\n },\n [onRowsChange, setRows],\n );\n\n const startEditingRow = React.useCallback(\n (\n row: TData,\n editableKeys: readonly EditableRowKey<TData>[],\n overrides?: Partial<Record<EditableRowKey<TData>, string>>,\n ) => {\n const rowId = getRowId(row);\n const initialValues = editableKeys.reduce<EditableValues>((accumulator, key) => {\n accumulator[key] = overrides?.[key] ?? toEditableString(row[key]);\n return accumulator;\n }, {});\n\n setEditingRowId(rowId);\n setEditingValues(initialValues);\n onRowEditStart?.({\n editableKeys,\n initialValues,\n row,\n rowId,\n });\n },\n [getRowId, onRowEditStart, setEditingRowId, setEditingValues],\n );\n\n const cancelEditingRow = React.useCallback(() => {\n const row = editingRowId ? findRowById(editingRowId) : null;\n const nextEditingValues = editingValues;\n\n setEditingRowId(null);\n setEditingValues({});\n onRowEditCancel?.({\n editingValues: nextEditingValues,\n row,\n rowId: editingRowId,\n });\n }, [\n editingRowId,\n editingValues,\n findRowById,\n onRowEditCancel,\n setEditingRowId,\n setEditingValues,\n ]);\n\n const saveEditingRow = React.useCallback(\n (rowId: string) => {\n const previousRow = findRowById(rowId);\n\n if (!previousRow) {\n return;\n }\n\n const nextRow = {\n ...previousRow,\n ...editingValues,\n };\n const previousRows = rows;\n const nextRows = previousRows.map((row) =>\n getRowId(row) === rowId ? nextRow : row,\n );\n const event: DataTableRowsChangeEvent<TData> = {\n editingValues,\n nextRow,\n nextRows,\n previousRow,\n previousRows,\n rowId,\n type: \"edit-save\",\n };\n\n commitRowsChange(nextRows, event);\n setEditingRowId(null);\n setEditingValues({});\n onRowEditSave?.({\n editingValues,\n nextRow,\n previousRow,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingValues,\n findRowById,\n getRowId,\n onRowEditSave,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n const deleteRow = React.useCallback(\n (rowId: string) => {\n const row = findRowById(rowId);\n\n if (!row) {\n return;\n }\n\n const previousRows = rows;\n const nextRows = previousRows.filter((item) => getRowId(item) !== rowId);\n const event: DataTableRowsChangeEvent<TData> = {\n nextRows,\n previousRows,\n row,\n rowId,\n type: \"delete\",\n };\n\n commitRowsChange(nextRows, event);\n\n if (editingRowId === rowId) {\n setEditingRowId(null);\n setEditingValues({});\n }\n\n onRowDelete?.({\n row,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingRowId,\n findRowById,\n getRowId,\n onRowDelete,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n return {\n autoResetPageIndex,\n cancelEditingRow,\n deleteRow,\n editingRowId,\n editingValues,\n saveEditingRow,\n setEditingValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nexport { useDataTableEditableRows };\nexport type {\n DataTableRowDeleteEvent,\n DataTableRowEditCancelEvent,\n DataTableRowEditSaveEvent,\n DataTableRowEditStartEvent,\n DataTableRowsChangeEvent,\n EditableRowKey,\n UseDataTableEditableRowsOptions,\n};\n"],"names":["toEditableString","value","applyUpdater","previousValue","updater","useControllableState","controlledValue","onChange","defaultValue","uncontrolledValue","setUncontrolledValue","React","isControlled","setValue","nextValue","useDataTableEditableRows","rows","getRowId","setRows","controlledEditingRowId","onEditingRowIdChange","controlledEditingValues","onEditingValuesChange","onRowDelete","onRowEditCancel","onRowEditSave","onRowEditStart","onRowsChange","editingRowId","setEditingRowId","editingValues","setEditingValues","autoResetPageIndex","setAutoResetPageIndex","findRowById","rowId","row","commitRowsChange","nextRows","event","startEditingRow","editableKeys","overrides","initialValues","accumulator","key","cancelEditingRow","nextEditingValues","saveEditingRow","previousRow","nextRow","previousRows","deleteRow","item"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components-data-table-use-data-table-editable-rows.js","sources":["../src/components/data-table/use-data-table-editable-rows.ts"],"sourcesContent":["import { startTransition, useCallback, useState } from \"react\";\nimport type { Dispatch, SetStateAction } from \"react\";\n\ntype EditableRowKey<TData> = Extract<keyof TData, string>;\ntype EditableValues = Record<string, string>;\n\ntype DataTableRowEditStartEvent<TData> = {\n editableKeys: readonly EditableRowKey<TData>[];\n initialValues: EditableValues;\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowEditCancelEvent<TData> = {\n editingValues: EditableValues;\n row: TData | null;\n rowId: string | null;\n};\n\ntype DataTableRowEditSaveEvent<TData> = {\n editingValues: EditableValues;\n nextRow: TData;\n previousRow: TData;\n rowId: string;\n};\n\ntype DataTableRowDeleteEvent<TData> = {\n row: TData;\n rowId: string;\n};\n\ntype DataTableRowsChangeEvent<TData> =\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"edit-save\";\n } & DataTableRowEditSaveEvent<TData>)\n | ({\n nextRows: TData[];\n previousRows: TData[];\n type: \"delete\";\n } & DataTableRowDeleteEvent<TData>);\n\ntype UseDataTableEditableRowsOptions<TData> = {\n rows: TData[];\n getRowId: (row: TData) => string;\n setRows?: Dispatch<SetStateAction<TData[]>>;\n editingRowId?: string | null;\n onEditingRowIdChange?: (rowId: string | null) => void;\n editingValues?: EditableValues;\n onEditingValuesChange?: Dispatch<SetStateAction<EditableValues>>;\n onRowDelete?: (event: DataTableRowDeleteEvent<TData>) => void;\n onRowEditCancel?: (event: DataTableRowEditCancelEvent<TData>) => void;\n onRowEditSave?: (event: DataTableRowEditSaveEvent<TData>) => void;\n onRowEditStart?: (event: DataTableRowEditStartEvent<TData>) => void;\n onRowsChange?: (event: DataTableRowsChangeEvent<TData>) => void;\n};\n\nfunction toEditableString(value: unknown) {\n if (typeof value === \"string\") {\n return value;\n }\n\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction applyUpdater<TData>(previousValue: TData, updater: SetStateAction<TData>) {\n return typeof updater === \"function\"\n ? (updater as (value: TData) => TData)(previousValue)\n : updater;\n}\n\nfunction useControllableState<TData>(\n controlledValue: TData | undefined,\n onChange: ((nextValue: TData) => void) | undefined,\n defaultValue: TData,\n) {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n const setValue = useCallback(\n (updater: SetStateAction<TData>) => {\n const nextValue = applyUpdater(value, updater);\n\n if (!isControlled) {\n setUncontrolledValue(nextValue);\n }\n\n onChange?.(nextValue);\n },\n [isControlled, onChange, value],\n );\n\n return [value, setValue] as const;\n}\n\nfunction useDataTableEditableRows<TData>({\n rows,\n getRowId,\n setRows,\n editingRowId: controlledEditingRowId,\n onEditingRowIdChange,\n editingValues: controlledEditingValues,\n onEditingValuesChange,\n onRowDelete,\n onRowEditCancel,\n onRowEditSave,\n onRowEditStart,\n onRowsChange,\n}: UseDataTableEditableRowsOptions<TData>) {\n const [editingRowId, setEditingRowId] = useControllableState<string | null>(\n controlledEditingRowId,\n onEditingRowIdChange,\n null,\n );\n const [editingValues, setEditingValues] = useControllableState<EditableValues>(\n controlledEditingValues,\n onEditingValuesChange,\n {},\n );\n const [autoResetPageIndex, setAutoResetPageIndex] = useState(true);\n\n const findRowById = useCallback(\n (rowId: string) => rows.find((row) => getRowId(row) === rowId) ?? null,\n [getRowId, rows],\n );\n\n const commitRowsChange = useCallback(\n (nextRows: TData[], event: DataTableRowsChangeEvent<TData>) => {\n setAutoResetPageIndex(false);\n setRows?.(nextRows);\n onRowsChange?.(event);\n startTransition(() => {\n setAutoResetPageIndex(true);\n });\n },\n [onRowsChange, setRows],\n );\n\n const startEditingRow = useCallback(\n (\n row: TData,\n editableKeys: readonly EditableRowKey<TData>[],\n overrides?: Partial<Record<EditableRowKey<TData>, string>>,\n ) => {\n const rowId = getRowId(row);\n const initialValues = editableKeys.reduce<EditableValues>((accumulator, key) => {\n accumulator[key] = overrides?.[key] ?? toEditableString(row[key]);\n return accumulator;\n }, {});\n\n setEditingRowId(rowId);\n setEditingValues(initialValues);\n onRowEditStart?.({\n editableKeys,\n initialValues,\n row,\n rowId,\n });\n },\n [getRowId, onRowEditStart, setEditingRowId, setEditingValues],\n );\n\n const cancelEditingRow = useCallback(() => {\n const row = editingRowId ? findRowById(editingRowId) : null;\n const nextEditingValues = editingValues;\n\n setEditingRowId(null);\n setEditingValues({});\n onRowEditCancel?.({\n editingValues: nextEditingValues,\n row,\n rowId: editingRowId,\n });\n }, [\n editingRowId,\n editingValues,\n findRowById,\n onRowEditCancel,\n setEditingRowId,\n setEditingValues,\n ]);\n\n const saveEditingRow = useCallback(\n (rowId: string) => {\n const previousRow = findRowById(rowId);\n\n if (!previousRow) {\n return;\n }\n\n const nextRow = {\n ...previousRow,\n ...editingValues,\n };\n const previousRows = rows;\n const nextRows = previousRows.map((row) =>\n getRowId(row) === rowId ? nextRow : row,\n );\n const event: DataTableRowsChangeEvent<TData> = {\n editingValues,\n nextRow,\n nextRows,\n previousRow,\n previousRows,\n rowId,\n type: \"edit-save\",\n };\n\n commitRowsChange(nextRows, event);\n setEditingRowId(null);\n setEditingValues({});\n onRowEditSave?.({\n editingValues,\n nextRow,\n previousRow,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingValues,\n findRowById,\n getRowId,\n onRowEditSave,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n const deleteRow = useCallback(\n (rowId: string) => {\n const row = findRowById(rowId);\n\n if (!row) {\n return;\n }\n\n const previousRows = rows;\n const nextRows = previousRows.filter((item) => getRowId(item) !== rowId);\n const event: DataTableRowsChangeEvent<TData> = {\n nextRows,\n previousRows,\n row,\n rowId,\n type: \"delete\",\n };\n\n commitRowsChange(nextRows, event);\n\n if (editingRowId === rowId) {\n setEditingRowId(null);\n setEditingValues({});\n }\n\n onRowDelete?.({\n row,\n rowId,\n });\n },\n [\n commitRowsChange,\n editingRowId,\n findRowById,\n getRowId,\n onRowDelete,\n rows,\n setEditingRowId,\n setEditingValues,\n ],\n );\n\n return {\n autoResetPageIndex,\n cancelEditingRow,\n deleteRow,\n editingRowId,\n editingValues,\n saveEditingRow,\n setEditingValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nexport { useDataTableEditableRows };\nexport type {\n DataTableRowDeleteEvent,\n DataTableRowEditCancelEvent,\n DataTableRowEditSaveEvent,\n DataTableRowEditStartEvent,\n DataTableRowsChangeEvent,\n EditableRowKey,\n UseDataTableEditableRowsOptions,\n};\n"],"names":["toEditableString","value","applyUpdater","previousValue","updater","useControllableState","controlledValue","onChange","defaultValue","uncontrolledValue","setUncontrolledValue","useState","isControlled","setValue","useCallback","nextValue","useDataTableEditableRows","rows","getRowId","setRows","controlledEditingRowId","onEditingRowIdChange","controlledEditingValues","onEditingValuesChange","onRowDelete","onRowEditCancel","onRowEditSave","onRowEditStart","onRowsChange","editingRowId","setEditingRowId","editingValues","setEditingValues","autoResetPageIndex","setAutoResetPageIndex","findRowById","rowId","row","commitRowsChange","nextRows","event","startTransition","startEditingRow","editableKeys","overrides","initialValues","accumulator","key","cancelEditingRow","nextEditingValues","saveEditingRow","previousRow","nextRow","previousRows","deleteRow","item"],"mappings":";AA0DA,SAASA,EAAiBC,GAAgB;AACxC,SAAI,OAAOA,KAAU,WACZA,IAGL,OAAOA,KAAU,YAAY,OAAOA,KAAU,YACzC,OAAOA,CAAK,IAGd;AACT;AAEA,SAASC,EAAoBC,GAAsBC,GAAgC;AACjF,SAAO,OAAOA,KAAY,aACrBA,EAAoCD,CAAa,IAClDC;AACN;AAEA,SAASC,EACPC,GACAC,GACAC,GACA;AACA,QAAM,CAACC,GAAmBC,CAAoB,IAAIC,EAASH,CAAY,GACjEI,IAAeN,MAAoB,QACnCL,IAAQW,IAAeN,IAAkBG,GAEzCI,IAAWC;AAAA,IACf,CAACV,MAAmC;AAClC,YAAMW,IAAYb,EAAaD,GAAOG,CAAO;AAE7C,MAAKQ,KACHF,EAAqBK,CAAS,GAGhCR,IAAWQ,CAAS;AAAA,IACtB;AAAA,IACA,CAACH,GAAcL,GAAUN,CAAK;AAAA,EAAA;AAGhC,SAAO,CAACA,GAAOY,CAAQ;AACzB;AAEA,SAASG,EAAgC;AAAA,EACvC,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,cAAcC;AAAA,EACd,sBAAAC;AAAA,EACA,eAAeC;AAAA,EACf,uBAAAC;AAAA,EACA,aAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,cAAAC;AACF,GAA2C;AACzC,QAAM,CAACC,GAAcC,CAAe,IAAIzB;AAAA,IACtCe;AAAA,IACAC;AAAA,IACA;AAAA,EAAA,GAEI,CAACU,GAAeC,CAAgB,IAAI3B;AAAA,IACxCiB;AAAA,IACAC;AAAA,IACA,CAAA;AAAA,EAAC,GAEG,CAACU,GAAoBC,CAAqB,IAAIvB,EAAS,EAAI,GAE3DwB,IAAcrB;AAAA,IAClB,CAACsB,MAAkBnB,EAAK,KAAK,CAACoB,MAAQnB,EAASmB,CAAG,MAAMD,CAAK,KAAK;AAAA,IAClE,CAAClB,GAAUD,CAAI;AAAA,EAAA,GAGXqB,IAAmBxB;AAAA,IACvB,CAACyB,GAAmBC,MAA2C;AAC7D,MAAAN,EAAsB,EAAK,GAC3Bf,IAAUoB,CAAQ,GAClBX,IAAeY,CAAK,GACpBC,EAAgB,MAAM;AACpB,QAAAP,EAAsB,EAAI;AAAA,MAC5B,CAAC;AAAA,IACH;AAAA,IACA,CAACN,GAAcT,CAAO;AAAA,EAAA,GAGlBuB,IAAkB5B;AAAA,IACtB,CACEuB,GACAM,GACAC,MACG;AACH,YAAMR,IAAQlB,EAASmB,CAAG,GACpBQ,IAAgBF,EAAa,OAAuB,CAACG,GAAaC,OACtED,EAAYC,CAAG,IAAIH,IAAYG,CAAG,KAAK/C,EAAiBqC,EAAIU,CAAG,CAAC,GACzDD,IACN,CAAA,CAAE;AAEL,MAAAhB,EAAgBM,CAAK,GACrBJ,EAAiBa,CAAa,GAC9BlB,IAAiB;AAAA,QACf,cAAAgB;AAAA,QACA,eAAAE;AAAA,QACA,KAAAR;AAAA,QACA,OAAAD;AAAA,MAAA,CACD;AAAA,IACH;AAAA,IACA,CAAClB,GAAUS,GAAgBG,GAAiBE,CAAgB;AAAA,EAAA,GAGxDgB,IAAmBlC,EAAY,MAAM;AACzC,UAAMuB,IAAMR,IAAeM,EAAYN,CAAY,IAAI,MACjDoB,IAAoBlB;AAE1B,IAAAD,EAAgB,IAAI,GACpBE,EAAiB,CAAA,CAAE,GACnBP,IAAkB;AAAA,MAChB,eAAewB;AAAA,MACf,KAAAZ;AAAA,MACA,OAAOR;AAAA,IAAA,CACR;AAAA,EACH,GAAG;AAAA,IACDA;AAAA,IACAE;AAAA,IACAI;AAAA,IACAV;AAAA,IACAK;AAAA,IACAE;AAAA,EAAA,CACD,GAEKkB,IAAiBpC;AAAA,IACrB,CAACsB,MAAkB;AACjB,YAAMe,IAAchB,EAAYC,CAAK;AAErC,UAAI,CAACe;AACH;AAGF,YAAMC,IAAU;AAAA,QACd,GAAGD;AAAA,QACH,GAAGpB;AAAA,MAAA,GAECsB,IAAepC,GACfsB,IAAWc,EAAa;AAAA,QAAI,CAAChB,MACjCnB,EAASmB,CAAG,MAAMD,IAAQgB,IAAUf;AAAA,MAAA;AAYtC,MAAAC,EAAiBC,GAV8B;AAAA,QAC7C,eAAAR;AAAA,QACA,SAAAqB;AAAA,QACA,UAAAb;AAAA,QACA,aAAAY;AAAA,QACA,cAAAE;AAAA,QACA,OAAAjB;AAAA,QACA,MAAM;AAAA,MAAA,CAGwB,GAChCN,EAAgB,IAAI,GACpBE,EAAiB,CAAA,CAAE,GACnBN,IAAgB;AAAA,QACd,eAAAK;AAAA,QACA,SAAAqB;AAAA,QACA,aAAAD;AAAA,QACA,OAAAf;AAAA,MAAA,CACD;AAAA,IACH;AAAA,IACA;AAAA,MACEE;AAAA,MACAP;AAAA,MACAI;AAAA,MACAjB;AAAA,MACAQ;AAAA,MACAT;AAAA,MACAa;AAAA,MACAE;AAAA,IAAA;AAAA,EACF,GAGIsB,IAAYxC;AAAA,IAChB,CAACsB,MAAkB;AACjB,YAAMC,IAAMF,EAAYC,CAAK;AAE7B,UAAI,CAACC;AACH;AAGF,YAAMgB,IAAepC,GACfsB,IAAWc,EAAa,OAAO,CAACE,MAASrC,EAASqC,CAAI,MAAMnB,CAAK;AASvE,MAAAE,EAAiBC,GAR8B;AAAA,QAC7C,UAAAA;AAAA,QACA,cAAAc;AAAA,QACA,KAAAhB;AAAA,QACA,OAAAD;AAAA,QACA,MAAM;AAAA,MAAA,CAGwB,GAE5BP,MAAiBO,MACnBN,EAAgB,IAAI,GACpBE,EAAiB,CAAA,CAAE,IAGrBR,IAAc;AAAA,QACZ,KAAAa;AAAA,QACA,OAAAD;AAAA,MAAA,CACD;AAAA,IACH;AAAA,IACA;AAAA,MACEE;AAAA,MACAT;AAAA,MACAM;AAAA,MACAjB;AAAA,MACAM;AAAA,MACAP;AAAA,MACAa;AAAA,MACAE;AAAA,IAAA;AAAA,EACF;AAGF,SAAO;AAAA,IACL,oBAAAC;AAAA,IACA,kBAAAe;AAAA,IACA,WAAAM;AAAA,IACA,cAAAzB;AAAA,IACA,eAAAE;AAAA,IACA,gBAAAmB;AAAA,IACA,kBAAAlB;AAAA,IACA,iBAAAF;AAAA,IACA,iBAAAY;AAAA,EAAA;AAEJ;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),p=require("./lib-utils.cjs"),A=require("react"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),p=require("./lib-utils.cjs"),A=require("react"),K=require("./index-DJD-8LQA.cjs"),V=require("phosphor-strokes-icons/icons/Plus"),H=require("phosphor-strokes-icons/icons/SpinnerGap"),j=require("./components-icons-stroke-icon.cjs"),J=require("phosphor-strokes-icons/icons/X"),M=require("./components-ui-typography-typography.cjs");require("./components-ui-typography-typography.styles.cjs");const Q=["B","KB","MB","GB","TB"],x=1024,W=5*x*x,Y=5,ee=["all"],te=800,re={image:{"image/*":[".jpg",".jpeg",".png",".webp"]},pdf:{"application/pdf":[".pdf"]},doc:{"application/msword":[".doc"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":[".docx"]},excel:{"application/vnd.ms-excel":[".xls"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":[".xlsx"]},text:{"text/plain":[".txt"]},all:{}},se=e=>{if(!e)return"0 B";const t=Math.floor(Math.log(e)/Math.log(x));return`${(e/Math.pow(x,t)).toFixed(2)} ${Q[t]}`},v=e=>`${e.name}:${e.size}`,oe=e=>e.reduce((t,o)=>({...t,...re[o]}),{}),ne=(e,t)=>{const o=e.filter(n=>n.status==="uploaded"),c=e.filter(n=>n.status==="error"),a=Math.max(0,t-o.length);return[...o,...c.slice(0,a)]},S=(e,t,o)=>({url:URL.createObjectURL(e),name:e.name,size:se(e.size),addedAt:new Date().toISOString(),status:t,error:o}),ce=e=>e==="file-too-large"?"Файл слишком большой":"Неподдерживаемый формат",le=(e,t,o)=>{const c=new Set(o.map(v)),a=new Set(t.map(v));return e.filter(n=>{if(n.status!=="error")return!0;const g=v(n);return!c.has(g)&&!a.has(g)})},ie=e=>{const t=e.name.split(".").pop()?.toLowerCase();return t?["jpg","jpeg","png","webp"].includes(t)?"image":t==="pdf"?"pdf":["doc","docx"].includes(t)?"doc":["xls","xlsx"].includes(t)?"excel":t==="txt"?"text":"other":"other"},ae=({value:e=[],onChange:t,multiple:o=!1,maxFiles:c=Y,disabled:a=!1,className:n,maxSize:g=W,variant:h="grid",accepts:U=ee,icon:q,title:w,text:F,showFiles:L=!0,isErrorText:$=!1})=>{const[b,I]=A.useState(!1),[_,E]=A.useState(null),m=e,y=m.filter(r=>r.status==="uploaded").length,N=(r,l)=>{E(null);const u=Math.max(0,c-y),f=r.slice(0,u),X=r.slice(u),d=[...l.map(i=>S(i.file,"error",ce(i.errors[0]?.code))),...X.map(i=>S(i,"error",`Максимальное количество файлов: ${c}`))];d.length&&E(d[0].error||"Ошибка загрузки"),!(!f.length&&!d.length)&&(I(!0),setTimeout(()=>{const i=f.map(Z=>S(Z,"uploaded")),G=le(m,i,d),T=o?ne([...G,...i,...d],c):[...i,...d].slice(0,1);t?.(T.length?T:[]),I(!1)},te))},{getRootProps:D,getInputProps:B,isDragActive:C}=K.useDropzone({onDrop:N,accept:oe(U),maxSize:g,multiple:o&&c>1,disabled:a||b}),P=r=>()=>{const l=m.filter((u,f)=>f!==r);t?.(l.length?l:[])},R=m.map((r,l)=>({file:r,index:l})).filter(({file:r})=>r.status==="uploaded"),k=y>=c,z=q??V.Plus,O={grid:"grid-cols-2 sm:grid-cols-3 md:grid-cols-4",list:"grid-cols-1",compact:"grid-cols-2 sm:grid-cols-3"};return s.jsxs("div",{className:p.cn("w-full space-y-4",n?.container),children:[s.jsxs("div",{className:p.cn("grid h-full w-full gap-4",h==="list"?"grid-cols-1":O[h]),children:[L&&R.map(({file:r,index:l})=>{const u=ie(r);return s.jsxs("div",{className:`group bg-primary-bg relative aspect-square h-full w-full
|
|
2
2
|
overflow-hidden rounded-lg`,children:[u==="image"?s.jsx("img",{src:r.url,className:"h-full w-full object-cover"}):s.jsx("div",{className:`flex h-full w-full items-center justify-center bg-gray-100
|
|
3
3
|
text-sm font-semibold`,children:r.name.split(".").pop()?.toUpperCase()}),s.jsx("div",{className:`bg-primary-inverse-bg/50 text-primary-bg absolute inset-0
|
|
4
4
|
flex items-center justify-center opacity-0 transition-opacity
|
|
5
|
-
hover:opacity-100`,children:s.jsx(j.
|
|
5
|
+
hover:opacity-100`,children:s.jsx(j.StrokeIcon,{onClick:P(l),icon:J.X})})]},`${r.url}-${r.addedAt}-${l}`)}),!k&&s.jsxs("div",{...D(),className:p.cn(`relative flex cursor-pointer flex-col items-center justify-center
|
|
6
6
|
rounded-lg border-2 border-dashed border-gray-300 bg-gray-50
|
|
7
|
-
transition-colors hover:bg-gray-100`,C&&"border-primary bg-primary/5",(a||
|
|
7
|
+
transition-colors hover:bg-gray-100`,C&&"border-primary bg-primary/5",(a||b)&&"cursor-not-allowed opacity-50",h==="list"?"min-h-37.5":"aspect-square",n?.blockAdd),children:[s.jsx("input",{...B()}),b?s.jsx(j.StrokeIcon,{icon:H.SpinnerGap,className:"text-sub-label-text h-8 w-8 animate-spin"}):s.jsxs("div",{className:"flex flex-col items-center space-y-2 p-4 text-center",children:[s.jsx(j.StrokeIcon,{icon:z,className:p.cn("text-sub-label-text h-8 w-8",n?.icon)}),s.jsx(M.Typography,{className:p.cn("text-sub-label-text",n?.title),children:o?`${w||"Добавить"} (${y}/${c})`:w||"Добавить"}),F&&s.jsx(M.Typography,{className:p.cn("text-sub-label-text",n?.text),children:F})]})]})]}),!$&&_&&s.jsx("div",{className:"rounded-lg bg-red-50 p-3 text-sm text-red-600",children:_})]})};exports.FilesUploader=ae;
|
|
8
8
|
//# sourceMappingURL=components-files-uploader-files-uploader.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-files-uploader-files-uploader.cjs","sources":["../src/components/files-uploader/files-uploader.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\";\nimport { useState } from \"react\";\nimport { type FileRejection, useDropzone } from \"react-dropzone\";\nimport { Icon, type IconProps } from \"../ui/icon\";\nimport { Typography } from \"../ui/typography\";\n\ntype Variant = \"grid\" | \"list\" | \"compact\";\ntype AcceptType = \"image\" | \"pdf\" | \"doc\" | \"excel\" | \"text\" | \"all\";\n\nexport type UploadedFileData = {\n url: string;\n name: string;\n size: string;\n addedAt: string;\n status: \"uploaded\" | \"error\";\n error?: string;\n};\n\nexport type FilesUploaderValue = UploadedFileData[] | [];\n\nexport type PropsFilesUploader = {\n value?: FilesUploaderValue;\n onChange?: (value: FilesUploaderValue) => void;\n multiple?: boolean;\n maxFiles?: number;\n disabled?: boolean;\n isErrorText?: boolean;\n className?: {\n container?: string;\n blockAdd?: string;\n title?: string;\n text?: string;\n icon?: string;\n };\n maxSize?: number;\n variant?: Variant;\n accepts?: AcceptType[];\n icon?: IconProps;\n title?: string;\n text?: string;\n showFiles?: boolean;\n};\n\nconst FILE_SIZE_UNITS = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\"];\nconst FILE_SIZE_KB = 1024;\n\nconst DEFAULT_MAX_SIZE = 5 * FILE_SIZE_KB * FILE_SIZE_KB;\nconst DEFAULT_MAX_FILES = 5;\nconst DEFAULT_ACCEPT: AcceptType[] = [\"all\"];\nconst DEFAULT_TIMEOUT = 800;\n\nconst ACCEPT_MAP: Record<AcceptType, Record<string, string[]>> = {\n image: { \"image/*\": [\".jpg\", \".jpeg\", \".png\", \".webp\"] },\n pdf: { \"application/pdf\": [\".pdf\"] },\n doc: {\n \"application/msword\": [\".doc\"],\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": [\".docx\"],\n },\n excel: {\n \"application/vnd.ms-excel\": [\".xls\"],\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": [\".xlsx\"],\n },\n text: { \"text/plain\": [\".txt\"] },\n all: {},\n};\n\nconst formatFileSize = (bytes: number) => {\n if (!bytes) return \"0 B\";\n const i = Math.floor(Math.log(bytes) / Math.log(FILE_SIZE_KB));\n return `${(bytes / Math.pow(FILE_SIZE_KB, i)).toFixed(2)} ${FILE_SIZE_UNITS[i]}`;\n};\n\nconst getFileIdentity = (file: Pick<UploadedFileData, \"name\" | \"size\">) =>\n `${file.name}:${file.size}`;\n\nconst fileAcceptMap = (accepts: AcceptType[]) =>\n accepts.reduce((acc, t) => ({ ...acc, ...ACCEPT_MAP[t] }), {});\n\nconst limitFilesForValue = (\n nextFiles: UploadedFileData[],\n maxFiles: number,\n): UploadedFileData[] => {\n const uploadedFiles = nextFiles.filter((file) => file.status === \"uploaded\");\n const errorFiles = nextFiles.filter((file) => file.status === \"error\");\n const availableErrorSlots = Math.max(0, maxFiles - uploadedFiles.length);\n\n return [...uploadedFiles, ...errorFiles.slice(0, availableErrorSlots)];\n};\n\nconst mapFile = (\n file: File,\n status: UploadedFileData[\"status\"],\n error?: string,\n): UploadedFileData => ({\n url: URL.createObjectURL(file),\n name: file.name,\n size: formatFileSize(file.size),\n addedAt: new Date().toISOString(),\n status,\n error,\n});\n\nconst getRejectedError = (code?: string) =>\n code === \"file-too-large\" ? \"Файл слишком большой\" : \"Неподдерживаемый формат\";\n\nconst replaceDuplicateErrors = (\n currentFiles: UploadedFileData[],\n newFiles: UploadedFileData[],\n rejectedFiles: UploadedFileData[],\n) => {\n const rejectedFileIds = new Set(rejectedFiles.map(getFileIdentity));\n const acceptedFileIds = new Set(newFiles.map(getFileIdentity));\n\n return currentFiles.filter((existingFile) => {\n if (existingFile.status !== \"error\") return true;\n const id = getFileIdentity(existingFile);\n return !rejectedFileIds.has(id) && !acceptedFileIds.has(id);\n });\n};\n\nconst getFileType = (file: UploadedFileData) => {\n const ext = file.name.split(\".\").pop()?.toLowerCase();\n\n if (!ext) return \"other\";\n if ([\"jpg\", \"jpeg\", \"png\", \"webp\"].includes(ext)) return \"image\";\n if (ext === \"pdf\") return \"pdf\";\n if ([\"doc\", \"docx\"].includes(ext)) return \"doc\";\n if ([\"xls\", \"xlsx\"].includes(ext)) return \"excel\";\n if (ext === \"txt\") return \"text\";\n\n return \"other\";\n};\n\nexport const FilesUploader = ({\n value = [],\n onChange,\n multiple = false,\n maxFiles = DEFAULT_MAX_FILES,\n disabled = false,\n className,\n maxSize = DEFAULT_MAX_SIZE,\n variant = \"grid\",\n accepts = DEFAULT_ACCEPT,\n icon,\n title,\n text,\n showFiles = true,\n isErrorText = false,\n}: PropsFilesUploader) => {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const files = value;\n const uploadedCount = files.filter((file) => file.status === \"uploaded\").length;\n\n const onDrop = (acceptedFiles: File[], rejectedFiles: FileRejection[]) => {\n setError(null);\n const remainingUploadSlots = Math.max(0, maxFiles - uploadedCount);\n const acceptedFilesToUpload = acceptedFiles.slice(0, remainingUploadSlots);\n const overflowAcceptedFiles = acceptedFiles.slice(remainingUploadSlots);\n\n const rejectedMapped = [\n ...rejectedFiles.map((rejection) =>\n mapFile(rejection.file, \"error\", getRejectedError(rejection.errors[0]?.code)),\n ),\n ...overflowAcceptedFiles.map((file) =>\n mapFile(file, \"error\", `Максимальное количество файлов: ${maxFiles}`),\n ),\n ];\n\n if (rejectedMapped.length) {\n setError(rejectedMapped[0].error || \"Ошибка загрузки\");\n }\n\n if (!acceptedFilesToUpload.length && !rejectedMapped.length) return;\n\n setLoading(true);\n\n setTimeout(() => {\n const newFiles = acceptedFilesToUpload.map((file) => mapFile(file, \"uploaded\"));\n const nextBaseFiles = replaceDuplicateErrors(files, newFiles, rejectedMapped);\n const nextFiles = multiple\n ? limitFilesForValue([...nextBaseFiles, ...newFiles, ...rejectedMapped], maxFiles)\n : [...newFiles, ...rejectedMapped].slice(0, 1);\n\n onChange?.(nextFiles.length ? nextFiles : []);\n setLoading(false);\n }, DEFAULT_TIMEOUT);\n };\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop,\n accept: fileAcceptMap(accepts),\n maxSize,\n multiple: multiple && maxFiles > 1,\n disabled: disabled || loading,\n });\n\n const removeFile = (index: number) => () => {\n const updated = files.filter((_, i) => i !== index);\n onChange?.(updated.length ? updated : []);\n };\n\n const uploadedFiles = files\n .map((file, index) => ({ file, index }))\n .filter(({ file }) => file.status === \"uploaded\");\n\n const isMaxFilesReached = uploadedCount >= maxFiles;\n\n const gridClasses = {\n grid: \"grid-cols-2 sm:grid-cols-3 md:grid-cols-4\",\n list: \"grid-cols-1\",\n compact: \"grid-cols-2 sm:grid-cols-3\",\n };\n\n return (\n <div className={cn(\"w-full space-y-4\", className?.container)}>\n <div\n className={cn(\n \"grid h-full w-full gap-4\",\n variant === \"list\" ? \"grid-cols-1\" : gridClasses[variant],\n )}\n >\n {showFiles &&\n uploadedFiles.map(({ file, index }) => {\n const type = getFileType(file);\n\n return (\n <div\n key={`${file.url}-${file.addedAt}-${index}`}\n className=\"group bg-primary-bg relative aspect-square h-full w-full\n overflow-hidden rounded-lg\"\n >\n {type === \"image\" ? (\n <img\n src={file.url}\n className=\"h-full w-full object-cover\"\n />\n ) : (\n <div\n className=\"flex h-full w-full items-center justify-center bg-gray-100\n text-sm font-semibold\"\n >\n {file.name.split(\".\").pop()?.toUpperCase()}\n </div>\n )}\n\n <div\n className=\"bg-primary-inverse-bg/50 text-primary-bg absolute inset-0\n flex items-center justify-center opacity-0 transition-opacity\n hover:opacity-100\"\n >\n <Icon\n onClick={removeFile(index)}\n type={\"x\"}\n />\n </div>\n </div>\n );\n })}\n\n {!isMaxFilesReached && (\n <div\n {...getRootProps()}\n className={cn(\n `relative flex cursor-pointer flex-col items-center justify-center\n rounded-lg border-2 border-dashed border-gray-300 bg-gray-50\n transition-colors hover:bg-gray-100`,\n isDragActive && \"border-primary bg-primary/5\",\n (disabled || loading) && \"cursor-not-allowed opacity-50\",\n variant === \"list\" ? \"min-h-37.5\" : \"aspect-square\",\n className?.blockAdd,\n )}\n >\n <input {...getInputProps()} />\n\n {loading ? (\n <Icon\n type=\"spinner-gap\"\n className=\"text-sub-label-text h-8 w-8 animate-spin\"\n />\n ) : (\n <div className=\"flex flex-col items-center space-y-2 p-4 text-center\">\n <Icon\n type={icon?.type ?? \"plus\"}\n className={cn(\"text-sub-label-text h-8 w-8\", className?.icon)}\n />\n\n <Typography className={cn(\"text-sub-label-text\", className?.title)}>\n {multiple\n ? `${title || \"Добавить\"} (${uploadedCount}/${maxFiles})`\n : title || \"Добавить\"}\n </Typography>\n\n {text && (\n <Typography className={cn(\"text-sub-label-text\", className?.text)}>\n {text}\n </Typography>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n\n {!isErrorText && error && (\n <div className=\"rounded-lg bg-red-50 p-3 text-sm text-red-600\">{error}</div>\n )}\n </div>\n );\n};\n"],"names":["FILE_SIZE_UNITS","FILE_SIZE_KB","DEFAULT_MAX_SIZE","DEFAULT_MAX_FILES","DEFAULT_ACCEPT","DEFAULT_TIMEOUT","ACCEPT_MAP","formatFileSize","bytes","i","getFileIdentity","file","fileAcceptMap","accepts","acc","t","limitFilesForValue","nextFiles","maxFiles","uploadedFiles","errorFiles","availableErrorSlots","mapFile","status","error","getRejectedError","code","replaceDuplicateErrors","currentFiles","newFiles","rejectedFiles","rejectedFileIds","acceptedFileIds","existingFile","id","getFileType","ext","FilesUploader","value","onChange","multiple","disabled","className","maxSize","variant","icon","title","text","showFiles","isErrorText","loading","setLoading","useState","setError","files","uploadedCount","onDrop","acceptedFiles","remainingUploadSlots","acceptedFilesToUpload","overflowAcceptedFiles","rejectedMapped","rejection","nextBaseFiles","getRootProps","getInputProps","isDragActive","useDropzone","removeFile","index","updated","_","isMaxFilesReached","gridClasses","cn","jsxs","type","jsx","Icon","Typography"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components-files-uploader-files-uploader.cjs","sources":["../src/components/files-uploader/files-uploader.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\";\nimport { useState } from \"react\";\nimport { type FileRejection, useDropzone } from \"react-dropzone\";\nimport { Plus } from \"@/components/icons/Plus\";\nimport { SpinnerGap } from \"@/components/icons/SpinnerGap\";\nimport { StrokeIcon, type StrokeIconComponent } from \"@/components/icons/stroke-icon\";\nimport { X } from \"@/components/icons/X\";\nimport { Typography } from \"../ui/typography\";\n\ntype Variant = \"grid\" | \"list\" | \"compact\";\ntype AcceptType = \"image\" | \"pdf\" | \"doc\" | \"excel\" | \"text\" | \"all\";\n\nexport type UploadedFileData = {\n url: string;\n name: string;\n size: string;\n addedAt: string;\n status: \"uploaded\" | \"error\";\n error?: string;\n};\n\nexport type FilesUploaderValue = UploadedFileData[] | [];\n\nexport type PropsFilesUploader = {\n value?: FilesUploaderValue;\n onChange?: (value: FilesUploaderValue) => void;\n multiple?: boolean;\n maxFiles?: number;\n disabled?: boolean;\n isErrorText?: boolean;\n className?: {\n container?: string;\n blockAdd?: string;\n title?: string;\n text?: string;\n icon?: string;\n };\n maxSize?: number;\n variant?: Variant;\n accepts?: AcceptType[];\n icon?: StrokeIconComponent;\n title?: string;\n text?: string;\n showFiles?: boolean;\n};\n\nconst FILE_SIZE_UNITS = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\"];\nconst FILE_SIZE_KB = 1024;\n\nconst DEFAULT_MAX_SIZE = 5 * FILE_SIZE_KB * FILE_SIZE_KB;\nconst DEFAULT_MAX_FILES = 5;\nconst DEFAULT_ACCEPT: AcceptType[] = [\"all\"];\nconst DEFAULT_TIMEOUT = 800;\n\nconst ACCEPT_MAP: Record<AcceptType, Record<string, string[]>> = {\n image: { \"image/*\": [\".jpg\", \".jpeg\", \".png\", \".webp\"] },\n pdf: { \"application/pdf\": [\".pdf\"] },\n doc: {\n \"application/msword\": [\".doc\"],\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": [\".docx\"],\n },\n excel: {\n \"application/vnd.ms-excel\": [\".xls\"],\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": [\".xlsx\"],\n },\n text: { \"text/plain\": [\".txt\"] },\n all: {},\n};\n\nconst formatFileSize = (bytes: number) => {\n if (!bytes) return \"0 B\";\n const i = Math.floor(Math.log(bytes) / Math.log(FILE_SIZE_KB));\n return `${(bytes / Math.pow(FILE_SIZE_KB, i)).toFixed(2)} ${FILE_SIZE_UNITS[i]}`;\n};\n\nconst getFileIdentity = (file: Pick<UploadedFileData, \"name\" | \"size\">) =>\n `${file.name}:${file.size}`;\n\nconst fileAcceptMap = (accepts: AcceptType[]) =>\n accepts.reduce((acc, t) => ({ ...acc, ...ACCEPT_MAP[t] }), {});\n\nconst limitFilesForValue = (\n nextFiles: UploadedFileData[],\n maxFiles: number,\n): UploadedFileData[] => {\n const uploadedFiles = nextFiles.filter((file) => file.status === \"uploaded\");\n const errorFiles = nextFiles.filter((file) => file.status === \"error\");\n const availableErrorSlots = Math.max(0, maxFiles - uploadedFiles.length);\n\n return [...uploadedFiles, ...errorFiles.slice(0, availableErrorSlots)];\n};\n\nconst mapFile = (\n file: File,\n status: UploadedFileData[\"status\"],\n error?: string,\n): UploadedFileData => ({\n url: URL.createObjectURL(file),\n name: file.name,\n size: formatFileSize(file.size),\n addedAt: new Date().toISOString(),\n status,\n error,\n});\n\nconst getRejectedError = (code?: string) =>\n code === \"file-too-large\" ? \"Файл слишком большой\" : \"Неподдерживаемый формат\";\n\nconst replaceDuplicateErrors = (\n currentFiles: UploadedFileData[],\n newFiles: UploadedFileData[],\n rejectedFiles: UploadedFileData[],\n) => {\n const rejectedFileIds = new Set(rejectedFiles.map(getFileIdentity));\n const acceptedFileIds = new Set(newFiles.map(getFileIdentity));\n\n return currentFiles.filter((existingFile) => {\n if (existingFile.status !== \"error\") return true;\n const id = getFileIdentity(existingFile);\n return !rejectedFileIds.has(id) && !acceptedFileIds.has(id);\n });\n};\n\nconst getFileType = (file: UploadedFileData) => {\n const ext = file.name.split(\".\").pop()?.toLowerCase();\n\n if (!ext) return \"other\";\n if ([\"jpg\", \"jpeg\", \"png\", \"webp\"].includes(ext)) return \"image\";\n if (ext === \"pdf\") return \"pdf\";\n if ([\"doc\", \"docx\"].includes(ext)) return \"doc\";\n if ([\"xls\", \"xlsx\"].includes(ext)) return \"excel\";\n if (ext === \"txt\") return \"text\";\n\n return \"other\";\n};\n\nexport const FilesUploader = ({\n value = [],\n onChange,\n multiple = false,\n maxFiles = DEFAULT_MAX_FILES,\n disabled = false,\n className,\n maxSize = DEFAULT_MAX_SIZE,\n variant = \"grid\",\n accepts = DEFAULT_ACCEPT,\n icon,\n title,\n text,\n showFiles = true,\n isErrorText = false,\n}: PropsFilesUploader) => {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const files = value;\n const uploadedCount = files.filter((file) => file.status === \"uploaded\").length;\n\n const onDrop = (acceptedFiles: File[], rejectedFiles: FileRejection[]) => {\n setError(null);\n const remainingUploadSlots = Math.max(0, maxFiles - uploadedCount);\n const acceptedFilesToUpload = acceptedFiles.slice(0, remainingUploadSlots);\n const overflowAcceptedFiles = acceptedFiles.slice(remainingUploadSlots);\n\n const rejectedMapped = [\n ...rejectedFiles.map((rejection) =>\n mapFile(rejection.file, \"error\", getRejectedError(rejection.errors[0]?.code)),\n ),\n ...overflowAcceptedFiles.map((file) =>\n mapFile(file, \"error\", `Максимальное количество файлов: ${maxFiles}`),\n ),\n ];\n\n if (rejectedMapped.length) {\n setError(rejectedMapped[0].error || \"Ошибка загрузки\");\n }\n\n if (!acceptedFilesToUpload.length && !rejectedMapped.length) return;\n\n setLoading(true);\n\n setTimeout(() => {\n const newFiles = acceptedFilesToUpload.map((file) => mapFile(file, \"uploaded\"));\n const nextBaseFiles = replaceDuplicateErrors(files, newFiles, rejectedMapped);\n const nextFiles = multiple\n ? limitFilesForValue([...nextBaseFiles, ...newFiles, ...rejectedMapped], maxFiles)\n : [...newFiles, ...rejectedMapped].slice(0, 1);\n\n onChange?.(nextFiles.length ? nextFiles : []);\n setLoading(false);\n }, DEFAULT_TIMEOUT);\n };\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop,\n accept: fileAcceptMap(accepts),\n maxSize,\n multiple: multiple && maxFiles > 1,\n disabled: disabled || loading,\n });\n\n const removeFile = (index: number) => () => {\n const updated = files.filter((_, i) => i !== index);\n onChange?.(updated.length ? updated : []);\n };\n\n const uploadedFiles = files\n .map((file, index) => ({ file, index }))\n .filter(({ file }) => file.status === \"uploaded\");\n\n const isMaxFilesReached = uploadedCount >= maxFiles;\n const uploadIcon = icon ?? Plus;\n\n const gridClasses = {\n grid: \"grid-cols-2 sm:grid-cols-3 md:grid-cols-4\",\n list: \"grid-cols-1\",\n compact: \"grid-cols-2 sm:grid-cols-3\",\n };\n\n return (\n <div className={cn(\"w-full space-y-4\", className?.container)}>\n <div\n className={cn(\n \"grid h-full w-full gap-4\",\n variant === \"list\" ? \"grid-cols-1\" : gridClasses[variant],\n )}\n >\n {showFiles &&\n uploadedFiles.map(({ file, index }) => {\n const type = getFileType(file);\n\n return (\n <div\n key={`${file.url}-${file.addedAt}-${index}`}\n className=\"group bg-primary-bg relative aspect-square h-full w-full\n overflow-hidden rounded-lg\"\n >\n {type === \"image\" ? (\n <img\n src={file.url}\n className=\"h-full w-full object-cover\"\n />\n ) : (\n <div\n className=\"flex h-full w-full items-center justify-center bg-gray-100\n text-sm font-semibold\"\n >\n {file.name.split(\".\").pop()?.toUpperCase()}\n </div>\n )}\n\n <div\n className=\"bg-primary-inverse-bg/50 text-primary-bg absolute inset-0\n flex items-center justify-center opacity-0 transition-opacity\n hover:opacity-100\"\n >\n <StrokeIcon\n onClick={removeFile(index)}\n icon={X}\n />\n </div>\n </div>\n );\n })}\n\n {!isMaxFilesReached && (\n <div\n {...getRootProps()}\n className={cn(\n `relative flex cursor-pointer flex-col items-center justify-center\n rounded-lg border-2 border-dashed border-gray-300 bg-gray-50\n transition-colors hover:bg-gray-100`,\n isDragActive && \"border-primary bg-primary/5\",\n (disabled || loading) && \"cursor-not-allowed opacity-50\",\n variant === \"list\" ? \"min-h-37.5\" : \"aspect-square\",\n className?.blockAdd,\n )}\n >\n <input {...getInputProps()} />\n\n {loading ? (\n <StrokeIcon\n icon={SpinnerGap}\n className=\"text-sub-label-text h-8 w-8 animate-spin\"\n />\n ) : (\n <div className=\"flex flex-col items-center space-y-2 p-4 text-center\">\n <StrokeIcon\n icon={uploadIcon}\n className={cn(\"text-sub-label-text h-8 w-8\", className?.icon)}\n />\n\n <Typography className={cn(\"text-sub-label-text\", className?.title)}>\n {multiple\n ? `${title || \"Добавить\"} (${uploadedCount}/${maxFiles})`\n : title || \"Добавить\"}\n </Typography>\n\n {text && (\n <Typography className={cn(\"text-sub-label-text\", className?.text)}>\n {text}\n </Typography>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n\n {!isErrorText && error && (\n <div className=\"rounded-lg bg-red-50 p-3 text-sm text-red-600\">{error}</div>\n )}\n </div>\n );\n};\n"],"names":["FILE_SIZE_UNITS","FILE_SIZE_KB","DEFAULT_MAX_SIZE","DEFAULT_MAX_FILES","DEFAULT_ACCEPT","DEFAULT_TIMEOUT","ACCEPT_MAP","formatFileSize","bytes","i","getFileIdentity","file","fileAcceptMap","accepts","acc","t","limitFilesForValue","nextFiles","maxFiles","uploadedFiles","errorFiles","availableErrorSlots","mapFile","status","error","getRejectedError","code","replaceDuplicateErrors","currentFiles","newFiles","rejectedFiles","rejectedFileIds","acceptedFileIds","existingFile","id","getFileType","ext","FilesUploader","value","onChange","multiple","disabled","className","maxSize","variant","icon","title","text","showFiles","isErrorText","loading","setLoading","useState","setError","files","uploadedCount","onDrop","acceptedFiles","remainingUploadSlots","acceptedFilesToUpload","overflowAcceptedFiles","rejectedMapped","rejection","nextBaseFiles","getRootProps","getInputProps","isDragActive","useDropzone","removeFile","index","updated","_","isMaxFilesReached","uploadIcon","Plus","gridClasses","cn","jsxs","type","jsx","StrokeIcon","X","SpinnerGap","Typography"],"mappings":"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"}
|