@mantis-core/ui 0.5.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +155 -0
- package/COMPONENTS.md +71 -73
- package/README.md +19 -6
- package/bin/mantis-llm.mjs +242 -0
- package/catalog.json +3031 -0
- package/dist/components/Buttons/Button.d.ts +39 -9
- package/dist/components/Buttons/Button.d.ts.map +1 -1
- package/dist/components/Buttons/Button.js +21 -13
- package/dist/components/Buttons/Button.js.map +1 -1
- package/dist/components/Forms/AutoCompleteField.d.ts +60 -0
- package/dist/components/Forms/AutoCompleteField.d.ts.map +1 -0
- package/dist/components/Forms/AutoCompleteField.js +125 -0
- package/dist/components/Forms/AutoCompleteField.js.map +1 -0
- package/dist/components/Forms/CKEditorInput.d.ts +5 -2
- package/dist/components/Forms/CKEditorInput.d.ts.map +1 -1
- package/dist/components/Forms/CKEditorInput.js +5 -2
- package/dist/components/Forms/CKEditorInput.js.map +1 -1
- package/dist/components/Forms/CheckboxField.d.ts +14 -0
- package/dist/components/Forms/CheckboxField.d.ts.map +1 -0
- package/dist/components/Forms/CheckboxField.js +26 -0
- package/dist/components/Forms/CheckboxField.js.map +1 -0
- package/dist/components/Forms/ColorPickerInput.d.ts +27 -8
- package/dist/components/Forms/ColorPickerInput.d.ts.map +1 -1
- package/dist/components/Forms/ColorPickerInput.js +57 -11
- package/dist/components/Forms/ColorPickerInput.js.map +1 -1
- package/dist/components/Forms/DateField.d.ts +68 -0
- package/dist/components/Forms/DateField.d.ts.map +1 -0
- package/dist/components/Forms/DateField.js +108 -0
- package/dist/components/Forms/DateField.js.map +1 -0
- package/dist/components/Forms/DatePresets.d.ts.map +1 -1
- package/dist/components/Forms/DatePresets.js +6 -3
- package/dist/components/Forms/DatePresets.js.map +1 -1
- package/dist/components/Forms/FieldShell.d.ts +24 -0
- package/dist/components/Forms/FieldShell.d.ts.map +1 -0
- package/dist/components/Forms/FieldShell.js +39 -0
- package/dist/components/Forms/FieldShell.js.map +1 -0
- package/dist/components/Forms/FileDropzone.d.ts +4 -2
- package/dist/components/Forms/FileDropzone.d.ts.map +1 -1
- package/dist/components/Forms/FileDropzone.js.map +1 -1
- package/dist/components/Forms/FormActionsBar.js +2 -2
- package/dist/components/Forms/FormActionsBar.js.map +1 -1
- package/dist/components/Forms/FormWizard.d.ts +1 -1
- package/dist/components/Forms/FormWizard.d.ts.map +1 -1
- package/dist/components/Forms/FormWizard.js +4 -5
- package/dist/components/Forms/FormWizard.js.map +1 -1
- package/dist/components/Forms/HiddenField.d.ts +12 -6
- package/dist/components/Forms/HiddenField.d.ts.map +1 -1
- package/dist/components/Forms/HiddenField.js +14 -5
- package/dist/components/Forms/HiddenField.js.map +1 -1
- package/dist/components/Forms/MaskField.d.ts +28 -0
- package/dist/components/Forms/MaskField.d.ts.map +1 -0
- package/dist/components/Forms/MaskField.js +74 -0
- package/dist/components/Forms/MaskField.js.map +1 -0
- package/dist/components/Forms/NumberField.d.ts +14 -0
- package/dist/components/Forms/NumberField.d.ts.map +1 -0
- package/dist/components/Forms/NumberField.js +51 -0
- package/dist/components/Forms/NumberField.js.map +1 -0
- package/dist/components/Forms/OtpInput.d.ts +23 -8
- package/dist/components/Forms/OtpInput.d.ts.map +1 -1
- package/dist/components/Forms/OtpInput.js +37 -8
- package/dist/components/Forms/OtpInput.js.map +1 -1
- package/dist/components/Forms/PasswordInput.d.ts +22 -9
- package/dist/components/Forms/PasswordInput.d.ts.map +1 -1
- package/dist/components/Forms/PasswordInput.js +63 -28
- package/dist/components/Forms/PasswordInput.js.map +1 -1
- package/dist/components/Forms/PhoneInput.d.ts +16 -8
- package/dist/components/Forms/PhoneInput.d.ts.map +1 -1
- package/dist/components/Forms/PhoneInput.js +13 -6
- package/dist/components/Forms/PhoneInput.js.map +1 -1
- package/dist/components/Forms/RadioGroup.d.ts +34 -13
- package/dist/components/Forms/RadioGroup.d.ts.map +1 -1
- package/dist/components/Forms/RadioGroup.js +49 -6
- package/dist/components/Forms/RadioGroup.js.map +1 -1
- package/dist/components/Forms/RangeSlider.d.ts +26 -11
- package/dist/components/Forms/RangeSlider.d.ts.map +1 -1
- package/dist/components/Forms/RangeSlider.js +40 -7
- package/dist/components/Forms/RangeSlider.js.map +1 -1
- package/dist/components/Forms/RatingInput.d.ts +24 -8
- package/dist/components/Forms/RatingInput.d.ts.map +1 -1
- package/dist/components/Forms/RatingInput.js +41 -9
- package/dist/components/Forms/RatingInput.js.map +1 -1
- package/dist/components/Forms/SearchInput.d.ts +18 -10
- package/dist/components/Forms/SearchInput.d.ts.map +1 -1
- package/dist/components/Forms/SearchInput.js +44 -23
- package/dist/components/Forms/SearchInput.js.map +1 -1
- package/dist/components/Forms/SelectField.d.ts +41 -0
- package/dist/components/Forms/SelectField.d.ts.map +1 -0
- package/dist/components/Forms/SelectField.js +110 -0
- package/dist/components/Forms/SelectField.js.map +1 -0
- package/dist/components/Forms/SwitchField.d.ts +14 -0
- package/dist/components/Forms/SwitchField.d.ts.map +1 -0
- package/dist/components/Forms/SwitchField.js +26 -0
- package/dist/components/Forms/SwitchField.js.map +1 -0
- package/dist/components/Forms/TagsInput.d.ts +29 -8
- package/dist/components/Forms/TagsInput.d.ts.map +1 -1
- package/dist/components/Forms/TagsInput.js +53 -9
- package/dist/components/Forms/TagsInput.js.map +1 -1
- package/dist/components/Forms/TextArea.d.ts +13 -10
- package/dist/components/Forms/TextArea.d.ts.map +1 -1
- package/dist/components/Forms/TextArea.js +27 -9
- package/dist/components/Forms/TextArea.js.map +1 -1
- package/dist/components/Forms/TextField.d.ts +14 -0
- package/dist/components/Forms/TextField.d.ts.map +1 -0
- package/dist/components/Forms/TextField.js +29 -0
- package/dist/components/Forms/TextField.js.map +1 -0
- package/dist/components/Forms/ToggleInlineButton.d.ts +33 -12
- package/dist/components/Forms/ToggleInlineButton.d.ts.map +1 -1
- package/dist/components/Forms/ToggleInlineButton.js +56 -6
- package/dist/components/Forms/ToggleInlineButton.js.map +1 -1
- package/dist/components/Forms/UploadFilesPreview.js +3 -3
- package/dist/components/Forms/UploadFilesPreview.js.map +1 -1
- package/dist/components/Forms/field-typing.test-d.d.ts +2 -0
- package/dist/components/Forms/field-typing.test-d.d.ts.map +1 -0
- package/dist/components/Forms/field-typing.test-d.js +24 -0
- package/dist/components/Forms/field-typing.test-d.js.map +1 -0
- package/dist/components/Forms/useFieldController.d.ts +85 -0
- package/dist/components/Forms/useFieldController.d.ts.map +1 -0
- package/dist/components/Forms/useFieldController.js +54 -0
- package/dist/components/Forms/useFieldController.js.map +1 -0
- package/dist/components/Loaders/Loading.d.ts.map +1 -1
- package/dist/components/Loaders/Loading.js +3 -2
- package/dist/components/Loaders/Loading.js.map +1 -1
- package/dist/components/Tables/ActionColumn.d.ts +20 -4
- package/dist/components/Tables/ActionColumn.d.ts.map +1 -1
- package/dist/components/Tables/ActionColumn.js +24 -5
- package/dist/components/Tables/ActionColumn.js.map +1 -1
- package/dist/components/Tables/FilterPannel.d.ts +9 -2
- package/dist/components/Tables/FilterPannel.d.ts.map +1 -1
- package/dist/components/Tables/FilterPannel.js +15 -11
- package/dist/components/Tables/FilterPannel.js.map +1 -1
- package/dist/components/Tables/IndexColumn.d.ts +12 -3
- package/dist/components/Tables/IndexColumn.d.ts.map +1 -1
- package/dist/components/Tables/IndexColumn.js +21 -5
- package/dist/components/Tables/IndexColumn.js.map +1 -1
- package/dist/components/Tables/MantisDataTable.d.ts +45 -0
- package/dist/components/Tables/MantisDataTable.d.ts.map +1 -0
- package/dist/components/Tables/MantisDataTable.js +63 -0
- package/dist/components/Tables/MantisDataTable.js.map +1 -0
- package/dist/components/Tables/MenuButton.d.ts +28 -7
- package/dist/components/Tables/MenuButton.d.ts.map +1 -1
- package/dist/components/Tables/MenuButton.js +20 -10
- package/dist/components/Tables/MenuButton.js.map +1 -1
- package/dist/components/Tables/PaginatedTable.d.ts +26 -17
- package/dist/components/Tables/PaginatedTable.d.ts.map +1 -1
- package/dist/components/Tables/PaginatedTable.js +24 -22
- package/dist/components/Tables/PaginatedTable.js.map +1 -1
- package/dist/components/Tables/cell-presets.d.ts +35 -0
- package/dist/components/Tables/cell-presets.d.ts.map +1 -0
- package/dist/components/Tables/cell-presets.js +40 -0
- package/dist/components/Tables/cell-presets.js.map +1 -0
- package/dist/components/Tables/columns.d.ts +40 -0
- package/dist/components/Tables/columns.d.ts.map +1 -0
- package/dist/components/Tables/columns.js +2 -0
- package/dist/components/Tables/columns.js.map +1 -0
- package/dist/components/Tables/filters/MultiSelectFilter.d.ts +24 -6
- package/dist/components/Tables/filters/MultiSelectFilter.d.ts.map +1 -1
- package/dist/components/Tables/filters/MultiSelectFilter.js +19 -6
- package/dist/components/Tables/filters/MultiSelectFilter.js.map +1 -1
- package/dist/components/auth/ChangePasswordForm.d.ts.map +1 -1
- package/dist/components/auth/ChangePasswordForm.js +12 -12
- package/dist/components/auth/ChangePasswordForm.js.map +1 -1
- package/dist/components/auth/ForgotPasswordForm.d.ts.map +1 -1
- package/dist/components/auth/ForgotPasswordForm.js +7 -5
- package/dist/components/auth/ForgotPasswordForm.js.map +1 -1
- package/dist/components/auth/LoginForm.d.ts +2 -2
- package/dist/components/auth/LoginForm.d.ts.map +1 -1
- package/dist/components/auth/LoginForm.js +15 -15
- package/dist/components/auth/LoginForm.js.map +1 -1
- package/dist/components/auth/ResetPasswordForm.d.ts.map +1 -1
- package/dist/components/auth/ResetPasswordForm.js +11 -12
- package/dist/components/auth/ResetPasswordForm.js.map +1 -1
- package/dist/components/auth/UserMenu.d.ts +11 -1
- package/dist/components/auth/UserMenu.d.ts.map +1 -1
- package/dist/components/auth/UserMenu.js +30 -87
- package/dist/components/auth/UserMenu.js.map +1 -1
- package/dist/components/data/Timeline.d.ts +2 -2
- package/dist/components/data/Timeline.d.ts.map +1 -1
- package/dist/components/data/Timeline.js +17 -17
- package/dist/components/data/Timeline.js.map +1 -1
- package/dist/components/feedback/Avatar.d.ts +4 -2
- package/dist/components/feedback/Avatar.d.ts.map +1 -1
- package/dist/components/feedback/Avatar.js +4 -4
- package/dist/components/feedback/Avatar.js.map +1 -1
- package/dist/components/feedback/CardSkeleton.d.ts.map +1 -1
- package/dist/components/feedback/CardSkeleton.js +3 -3
- package/dist/components/feedback/CardSkeleton.js.map +1 -1
- package/dist/components/feedback/TableSkeleton.d.ts.map +1 -1
- package/dist/components/feedback/TableSkeleton.js +3 -3
- package/dist/components/feedback/TableSkeleton.js.map +1 -1
- package/dist/components/feedback/Tag.d.ts +4 -2
- package/dist/components/feedback/Tag.d.ts.map +1 -1
- package/dist/components/feedback/Tag.js +4 -4
- package/dist/components/feedback/Tag.js.map +1 -1
- package/dist/components/navigation/CommandPalette.d.ts.map +1 -1
- package/dist/components/navigation/CommandPalette.js +5 -2
- package/dist/components/navigation/CommandPalette.js.map +1 -1
- package/dist/components/navigation/PageTabs.d.ts +10 -8
- package/dist/components/navigation/PageTabs.d.ts.map +1 -1
- package/dist/components/navigation/PageTabs.js +17 -13
- package/dist/components/navigation/PageTabs.js.map +1 -1
- package/dist/components/overlays/Drawer.d.ts +16 -3
- package/dist/components/overlays/Drawer.d.ts.map +1 -1
- package/dist/components/overlays/Drawer.js +9 -5
- package/dist/components/overlays/Drawer.js.map +1 -1
- package/dist/components/overlays/Modal.d.ts +18 -3
- package/dist/components/overlays/Modal.d.ts.map +1 -1
- package/dist/components/overlays/Modal.js +13 -5
- package/dist/components/overlays/Modal.js.map +1 -1
- package/dist/components/pages/app-shell/AppShell.d.ts.map +1 -1
- package/dist/components/pages/app-shell/AppShell.js +6 -6
- package/dist/components/pages/app-shell/AppShell.js.map +1 -1
- package/dist/components/ui/ConfirmDialog.d.ts +1 -2
- package/dist/components/ui/ConfirmDialog.d.ts.map +1 -1
- package/dist/components/ui/ConfirmDialog.js +10 -4
- package/dist/components/ui/ConfirmDialog.js.map +1 -1
- package/dist/components/ui/DataState.js +2 -2
- package/dist/components/ui/DataState.js.map +1 -1
- package/dist/index.d.ts +71 -42
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +114 -22
- package/dist/index.js.map +1 -1
- package/docs/README.md +1 -1
- package/docs/components/action-column.md +33 -7
- package/docs/components/admin-page-configurator.md +24 -5
- package/docs/components/admin-page-header.md +21 -3
- package/docs/components/admin-page-layout-shell.md +18 -4
- package/docs/components/admin-page-layout.md +34 -5
- package/docs/components/app-shell.md +31 -6
- package/docs/components/auto-complete-field.md +60 -0
- package/docs/components/avatar.md +18 -8
- package/docs/components/bar-chart.md +25 -7
- package/docs/components/breadcrumbs.md +15 -2
- package/docs/components/button.md +34 -15
- package/docs/components/card-skeleton.md +9 -3
- package/docs/components/change-password-form.md +23 -4
- package/docs/components/checkbox-field.md +38 -0
- package/docs/components/ckeditor-input.md +40 -8
- package/docs/components/color-picker-input.md +19 -8
- package/docs/components/command-palette.md +23 -2
- package/docs/components/confirm-dialog.md +36 -9
- package/docs/components/data-state.md +31 -6
- package/docs/components/date-field.md +39 -0
- package/docs/components/date-presets.md +19 -5
- package/docs/components/description-list.md +20 -2
- package/docs/components/dirty-form-guard.md +16 -4
- package/docs/components/donut-chart.md +24 -7
- package/docs/components/drawer.md +27 -8
- package/docs/components/empty-state.md +12 -2
- package/docs/components/error-boundary.md +16 -2
- package/docs/components/error-message.md +22 -3
- package/docs/components/field-shell.md +47 -0
- package/docs/components/file-dropzone.md +22 -6
- package/docs/components/filter-pannel.md +34 -7
- package/docs/components/forgot-password-form.md +23 -5
- package/docs/components/form-actions-bar.md +21 -2
- package/docs/components/form-field-render.md +36 -8
- package/docs/components/form-section.md +13 -1
- package/docs/components/form-wizard.md +34 -5
- package/docs/components/hidden-field.md +22 -6
- package/docs/components/index-column.md +25 -5
- package/docs/components/line-chart.md +25 -7
- package/docs/components/loading.md +14 -5
- package/docs/components/login-form.md +31 -6
- package/docs/components/mantis-data-table.md +61 -0
- package/docs/components/map-picker-client.md +29 -8
- package/docs/components/map-picker-osm.md +27 -9
- package/docs/components/map-picker.md +25 -4
- package/docs/components/mask-field.md +31 -0
- package/docs/components/menu-button.md +22 -7
- package/docs/components/modal.md +34 -9
- package/docs/components/multi-select-filter.md +25 -7
- package/docs/components/number-field.md +40 -0
- package/docs/components/otp-input.md +20 -7
- package/docs/components/page-tabs.md +23 -4
- package/docs/components/page-title.md +6 -1
- package/docs/components/paginated-table.md +36 -13
- package/docs/components/pagination.md +20 -7
- package/docs/components/password-input.md +20 -8
- package/docs/components/phone-input.md +17 -7
- package/docs/components/radio-group.md +39 -9
- package/docs/components/range-slider.md +18 -6
- package/docs/components/rating-input.md +19 -8
- package/docs/components/render-field.md +31 -3
- package/docs/components/reset-password-form.md +24 -4
- package/docs/components/rich-text-preview.md +17 -5
- package/docs/components/search-input.md +18 -7
- package/docs/components/select-field.md +55 -0
- package/docs/components/stat-card.md +14 -3
- package/docs/components/status-badge.md +17 -7
- package/docs/components/switch-field.md +32 -0
- package/docs/components/table-filter-field.md +22 -4
- package/docs/components/table-skeleton.md +9 -3
- package/docs/components/table-toolbar.md +18 -5
- package/docs/components/tag.md +16 -7
- package/docs/components/tags-input.md +21 -8
- package/docs/components/text-area.md +18 -8
- package/docs/components/text-field.md +32 -0
- package/docs/components/timeline.md +19 -3
- package/docs/components/toggle-inline-button.md +42 -10
- package/docs/components/upload-files-preview.md +23 -2
- package/docs/components/use-field-controller.md +58 -0
- package/docs/components/user-menu.md +26 -6
- package/docs/contracts/dependency-map.md +50 -52
- package/docs/contracts/field-controller.md +138 -0
- package/docs/contracts/style-imports.md +1 -20
- package/llms.txt +70 -72
- package/package.json +48 -11
- package/dist/components/Forms/AsyncSelect.d.ts +0 -20
- package/dist/components/Forms/AsyncSelect.d.ts.map +0 -1
- package/dist/components/Forms/AsyncSelect.js +0 -77
- package/dist/components/Forms/AsyncSelect.js.map +0 -1
- package/dist/components/Forms/Combobox.d.ts +0 -10
- package/dist/components/Forms/Combobox.d.ts.map +0 -1
- package/dist/components/Forms/Combobox.js +0 -11
- package/dist/components/Forms/Combobox.js.map +0 -1
- package/dist/components/Forms/CurrencyInput.d.ts +0 -12
- package/dist/components/Forms/CurrencyInput.d.ts.map +0 -1
- package/dist/components/Forms/CurrencyInput.js +0 -9
- package/dist/components/Forms/CurrencyInput.js.map +0 -1
- package/dist/components/Forms/DateInput.d.ts +0 -10
- package/dist/components/Forms/DateInput.d.ts.map +0 -1
- package/dist/components/Forms/DateInput.js +0 -11
- package/dist/components/Forms/DateInput.js.map +0 -1
- package/dist/components/Forms/DateRangeInput.d.ts +0 -10
- package/dist/components/Forms/DateRangeInput.d.ts.map +0 -1
- package/dist/components/Forms/DateRangeInput.js +0 -13
- package/dist/components/Forms/DateRangeInput.js.map +0 -1
- package/dist/components/Forms/DropDown.d.ts +0 -10
- package/dist/components/Forms/DropDown.d.ts.map +0 -1
- package/dist/components/Forms/DropDown.js +0 -11
- package/dist/components/Forms/DropDown.js.map +0 -1
- package/dist/components/Forms/MultiSelect.d.ts +0 -10
- package/dist/components/Forms/MultiSelect.d.ts.map +0 -1
- package/dist/components/Forms/MultiSelect.js +0 -13
- package/dist/components/Forms/MultiSelect.js.map +0 -1
- package/dist/components/Forms/NumberInput.d.ts +0 -10
- package/dist/components/Forms/NumberInput.d.ts.map +0 -1
- package/dist/components/Forms/NumberInput.js +0 -16
- package/dist/components/Forms/NumberInput.js.map +0 -1
- package/dist/components/Forms/Select.d.ts +0 -15
- package/dist/components/Forms/Select.d.ts.map +0 -1
- package/dist/components/Forms/Select.js +0 -48
- package/dist/components/Forms/Select.js.map +0 -1
- package/dist/components/Forms/Switch.d.ts +0 -18
- package/dist/components/Forms/Switch.d.ts.map +0 -1
- package/dist/components/Forms/Switch.js +0 -30
- package/dist/components/Forms/Switch.js.map +0 -1
- package/dist/components/Forms/TextInput.d.ts +0 -11
- package/dist/components/Forms/TextInput.d.ts.map +0 -1
- package/dist/components/Forms/TextInput.js +0 -12
- package/dist/components/Forms/TextInput.js.map +0 -1
- package/dist/components/Forms/TimePicker.d.ts +0 -13
- package/dist/components/Forms/TimePicker.d.ts.map +0 -1
- package/dist/components/Forms/TimePicker.js +0 -19
- package/dist/components/Forms/TimePicker.js.map +0 -1
- package/dist/components/Forms/Toggle.d.ts +0 -14
- package/dist/components/Forms/Toggle.d.ts.map +0 -1
- package/dist/components/Forms/Toggle.js +0 -10
- package/dist/components/Forms/Toggle.js.map +0 -1
- package/dist/components/Forms/types.d.ts +0 -9
- package/dist/components/Forms/types.d.ts.map +0 -1
- package/dist/components/Forms/types.js +0 -2
- package/dist/components/Forms/types.js.map +0 -1
- package/docs/components/async-select.md +0 -27
- package/docs/components/combobox.md +0 -19
- package/docs/components/currency-input.md +0 -21
- package/docs/components/date-input.md +0 -21
- package/docs/components/date-range-input.md +0 -20
- package/docs/components/drop-down.md +0 -26
- package/docs/components/multi-select.md +0 -22
- package/docs/components/number-input.md +0 -21
- package/docs/components/select.md +0 -28
- package/docs/components/switch.md +0 -24
- package/docs/components/text-input.md +0 -24
- package/docs/components/time-picker.md +0 -25
- package/docs/components/toggle.md +0 -24
- package/docs/contracts/component-doc-schema.md +0 -78
- package/docs/contracts/controller-props.md +0 -28
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { ChevronDown } from "@primeicons/react/chevron-down";
|
|
4
|
+
import { DataTable } from "@primereact/ui/datatable";
|
|
5
|
+
import { InputText } from "@primereact/ui/inputtext";
|
|
6
|
+
import { Select } from "@primereact/ui/select";
|
|
7
|
+
function resolveCell(col, item, index) {
|
|
8
|
+
// Escape hatch wins, then preset, else the raw string value.
|
|
9
|
+
if (col.body)
|
|
10
|
+
return col.body(item, index);
|
|
11
|
+
if (col.cell)
|
|
12
|
+
return col.cell(item, col.field);
|
|
13
|
+
return String(item[col.field] ?? "");
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Themed `dropdown` filter — the PR11 Select compound bound to a page-owned
|
|
17
|
+
* scalar value (not RHF). Mirrors SelectField's compound tree so it inherits the
|
|
18
|
+
* same design tokens; an empty selection clears the filter.
|
|
19
|
+
*/
|
|
20
|
+
function DropdownFilter(props) {
|
|
21
|
+
return (_jsxs(Select.Root, { className: "mt-1", value: props.value === "" ? null : props.value, onValueChange: (e) => props.onChange(e.value ?? ""), options: props.options, optionLabel: "label", optionValue: "value", size: "small", children: [_jsxs(Select.Trigger, { type: "button", children: [_jsx(Select.Value, { placeholder: "Todos" }), _jsx(Select.Clear, {}), _jsx(Select.Indicator, { children: _jsx(ChevronDown, {}) })] }), _jsx(Select.Portal, { children: _jsx(Select.Positioner, { children: _jsxs(Select.Popup, { children: [_jsx(Select.List, {}), _jsx(Select.Empty, {})] }) }) })] }));
|
|
22
|
+
}
|
|
23
|
+
function FilterControl(props) {
|
|
24
|
+
if (props.kind === "dropdown") {
|
|
25
|
+
return _jsx(DropdownFilter, { options: props.options ?? [], value: props.value, onChange: props.onChange });
|
|
26
|
+
}
|
|
27
|
+
return (_jsx(InputText, { value: props.value, onChange: (e) => props.onChange(e.target.value), placeholder: "Filtrar\u2026", className: "mt-1 text-xs", fluid: true }));
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Compact themed pager. `DataTable.Pagination` is a HEADLESS render-prop part
|
|
31
|
+
* (it renders nothing itself), so the wrapper composes the actual controls from
|
|
32
|
+
* the exposed instance: page indicator + prev/next, wired to `onPageChange`.
|
|
33
|
+
* PR11's Root reads `paginator`/`rows`/`page`/`onPageChange`/`onLazyLoad` — this
|
|
34
|
+
* only draws the UI; Root owns the state and fires the page-change callback.
|
|
35
|
+
*/
|
|
36
|
+
function Pager(dt) {
|
|
37
|
+
// PR11 spreads the Pagination `Exposes` directly onto the instance.
|
|
38
|
+
const { page, pageCount, first, rows, totalRecords, canPrev, canNext, onPageChange } = dt;
|
|
39
|
+
const from = totalRecords === 0 ? 0 : first + 1;
|
|
40
|
+
const to = Math.min(first + rows, totalRecords);
|
|
41
|
+
return (_jsxs("div", { className: "mantis-core-datatable-pager flex items-center justify-end gap-2 py-2 text-sm", children: [_jsxs("span", { className: "text-surface-500", children: [from, "\u2013", to, " / ", totalRecords] }), _jsx("button", { type: "button", "aria-label": "P\u00E1gina anterior", className: "p-button p-button-text p-button-sm", disabled: !canPrev, onClick: (e) => onPageChange?.(e, page - 1), children: _jsx("span", { className: "p-button-icon pi pi-chevron-left", "aria-hidden": true }) }), _jsxs("span", { "aria-current": "page", children: [pageCount === 0 ? 0 : page + 1, " / ", pageCount] }), _jsx("button", { type: "button", "aria-label": "P\u00E1gina siguiente", className: "p-button p-button-text p-button-sm", disabled: !canNext, onClick: (e) => onPageChange?.(e, page + 1), children: _jsx("span", { className: "p-button-icon pi pi-chevron-right", "aria-hidden": true }) })] }));
|
|
42
|
+
}
|
|
43
|
+
export function MantisDataTable(props) {
|
|
44
|
+
const { rows, columns, rowsPerPage, selectable = false, emptyMessage = "No records", filters = {}, onFilterChange,
|
|
45
|
+
// Opinionated defaults — still overridable via the passthrough.
|
|
46
|
+
stripedRows = true, showGridlines = true, ...root } = props;
|
|
47
|
+
const colSpan = columns.length + (selectable ? 1 : 0);
|
|
48
|
+
return (_jsxs(DataTable.Root, { data: rows, rows: rowsPerPage, stripedRows: stripedRows, showGridlines: showGridlines, ...root, children: [_jsx(DataTable.TableContainer, { children: _jsxs(DataTable.Table, { children: [_jsx(DataTable.THead, { children: _jsxs(DataTable.THeadRow, { children: [selectable && _jsx(DataTable.THeadCell, { style: { width: "3rem" } }), columns.map((col) => {
|
|
49
|
+
const filterNode = col.filterElement
|
|
50
|
+
? col.filterElement({
|
|
51
|
+
value: filters[col.field] ?? "",
|
|
52
|
+
onChange: (v) => onFilterChange?.(col.field, v),
|
|
53
|
+
})
|
|
54
|
+
: col.filter
|
|
55
|
+
? (_jsx(FilterControl, { kind: col.filter, options: col.filterOptions, value: filters[col.field] ?? "", onChange: (v) => onFilterChange?.(col.field, v) }))
|
|
56
|
+
: null;
|
|
57
|
+
return (_jsxs(DataTable.THeadCell, { style: col.width ? { width: col.width } : undefined, children: [_jsxs("div", { className: "flex items-center gap-1", children: [col.header, col.sortable && _jsx(DataTable.Sort, { field: col.field })] }), filterNode] }, col.field));
|
|
58
|
+
})] }) }), _jsx(DataTable.TBody, { children: (instance) => {
|
|
59
|
+
const item = instance.item;
|
|
60
|
+
return (_jsxs(DataTable.Row, { index: instance.index, children: [selectable && (_jsx(DataTable.Cell, { children: _jsx(DataTable.Selection, { mode: "checkbox" }) })), columns.map((col) => (_jsx(DataTable.Cell, { children: resolveCell(col, item, instance.index) }, col.field)))] }, instance.index));
|
|
61
|
+
} }), _jsx(DataTable.EmptyTBody, { children: _jsx("tr", { children: _jsx("td", { colSpan: colSpan, className: "text-center text-surface-500 py-6", children: emptyMessage }) }) })] }) }), _jsx(DataTable.Loading, {}), root.paginator ? (_jsx(DataTable.Pagination, { children: (dt) => Pager(dt) })) : null] }));
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=MantisDataTable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MantisDataTable.js","sourceRoot":"","sources":["../../../src/components/Tables/MantisDataTable.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,35 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* A single row-action entry. Either navigate (`route`) or run a `command`.
|
|
4
|
+
* `route` wins when both are set (mirrors the PR10 behaviour).
|
|
5
|
+
*/
|
|
6
|
+
export interface ActionMenuItem {
|
|
7
|
+
/** Stable key + the label shown in the menu. */
|
|
8
|
+
label: string;
|
|
9
|
+
/** PrimeIcons class (e.g. `pi pi-pencil`) rendered before the label. */
|
|
10
|
+
icon?: string;
|
|
11
|
+
/** Internal path — navigated via next/router on select. */
|
|
12
|
+
route?: string;
|
|
13
|
+
/** Custom handler on select. Ignored when `route` is set. */
|
|
14
|
+
command?: () => void;
|
|
15
|
+
/** Disable this entry. */
|
|
16
|
+
disabled?: boolean;
|
|
6
17
|
}
|
|
7
18
|
export interface MenuButtonProps {
|
|
19
|
+
/** Trigger button label. */
|
|
8
20
|
label?: string;
|
|
21
|
+
/** Trigger button icon (PrimeIcons class). Default: cog. */
|
|
9
22
|
icon?: string;
|
|
23
|
+
/** The menu entries. */
|
|
10
24
|
items?: ActionMenuItem[];
|
|
11
25
|
}
|
|
12
|
-
|
|
13
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Row-action overlay menu. Migrated to PR11's compound `Menu`: `Menu.Root` owns
|
|
28
|
+
* its own open state and `Menu.Trigger` toggles the portal-based popup, so the
|
|
29
|
+
* PR10 manual `ref.current.toggle` is gone. The trigger renders the migrated PR11
|
|
30
|
+
* `Button` via `as={Button}` (PR11 `asChild` does NOT wire the trigger — no
|
|
31
|
+
* aria-haspopup, overlay never opens). `route` entries navigate through next/router; `command`
|
|
32
|
+
* entries run their handler. Disabled items never fire `onSelect`.
|
|
33
|
+
*/
|
|
34
|
+
export default function MenuButton({ icon, label, items }: MenuButtonProps): ReactNode;
|
|
14
35
|
//# sourceMappingURL=MenuButton.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuButton.d.ts","sourceRoot":"","sources":["../../../src/components/Tables/MenuButton.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MenuButton.d.ts","sourceRoot":"","sources":["../../../src/components/Tables/MenuButton.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,IAAkB,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE,eAAe,GAAG,SAAS,CAmCxG"}
|
|
@@ -1,15 +1,25 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as _jsx,
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Menu } from "@primereact/ui/menu";
|
|
3
4
|
import { useRouter } from "next/navigation";
|
|
4
|
-
import { PrimeIcons } from "primereact/api";
|
|
5
|
-
import { TieredMenu } from "primereact/tieredmenu";
|
|
6
|
-
import { useRef } from "react";
|
|
7
5
|
import Button from "../Buttons/Button";
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Row-action overlay menu. Migrated to PR11's compound `Menu`: `Menu.Root` owns
|
|
8
|
+
* its own open state and `Menu.Trigger` toggles the portal-based popup, so the
|
|
9
|
+
* PR10 manual `ref.current.toggle` is gone. The trigger renders the migrated PR11
|
|
10
|
+
* `Button` via `as={Button}` (PR11 `asChild` does NOT wire the trigger — no
|
|
11
|
+
* aria-haspopup, overlay never opens). `route` entries navigate through next/router; `command`
|
|
12
|
+
* entries run their handler. Disabled items never fire `onSelect`.
|
|
13
|
+
*/
|
|
14
|
+
export default function MenuButton({ icon = "pi pi-cog", label, items = [] }) {
|
|
10
15
|
const router = useRouter();
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
16
|
+
const select = (item) => () => {
|
|
17
|
+
if (item.route) {
|
|
18
|
+
router.push(item.route);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
item.command?.();
|
|
22
|
+
};
|
|
23
|
+
return (_jsxs(Menu.Root, { children: [_jsx(Menu.Trigger, { as: Button, label: label, icon: icon, outlined: true, sm: true, type: "button" }), _jsx(Menu.Portal, { children: _jsx(Menu.Positioner, { children: _jsx(Menu.Popup, { children: _jsx(Menu.List, { children: items.map((item) => (_jsxs(Menu.Item, { value: item.label, disabled: item.disabled, onSelect: select(item), children: [item.icon && _jsx("span", { className: `${item.icon} mr-2`, "aria-hidden": true }), item.label] }, item.label))) }) }) }) })] }));
|
|
24
|
+
}
|
|
15
25
|
//# sourceMappingURL=MenuButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuButton.js","sourceRoot":"","sources":["../../../src/components/Tables/MenuButton.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;
|
|
1
|
+
{"version":3,"file":"MenuButton.js","sourceRoot":"","sources":["../../../src/components/Tables/MenuButton.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,MAAM,MAAM,mBAAmB,CAAC;AA4BvC;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,IAAI,GAAG,WAAW,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,EAAmB;IAC3F,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,MAAM,MAAM,GAAG,CAAC,IAAoB,EAAE,EAAE,CAAC,GAAG,EAAE;QAC5C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,IAAI,CAAC,IAAI,eACR,KAAC,IAAI,CAAC,OAAO,IAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,QAAC,EAAE,QAAC,IAAI,EAAC,QAAQ,GAAG,EAChF,KAAC,IAAI,CAAC,MAAM,cACV,KAAC,IAAI,CAAC,UAAU,cACd,KAAC,IAAI,CAAC,KAAK,cACT,KAAC,IAAI,CAAC,IAAI,cACP,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,MAAC,IAAI,CAAC,IAAI,IAER,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,aAErB,IAAI,CAAC,IAAI,IAAI,eAAM,SAAS,EAAE,GAAG,IAAI,CAAC,IAAI,OAAO,wBAAgB,EACjE,IAAI,CAAC,KAAK,KANN,IAAI,CAAC,KAAK,CAOL,CACb,CAAC,GACQ,GACD,GACG,GACN,IACJ,CACb,CAAC;AACJ,CAAC"}
|
|
@@ -1,23 +1,32 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import type { ReactElement, Ref } from "react";
|
|
5
|
-
import { type ActionColumnProps } from "./ActionColumn";
|
|
1
|
+
import { type ActionColumnOptions } from "./ActionColumn";
|
|
2
|
+
import type { ColumnDef } from "./columns";
|
|
3
|
+
import { type MantisDataTableProps } from "./MantisDataTable";
|
|
6
4
|
import type { ActionMenuItem } from "./MenuButton";
|
|
7
|
-
export type PaginatedTableProps<
|
|
5
|
+
export type PaginatedTableProps<T> = MantisDataTableProps<T> & {
|
|
6
|
+
/** Prepend a 1-based row-number column. Default: true. */
|
|
8
7
|
showIndexColumn?: boolean;
|
|
8
|
+
/** Overrides for the prepended index column. */
|
|
9
|
+
indexColumnOptions?: Partial<ColumnDef<T>>;
|
|
10
|
+
/** Append a row-action menu column. Default: false. */
|
|
9
11
|
showActionColumn?: boolean;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
/** Per-row action items for the appended action column. */
|
|
13
|
+
actionColumnItems?: (row: T) => ActionMenuItem[];
|
|
14
|
+
/** Overrides for the appended action column. */
|
|
15
|
+
actionColumnOptions?: ActionColumnOptions<T>;
|
|
14
16
|
};
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Thin paginated preset over `MantisDataTable`. Reshaped from the PR10
|
|
19
|
+
* children-driven `PaginatedTable` to the descriptor-driven PR11 model: it
|
|
20
|
+
* assembles the final `columns` array (optional index column prepended, optional
|
|
21
|
+
* action column appended) and forwards everything else — including the PR11
|
|
22
|
+
* paginator/lazy props — straight to `MantisDataTable`.
|
|
23
|
+
*
|
|
24
|
+
* Opinionated default: `paginator` on. Override any Root prop via the passthrough.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* <PaginatedTable rows={rows} columns={COLUMNS} showActionColumn
|
|
28
|
+
* actionColumnItems={(r) => [{ label: "Editar", route: `/x/${r.id}` }]} />
|
|
29
|
+
*/
|
|
30
|
+
export declare function PaginatedTable<T>({ showIndexColumn, indexColumnOptions, showActionColumn, actionColumnItems, actionColumnOptions, columns, paginator, ...rest }: PaginatedTableProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
22
31
|
export default PaginatedTable;
|
|
23
32
|
//# sourceMappingURL=PaginatedTable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaginatedTable.d.ts","sourceRoot":"","sources":["../../../src/components/Tables/PaginatedTable.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PaginatedTable.d.ts","sourceRoot":"","sources":["../../../src/components/Tables/PaginatedTable.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EAAmB,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG;IAC7D,0DAA0D;IAC1D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gDAAgD;IAChD,kBAAkB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,cAAc,EAAE,CAAC;IACjD,gDAAgD;IAChD,mBAAmB,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;CAC9C,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,EAChC,eAAsB,EACtB,kBAAkB,EAClB,gBAAwB,EACxB,iBAA4B,EAC5B,mBAAmB,EACnB,OAAO,EACP,SAAgB,EAChB,GAAG,IAAI,EACR,EAAE,mBAAmB,CAAC,CAAC,CAAC,2CAQxB;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -1,26 +1,28 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as _jsx
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { actionColumn } from "./ActionColumn";
|
|
4
|
+
import { indexColumn } from "./IndexColumn";
|
|
5
|
+
import { MantisDataTable } from "./MantisDataTable";
|
|
6
|
+
/**
|
|
7
|
+
* Thin paginated preset over `MantisDataTable`. Reshaped from the PR10
|
|
8
|
+
* children-driven `PaginatedTable` to the descriptor-driven PR11 model: it
|
|
9
|
+
* assembles the final `columns` array (optional index column prepended, optional
|
|
10
|
+
* action column appended) and forwards everything else — including the PR11
|
|
11
|
+
* paginator/lazy props — straight to `MantisDataTable`.
|
|
12
|
+
*
|
|
13
|
+
* Opinionated default: `paginator` on. Override any Root prop via the passthrough.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* <PaginatedTable rows={rows} columns={COLUMNS} showActionColumn
|
|
17
|
+
* actionColumnItems={(r) => [{ label: "Editar", route: `/x/${r.id}` }]} />
|
|
18
|
+
*/
|
|
19
|
+
export function PaginatedTable({ showIndexColumn = true, indexColumnOptions, showActionColumn = false, actionColumnItems = () => [], actionColumnOptions, columns, paginator = true, ...rest }) {
|
|
20
|
+
const finalColumns = [
|
|
21
|
+
...(showIndexColumn ? [indexColumn(indexColumnOptions)] : []),
|
|
22
|
+
...columns,
|
|
23
|
+
...(showActionColumn ? [actionColumn(actionColumnItems, actionColumnOptions)] : []),
|
|
24
|
+
];
|
|
25
|
+
return _jsx(MantisDataTable, { columns: finalColumns, paginator: paginator, ...rest });
|
|
22
26
|
}
|
|
23
|
-
const PaginatedTable = forwardRef(PaginatedTableInner);
|
|
24
|
-
PaginatedTable.displayName = "PaginatedTable";
|
|
25
27
|
export default PaginatedTable;
|
|
26
28
|
//# sourceMappingURL=PaginatedTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaginatedTable.js","sourceRoot":"","sources":["../../../src/components/Tables/PaginatedTable.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;
|
|
1
|
+
{"version":3,"file":"PaginatedTable.js","sourceRoot":"","sources":["../../../src/components/Tables/PaginatedTable.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,YAAY,EAA4B,MAAM,gBAAgB,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAA6B,MAAM,mBAAmB,CAAC;AAgB/E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAI,EAChC,eAAe,GAAG,IAAI,EACtB,kBAAkB,EAClB,gBAAgB,GAAG,KAAK,EACxB,iBAAiB,GAAG,GAAG,EAAE,CAAC,EAAE,EAC5B,mBAAmB,EACnB,OAAO,EACP,SAAS,GAAG,IAAI,EAChB,GAAG,IAAI,EACgB;IACvB,MAAM,YAAY,GAAmB;QACnC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,WAAW,CAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,OAAO;QACV,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAI,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACvF,CAAC;IAEF,OAAO,KAAC,eAAe,IAAI,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,KAAM,IAAI,GAAI,CAAC;AACvF,CAAC;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Cell PRESET factories (the 90% shortcut).
|
|
4
|
+
*
|
|
5
|
+
* Each returns a body renderer `(item, field) => ReactNode` for a
|
|
6
|
+
* `ColumnDef.cell`. The escape hatch is `ColumnDef.body` (a raw render-prop)
|
|
7
|
+
* which always wins over a preset — see `resolveCell` in MantisDataTable.tsx.
|
|
8
|
+
*
|
|
9
|
+
* Promoted verbatim from the demo-prime11 proof-of-concept. Three presets prove
|
|
10
|
+
* the pattern; the full catalog (link/avatar/tag/progress…) lands when a
|
|
11
|
+
* consumer needs it — no empty factories scaffolded now.
|
|
12
|
+
*/
|
|
13
|
+
type Row = Record<string, unknown>;
|
|
14
|
+
/** Currency preset. `{ currency, locale }` config; defaults to USD/en-US, no decimals. */
|
|
15
|
+
export declare function currencyCell(config?: {
|
|
16
|
+
currency?: string;
|
|
17
|
+
locale?: string;
|
|
18
|
+
}): (item: Row, field: string) => ReactNode;
|
|
19
|
+
/** Date preset. `{ locale, options }` config; defaults to a short localized date. */
|
|
20
|
+
export declare function dateCell(config?: {
|
|
21
|
+
locale?: string;
|
|
22
|
+
options?: Intl.DateTimeFormatOptions;
|
|
23
|
+
}): (item: Row, field: string) => ReactNode;
|
|
24
|
+
/**
|
|
25
|
+
* Badge/tag preset. `{ styles, className }` config — `styles` maps a cell value
|
|
26
|
+
* to Tailwind classes (per-value color); `className` is appended to every badge.
|
|
27
|
+
*/
|
|
28
|
+
export declare function badgeCell(config?: {
|
|
29
|
+
styles?: Record<string, string>;
|
|
30
|
+
className?: string;
|
|
31
|
+
}): (item: Row, field: string) => ReactNode;
|
|
32
|
+
/** A resolved cell renderer: raw value in, node out. */
|
|
33
|
+
export type CellRenderer = (item: Row, field: string) => ReactNode;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=cell-presets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cell-presets.d.ts","sourceRoot":"","sources":["../../../src/components/Tables/cell-presets.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;;;;;;;;;GAUG;AAEH,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAOnC,0FAA0F;AAC1F,wBAAgB,YAAY,CAAC,MAAM,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,IAMtE,MAAM,GAAG,EAAE,OAAO,MAAM,KAAG,SAAS,CAI7C;AAED,qFAAqF;AACrF,wBAAgB,QAAQ,CAAC,MAAM,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAA;CAAO,IAKrF,MAAM,GAAG,EAAE,OAAO,MAAM,KAAG,SAAS,CAK7C;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,MAAM,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,IAEpF,MAAM,GAAG,EAAE,OAAO,MAAM,KAAG,SAAS,CAM7C;AAED,wDAAwD;AACxD,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/** Read a field off a row without leaking `unknown` into the preset bodies. */
|
|
3
|
+
function read(item, field) {
|
|
4
|
+
return item[field];
|
|
5
|
+
}
|
|
6
|
+
/** Currency preset. `{ currency, locale }` config; defaults to USD/en-US, no decimals. */
|
|
7
|
+
export function currencyCell(config = {}) {
|
|
8
|
+
const fmt = new Intl.NumberFormat(config.locale ?? "en-US", {
|
|
9
|
+
style: "currency",
|
|
10
|
+
currency: config.currency ?? "USD",
|
|
11
|
+
maximumFractionDigits: 0,
|
|
12
|
+
});
|
|
13
|
+
return (item, field) => {
|
|
14
|
+
const v = read(item, field);
|
|
15
|
+
return typeof v === "number" ? fmt.format(v) : String(v ?? "");
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/** Date preset. `{ locale, options }` config; defaults to a short localized date. */
|
|
19
|
+
export function dateCell(config = {}) {
|
|
20
|
+
const fmt = new Intl.DateTimeFormat(config.locale ?? "en-US", config.options ?? { year: "numeric", month: "short", day: "numeric" });
|
|
21
|
+
return (item, field) => {
|
|
22
|
+
const v = read(item, field);
|
|
23
|
+
const d = v instanceof Date ? v : typeof v === "string" || typeof v === "number" ? new Date(v) : null;
|
|
24
|
+
return d && !Number.isNaN(d.getTime()) ? fmt.format(d) : String(v ?? "");
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Badge/tag preset. `{ styles, className }` config — `styles` maps a cell value
|
|
29
|
+
* to Tailwind classes (per-value color); `className` is appended to every badge.
|
|
30
|
+
*/
|
|
31
|
+
export function badgeCell(config = {}) {
|
|
32
|
+
const base = "inline-block rounded-full px-2 py-1 text-xs font-medium";
|
|
33
|
+
return (item, field) => {
|
|
34
|
+
const v = read(item, field);
|
|
35
|
+
const key = String(v ?? "");
|
|
36
|
+
const tone = config.styles?.[key] ?? "bg-surface-100 dark:bg-surface-700 text-surface-700 dark:text-surface-200";
|
|
37
|
+
return _jsx("span", { className: `${base} ${tone} ${config.className ?? ""}`, children: key });
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=cell-presets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cell-presets.js","sourceRoot":"","sources":["../../../src/components/Tables/cell-presets.tsx"],"names":[],"mappings":";AAgBA,+EAA+E;AAC/E,SAAS,IAAI,CAAC,IAAS,EAAE,KAAa;IACpC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,YAAY,CAAC,SAAiD,EAAE;IAC9E,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,EAAE;QAC1D,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,KAAK;QAClC,qBAAqB,EAAE,CAAC;KACzB,CAAC,CAAC;IACH,OAAO,CAAC,IAAS,EAAE,KAAa,EAAa,EAAE;QAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5B,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC;AACJ,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,QAAQ,CAAC,SAAoE,EAAE;IAC7F,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,cAAc,CACjC,MAAM,CAAC,MAAM,IAAI,OAAO,EACxB,MAAM,CAAC,OAAO,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CACtE,CAAC;IACF,OAAO,CAAC,IAAS,EAAE,KAAa,EAAa,EAAE;QAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACtG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,SAAkE,EAAE;IAC5F,MAAM,IAAI,GAAG,yDAAyD,CAAC;IACvE,OAAO,CAAC,IAAS,EAAE,KAAa,EAAa,EAAE;QAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,2EAA2E,CAAC;QACjH,OAAO,eAAM,SAAS,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,YAAG,GAAG,GAAQ,CAAC;IACpF,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { CellRenderer } from "./cell-presets";
|
|
3
|
+
/** A `{label,value}` option for the `dropdown` filter preset. */
|
|
4
|
+
export interface FilterOption {
|
|
5
|
+
label: string;
|
|
6
|
+
value: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Column descriptor — the whole wrapper API surface for one column.
|
|
10
|
+
*
|
|
11
|
+
* Follows the library convention: opinionated shortcuts (`cell` preset,
|
|
12
|
+
* `filter` preset) for the 90%, render-prop escape hatches (`body`,
|
|
13
|
+
* `filterElement`) for the 10%. An escape hatch always wins over its preset.
|
|
14
|
+
*/
|
|
15
|
+
export interface ColumnDef<T> {
|
|
16
|
+
/** Data key. Also the sort/filter field. */
|
|
17
|
+
field: keyof T & string;
|
|
18
|
+
/** Header label. */
|
|
19
|
+
header: string;
|
|
20
|
+
/** Show the sort control in the header cell. Default: false. */
|
|
21
|
+
sortable?: boolean;
|
|
22
|
+
/** Fixed header/cell width, e.g. "12rem". */
|
|
23
|
+
width?: string;
|
|
24
|
+
/** Cell PRESET renderer from a factory (currencyCell/dateCell/badgeCell). */
|
|
25
|
+
cell?: CellRenderer;
|
|
26
|
+
/** Escape hatch: raw per-row body render-prop. Overrides `cell`. */
|
|
27
|
+
body?: (item: T, index: number) => ReactNode;
|
|
28
|
+
/** Named filter preset rendered into the header. */
|
|
29
|
+
filter?: "text" | "dropdown";
|
|
30
|
+
/** Options for the `dropdown` filter preset. */
|
|
31
|
+
filterOptions?: FilterOption[];
|
|
32
|
+
/** Escape hatch: render a fully custom filter control. Overrides `filter`. */
|
|
33
|
+
filterElement?: (ctx: {
|
|
34
|
+
value: string;
|
|
35
|
+
onChange: (value: string) => void;
|
|
36
|
+
}) => ReactNode;
|
|
37
|
+
}
|
|
38
|
+
/** Column-typed value + display helpers, all string-keyed for the row map. */
|
|
39
|
+
export type Row = Record<string, unknown>;
|
|
40
|
+
//# sourceMappingURL=columns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"columns.d.ts","sourceRoot":"","sources":["../../../src/components/Tables/columns.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,iEAAiE;AACjE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;IACxB,oBAAoB;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,6EAA6E;IAC7E,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,oEAAoE;IACpE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IAG7C,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC7B,gDAAgD;IAChD,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,8EAA8E;IAC9E,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,KAAK,SAAS,CAAC;CAC1F;AAED,8EAA8E;AAC9E,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"columns.js","sourceRoot":"","sources":["../../../src/components/Tables/columns.tsx"],"names":[],"mappings":""}
|
|
@@ -1,8 +1,26 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import type { FilterOption } from "../columns";
|
|
2
|
+
export interface MultiSelectFilterProps {
|
|
3
|
+
/** Selectable options. */
|
|
4
|
+
options: FilterOption[];
|
|
5
|
+
/** Current selected values (page-owned). */
|
|
6
|
+
value?: string[];
|
|
7
|
+
/** Fires with the next array of selected values. */
|
|
8
|
+
onChange: (value: string[]) => void;
|
|
9
|
+
/** Disable while the option list loads. */
|
|
10
|
+
loading?: boolean;
|
|
11
|
+
placeholder?: string;
|
|
5
12
|
}
|
|
6
|
-
|
|
7
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Multi-value header filter over the themed PR11 `Select` (multiple mode) — the
|
|
15
|
+
* migrated replacement for the PR10 `primereact/multiselect`. Page-owned
|
|
16
|
+
* `value: string[]` / `onChange`, so it drops straight into a `ColumnDef`'s
|
|
17
|
+
* `filterElement` escape hatch (which carries its own array contract, not the
|
|
18
|
+
* scalar `filters` map).
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* filterElement: () => (
|
|
22
|
+
* <MultiSelectFilter options={TYPES} value={sel} onChange={setSel} />
|
|
23
|
+
* )
|
|
24
|
+
*/
|
|
25
|
+
export default function MultiSelectFilter({ options, value, onChange, loading, placeholder, }: MultiSelectFilterProps): import("react/jsx-runtime").JSX.Element;
|
|
8
26
|
//# sourceMappingURL=MultiSelectFilter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSelectFilter.d.ts","sourceRoot":"","sources":["../../../../src/components/Tables/filters/MultiSelectFilter.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MultiSelectFilter.d.ts","sourceRoot":"","sources":["../../../../src/components/Tables/filters/MultiSelectFilter.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,sBAAsB;IACrC,0BAA0B;IAC1B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,oDAAoD;IACpD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACpC,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,OAAO,EACP,KAAU,EACV,QAAQ,EACR,OAAe,EACf,WAA0B,GAC3B,EAAE,sBAAsB,2CA8BxB"}
|
|
@@ -1,7 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { ChevronDown } from "@primeicons/react/chevron-down";
|
|
4
|
+
import { Select } from "@primereact/ui/select";
|
|
5
|
+
/**
|
|
6
|
+
* Multi-value header filter over the themed PR11 `Select` (multiple mode) — the
|
|
7
|
+
* migrated replacement for the PR10 `primereact/multiselect`. Page-owned
|
|
8
|
+
* `value: string[]` / `onChange`, so it drops straight into a `ColumnDef`'s
|
|
9
|
+
* `filterElement` escape hatch (which carries its own array contract, not the
|
|
10
|
+
* scalar `filters` map).
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* filterElement: () => (
|
|
14
|
+
* <MultiSelectFilter options={TYPES} value={sel} onChange={setSel} />
|
|
15
|
+
* )
|
|
16
|
+
*/
|
|
17
|
+
export default function MultiSelectFilter({ options, value = [], onChange, loading = false, placeholder = "Seleccione", }) {
|
|
18
|
+
return (_jsxs(Select.Root, { className: "mt-1 w-full", multiple: true, value: value, onValueChange: (e) => onChange(e.value ?? []), options: options, optionLabel: "label", optionValue: "value", disabled: loading, size: "small", children: [_jsxs(Select.Trigger, { type: "button", children: [_jsx(Select.Value, { placeholder: placeholder }), _jsx(Select.Clear, {}), _jsx(Select.Indicator, { children: _jsx(ChevronDown, {}) })] }), _jsx(Select.Portal, { children: _jsx(Select.Positioner, { children: _jsxs(Select.Popup, { children: [_jsx(Select.List, {}), _jsx(Select.Empty, {})] }) }) })] }));
|
|
19
|
+
}
|
|
7
20
|
//# sourceMappingURL=MultiSelectFilter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSelectFilter.js","sourceRoot":"","sources":["../../../../src/components/Tables/filters/MultiSelectFilter.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MultiSelectFilter.js","sourceRoot":"","sources":["../../../../src/components/Tables/filters/MultiSelectFilter.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAgB/C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,OAAO,EACP,KAAK,GAAG,EAAE,EACV,QAAQ,EACR,OAAO,GAAG,KAAK,EACf,WAAW,GAAG,YAAY,GACH;IACvB,OAAO,CACL,MAAC,MAAM,CAAC,IAAI,IACV,SAAS,EAAC,aAAa,EACvB,QAAQ,QACR,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,CAAC,CAAyB,EAAE,EAAE,CAAC,QAAQ,CAAE,CAAC,CAAC,KAAyB,IAAI,EAAE,CAAC,EAC1F,OAAO,EAAE,OAAO,EAChB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAC,OAAO,EACnB,QAAQ,EAAE,OAAO,EACjB,IAAI,EAAC,OAAO,aAEZ,MAAC,MAAM,CAAC,OAAO,IAAC,IAAI,EAAC,QAAQ,aAC3B,KAAC,MAAM,CAAC,KAAK,IAAC,WAAW,EAAE,WAAW,GAAI,EAC1C,KAAC,MAAM,CAAC,KAAK,KAAG,EAChB,KAAC,MAAM,CAAC,SAAS,cACf,KAAC,WAAW,KAAG,GACE,IACJ,EACjB,KAAC,MAAM,CAAC,MAAM,cACZ,KAAC,MAAM,CAAC,UAAU,cAChB,MAAC,MAAM,CAAC,KAAK,eACX,KAAC,MAAM,CAAC,IAAI,KAAG,EACf,KAAC,MAAM,CAAC,KAAK,KAAG,IACH,GACG,GACN,IACJ,CACf,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChangePasswordForm.d.ts","sourceRoot":"","sources":["../../../src/components/auth/ChangePasswordForm.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ChangePasswordForm.d.ts","sourceRoot":"","sources":["../../../src/components/auth/ChangePasswordForm.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,MAAM,WAAW,wBAAwB;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,CAAC,MAAM,EAAE,wBAAwB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA0DzD,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
3
|
+
import clsx from 'clsx';
|
|
4
|
+
import { useForm } from 'react-hook-form';
|
|
5
5
|
import Button from '../Buttons/Button';
|
|
6
|
-
import FormFieldRender from '../Forms/FormFieldRender';
|
|
7
6
|
import PasswordInput from '../Forms/PasswordInput';
|
|
8
7
|
import { minLengthRule, notEmptyRule } from '../../validation';
|
|
9
8
|
const ChangePasswordForm = ({ onSubmit, title = 'Cambiar contraseña', submitLabel = 'Actualizar contraseña', minPasswordLength = 8, className, }) => {
|
|
10
9
|
const form = useForm({ mode: 'onChange' });
|
|
11
10
|
const { watch } = form;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
11
|
+
// ponytail: validation helpers return the un-parameterized RegisterOptions
|
|
12
|
+
// (deps: string), so cast to the path-narrowed shape Option-A wrappers expect.
|
|
13
|
+
const currentPasswordRules = notEmptyRule();
|
|
14
|
+
const newPasswordRules = {
|
|
15
|
+
...notEmptyRule(),
|
|
16
|
+
...minLengthRule(minPasswordLength),
|
|
17
|
+
};
|
|
18
|
+
return (_jsxs("div", { className: clsx('mantis-core-change-password-form', className), children: [_jsx("h1", { className: "mantis-core-change-password-form__title", children: title }), _jsxs("form", { onSubmit: form.handleSubmit(onSubmit), className: "space-y-4", children: [_jsx(PasswordInput, { control: form.control, name: "currentPassword", rules: currentPasswordRules, label: "Contrase\u00F1a actual", autoComplete: "current-password" }), _jsx(PasswordInput, { control: form.control, name: "newPassword", rules: newPasswordRules, label: "Nueva contrase\u00F1a", autoComplete: "new-password" }), _jsx(PasswordInput, { control: form.control, name: "confirmPassword", rules: {
|
|
19
|
+
validate: (v) => v === watch('newPassword') || 'Las contraseñas no coinciden',
|
|
20
|
+
}, label: "Confirmar nueva contrase\u00F1a", autoComplete: "new-password" }), _jsx(Button, { type: "submit", label: submitLabel, loading: form.formState.isSubmitting, disabled: form.formState.isSubmitting, block: true })] })] }));
|
|
21
21
|
};
|
|
22
22
|
export default ChangePasswordForm;
|
|
23
23
|
//# sourceMappingURL=ChangePasswordForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChangePasswordForm.js","sourceRoot":"","sources":["../../../src/components/auth/ChangePasswordForm.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,OAAO,
|
|
1
|
+
{"version":3,"file":"ChangePasswordForm.js","sourceRoot":"","sources":["../../../src/components/auth/ChangePasswordForm.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,aAAa,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAgB/D,MAAM,kBAAkB,GAAsC,CAAC,EAC7D,QAAQ,EACR,KAAK,GAAG,oBAAoB,EAC5B,WAAW,GAAG,uBAAuB,EACrC,iBAAiB,GAAG,CAAC,EACrB,SAAS,GACV,EAAE,EAAE;IACH,MAAM,IAAI,GAAG,OAAO,CAA2B,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IACrE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAEvB,2EAA2E;IAC3E,+EAA+E;IAC/E,MAAM,oBAAoB,GAAG,YAAY,EAGxC,CAAC;IACF,MAAM,gBAAgB,GAAG;QACvB,GAAG,YAAY,EAAE;QACjB,GAAG,aAAa,CAAC,iBAAiB,CAAC;KACwB,CAAC;IAE9D,OAAO,CACL,eAAK,SAAS,EAAE,IAAI,CAAC,kCAAkC,EAAE,SAAS,CAAC,aACjE,aAAI,SAAS,EAAC,yCAAyC,YAAE,KAAK,GAAM,EACpE,gBAAM,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAC,WAAW,aAChE,KAAC,aAAa,IACZ,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,IAAI,EAAC,iBAAiB,EACtB,KAAK,EAAE,oBAAoB,EAC3B,KAAK,EAAC,wBAAmB,EACzB,YAAY,EAAC,kBAAkB,GAC/B,EACF,KAAC,aAAa,IACZ,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,IAAI,EAAC,aAAa,EAClB,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAC,uBAAkB,EACxB,YAAY,EAAC,cAAc,GAC3B,EACF,KAAC,aAAa,IACZ,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,IAAI,EAAC,iBAAiB,EACtB,KAAK,EAAE;4BACL,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,IAAI,8BAA8B;yBAC9E,EACD,KAAK,EAAC,iCAA4B,EAClC,YAAY,EAAC,cAAc,GAC3B,EACF,KAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EACpC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EACrC,KAAK,SACL,IACG,IACH,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|