@ayasofyazilim/ui 0.0.0 → 0.0.2
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/aria/index.js +2 -0
- package/dist/aria/index.js.map +1 -0
- package/dist/aria/number-field.js +46 -0
- package/dist/aria/number-field.js.map +1 -0
- package/dist/components/accordion.js +66 -0
- package/dist/components/accordion.js.map +1 -0
- package/dist/components/alert-dialog.js +148 -0
- package/dist/components/alert-dialog.js.map +1 -0
- package/dist/components/alert.js +69 -0
- package/dist/components/alert.js.map +1 -0
- package/dist/components/aspect-ratio.js +12 -0
- package/dist/components/aspect-ratio.js.map +1 -0
- package/dist/components/avatar.js +55 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.js +62 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/breadcrumb.js +104 -0
- package/dist/components/breadcrumb.js.map +1 -0
- package/dist/components/button-group.js +77 -0
- package/dist/components/button-group.js.map +1 -0
- package/dist/components/button.js +56 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/calendar.js +196 -0
- package/dist/components/calendar.js.map +1 -0
- package/dist/components/card.js +91 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/carousel.js +200 -0
- package/dist/components/carousel.js.map +1 -0
- package/dist/components/chart.js +250 -0
- package/dist/components/chart.js.map +1 -0
- package/dist/components/checkbox.js +33 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/collapsible.js +36 -0
- package/dist/components/collapsible.js.map +1 -0
- package/dist/components/command.js +178 -0
- package/dist/components/command.js.map +1 -0
- package/dist/components/context-menu.js +225 -0
- package/dist/components/context-menu.js.map +1 -0
- package/dist/components/dialog.js +139 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/drawer.js +130 -0
- package/dist/components/drawer.js.map +1 -0
- package/dist/components/dropdown-menu.js +234 -0
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/empty.js +100 -0
- package/dist/components/empty.js.map +1 -0
- package/dist/components/field.js +231 -0
- package/dist/components/field.js.map +1 -0
- package/dist/components/form.js +124 -0
- package/dist/components/form.js.map +1 -0
- package/dist/components/hover-card.js +40 -0
- package/dist/components/hover-card.js.map +1 -0
- package/dist/components/input-group.js +156 -0
- package/dist/components/input-group.js.map +1 -0
- package/dist/components/input-otp.js +68 -0
- package/dist/components/input-otp.js.map +1 -0
- package/dist/components/input.js +22 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/item.js +188 -0
- package/dist/components/item.js.map +1 -0
- package/dist/components/kbd.js +32 -0
- package/dist/components/kbd.js.map +1 -0
- package/dist/components/label.js +24 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/menubar.js +253 -0
- package/dist/components/menubar.js.map +1 -0
- package/dist/components/navigation-menu.js +171 -0
- package/dist/components/navigation-menu.js.map +1 -0
- package/dist/components/pagination.js +125 -0
- package/dist/components/pagination.js.map +1 -0
- package/dist/components/popover.js +82 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/progress.js +33 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/radio-group.js +47 -0
- package/dist/components/radio-group.js.map +1 -0
- package/dist/components/resizable.js +50 -0
- package/dist/components/resizable.js.map +1 -0
- package/dist/components/scroll-area.js +62 -0
- package/dist/components/scroll-area.js.map +1 -0
- package/dist/components/select.js +173 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.js +28 -0
- package/dist/components/separator.js.map +1 -0
- package/dist/components/sheet.js +129 -0
- package/dist/components/sheet.js.map +1 -0
- package/dist/components/sidebar.js +759 -0
- package/dist/components/sidebar.js.map +1 -0
- package/dist/components/skeleton.js +16 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/slider.js +65 -0
- package/dist/components/slider.js.map +1 -0
- package/dist/components/sonner.js +40 -0
- package/dist/components/sonner.js.map +1 -0
- package/dist/components/spinner.js +18 -0
- package/dist/components/spinner.js.map +1 -0
- package/dist/components/stepper.js +220 -0
- package/dist/components/stepper.js.map +1 -0
- package/dist/components/switch.js +33 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/table.js +131 -0
- package/dist/components/table.js.map +1 -0
- package/dist/components/tabs.js +69 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/textarea.js +19 -0
- package/dist/components/textarea.js.map +1 -0
- package/dist/components/toggle-group.js +70 -0
- package/dist/components/toggle-group.js.map +1 -0
- package/dist/components/toggle.js +45 -0
- package/dist/components/toggle.js.map +1 -0
- package/dist/components/tooltip.js +65 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/custom/action-button.js +38 -0
- package/dist/custom/action-button.js.map +1 -0
- package/dist/custom/async-select.js +249 -0
- package/dist/custom/async-select.js.map +1 -0
- package/dist/custom/awesome-not-found.js +113 -0
- package/dist/custom/awesome-not-found.js.map +1 -0
- package/dist/custom/charts/area-chart.js +125 -0
- package/dist/custom/charts/area-chart.js.map +1 -0
- package/dist/custom/charts/bar-chart.js +232 -0
- package/dist/custom/charts/bar-chart.js.map +1 -0
- package/dist/custom/charts/chart-card.js +71 -0
- package/dist/custom/charts/chart-card.js.map +1 -0
- package/dist/custom/charts/index.js +5 -0
- package/dist/custom/charts/index.js.map +1 -0
- package/dist/custom/charts/pie-chart.js +153 -0
- package/dist/custom/charts/pie-chart.js.map +1 -0
- package/dist/custom/charts/radar-chart.js +112 -0
- package/dist/custom/charts/radar-chart.js.map +1 -0
- package/dist/custom/checkbox-tree.js +70 -0
- package/dist/custom/checkbox-tree.js.map +1 -0
- package/dist/custom/combobox.js +233 -0
- package/dist/custom/combobox.js.map +1 -0
- package/dist/custom/confirm-dialog.js +90 -0
- package/dist/custom/confirm-dialog.js.map +1 -0
- package/dist/custom/country-selector.js +151 -0
- package/dist/custom/country-selector.js.map +1 -0
- package/dist/custom/date-picker/calendar-rac.js +91 -0
- package/dist/custom/date-picker/calendar-rac.js.map +1 -0
- package/dist/custom/date-picker/datefield-rac.js +77 -0
- package/dist/custom/date-picker/datefield-rac.js.map +1 -0
- package/dist/custom/date-picker/index.js +251 -0
- package/dist/custom/date-picker/index.js.map +1 -0
- package/dist/custom/date-picker/types/index.js +1 -0
- package/dist/custom/date-picker/types/index.js.map +1 -0
- package/dist/custom/date-picker/utils/index.js +30 -0
- package/dist/custom/date-picker/utils/index.js.map +1 -0
- package/dist/custom/date-picker-old.js +46 -0
- package/dist/custom/date-picker-old.js.map +1 -0
- package/dist/custom/date-tooltip.js +89 -0
- package/dist/custom/date-tooltip.js.map +1 -0
- package/dist/custom/document-scanner/consts.js +13 -0
- package/dist/custom/document-scanner/consts.js.map +1 -0
- package/dist/custom/document-scanner/corner-adjustment/action-buttons.js +24 -0
- package/dist/custom/document-scanner/corner-adjustment/action-buttons.js.map +1 -0
- package/dist/custom/document-scanner/corner-adjustment/corner-handle.js +44 -0
- package/dist/custom/document-scanner/corner-adjustment/corner-handle.js.map +1 -0
- package/dist/custom/document-scanner/corner-adjustment/hooks/use-corner-drag.js +60 -0
- package/dist/custom/document-scanner/corner-adjustment/hooks/use-corner-drag.js.map +1 -0
- package/dist/custom/document-scanner/corner-adjustment/index.js +124 -0
- package/dist/custom/document-scanner/corner-adjustment/index.js.map +1 -0
- package/dist/custom/document-scanner/corner-adjustment/types.js +1 -0
- package/dist/custom/document-scanner/corner-adjustment/types.js.map +1 -0
- package/dist/custom/document-scanner/corner-adjustment/utils/clip-path.js +16 -0
- package/dist/custom/document-scanner/corner-adjustment/utils/clip-path.js.map +1 -0
- package/dist/custom/document-scanner/corner-adjustment/zoom-magnifier.js +85 -0
- package/dist/custom/document-scanner/corner-adjustment/zoom-magnifier.js.map +1 -0
- package/dist/custom/document-scanner/hooks/use-document-capture.js +61 -0
- package/dist/custom/document-scanner/hooks/use-document-capture.js.map +1 -0
- package/dist/custom/document-scanner/hooks/use-document-scanner.js +59 -0
- package/dist/custom/document-scanner/hooks/use-document-scanner.js.map +1 -0
- package/dist/custom/document-scanner/hooks/use-perspective-crop.js +31 -0
- package/dist/custom/document-scanner/hooks/use-perspective-crop.js.map +1 -0
- package/dist/custom/document-scanner/index.js +229 -0
- package/dist/custom/document-scanner/index.js.map +1 -0
- package/dist/custom/document-scanner/lib.js +289 -0
- package/dist/custom/document-scanner/lib.js.map +1 -0
- package/dist/custom/document-scanner/types.js +1 -0
- package/dist/custom/document-scanner/types.js.map +1 -0
- package/dist/custom/document-scanner/utils/perspective-correction.js +100 -0
- package/dist/custom/document-scanner/utils/perspective-correction.js.map +1 -0
- package/dist/custom/document-viewer/controllers.js +76 -0
- package/dist/custom/document-viewer/controllers.js.map +1 -0
- package/dist/custom/document-viewer/index.js +36 -0
- package/dist/custom/document-viewer/index.js.map +1 -0
- package/dist/custom/document-viewer/renderers/image.js +40 -0
- package/dist/custom/document-viewer/renderers/image.js.map +1 -0
- package/dist/custom/document-viewer/renderers/index.js +3 -0
- package/dist/custom/document-viewer/renderers/index.js.map +1 -0
- package/dist/custom/document-viewer/renderers/pdf.js +95 -0
- package/dist/custom/document-viewer/renderers/pdf.js.map +1 -0
- package/dist/custom/email-input/email.js +184 -0
- package/dist/custom/email-input/email.js.map +1 -0
- package/dist/custom/email-input/index.js +8 -0
- package/dist/custom/email-input/index.js.map +1 -0
- package/dist/custom/email-input/types.js +13 -0
- package/dist/custom/email-input/types.js.map +1 -0
- package/dist/custom/file-uploader.js +389 -0
- package/dist/custom/file-uploader.js.map +1 -0
- package/dist/custom/filter-component/fields/async-select.js +31 -0
- package/dist/custom/filter-component/fields/async-select.js.map +1 -0
- package/dist/custom/filter-component/fields/date.js +56 -0
- package/dist/custom/filter-component/fields/date.js.map +1 -0
- package/dist/custom/filter-component/fields/multi-select.js +28 -0
- package/dist/custom/filter-component/fields/multi-select.js.map +1 -0
- package/dist/custom/filter-component/index.js +149 -0
- package/dist/custom/filter-component/index.js.map +1 -0
- package/dist/custom/image-canvas.js +193 -0
- package/dist/custom/image-canvas.js.map +1 -0
- package/dist/custom/json-editor.js +30 -0
- package/dist/custom/json-editor.js.map +1 -0
- package/dist/custom/master-data-grid/components/dialogs/column-settings-dialog.js +84 -0
- package/dist/custom/master-data-grid/components/dialogs/column-settings-dialog.js.map +1 -0
- package/dist/custom/master-data-grid/components/dialogs/index.js +5 -0
- package/dist/custom/master-data-grid/components/dialogs/index.js.map +1 -0
- package/dist/custom/master-data-grid/components/filters/client-filter.js +310 -0
- package/dist/custom/master-data-grid/components/filters/client-filter.js.map +1 -0
- package/dist/custom/master-data-grid/components/filters/filter-input.js +209 -0
- package/dist/custom/master-data-grid/components/filters/filter-input.js.map +1 -0
- package/dist/custom/master-data-grid/components/filters/index.js +9 -0
- package/dist/custom/master-data-grid/components/filters/index.js.map +1 -0
- package/dist/custom/master-data-grid/components/filters/inline-column-filter.js +188 -0
- package/dist/custom/master-data-grid/components/filters/inline-column-filter.js.map +1 -0
- package/dist/custom/master-data-grid/components/filters/multi-filter-dialog.js +65 -0
- package/dist/custom/master-data-grid/components/filters/multi-filter-dialog.js.map +1 -0
- package/dist/custom/master-data-grid/components/filters/server-filter.js +213 -0
- package/dist/custom/master-data-grid/components/filters/server-filter.js.map +1 -0
- package/dist/custom/master-data-grid/components/master-data-grid.js +421 -0
- package/dist/custom/master-data-grid/components/master-data-grid.js.map +1 -0
- package/dist/custom/master-data-grid/components/pagination/index.js +5 -0
- package/dist/custom/master-data-grid/components/pagination/index.js.map +1 -0
- package/dist/custom/master-data-grid/components/pagination/pagination.js +159 -0
- package/dist/custom/master-data-grid/components/pagination/pagination.js.map +1 -0
- package/dist/custom/master-data-grid/components/table/cell-renderer.js +442 -0
- package/dist/custom/master-data-grid/components/table/cell-renderer.js.map +1 -0
- package/dist/custom/master-data-grid/components/table/header-cell.js +116 -0
- package/dist/custom/master-data-grid/components/table/header-cell.js.map +1 -0
- package/dist/custom/master-data-grid/components/table/index.js +5 -0
- package/dist/custom/master-data-grid/components/table/index.js.map +1 -0
- package/dist/custom/master-data-grid/components/table/table-body-renderer.js +79 -0
- package/dist/custom/master-data-grid/components/table/table-body-renderer.js.map +1 -0
- package/dist/custom/master-data-grid/components/table/virtual-body.js +86 -0
- package/dist/custom/master-data-grid/components/table/virtual-body.js.map +1 -0
- package/dist/custom/master-data-grid/components/toolbar/index.js +5 -0
- package/dist/custom/master-data-grid/components/toolbar/index.js.map +1 -0
- package/dist/custom/master-data-grid/components/toolbar/toolbar.js +238 -0
- package/dist/custom/master-data-grid/components/toolbar/toolbar.js.map +1 -0
- package/dist/custom/master-data-grid/hooks/index.js +7 -0
- package/dist/custom/master-data-grid/hooks/index.js.map +1 -0
- package/dist/custom/master-data-grid/hooks/use-columns.js +278 -0
- package/dist/custom/master-data-grid/hooks/use-columns.js.map +1 -0
- package/dist/custom/master-data-grid/hooks/use-editing.js +75 -0
- package/dist/custom/master-data-grid/hooks/use-editing.js.map +1 -0
- package/dist/custom/master-data-grid/hooks/use-table-state-reducer.js +96 -0
- package/dist/custom/master-data-grid/hooks/use-table-state-reducer.js.map +1 -0
- package/dist/custom/master-data-grid/hooks/use-table-state.js +25 -0
- package/dist/custom/master-data-grid/hooks/use-table-state.js.map +1 -0
- package/dist/custom/master-data-grid/index.js +5 -0
- package/dist/custom/master-data-grid/index.js.map +1 -0
- package/dist/custom/master-data-grid/types.js +1 -0
- package/dist/custom/master-data-grid/types.js.map +1 -0
- package/dist/custom/master-data-grid/utils/column-generator.js +203 -0
- package/dist/custom/master-data-grid/utils/column-generator.js.map +1 -0
- package/dist/custom/master-data-grid/utils/export-utils.js +46 -0
- package/dist/custom/master-data-grid/utils/export-utils.js.map +1 -0
- package/dist/custom/master-data-grid/utils/filter-fns.js +218 -0
- package/dist/custom/master-data-grid/utils/filter-fns.js.map +1 -0
- package/dist/custom/master-data-grid/utils/index.js +16 -0
- package/dist/custom/master-data-grid/utils/index.js.map +1 -0
- package/dist/custom/master-data-grid/utils/pinning-utils.js +70 -0
- package/dist/custom/master-data-grid/utils/pinning-utils.js.map +1 -0
- package/dist/custom/master-data-grid/utils/translation-utils.js +33 -0
- package/dist/custom/master-data-grid/utils/translation-utils.js.map +1 -0
- package/dist/custom/multi-select.js +339 -0
- package/dist/custom/multi-select.js.map +1 -0
- package/dist/custom/password-input.js +158 -0
- package/dist/custom/password-input.js.map +1 -0
- package/dist/custom/phone-input.js +127 -0
- package/dist/custom/phone-input.js.map +1 -0
- package/dist/custom/schema-form/custom/index.js +2 -0
- package/dist/custom/schema-form/custom/index.js.map +1 -0
- package/dist/custom/schema-form/custom/label.js +39 -0
- package/dist/custom/schema-form/custom/label.js.map +1 -0
- package/dist/custom/schema-form/fields/base-input-field.js +73 -0
- package/dist/custom/schema-form/fields/base-input-field.js.map +1 -0
- package/dist/custom/schema-form/fields/field.js +72 -0
- package/dist/custom/schema-form/fields/field.js.map +1 -0
- package/dist/custom/schema-form/fields/index.js +6 -0
- package/dist/custom/schema-form/fields/index.js.map +1 -0
- package/dist/custom/schema-form/fields/object.js +9 -0
- package/dist/custom/schema-form/fields/object.js.map +1 -0
- package/dist/custom/schema-form/fields/table-array/array-field-item.js +58 -0
- package/dist/custom/schema-form/fields/table-array/array-field-item.js.map +1 -0
- package/dist/custom/schema-form/fields/table-array/array-field-template.js +104 -0
- package/dist/custom/schema-form/fields/table-array/array-field-template.js.map +1 -0
- package/dist/custom/schema-form/index.js +219 -0
- package/dist/custom/schema-form/index.js.map +1 -0
- package/dist/custom/schema-form/templates/description.js +19 -0
- package/dist/custom/schema-form/templates/description.js.map +1 -0
- package/dist/custom/schema-form/templates/index.js +3 -0
- package/dist/custom/schema-form/templates/index.js.map +1 -0
- package/dist/custom/schema-form/templates/submit.js +31 -0
- package/dist/custom/schema-form/templates/submit.js.map +1 -0
- package/dist/custom/schema-form/types.js +1 -0
- package/dist/custom/schema-form/types.js.map +1 -0
- package/dist/custom/schema-form/utils/index.js +10 -0
- package/dist/custom/schema-form/utils/index.js.map +1 -0
- package/dist/custom/schema-form/utils/schema-dependency.js +349 -0
- package/dist/custom/schema-form/utils/schema-dependency.js.map +1 -0
- package/dist/custom/schema-form/utils/schemas.js +190 -0
- package/dist/custom/schema-form/utils/schemas.js.map +1 -0
- package/dist/custom/schema-form/utils/validation.js +19 -0
- package/dist/custom/schema-form/utils/validation.js.map +1 -0
- package/dist/custom/schema-form/widgets/boolean.js +73 -0
- package/dist/custom/schema-form/widgets/boolean.js.map +1 -0
- package/dist/custom/schema-form/widgets/combobox.js +222 -0
- package/dist/custom/schema-form/widgets/combobox.js.map +1 -0
- package/dist/custom/schema-form/widgets/date.js +56 -0
- package/dist/custom/schema-form/widgets/date.js.map +1 -0
- package/dist/custom/schema-form/widgets/email.js +37 -0
- package/dist/custom/schema-form/widgets/email.js.map +1 -0
- package/dist/custom/schema-form/widgets/index.js +11 -0
- package/dist/custom/schema-form/widgets/index.js.map +1 -0
- package/dist/custom/schema-form/widgets/password.js +42 -0
- package/dist/custom/schema-form/widgets/password.js.map +1 -0
- package/dist/custom/schema-form/widgets/phone.js +39 -0
- package/dist/custom/schema-form/widgets/phone.js.map +1 -0
- package/dist/custom/schema-form/widgets/select.js +78 -0
- package/dist/custom/schema-form/widgets/select.js.map +1 -0
- package/dist/custom/schema-form/widgets/selectable.js +25 -0
- package/dist/custom/schema-form/widgets/selectable.js.map +1 -0
- package/dist/custom/schema-form/widgets/string-array.js +237 -0
- package/dist/custom/schema-form/widgets/string-array.js.map +1 -0
- package/dist/custom/schema-form/widgets/url.js +53 -0
- package/dist/custom/schema-form/widgets/url.js.map +1 -0
- package/dist/custom/section-layout-v2.js +150 -0
- package/dist/custom/section-layout-v2.js.map +1 -0
- package/dist/custom/select-tabs.js +66 -0
- package/dist/custom/select-tabs.js.map +1 -0
- package/dist/custom/selectable.js +231 -0
- package/dist/custom/selectable.js.map +1 -0
- package/dist/custom/stepper.js +166 -0
- package/dist/custom/stepper.js.map +1 -0
- package/dist/custom/tab-layout.js +182 -0
- package/dist/custom/tab-layout.js.map +1 -0
- package/dist/custom/tanstack-table/fields/index.js +13 -0
- package/dist/custom/tanstack-table/fields/index.js.map +1 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-action-dialogs.js +76 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-action-dialogs.js.map +1 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-column-header.js +47 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-column-header.js.map +1 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-filter-date.js +132 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-filter-date.js.map +1 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-filter-faceted.js +131 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-filter-faceted.js.map +1 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-filter-text.js +64 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-filter-text.js.map +1 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-pagination.js +135 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-pagination.js.map +1 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-plain-table.js +111 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-plain-table.js.map +1 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-row-actions-confirmation.js +65 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-row-actions-confirmation.js.map +1 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-row-actions-custom-dialog.js +69 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-row-actions-custom-dialog.js.map +1 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-row-actions.js +119 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-row-actions.js.map +1 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-table-actions-custom-dialog.js +75 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-table-actions-custom-dialog.js.map +1 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-table-actions-schemaform-dialog.js +41 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-table-actions-schemaform-dialog.js.map +1 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-toolbar.js +106 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-toolbar.js.map +1 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-view-options.js +132 -0
- package/dist/custom/tanstack-table/fields/tanstack-table-view-options.js.map +1 -0
- package/dist/custom/tanstack-table/index.js +217 -0
- package/dist/custom/tanstack-table/index.js.map +1 -0
- package/dist/custom/tanstack-table/types/index.js +1 -0
- package/dist/custom/tanstack-table/types/index.js.map +1 -0
- package/dist/custom/tanstack-table/utils/cell-with-actions.js +16 -0
- package/dist/custom/tanstack-table/utils/cell-with-actions.js.map +1 -0
- package/dist/custom/tanstack-table/utils/column-names.js +15 -0
- package/dist/custom/tanstack-table/utils/column-names.js.map +1 -0
- package/dist/custom/tanstack-table/utils/columns-by-row-data.js +246 -0
- package/dist/custom/tanstack-table/utils/columns-by-row-data.js.map +1 -0
- package/dist/custom/tanstack-table/utils/editable-columns-by-row-data.js +187 -0
- package/dist/custom/tanstack-table/utils/editable-columns-by-row-data.js.map +1 -0
- package/dist/custom/tanstack-table/utils/faceted-boolean-options.js +25 -0
- package/dist/custom/tanstack-table/utils/faceted-boolean-options.js.map +1 -0
- package/dist/custom/tanstack-table/utils/index.js +10 -0
- package/dist/custom/tanstack-table/utils/index.js.map +1 -0
- package/dist/custom/tanstack-table/utils/pinning-styles.js +38 -0
- package/dist/custom/tanstack-table/utils/pinning-styles.js.map +1 -0
- package/dist/custom/tanstack-table/utils/table.js +66 -0
- package/dist/custom/tanstack-table/utils/table.js.map +1 -0
- package/dist/custom/tanstack-table/utils/test-conditions.js +10 -0
- package/dist/custom/tanstack-table/utils/test-conditions.js.map +1 -0
- package/dist/custom/timeline.js +165 -0
- package/dist/custom/timeline.js.map +1 -0
- package/dist/custom/tree.js +130 -0
- package/dist/custom/tree.js.map +1 -0
- package/dist/custom/tscanify/browser.js +36 -0
- package/dist/custom/tscanify/browser.js.map +1 -0
- package/dist/custom/tscanify/index.js +34 -0
- package/dist/custom/tscanify/index.js.map +1 -0
- package/dist/custom/tscanify/tscanify-browser.js +363 -0
- package/dist/custom/tscanify/tscanify-browser.js.map +1 -0
- package/dist/custom/tscanify/tscanify.js +197 -0
- package/dist/custom/tscanify/tscanify.js.map +1 -0
- package/dist/custom/tscanify/types.js +1 -0
- package/dist/custom/tscanify/types.js.map +1 -0
- package/dist/custom/webcam.js +519 -0
- package/dist/custom/webcam.js.map +1 -0
- package/dist/hooks/use-callback-ref.js +15 -0
- package/dist/hooks/use-callback-ref.js.map +1 -0
- package/dist/hooks/use-controllable-state.js +49 -0
- package/dist/hooks/use-controllable-state.js.map +1 -0
- package/dist/hooks/use-debounce.js +18 -0
- package/dist/hooks/use-debounce.js.map +1 -0
- package/dist/hooks/use-is-visible.js +22 -0
- package/dist/hooks/use-is-visible.js.map +1 -0
- package/dist/hooks/use-media-query.js +19 -0
- package/dist/hooks/use-media-query.js.map +1 -0
- package/dist/hooks/use-mobile.js +21 -0
- package/dist/hooks/use-mobile.js.map +1 -0
- package/dist/hooks/use-on-window-resize.js +15 -0
- package/dist/hooks/use-on-window-resize.js.map +1 -0
- package/dist/hooks/use-scroll.js +20 -0
- package/dist/hooks/use-scroll.js.map +1 -0
- package/dist/lib/utils.js +48 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/zod.js +7 -0
- package/dist/lib/zod.js.map +1 -0
- package/package.json +34 -8
- package/src/aria/index.tsx +1 -1
- package/src/aria/number-field.tsx +41 -41
- package/src/components/accordion.tsx +66 -66
- package/src/components/alert-dialog.tsx +157 -157
- package/src/components/alert.tsx +70 -70
- package/src/components/aspect-ratio.tsx +11 -11
- package/src/components/avatar.tsx +53 -53
- package/src/components/badge.tsx +74 -67
- package/src/components/breadcrumb.tsx +109 -109
- package/src/components/button-group.tsx +83 -83
- package/src/components/button.tsx +69 -68
- package/src/components/calendar.tsx +216 -219
- package/src/components/card.tsx +92 -92
- package/src/components/carousel.tsx +241 -241
- package/src/components/chart.tsx +363 -363
- package/src/components/checkbox.tsx +32 -32
- package/src/components/collapsible.tsx +33 -33
- package/src/components/command.tsx +184 -184
- package/src/components/context-menu.tsx +252 -252
- package/src/components/dialog.tsx +144 -144
- package/src/components/drawer.tsx +135 -135
- package/src/components/dropdown-menu.tsx +258 -258
- package/src/components/empty.tsx +100 -100
- package/src/components/field.tsx +248 -248
- package/src/components/form.tsx +169 -169
- package/src/components/hover-card.tsx +44 -44
- package/src/components/input-group.tsx +170 -170
- package/src/components/input-otp.tsx +77 -77
- package/src/components/input.tsx +21 -21
- package/src/components/item.tsx +193 -193
- package/src/components/kbd.tsx +28 -28
- package/src/components/label.tsx +24 -24
- package/src/components/menubar.tsx +276 -276
- package/src/components/navigation-menu.tsx +168 -168
- package/src/components/pagination.tsx +127 -130
- package/src/components/popover.tsx +88 -88
- package/src/components/progress.tsx +31 -31
- package/src/components/radio-group.tsx +45 -45
- package/src/components/resizable.tsx +56 -56
- package/src/components/scroll-area.tsx +58 -58
- package/src/components/select.tsx +189 -189
- package/src/components/separator.tsx +28 -28
- package/src/components/sheet.tsx +140 -140
- package/src/components/sidebar.tsx +862 -862
- package/src/components/skeleton.tsx +13 -13
- package/src/components/slider.tsx +63 -63
- package/src/components/sonner.tsx +40 -40
- package/src/components/spinner.tsx +16 -16
- package/src/components/stepper.tsx +290 -291
- package/src/components/switch.tsx +31 -31
- package/src/components/table.tsx +133 -133
- package/src/components/tabs.tsx +66 -66
- package/src/components/textarea.tsx +18 -18
- package/src/components/toggle-group.tsx +83 -83
- package/src/components/toggle.tsx +47 -47
- package/src/components/tooltip.tsx +66 -66
- package/src/custom/action-button.tsx +45 -48
- package/src/custom/async-select.tsx +287 -287
- package/src/custom/awesome-not-found.tsx +116 -116
- package/src/custom/charts/area-chart.tsx +147 -147
- package/src/custom/charts/bar-chart.tsx +233 -233
- package/src/custom/charts/chart-card.tsx +103 -103
- package/src/custom/charts/index.tsx +16 -16
- package/src/custom/charts/pie-chart.tsx +168 -168
- package/src/custom/charts/radar-chart.tsx +126 -126
- package/src/custom/checkbox-tree.tsx +100 -100
- package/src/custom/combobox.tsx +296 -296
- package/src/custom/confirm-dialog.tsx +114 -102
- package/src/custom/country-selector.tsx +204 -204
- package/src/custom/date-picker/calendar-rac.tsx +109 -109
- package/src/custom/date-picker/datefield-rac.tsx +84 -84
- package/src/custom/date-picker/index.tsx +273 -273
- package/src/custom/date-picker/types/index.ts +4 -4
- package/src/custom/date-picker/utils/index.ts +42 -42
- package/src/custom/date-picker-old.tsx +50 -50
- package/src/custom/date-tooltip.tsx +98 -98
- package/src/custom/document-scanner/consts.ts +5 -5
- package/src/custom/document-scanner/corner-adjustment/action-buttons.tsx +33 -33
- package/src/custom/document-scanner/corner-adjustment/corner-handle.tsx +43 -43
- package/src/custom/document-scanner/corner-adjustment/hooks/use-corner-drag.ts +85 -85
- package/src/custom/document-scanner/corner-adjustment/index.tsx +125 -125
- package/src/custom/document-scanner/corner-adjustment/types.ts +53 -53
- package/src/custom/document-scanner/corner-adjustment/utils/clip-path.ts +22 -22
- package/src/custom/document-scanner/corner-adjustment/zoom-magnifier.tsx +115 -115
- package/src/custom/document-scanner/hooks/use-document-capture.ts +81 -81
- package/src/custom/document-scanner/hooks/use-document-scanner.ts +80 -80
- package/src/custom/document-scanner/hooks/use-perspective-crop.ts +38 -38
- package/src/custom/document-scanner/index.tsx +255 -255
- package/src/custom/document-scanner/lib.ts +407 -407
- package/src/custom/document-scanner/types.ts +205 -205
- package/src/custom/document-scanner/utils/perspective-correction.ts +139 -139
- package/src/custom/document-viewer/controllers.tsx +98 -98
- package/src/custom/document-viewer/index.tsx +43 -43
- package/src/custom/document-viewer/renderers/image.tsx +37 -37
- package/src/custom/document-viewer/renderers/index.tsx +2 -2
- package/src/custom/document-viewer/renderers/pdf.tsx +105 -105
- package/src/custom/email-input/domains.json +159 -159
- package/src/custom/email-input/email.tsx +231 -229
- package/src/custom/email-input/index.tsx +4 -4
- package/src/custom/email-input/types.ts +104 -104
- package/src/custom/file-uploader.tsx +541 -541
- package/src/custom/filter-component/fields/async-select.tsx +33 -33
- package/src/custom/filter-component/fields/date.tsx +60 -60
- package/src/custom/filter-component/fields/multi-select.tsx +30 -30
- package/src/custom/filter-component/index.tsx +217 -217
- package/src/custom/image-canvas.tsx +260 -260
- package/src/custom/json-editor.tsx +22 -22
- package/src/custom/master-data-grid/components/dialogs/column-settings-dialog.tsx +100 -100
- package/src/custom/master-data-grid/components/dialogs/index.ts +1 -1
- package/src/custom/master-data-grid/components/filters/client-filter.tsx +369 -368
- package/src/custom/master-data-grid/components/filters/filter-input.tsx +256 -256
- package/src/custom/master-data-grid/components/filters/index.ts +3 -3
- package/src/custom/master-data-grid/components/filters/inline-column-filter.tsx +233 -233
- package/src/custom/master-data-grid/components/filters/multi-filter-dialog.tsx +91 -90
- package/src/custom/master-data-grid/components/filters/server-filter.tsx +265 -255
- package/src/custom/master-data-grid/components/master-data-grid.tsx +472 -472
- package/src/custom/master-data-grid/components/pagination/index.ts +1 -1
- package/src/custom/master-data-grid/components/pagination/pagination.tsx +178 -178
- package/src/custom/master-data-grid/components/table/cell-renderer.tsx +621 -634
- package/src/custom/master-data-grid/components/table/header-cell.tsx +162 -162
- package/src/custom/master-data-grid/components/table/index.ts +4 -4
- package/src/custom/master-data-grid/components/table/table-body-renderer.tsx +113 -113
- package/src/custom/master-data-grid/components/table/virtual-body.tsx +138 -138
- package/src/custom/master-data-grid/components/toolbar/index.ts +1 -1
- package/src/custom/master-data-grid/components/toolbar/toolbar.tsx +314 -314
- package/src/custom/master-data-grid/hooks/index.ts +3 -3
- package/src/custom/master-data-grid/hooks/use-columns.tsx +353 -332
- package/src/custom/master-data-grid/hooks/use-editing.ts +106 -106
- package/src/custom/master-data-grid/hooks/use-table-state-reducer.ts +157 -157
- package/src/custom/master-data-grid/hooks/use-table-state.ts +31 -31
- package/src/custom/master-data-grid/index.ts +16 -16
- package/src/custom/master-data-grid/types.ts +487 -466
- package/src/custom/master-data-grid/utils/column-generator.tsx +324 -306
- package/src/custom/master-data-grid/utils/export-utils.ts +67 -67
- package/src/custom/master-data-grid/utils/filter-fns.ts +310 -290
- package/src/custom/master-data-grid/utils/index.ts +8 -8
- package/src/custom/master-data-grid/utils/pinning-utils.ts +88 -88
- package/src/custom/master-data-grid/utils/translation-utils.ts +42 -42
- package/src/custom/multi-select.tsx +434 -432
- package/src/custom/password-input.tsx +194 -194
- package/src/custom/phone-input.tsx +172 -172
- package/src/custom/schema-form/custom/index.tsx +1 -1
- package/src/custom/schema-form/custom/label.tsx +53 -53
- package/src/custom/schema-form/fields/base-input-field.tsx +82 -82
- package/src/custom/schema-form/fields/field.tsx +67 -67
- package/src/custom/schema-form/fields/index.tsx +5 -5
- package/src/custom/schema-form/fields/object.tsx +12 -12
- package/src/custom/schema-form/fields/table-array/array-field-item.tsx +90 -90
- package/src/custom/schema-form/fields/table-array/array-field-template.tsx +115 -115
- package/src/custom/schema-form/index.tsx +259 -259
- package/src/custom/schema-form/templates/description.tsx +20 -20
- package/src/custom/schema-form/templates/index.tsx +2 -2
- package/src/custom/schema-form/templates/submit.tsx +32 -32
- package/src/custom/schema-form/types.ts +64 -64
- package/src/custom/schema-form/utils/index.ts +4 -4
- package/src/custom/schema-form/utils/schema-dependency.ts +655 -655
- package/src/custom/schema-form/utils/schemas.ts +289 -289
- package/src/custom/schema-form/utils/validation.ts +23 -23
- package/src/custom/schema-form/widgets/boolean.tsx +77 -77
- package/src/custom/schema-form/widgets/combobox.tsx +274 -274
- package/src/custom/schema-form/widgets/date.tsx +59 -59
- package/src/custom/schema-form/widgets/email.tsx +34 -34
- package/src/custom/schema-form/widgets/index.tsx +10 -10
- package/src/custom/schema-form/widgets/password.tsx +40 -40
- package/src/custom/schema-form/widgets/phone.tsx +40 -40
- package/src/custom/schema-form/widgets/select.tsx +105 -105
- package/src/custom/schema-form/widgets/selectable.tsx +25 -25
- package/src/custom/schema-form/widgets/string-array.tsx +296 -296
- package/src/custom/schema-form/widgets/url.tsx +56 -56
- package/src/custom/section-layout-v2.tsx +212 -212
- package/src/custom/select-tabs.tsx +109 -109
- package/src/custom/selectable.tsx +316 -316
- package/src/custom/stepper.tsx +236 -236
- package/src/custom/tab-layout.tsx +213 -213
- package/src/custom/tanstack-table/fields/index.tsx +12 -12
- package/src/custom/tanstack-table/fields/tanstack-table-action-dialogs.tsx +89 -89
- package/src/custom/tanstack-table/fields/tanstack-table-column-header.tsx +68 -66
- package/src/custom/tanstack-table/fields/tanstack-table-filter-date.tsx +180 -180
- package/src/custom/tanstack-table/fields/tanstack-table-filter-faceted.tsx +158 -158
- package/src/custom/tanstack-table/fields/tanstack-table-filter-text.tsx +73 -76
- package/src/custom/tanstack-table/fields/tanstack-table-pagination.tsx +136 -136
- package/src/custom/tanstack-table/fields/tanstack-table-plain-table.tsx +142 -142
- package/src/custom/tanstack-table/fields/tanstack-table-row-actions-confirmation.tsx +77 -77
- package/src/custom/tanstack-table/fields/tanstack-table-row-actions-custom-dialog.tsx +87 -87
- package/src/custom/tanstack-table/fields/tanstack-table-row-actions.tsx +151 -151
- package/src/custom/tanstack-table/fields/tanstack-table-table-actions-custom-dialog.tsx +88 -88
- package/src/custom/tanstack-table/fields/tanstack-table-table-actions-schemaform-dialog.tsx +47 -47
- package/src/custom/tanstack-table/fields/tanstack-table-toolbar.tsx +143 -143
- package/src/custom/tanstack-table/fields/tanstack-table-view-options.tsx +171 -171
- package/src/custom/tanstack-table/index.tsx +244 -244
- package/src/custom/tanstack-table/types/index.ts +328 -328
- package/src/custom/tanstack-table/utils/cell-with-actions.tsx +21 -21
- package/src/custom/tanstack-table/utils/column-names.ts +26 -26
- package/src/custom/tanstack-table/utils/columns-by-row-data.tsx +312 -312
- package/src/custom/tanstack-table/utils/editable-columns-by-row-data.tsx +219 -219
- package/src/custom/tanstack-table/utils/faceted-boolean-options.tsx +22 -22
- package/src/custom/tanstack-table/utils/index.tsx +10 -10
- package/src/custom/tanstack-table/utils/pinning-styles.ts +57 -57
- package/src/custom/tanstack-table/utils/table.tsx +83 -83
- package/src/custom/tanstack-table/utils/test-conditions.ts +17 -17
- package/src/custom/timeline.tsx +208 -208
- package/src/custom/tree.tsx +202 -200
- package/src/custom/tscanify/browser.ts +66 -66
- package/src/custom/tscanify/index.ts +51 -51
- package/src/custom/tscanify/tscanify-browser.ts +522 -522
- package/src/custom/tscanify/tscanify.ts +262 -262
- package/src/custom/tscanify/types.ts +22 -22
- package/src/custom/webcam.tsx +737 -737
- package/src/hooks/use-callback-ref.ts +27 -27
- package/src/hooks/use-controllable-state.ts +67 -67
- package/src/hooks/use-debounce.ts +19 -19
- package/src/hooks/use-is-visible.ts +23 -23
- package/src/hooks/use-media-query.ts +21 -21
- package/src/hooks/use-mobile.ts +21 -21
- package/src/hooks/use-on-window-resize.ts +15 -15
- package/src/hooks/use-scroll.tsx +22 -22
- package/src/lib/utils.ts +61 -61
- package/src/lib/zod.ts +2 -2
- package/src/styles/core.css +57 -57
- package/src/test/email-input.test.tsx +217 -217
- package/src/test/password-input.test.tsx +92 -92
- package/src/test/select-tabs.test.tsx +302 -302
- package/src/test/selectable.test.tsx +1093 -1093
- package/__mocks__/canvas.ts +0 -8
- package/components.json +0 -21
- package/eslint.config.js +0 -4
- package/jest-environment.js +0 -37
- package/jest.config.ts +0 -47
- package/jest.setup.ts +0 -69
- package/postcss.config.mjs +0 -6
- package/tsconfig.json +0 -13
- package/tsconfig.lint.json +0 -8
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ChevronDown } from "lucide-react";
|
|
3
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
4
|
+
import {
|
|
5
|
+
DropdownMenu,
|
|
6
|
+
DropdownMenuContent,
|
|
7
|
+
DropdownMenuItem,
|
|
8
|
+
DropdownMenuTrigger
|
|
9
|
+
} from "../../../../components/dropdown-menu";
|
|
10
|
+
import {
|
|
11
|
+
getFilterOperators,
|
|
12
|
+
validateFilterValue
|
|
13
|
+
} from "../../utils/filter-fns";
|
|
14
|
+
import { getTranslations } from "../../utils/translation-utils";
|
|
15
|
+
import { FilterInput } from "./filter-input";
|
|
16
|
+
function InlineColumnFilter({
|
|
17
|
+
column,
|
|
18
|
+
t
|
|
19
|
+
}) {
|
|
20
|
+
const meta = column.columnDef.meta;
|
|
21
|
+
const schemaProperty = meta?.schemaProperty;
|
|
22
|
+
const filterOperators = meta?.filterOperators;
|
|
23
|
+
const availableOperators = useMemo(() => {
|
|
24
|
+
return filterOperators || (schemaProperty ? getFilterOperators(schemaProperty.type, schemaProperty.format) : ["contains"]);
|
|
25
|
+
}, [filterOperators, schemaProperty?.type, schemaProperty?.format]);
|
|
26
|
+
const currentFilter = column.getFilterValue();
|
|
27
|
+
const [operator, setOperator] = useState(
|
|
28
|
+
currentFilter?.operator || availableOperators[0] || "contains"
|
|
29
|
+
);
|
|
30
|
+
const [value, setValue] = useState(
|
|
31
|
+
String(currentFilter?.value || "")
|
|
32
|
+
);
|
|
33
|
+
const [value2, setValue2] = useState(
|
|
34
|
+
String(currentFilter?.value2 || "")
|
|
35
|
+
);
|
|
36
|
+
const debounceTimerRef = useRef(null);
|
|
37
|
+
const isRangeOperator = operator === "between" || operator === "inRange";
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
return () => {
|
|
40
|
+
if (debounceTimerRef.current) {
|
|
41
|
+
clearTimeout(debounceTimerRef.current);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}, []);
|
|
45
|
+
const handleValueChange = useCallback(
|
|
46
|
+
(newValue) => {
|
|
47
|
+
setValue(newValue);
|
|
48
|
+
if (debounceTimerRef.current) {
|
|
49
|
+
clearTimeout(debounceTimerRef.current);
|
|
50
|
+
}
|
|
51
|
+
debounceTimerRef.current = setTimeout(() => {
|
|
52
|
+
if (!newValue && !isRangeOperator) {
|
|
53
|
+
column.setFilterValue(void 0);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (isRangeOperator) {
|
|
57
|
+
if (newValue && value2 && validateFilterValue(operator, newValue, value2)) {
|
|
58
|
+
const filter = {
|
|
59
|
+
id: column.id,
|
|
60
|
+
operator,
|
|
61
|
+
value: newValue,
|
|
62
|
+
value2
|
|
63
|
+
};
|
|
64
|
+
column.setFilterValue(filter);
|
|
65
|
+
}
|
|
66
|
+
} else if (validateFilterValue(operator, newValue)) {
|
|
67
|
+
const filter = {
|
|
68
|
+
id: column.id,
|
|
69
|
+
operator,
|
|
70
|
+
value: newValue
|
|
71
|
+
};
|
|
72
|
+
column.setFilterValue(filter);
|
|
73
|
+
}
|
|
74
|
+
}, 300);
|
|
75
|
+
},
|
|
76
|
+
[column, operator, value2, isRangeOperator]
|
|
77
|
+
);
|
|
78
|
+
const handleValue2Change = useCallback(
|
|
79
|
+
(newValue2) => {
|
|
80
|
+
setValue2(newValue2);
|
|
81
|
+
if (debounceTimerRef.current) {
|
|
82
|
+
clearTimeout(debounceTimerRef.current);
|
|
83
|
+
}
|
|
84
|
+
debounceTimerRef.current = setTimeout(() => {
|
|
85
|
+
if (value && newValue2 && validateFilterValue(operator, value, newValue2)) {
|
|
86
|
+
const filter = {
|
|
87
|
+
id: column.id,
|
|
88
|
+
operator,
|
|
89
|
+
value,
|
|
90
|
+
value2: newValue2
|
|
91
|
+
};
|
|
92
|
+
column.setFilterValue(filter);
|
|
93
|
+
}
|
|
94
|
+
}, 300);
|
|
95
|
+
},
|
|
96
|
+
[column, operator, value]
|
|
97
|
+
);
|
|
98
|
+
const handleSliderChange = (values) => {
|
|
99
|
+
const [min, max] = values;
|
|
100
|
+
setValue(String(min));
|
|
101
|
+
setValue2(String(max));
|
|
102
|
+
const filter = {
|
|
103
|
+
id: column.id,
|
|
104
|
+
operator,
|
|
105
|
+
value: String(min),
|
|
106
|
+
value2: String(max)
|
|
107
|
+
};
|
|
108
|
+
column.setFilterValue(filter);
|
|
109
|
+
};
|
|
110
|
+
const handleClear = () => {
|
|
111
|
+
setValue("");
|
|
112
|
+
setValue2("");
|
|
113
|
+
column.setFilterValue(void 0);
|
|
114
|
+
};
|
|
115
|
+
const handleOperatorChange = (newOperator) => {
|
|
116
|
+
setOperator(newOperator);
|
|
117
|
+
const isNewRangeOperator = newOperator === "between" || newOperator === "inRange";
|
|
118
|
+
const needsNoInputNew = newOperator === "isEmpty" || newOperator === "isNotEmpty";
|
|
119
|
+
if (needsNoInputNew) {
|
|
120
|
+
const filter = {
|
|
121
|
+
id: column.id,
|
|
122
|
+
operator: newOperator,
|
|
123
|
+
value: ""
|
|
124
|
+
};
|
|
125
|
+
column.setFilterValue(filter);
|
|
126
|
+
} else if (isNewRangeOperator) {
|
|
127
|
+
if (value && value2 && validateFilterValue(newOperator, value, value2)) {
|
|
128
|
+
const filter = {
|
|
129
|
+
id: column.id,
|
|
130
|
+
operator: newOperator,
|
|
131
|
+
value,
|
|
132
|
+
value2
|
|
133
|
+
};
|
|
134
|
+
column.setFilterValue(filter);
|
|
135
|
+
} else {
|
|
136
|
+
column.setFilterValue(void 0);
|
|
137
|
+
}
|
|
138
|
+
} else {
|
|
139
|
+
if (value && validateFilterValue(newOperator, value)) {
|
|
140
|
+
const filter = {
|
|
141
|
+
id: column.id,
|
|
142
|
+
operator: newOperator,
|
|
143
|
+
value
|
|
144
|
+
};
|
|
145
|
+
column.setFilterValue(filter);
|
|
146
|
+
} else {
|
|
147
|
+
column.setFilterValue(void 0);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
const showOperatorSelect = availableOperators.length > 1;
|
|
152
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
153
|
+
showOperatorSelect && /* @__PURE__ */ jsxs(DropdownMenu, { children: [
|
|
154
|
+
/* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs("button", { className: "w-full px-2 py-1.5 text-xs font-medium hover:bg-accent rounded-md flex items-center justify-between", children: [
|
|
155
|
+
getTranslations(`filter.operator.${operator}`, t),
|
|
156
|
+
/* @__PURE__ */ jsx(ChevronDown, { className: "size-3" })
|
|
157
|
+
] }) }),
|
|
158
|
+
/* @__PURE__ */ jsx(DropdownMenuContent, { align: "start", children: availableOperators.map((op) => /* @__PURE__ */ jsx(
|
|
159
|
+
DropdownMenuItem,
|
|
160
|
+
{
|
|
161
|
+
onClick: () => handleOperatorChange(op),
|
|
162
|
+
className: "text-xs",
|
|
163
|
+
children: getTranslations(`filter.operator.${op}`, t)
|
|
164
|
+
},
|
|
165
|
+
op
|
|
166
|
+
)) })
|
|
167
|
+
] }),
|
|
168
|
+
/* @__PURE__ */ jsx(
|
|
169
|
+
FilterInput,
|
|
170
|
+
{
|
|
171
|
+
operator,
|
|
172
|
+
value,
|
|
173
|
+
value2,
|
|
174
|
+
columnMeta: meta,
|
|
175
|
+
onValueChange: handleValueChange,
|
|
176
|
+
onValue2Change: handleValue2Change,
|
|
177
|
+
onSliderChange: handleSliderChange,
|
|
178
|
+
onClear: handleClear,
|
|
179
|
+
t,
|
|
180
|
+
variant: "inline"
|
|
181
|
+
}
|
|
182
|
+
)
|
|
183
|
+
] });
|
|
184
|
+
}
|
|
185
|
+
export {
|
|
186
|
+
InlineColumnFilter
|
|
187
|
+
};
|
|
188
|
+
//# sourceMappingURL=inline-column-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/custom/master-data-grid/components/filters/inline-column-filter.tsx"],"sourcesContent":["import type { Column } from \"@tanstack/react-table\";\r\nimport { ChevronDown } from \"lucide-react\";\r\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\r\nimport {\r\n DropdownMenu,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuTrigger,\r\n} from \"../../../../components/dropdown-menu\";\r\nimport type {\r\n ColumnFilter,\r\n ColumnMeta,\r\n FilterOperator,\r\n MasterDataGridResources,\r\n} from \"../../types\";\r\nimport {\r\n getFilterOperators,\r\n validateFilterValue,\r\n} from \"../../utils/filter-fns\";\r\nimport { getTranslations } from \"../../utils/translation-utils\";\r\nimport { FilterInput } from \"./filter-input\";\r\n\r\ninterface InlineColumnFilterProps<TData> {\r\n column: Column<TData, unknown>;\r\n t?: MasterDataGridResources;\r\n}\r\n\r\nexport function InlineColumnFilter<TData>({\r\n column,\r\n t,\r\n}: InlineColumnFilterProps<TData>) {\r\n const meta = column.columnDef.meta as ColumnMeta | undefined;\r\n const schemaProperty = meta?.schemaProperty;\r\n const filterOperators = meta?.filterOperators;\r\n\r\n const availableOperators = useMemo<FilterOperator[]>(() => {\r\n return (\r\n filterOperators ||\r\n (schemaProperty\r\n ? getFilterOperators(schemaProperty.type, schemaProperty.format)\r\n : [\"contains\"])\r\n );\r\n }, [filterOperators, schemaProperty?.type, schemaProperty?.format]);\r\n\r\n const currentFilter = column.getFilterValue() as ColumnFilter | undefined;\r\n const [operator, setOperator] = useState<FilterOperator>(\r\n currentFilter?.operator || availableOperators[0] || \"contains\"\r\n );\r\n const [value, setValue] = useState<string>(\r\n String(currentFilter?.value || \"\")\r\n );\r\n const [value2, setValue2] = useState<string>(\r\n String(currentFilter?.value2 || \"\")\r\n );\r\n const debounceTimerRef = useRef<NodeJS.Timeout | null>(null);\r\n\r\n const isRangeOperator = operator === \"between\" || operator === \"inRange\";\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (debounceTimerRef.current) {\r\n clearTimeout(debounceTimerRef.current);\r\n }\r\n };\r\n }, []);\r\n\r\n const handleValueChange = useCallback(\r\n (newValue: string) => {\r\n setValue(newValue);\r\n\r\n if (debounceTimerRef.current) {\r\n clearTimeout(debounceTimerRef.current);\r\n }\r\n\r\n debounceTimerRef.current = setTimeout(() => {\r\n if (!newValue && !isRangeOperator) {\r\n column.setFilterValue(undefined);\r\n return;\r\n }\r\n\r\n if (isRangeOperator) {\r\n if (\r\n newValue &&\r\n value2 &&\r\n validateFilterValue(operator, newValue, value2)\r\n ) {\r\n const filter: ColumnFilter = {\r\n id: column.id,\r\n operator,\r\n value: newValue,\r\n value2,\r\n };\r\n column.setFilterValue(filter);\r\n }\r\n } else if (validateFilterValue(operator, newValue)) {\r\n const filter: ColumnFilter = {\r\n id: column.id,\r\n operator,\r\n value: newValue,\r\n };\r\n column.setFilterValue(filter);\r\n }\r\n }, 300);\r\n },\r\n [column, operator, value2, isRangeOperator]\r\n );\r\n\r\n const handleValue2Change = useCallback(\r\n (newValue2: string) => {\r\n setValue2(newValue2);\r\n if (debounceTimerRef.current) {\r\n clearTimeout(debounceTimerRef.current);\r\n }\r\n debounceTimerRef.current = setTimeout(() => {\r\n if (\r\n value &&\r\n newValue2 &&\r\n validateFilterValue(operator, value, newValue2)\r\n ) {\r\n const filter: ColumnFilter = {\r\n id: column.id,\r\n operator,\r\n value,\r\n value2: newValue2,\r\n };\r\n column.setFilterValue(filter);\r\n }\r\n }, 300);\r\n },\r\n [column, operator, value]\r\n );\r\n\r\n const handleSliderChange = (values: number[]) => {\r\n const [min, max] = values;\r\n setValue(String(min));\r\n setValue2(String(max));\r\n\r\n const filter: ColumnFilter = {\r\n id: column.id,\r\n operator,\r\n value: String(min),\r\n value2: String(max),\r\n };\r\n column.setFilterValue(filter);\r\n };\r\n\r\n const handleClear = () => {\r\n setValue(\"\");\r\n setValue2(\"\");\r\n column.setFilterValue(undefined);\r\n };\r\n\r\n const handleOperatorChange = (newOperator: FilterOperator) => {\r\n setOperator(newOperator);\r\n\r\n const isNewRangeOperator =\r\n newOperator === \"between\" || newOperator === \"inRange\";\r\n const needsNoInputNew =\r\n newOperator === \"isEmpty\" || newOperator === \"isNotEmpty\";\r\n\r\n if (needsNoInputNew) {\r\n const filter: ColumnFilter = {\r\n id: column.id,\r\n operator: newOperator,\r\n value: \"\",\r\n };\r\n column.setFilterValue(filter);\r\n } else if (isNewRangeOperator) {\r\n if (value && value2 && validateFilterValue(newOperator, value, value2)) {\r\n const filter: ColumnFilter = {\r\n id: column.id,\r\n operator: newOperator,\r\n value,\r\n value2,\r\n };\r\n column.setFilterValue(filter);\r\n } else {\r\n column.setFilterValue(undefined);\r\n }\r\n } else {\r\n if (value && validateFilterValue(newOperator, value)) {\r\n const filter: ColumnFilter = {\r\n id: column.id,\r\n operator: newOperator,\r\n value,\r\n };\r\n column.setFilterValue(filter);\r\n } else {\r\n column.setFilterValue(undefined);\r\n }\r\n }\r\n };\r\n const showOperatorSelect = availableOperators.length > 1;\r\n\r\n return (\r\n <div className=\"space-y-2\">\r\n {showOperatorSelect && (\r\n <DropdownMenu>\r\n <DropdownMenuTrigger asChild>\r\n <button className=\"w-full px-2 py-1.5 text-xs font-medium hover:bg-accent rounded-md flex items-center justify-between\">\r\n {getTranslations(`filter.operator.${operator}`, t)}\r\n <ChevronDown className=\"size-3\" />\r\n </button>\r\n </DropdownMenuTrigger>\r\n <DropdownMenuContent align=\"start\">\r\n {availableOperators.map((op) => (\r\n <DropdownMenuItem\r\n key={op}\r\n onClick={() => handleOperatorChange(op)}\r\n className=\"text-xs\"\r\n >\r\n {getTranslations(`filter.operator.${op}`, t)}\r\n </DropdownMenuItem>\r\n ))}\r\n </DropdownMenuContent>\r\n </DropdownMenu>\r\n )}\r\n\r\n <FilterInput\r\n operator={operator}\r\n value={value}\r\n value2={value2}\r\n columnMeta={meta}\r\n onValueChange={handleValueChange}\r\n onValue2Change={handleValue2Change}\r\n onSliderChange={handleSliderChange}\r\n onClear={handleClear}\r\n t={t}\r\n variant=\"inline\"\r\n />\r\n </div>\r\n );\r\n}\r\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import {
|
|
3
|
+
Tabs,
|
|
4
|
+
TabsContent,
|
|
5
|
+
TabsList,
|
|
6
|
+
TabsTrigger
|
|
7
|
+
} from "@repo/ayasofyazilim-ui/components/tabs";
|
|
8
|
+
import { useIsMobile } from "@repo/ayasofyazilim-ui/hooks/use-mobile";
|
|
9
|
+
import { useState } from "react";
|
|
10
|
+
import {
|
|
11
|
+
Drawer,
|
|
12
|
+
DrawerContent,
|
|
13
|
+
DrawerHeader,
|
|
14
|
+
DrawerTitle,
|
|
15
|
+
DrawerTrigger
|
|
16
|
+
} from "../../../../components/drawer";
|
|
17
|
+
import {
|
|
18
|
+
Popover,
|
|
19
|
+
PopoverContent,
|
|
20
|
+
PopoverTrigger
|
|
21
|
+
} from "../../../../components/popover";
|
|
22
|
+
import { getTranslations } from "../../utils/translation-utils";
|
|
23
|
+
import { ClientFilterContent } from "./client-filter";
|
|
24
|
+
import { ServerFilterContent } from "./server-filter";
|
|
25
|
+
function MultiFilterDialog({
|
|
26
|
+
table,
|
|
27
|
+
config,
|
|
28
|
+
children
|
|
29
|
+
}) {
|
|
30
|
+
const { t } = config;
|
|
31
|
+
const isMobile = useIsMobile();
|
|
32
|
+
const [open, setOpen] = useState(false);
|
|
33
|
+
const filterContent = /* @__PURE__ */ jsxs(Tabs, { defaultValue: "client", children: [
|
|
34
|
+
config.serverFilters && /* @__PURE__ */ jsxs(TabsList, { children: [
|
|
35
|
+
/* @__PURE__ */ jsx(TabsTrigger, { value: "client", children: t?.["toolbar.client"] }),
|
|
36
|
+
/* @__PURE__ */ jsx(TabsTrigger, { value: "server", children: t?.["toolbar.server"] })
|
|
37
|
+
] }),
|
|
38
|
+
/* @__PURE__ */ jsx(TabsContent, { value: "client", className: "w-full", children: /* @__PURE__ */ jsx(ClientFilterContent, { setOpen, table, config }) }),
|
|
39
|
+
/* @__PURE__ */ jsx(
|
|
40
|
+
TabsContent,
|
|
41
|
+
{
|
|
42
|
+
value: "server",
|
|
43
|
+
className: "w-full min-w-lg max-w-lg [&>fieldset]:p-0",
|
|
44
|
+
children: /* @__PURE__ */ jsx(ServerFilterContent, { table, config })
|
|
45
|
+
}
|
|
46
|
+
)
|
|
47
|
+
] });
|
|
48
|
+
if (isMobile) {
|
|
49
|
+
return /* @__PURE__ */ jsxs(Drawer, { open, onOpenChange: setOpen, children: [
|
|
50
|
+
/* @__PURE__ */ jsx(DrawerTrigger, { asChild: true, children }),
|
|
51
|
+
/* @__PURE__ */ jsxs(DrawerContent, { children: [
|
|
52
|
+
/* @__PURE__ */ jsx(DrawerHeader, { children: /* @__PURE__ */ jsx(DrawerTitle, { children: getTranslations("filter.title", t) }) }),
|
|
53
|
+
/* @__PURE__ */ jsx("div", { className: "px-4 pb-4 max-h-[70vh] overflow-y-auto", children: filterContent })
|
|
54
|
+
] })
|
|
55
|
+
] });
|
|
56
|
+
}
|
|
57
|
+
return /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
|
|
58
|
+
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children }),
|
|
59
|
+
/* @__PURE__ */ jsx(PopoverContent, { className: "w-auto max-w-3xl", align: "end", children: filterContent })
|
|
60
|
+
] });
|
|
61
|
+
}
|
|
62
|
+
export {
|
|
63
|
+
MultiFilterDialog
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=multi-filter-dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/custom/master-data-grid/components/filters/multi-filter-dialog.tsx"],"sourcesContent":["import {\r\n Tabs,\r\n TabsContent,\r\n TabsList,\r\n TabsTrigger,\r\n} from \"@repo/ayasofyazilim-ui/components/tabs\";\r\nimport type { Table } from \"@tanstack/react-table\";\r\n\r\nimport { useIsMobile } from \"@repo/ayasofyazilim-ui/hooks/use-mobile\";\r\nimport { useState } from \"react\";\r\nimport {\r\n Drawer,\r\n DrawerContent,\r\n DrawerHeader,\r\n DrawerTitle,\r\n DrawerTrigger,\r\n} from \"../../../../components/drawer\";\r\nimport {\r\n Popover,\r\n PopoverContent,\r\n PopoverTrigger,\r\n} from \"../../../../components/popover\";\r\nimport type { MasterDataGridConfig } from \"../../types\";\r\nimport { getTranslations } from \"../../utils/translation-utils\";\r\nimport { ClientFilterContent } from \"./client-filter\";\r\nimport { ServerFilterContent } from \"./server-filter\";\r\n\r\nexport interface BaseMultiFilterDialogProps<TData> {\r\n table: Table<TData>;\r\n config: MasterDataGridConfig<TData>;\r\n}\r\ninterface MultiFilterDialogProps<TData>\r\n extends BaseMultiFilterDialogProps<TData> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function MultiFilterDialog<TData>({\r\n table,\r\n config,\r\n children,\r\n}: MultiFilterDialogProps<TData>) {\r\n const { t } = config;\r\n const isMobile = useIsMobile();\r\n const [open, setOpen] = useState(false);\r\n\r\n const filterContent = (\r\n <Tabs defaultValue=\"client\">\r\n {config.serverFilters && (\r\n <TabsList>\r\n <TabsTrigger value=\"client\">{t?.[\"toolbar.client\"]}</TabsTrigger>\r\n <TabsTrigger value=\"server\">{t?.[\"toolbar.server\"]}</TabsTrigger>\r\n </TabsList>\r\n )}\r\n <TabsContent value=\"client\" className=\"w-full\">\r\n <ClientFilterContent setOpen={setOpen} table={table} config={config} />\r\n </TabsContent>\r\n <TabsContent\r\n value=\"server\"\r\n className=\"w-full min-w-lg max-w-lg [&>fieldset]:p-0\"\r\n >\r\n <ServerFilterContent table={table} config={config} />\r\n </TabsContent>\r\n </Tabs>\r\n );\r\n\r\n if (isMobile) {\r\n return (\r\n <Drawer open={open} onOpenChange={setOpen}>\r\n <DrawerTrigger asChild>{children}</DrawerTrigger>\r\n <DrawerContent>\r\n <DrawerHeader>\r\n <DrawerTitle>{getTranslations(\"filter.title\", t)}</DrawerTitle>\r\n </DrawerHeader>\r\n <div className=\"px-4 pb-4 max-h-[70vh] overflow-y-auto\">\r\n {filterContent}\r\n </div>\r\n </DrawerContent>\r\n </Drawer>\r\n );\r\n }\r\n\r\n return (\r\n <Popover open={open} onOpenChange={setOpen}>\r\n <PopoverTrigger asChild>{children}</PopoverTrigger>\r\n <PopoverContent className=\"w-auto max-w-3xl\" align=\"end\">\r\n {filterContent}\r\n </PopoverContent>\r\n </Popover>\r\n );\r\n}\r\n"],"mappings":"AAgDQ,SACE,KADF;AAhDR;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,mBAAmB;AAC5B,SAAS,gBAAgB;AACzB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,uBAAuB;AAChC,SAAS,2BAA2B;AACpC,SAAS,2BAA2B;AAW7B,SAAS,kBAAyB;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AACF,GAAkC;AAChC,QAAM,EAAE,EAAE,IAAI;AACd,QAAM,WAAW,YAAY;AAC7B,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AAEtC,QAAM,gBACJ,qBAAC,QAAK,cAAa,UAChB;AAAA,WAAO,iBACN,qBAAC,YACC;AAAA,0BAAC,eAAY,OAAM,UAAU,cAAI,gBAAgB,GAAE;AAAA,MACnD,oBAAC,eAAY,OAAM,UAAU,cAAI,gBAAgB,GAAE;AAAA,OACrD;AAAA,IAEF,oBAAC,eAAY,OAAM,UAAS,WAAU,UACpC,8BAAC,uBAAoB,SAAkB,OAAc,QAAgB,GACvE;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,OAAM;AAAA,QACN,WAAU;AAAA,QAEV,8BAAC,uBAAoB,OAAc,QAAgB;AAAA;AAAA,IACrD;AAAA,KACF;AAGF,MAAI,UAAU;AACZ,WACE,qBAAC,UAAO,MAAY,cAAc,SAChC;AAAA,0BAAC,iBAAc,SAAO,MAAE,UAAS;AAAA,MACjC,qBAAC,iBACC;AAAA,4BAAC,gBACC,8BAAC,eAAa,0BAAgB,gBAAgB,CAAC,GAAE,GACnD;AAAA,QACA,oBAAC,SAAI,WAAU,0CACZ,yBACH;AAAA,SACF;AAAA,OACF;AAAA,EAEJ;AAEA,SACE,qBAAC,WAAQ,MAAY,cAAc,SACjC;AAAA,wBAAC,kBAAe,SAAO,MAAE,UAAS;AAAA,IAClC,oBAAC,kBAAe,WAAU,oBAAmB,OAAM,OAChD,yBACH;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Button } from "@repo/ayasofyazilim-ui/components/button";
|
|
4
|
+
import {
|
|
5
|
+
Field,
|
|
6
|
+
FieldError,
|
|
7
|
+
FieldGroup,
|
|
8
|
+
FieldLabel,
|
|
9
|
+
FieldSet
|
|
10
|
+
} from "@repo/ayasofyazilim-ui/components/field";
|
|
11
|
+
import { Selectable } from "@repo/ayasofyazilim-ui/custom/selectable";
|
|
12
|
+
import { Loader2, RotateCcw, Search, XCircle } from "lucide-react";
|
|
13
|
+
import { usePathname, useRouter, useSearchParams } from "next/navigation";
|
|
14
|
+
import { useCallback, useState, useTransition } from "react";
|
|
15
|
+
import {
|
|
16
|
+
InputGroup,
|
|
17
|
+
InputGroupAddon,
|
|
18
|
+
InputGroupButton,
|
|
19
|
+
InputGroupInput
|
|
20
|
+
} from "@repo/ayasofyazilim-ui/components/input-group";
|
|
21
|
+
import {
|
|
22
|
+
ScrollArea,
|
|
23
|
+
ScrollBar
|
|
24
|
+
} from "@repo/ayasofyazilim-ui/components/scroll-area";
|
|
25
|
+
import { getTranslations } from "../../utils";
|
|
26
|
+
function ServerFilterContent({
|
|
27
|
+
config
|
|
28
|
+
}) {
|
|
29
|
+
const router = useRouter();
|
|
30
|
+
const pathname = usePathname();
|
|
31
|
+
const searchParams = useSearchParams();
|
|
32
|
+
const [isPending, startTransition] = useTransition();
|
|
33
|
+
const { serverFilters } = config;
|
|
34
|
+
if (!serverFilters) return null;
|
|
35
|
+
const [resetCount, setResetCount] = useState(0);
|
|
36
|
+
const [localValues, setLocalValues] = useState(
|
|
37
|
+
() => {
|
|
38
|
+
const initial = {};
|
|
39
|
+
serverFilters.forEach((filter) => {
|
|
40
|
+
const val = searchParams.get(filter.key);
|
|
41
|
+
if (filter.type === "array") {
|
|
42
|
+
initial[filter.key] = searchParams.getAll(filter.key);
|
|
43
|
+
} else if (filter.type === "boolean") {
|
|
44
|
+
initial[filter.key] = val === "true" ? true : val === "false" ? false : void 0;
|
|
45
|
+
} else if (filter.type === "number") {
|
|
46
|
+
initial[filter.key] = val ? Number(val) : void 0;
|
|
47
|
+
} else {
|
|
48
|
+
initial[filter.key] = val || void 0;
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
return initial;
|
|
52
|
+
}
|
|
53
|
+
);
|
|
54
|
+
const [errors, setErrors] = useState({});
|
|
55
|
+
const onValueChange = useCallback(
|
|
56
|
+
(filter, rawValue) => {
|
|
57
|
+
let processedValue = rawValue;
|
|
58
|
+
if (rawValue === "" || Array.isArray(rawValue) && rawValue.length === 0) {
|
|
59
|
+
processedValue = void 0;
|
|
60
|
+
}
|
|
61
|
+
if (filter.validator) {
|
|
62
|
+
const result = filter.validator.safeParse(processedValue);
|
|
63
|
+
setErrors((prev) => ({
|
|
64
|
+
...prev,
|
|
65
|
+
[filter.key]: result.success ? "" : result.error.issues[0]?.message || "Hata"
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
setLocalValues((prev) => ({ ...prev, [filter.key]: processedValue }));
|
|
69
|
+
},
|
|
70
|
+
[]
|
|
71
|
+
);
|
|
72
|
+
const handleApply = () => {
|
|
73
|
+
const params = new URLSearchParams(searchParams.toString());
|
|
74
|
+
let hasValidationError = false;
|
|
75
|
+
serverFilters.forEach((filter) => {
|
|
76
|
+
const val = localValues[filter.key];
|
|
77
|
+
params.delete(filter.key);
|
|
78
|
+
const isEmpty = val === void 0 || val === null || val === "" || Array.isArray(val) && val.length === 0;
|
|
79
|
+
if (!isEmpty) {
|
|
80
|
+
if (filter.validator) {
|
|
81
|
+
const result = filter.validator.safeParse(val);
|
|
82
|
+
if (!result.success) {
|
|
83
|
+
hasValidationError = true;
|
|
84
|
+
setErrors((prev) => ({
|
|
85
|
+
...prev,
|
|
86
|
+
[filter.key]: result.error.issues[0]?.message || "Hata"
|
|
87
|
+
}));
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (Array.isArray(val)) {
|
|
92
|
+
val.forEach((v) => params.append(filter.key, String(v)));
|
|
93
|
+
} else {
|
|
94
|
+
params.set(filter.key, String(val));
|
|
95
|
+
}
|
|
96
|
+
} else {
|
|
97
|
+
setErrors((prev) => ({ ...prev, [filter.key]: "" }));
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
if (hasValidationError) return;
|
|
101
|
+
params.delete("page");
|
|
102
|
+
startTransition(() => {
|
|
103
|
+
router.push(`${pathname}?${params.toString()}`, { scroll: false });
|
|
104
|
+
});
|
|
105
|
+
};
|
|
106
|
+
const handleReset = () => {
|
|
107
|
+
const initial = {};
|
|
108
|
+
serverFilters.forEach((f) => {
|
|
109
|
+
initial[f.key] = f.type === "array" ? [] : void 0;
|
|
110
|
+
});
|
|
111
|
+
setLocalValues(initial);
|
|
112
|
+
setErrors({});
|
|
113
|
+
setResetCount((prev) => prev + 1);
|
|
114
|
+
startTransition(() => router.push(pathname, { scroll: false }));
|
|
115
|
+
};
|
|
116
|
+
const clearSingleFilter = useCallback((filter) => {
|
|
117
|
+
const emptyValue = filter.type === "array" ? [] : filter.type === "boolean" ? void 0 : "";
|
|
118
|
+
setLocalValues((prev) => ({ ...prev, [filter.key]: emptyValue }));
|
|
119
|
+
setErrors((prev) => ({ ...prev, [filter.key]: "" }));
|
|
120
|
+
if (["select", "array", "boolean"].includes(filter.type)) {
|
|
121
|
+
setResetCount((prev) => prev + 1);
|
|
122
|
+
}
|
|
123
|
+
}, []);
|
|
124
|
+
return /* @__PURE__ */ jsxs(FieldSet, { className: "p-2", children: [
|
|
125
|
+
/* @__PURE__ */ jsxs(ScrollArea, { className: "pr-4", children: [
|
|
126
|
+
/* @__PURE__ */ jsx(ScrollBar, {}),
|
|
127
|
+
/* @__PURE__ */ jsx(FieldGroup, { className: "gap-3 max-h-80", children: serverFilters.map((filter) => {
|
|
128
|
+
const value = localValues[filter.key];
|
|
129
|
+
const isSelectable = filter.type === "select" || filter.type === "array" || filter.type === "boolean";
|
|
130
|
+
if (isSelectable) {
|
|
131
|
+
return /* @__PURE__ */ jsxs(Field, { className: "gap-1", children: [
|
|
132
|
+
/* @__PURE__ */ jsx(FieldLabel, { htmlFor: filter.key, children: filter.label }),
|
|
133
|
+
/* @__PURE__ */ jsx(
|
|
134
|
+
Selectable,
|
|
135
|
+
{
|
|
136
|
+
id: filter.key,
|
|
137
|
+
singular: filter.type !== "array",
|
|
138
|
+
options: filter.options,
|
|
139
|
+
defaultValue: filter.options.filter(
|
|
140
|
+
(opt) => Array.isArray(value) ? value.some(
|
|
141
|
+
(v) => v === opt.value || String(v) === String(opt.value)
|
|
142
|
+
) : value === opt.value || String(value) === String(opt.value)
|
|
143
|
+
),
|
|
144
|
+
getKey: (opt) => String(opt.value),
|
|
145
|
+
getLabel: (opt) => opt.label,
|
|
146
|
+
onChange: (selected) => {
|
|
147
|
+
const values = selected.map((s) => s.value);
|
|
148
|
+
onValueChange(
|
|
149
|
+
filter,
|
|
150
|
+
filter.type === "array" ? values : values[0] ?? void 0
|
|
151
|
+
);
|
|
152
|
+
},
|
|
153
|
+
searchPlaceholderText: filter.placeholder,
|
|
154
|
+
makeAChoiceText: filter.placeholder
|
|
155
|
+
},
|
|
156
|
+
`${filter.key}-${resetCount}`
|
|
157
|
+
),
|
|
158
|
+
errors[filter.key] && /* @__PURE__ */ jsx(FieldError, { children: errors[filter.key] })
|
|
159
|
+
] }, filter.key);
|
|
160
|
+
}
|
|
161
|
+
return /* @__PURE__ */ jsxs(Field, { className: "gap-1", children: [
|
|
162
|
+
/* @__PURE__ */ jsx(FieldLabel, { htmlFor: filter.key, children: filter.label }),
|
|
163
|
+
/* @__PURE__ */ jsxs(InputGroup, { children: [
|
|
164
|
+
/* @__PURE__ */ jsx(
|
|
165
|
+
InputGroupInput,
|
|
166
|
+
{
|
|
167
|
+
id: filter.key,
|
|
168
|
+
type: filter.type === "number" ? "number" : "text",
|
|
169
|
+
value: typeof value === "boolean" || typeof value === "object" ? "" : value ?? "",
|
|
170
|
+
placeholder: filter.placeholder,
|
|
171
|
+
onKeyDown: (e) => e.key === "Enter" && handleApply(),
|
|
172
|
+
onChange: (e) => onValueChange(filter, e.target.value),
|
|
173
|
+
className: errors[filter.key] ? "border-destructive" : ""
|
|
174
|
+
}
|
|
175
|
+
),
|
|
176
|
+
localValues[filter.key] && /* @__PURE__ */ jsx(InputGroupAddon, { align: "inline-end", children: /* @__PURE__ */ jsx(
|
|
177
|
+
InputGroupButton,
|
|
178
|
+
{
|
|
179
|
+
onClick: () => clearSingleFilter(filter),
|
|
180
|
+
children: /* @__PURE__ */ jsx(XCircle, {})
|
|
181
|
+
}
|
|
182
|
+
) })
|
|
183
|
+
] }),
|
|
184
|
+
errors[filter.key] && /* @__PURE__ */ jsx(FieldError, { children: errors[filter.key] })
|
|
185
|
+
] }, filter.key);
|
|
186
|
+
}) })
|
|
187
|
+
] }),
|
|
188
|
+
/* @__PURE__ */ jsxs(Field, { orientation: "horizontal", children: [
|
|
189
|
+
/* @__PURE__ */ jsxs(
|
|
190
|
+
Button,
|
|
191
|
+
{
|
|
192
|
+
type: "button",
|
|
193
|
+
variant: "ghost",
|
|
194
|
+
onClick: handleReset,
|
|
195
|
+
disabled: isPending,
|
|
196
|
+
children: [
|
|
197
|
+
/* @__PURE__ */ jsx(RotateCcw, { className: "mr-2 h-4 w-4" }),
|
|
198
|
+
" ",
|
|
199
|
+
getTranslations("filter.clear", config.t)
|
|
200
|
+
]
|
|
201
|
+
}
|
|
202
|
+
),
|
|
203
|
+
/* @__PURE__ */ jsxs(Button, { type: "button", onClick: handleApply, disabled: isPending, children: [
|
|
204
|
+
isPending ? /* @__PURE__ */ jsx(Loader2, { className: "animate-spin" }) : /* @__PURE__ */ jsx(Search, { className: "mr-2 h-4 w-4" }),
|
|
205
|
+
getTranslations("filter.apply", config.t)
|
|
206
|
+
] })
|
|
207
|
+
] })
|
|
208
|
+
] });
|
|
209
|
+
}
|
|
210
|
+
export {
|
|
211
|
+
ServerFilterContent
|
|
212
|
+
};
|
|
213
|
+
//# sourceMappingURL=server-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/custom/master-data-grid/components/filters/server-filter.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { Button } from \"@repo/ayasofyazilim-ui/components/button\";\r\nimport {\r\n Field,\r\n FieldError,\r\n FieldGroup,\r\n FieldLabel,\r\n FieldSet,\r\n} from \"@repo/ayasofyazilim-ui/components/field\";\r\nimport { Selectable } from \"@repo/ayasofyazilim-ui/custom/selectable\";\r\nimport { Loader2, RotateCcw, Search, XCircle } from \"lucide-react\";\r\nimport { usePathname, useRouter, useSearchParams } from \"next/navigation\";\r\nimport { useCallback, useState, useTransition } from \"react\";\r\nimport { ServerFilterConfig } from \"../../types\";\r\nimport { BaseMultiFilterDialogProps } from \"./multi-filter-dialog\";\r\nimport {\r\n InputGroup,\r\n InputGroupAddon,\r\n InputGroupButton,\r\n InputGroupInput,\r\n} from \"@repo/ayasofyazilim-ui/components/input-group\";\r\nimport {\r\n ScrollArea,\r\n ScrollBar,\r\n} from \"@repo/ayasofyazilim-ui/components/scroll-area\";\r\nimport { getTranslations } from \"../../utils\";\r\n\r\ntype FilterValue =\r\n | string\r\n | number\r\n | boolean\r\n | Array<string | boolean>\r\n | undefined;\r\n\r\nexport function ServerFilterContent<TData>({\r\n config,\r\n}: BaseMultiFilterDialogProps<TData>) {\r\n const router = useRouter();\r\n const pathname = usePathname();\r\n const searchParams = useSearchParams();\r\n const [isPending, startTransition] = useTransition();\r\n\r\n const { serverFilters } = config;\r\n if (!serverFilters) return null;\r\n\r\n const [resetCount, setResetCount] = useState(0);\r\n\r\n const [localValues, setLocalValues] = useState<Record<string, FilterValue>>(\r\n () => {\r\n const initial: Record<string, FilterValue> = {};\r\n serverFilters.forEach((filter) => {\r\n const val = searchParams.get(filter.key);\r\n if (filter.type === \"array\") {\r\n initial[filter.key] = searchParams.getAll(filter.key);\r\n } else if (filter.type === \"boolean\") {\r\n initial[filter.key] =\r\n val === \"true\" ? true : val === \"false\" ? false : undefined;\r\n } else if (filter.type === \"number\") {\r\n initial[filter.key] = val ? Number(val) : undefined;\r\n } else {\r\n initial[filter.key] = val || undefined;\r\n }\r\n });\r\n return initial;\r\n }\r\n );\r\n\r\n const [errors, setErrors] = useState<Record<string, string>>({});\r\n\r\n const onValueChange = useCallback(\r\n (filter: ServerFilterConfig, rawValue: FilterValue) => {\r\n let processedValue: FilterValue = rawValue;\r\n if (\r\n rawValue === \"\" ||\r\n (Array.isArray(rawValue) && rawValue.length === 0)\r\n ) {\r\n processedValue = undefined;\r\n }\r\n\r\n if (filter.validator) {\r\n const result = filter.validator.safeParse(processedValue);\r\n setErrors((prev) => ({\r\n ...prev,\r\n [filter.key]: result.success\r\n ? \"\"\r\n : result.error.issues[0]?.message || \"Hata\",\r\n }));\r\n }\r\n\r\n setLocalValues((prev) => ({ ...prev, [filter.key]: processedValue }));\r\n },\r\n []\r\n );\r\n\r\n const handleApply = () => {\r\n const params = new URLSearchParams(searchParams.toString());\r\n let hasValidationError = false;\r\n\r\n serverFilters.forEach((filter) => {\r\n const val = localValues[filter.key];\r\n params.delete(filter.key);\r\n const isEmpty =\r\n val === undefined ||\r\n val === null ||\r\n val === \"\" ||\r\n (Array.isArray(val) && val.length === 0);\r\n\r\n if (!isEmpty) {\r\n if (filter.validator) {\r\n const result = filter.validator.safeParse(val);\r\n if (!result.success) {\r\n hasValidationError = true;\r\n setErrors((prev) => ({\r\n ...prev,\r\n [filter.key]: result.error.issues[0]?.message || \"Hata\",\r\n }));\r\n return;\r\n }\r\n }\r\n if (Array.isArray(val)) {\r\n val.forEach((v) => params.append(filter.key, String(v)));\r\n } else {\r\n params.set(filter.key, String(val));\r\n }\r\n } else {\r\n setErrors((prev) => ({ ...prev, [filter.key]: \"\" }));\r\n }\r\n });\r\n if (hasValidationError) return;\r\n params.delete(\"page\");\r\n startTransition(() => {\r\n router.push(`${pathname}?${params.toString()}`, { scroll: false });\r\n });\r\n };\r\n\r\n const handleReset = () => {\r\n const initial: Record<string, FilterValue> = {};\r\n serverFilters.forEach((f) => {\r\n initial[f.key] = f.type === \"array\" ? [] : undefined;\r\n });\r\n setLocalValues(initial);\r\n setErrors({});\r\n setResetCount((prev) => prev + 1);\r\n startTransition(() => router.push(pathname, { scroll: false }));\r\n };\r\n\r\n const clearSingleFilter = useCallback((filter: ServerFilterConfig) => {\r\n const emptyValue =\r\n filter.type === \"array\" ? [] : filter.type === \"boolean\" ? undefined : \"\";\r\n setLocalValues((prev) => ({ ...prev, [filter.key]: emptyValue }));\r\n setErrors((prev) => ({ ...prev, [filter.key]: \"\" }));\r\n if ([\"select\", \"array\", \"boolean\"].includes(filter.type)) {\r\n setResetCount((prev) => prev + 1);\r\n }\r\n }, []);\r\n\r\n return (\r\n <FieldSet className=\"p-2\">\r\n <ScrollArea className=\"pr-4\">\r\n <ScrollBar />\r\n <FieldGroup className={\"gap-3 max-h-80\"}>\r\n {serverFilters.map((filter) => {\r\n const value = localValues[filter.key];\r\n\r\n const isSelectable =\r\n filter.type === \"select\" ||\r\n filter.type === \"array\" ||\r\n filter.type === \"boolean\";\r\n if (isSelectable) {\r\n return (\r\n <Field key={filter.key} className=\"gap-1\">\r\n <FieldLabel htmlFor={filter.key}>{filter.label}</FieldLabel>\r\n <Selectable\r\n id={filter.key}\r\n key={`${filter.key}-${resetCount}`}\r\n singular={filter.type !== \"array\"}\r\n options={filter.options}\r\n defaultValue={filter.options.filter((opt) =>\r\n Array.isArray(value)\r\n ? value.some(\r\n (v) =>\r\n v === opt.value || String(v) === String(opt.value)\r\n )\r\n : value === opt.value ||\r\n String(value) === String(opt.value)\r\n )}\r\n getKey={(opt) => String(opt.value)}\r\n getLabel={(opt) => opt.label}\r\n onChange={(selected) => {\r\n const values = selected.map((s) => s.value);\r\n onValueChange(\r\n filter,\r\n filter.type === \"array\"\r\n ? values\r\n : values[0] ?? undefined\r\n );\r\n }}\r\n searchPlaceholderText={filter.placeholder}\r\n makeAChoiceText={filter.placeholder}\r\n />\r\n {errors[filter.key] && (\r\n <FieldError>{errors[filter.key]}</FieldError>\r\n )}\r\n </Field>\r\n );\r\n }\r\n return (\r\n <Field key={filter.key} className=\"gap-1\">\r\n <FieldLabel htmlFor={filter.key}>{filter.label}</FieldLabel>\r\n <InputGroup>\r\n <InputGroupInput\r\n id={filter.key}\r\n type={filter.type === \"number\" ? \"number\" : \"text\"}\r\n value={\r\n typeof value === \"boolean\" || typeof value === \"object\"\r\n ? \"\"\r\n : value ?? \"\"\r\n }\r\n placeholder={filter.placeholder}\r\n onKeyDown={(e) => e.key === \"Enter\" && handleApply()}\r\n onChange={(e) => onValueChange(filter, e.target.value)}\r\n className={errors[filter.key] ? \"border-destructive\" : \"\"}\r\n />\r\n {localValues[filter.key] && (\r\n <InputGroupAddon align=\"inline-end\">\r\n <InputGroupButton\r\n onClick={() => clearSingleFilter(filter)}\r\n >\r\n <XCircle />\r\n </InputGroupButton>\r\n </InputGroupAddon>\r\n )}\r\n </InputGroup>\r\n {errors[filter.key] && (\r\n <FieldError>{errors[filter.key]}</FieldError>\r\n )}\r\n </Field>\r\n );\r\n })}\r\n </FieldGroup>\r\n </ScrollArea>\r\n <Field orientation=\"horizontal\">\r\n <Button\r\n type=\"button\"\r\n variant=\"ghost\"\r\n onClick={handleReset}\r\n disabled={isPending}\r\n >\r\n <RotateCcw className=\"mr-2 h-4 w-4\" />{\" \"}\r\n {getTranslations(\"filter.clear\", config.t)}\r\n </Button>\r\n <Button type=\"button\" onClick={handleApply} disabled={isPending}>\r\n {isPending ? (\r\n <Loader2 className=\"animate-spin\" />\r\n ) : (\r\n <Search className=\"mr-2 h-4 w-4\" />\r\n )}\r\n {getTranslations(\"filter.apply\", config.t)}\r\n </Button>\r\n </Field>\r\n </FieldSet>\r\n );\r\n}\r\n"],"mappings":"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","names":[]}
|