@mantis-core/ui 0.4.0 → 0.6.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 +144 -0
- package/COMPONENTS.md +113 -15
- package/README.md +13 -6
- 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 +39 -12
- package/docs/components/admin-page-configurator.md +42 -0
- package/docs/components/admin-page-header.md +32 -16
- package/docs/components/admin-page-layout-shell.md +36 -0
- package/docs/components/admin-page-layout.md +41 -21
- package/docs/components/app-shell.md +45 -0
- package/docs/components/auto-complete-field.md +60 -0
- package/docs/components/avatar.md +29 -0
- package/docs/components/bar-chart.md +39 -0
- package/docs/components/breadcrumbs.md +28 -0
- package/docs/components/button.md +41 -17
- package/docs/components/card-skeleton.md +21 -0
- package/docs/components/change-password-form.md +36 -0
- package/docs/components/checkbox-field.md +38 -0
- package/docs/components/ckeditor-input.md +47 -16
- package/docs/components/color-picker-input.md +30 -0
- package/docs/components/command-palette.md +38 -0
- package/docs/components/confirm-dialog.md +45 -16
- package/docs/components/data-state.md +39 -14
- package/docs/components/date-field.md +39 -0
- package/docs/components/date-presets.md +32 -0
- package/docs/components/description-list.md +34 -0
- package/docs/components/dirty-form-guard.md +28 -24
- package/docs/components/donut-chart.md +38 -0
- package/docs/components/drawer.md +38 -0
- package/docs/components/empty-state.md +28 -0
- package/docs/components/error-boundary.md +31 -0
- package/docs/components/error-message.md +29 -8
- package/docs/components/field-shell.md +47 -0
- package/docs/components/file-dropzone.md +45 -17
- package/docs/components/filter-pannel.md +40 -15
- package/docs/components/forgot-password-form.md +36 -0
- package/docs/components/form-actions-bar.md +47 -17
- package/docs/components/form-field-render.md +43 -15
- package/docs/components/form-section.md +26 -10
- package/docs/components/form-wizard.md +47 -0
- package/docs/components/hidden-field.md +27 -14
- package/docs/components/index-column.md +31 -8
- package/docs/components/line-chart.md +39 -0
- package/docs/components/loading.md +23 -12
- package/docs/components/login-form.md +47 -0
- package/docs/components/mantis-data-table.md +61 -0
- package/docs/components/map-picker-client.md +35 -14
- package/docs/components/map-picker-osm.md +33 -13
- package/docs/components/map-picker.md +34 -16
- package/docs/components/mask-field.md +31 -0
- package/docs/components/menu-button.md +28 -17
- package/docs/components/modal.md +45 -0
- package/docs/components/multi-select-filter.md +31 -15
- package/docs/components/number-field.md +40 -0
- package/docs/components/otp-input.md +31 -0
- package/docs/components/page-tabs.md +35 -0
- package/docs/components/page-title.md +15 -8
- package/docs/components/paginated-table.md +42 -26
- package/docs/components/pagination.md +28 -18
- package/docs/components/password-input.md +31 -0
- package/docs/components/phone-input.md +28 -0
- package/docs/components/radio-group.md +50 -0
- package/docs/components/range-slider.md +32 -0
- package/docs/components/rating-input.md +30 -0
- package/docs/components/render-field.md +41 -18
- package/docs/components/reset-password-form.md +37 -0
- package/docs/components/rich-text-preview.md +26 -13
- package/docs/components/search-input.md +30 -0
- package/docs/components/select-field.md +55 -0
- package/docs/components/stat-card.md +30 -0
- package/docs/components/status-badge.md +25 -9
- package/docs/components/switch-field.md +32 -0
- package/docs/components/table-filter-field.md +30 -16
- package/docs/components/table-skeleton.md +22 -0
- package/docs/components/table-toolbar.md +28 -14
- package/docs/components/tag.md +27 -0
- package/docs/components/tags-input.md +32 -0
- package/docs/components/text-area.md +25 -15
- package/docs/components/text-field.md +32 -0
- package/docs/components/timeline.md +31 -0
- package/docs/components/toggle-inline-button.md +48 -17
- package/docs/components/upload-files-preview.md +39 -20
- package/docs/components/use-field-controller.md +58 -0
- package/docs/components/user-menu.md +39 -0
- package/docs/contracts/STORYBOOK_IMPLEMENTATION_AND_VOBO.md +92 -0
- package/docs/contracts/STORYBOOK_VOBO_LEDGER.md +195 -0
- package/docs/contracts/component-doc-schema.md +120 -0
- package/docs/contracts/dependency-map.md +76 -39
- package/docs/contracts/field-controller.md +138 -0
- package/docs/contracts/style-imports.md +21 -14
- package/llms.txt +104 -0
- package/package.json +39 -10
- package/PRIMEREACT_MAPPING.md +0 -6
- 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 -26
- package/docs/components/date-input.md +0 -22
- package/docs/components/drop-down.md +0 -28
- package/docs/components/multi-select.md +0 -23
- package/docs/components/number-input.md +0 -20
- package/docs/components/select.md +0 -28
- package/docs/components/switch.md +0 -27
- package/docs/components/text-input.md +0 -23
- package/docs/components/time-picker.md +0 -22
- package/docs/components/toggle.md +0 -21
- package/docs/contracts/controller-props.md +0 -28
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Check } from "@primeicons/react/check";
|
|
3
|
+
import { ChevronDown } from "@primeicons/react/chevron-down";
|
|
4
|
+
import { Search } from "@primeicons/react/search";
|
|
5
|
+
import { useFieldConfig } from "@mantis-core/utils/react";
|
|
6
|
+
import { IconField } from "@primereact/ui/iconfield";
|
|
7
|
+
import { InputText } from "@primereact/ui/inputtext";
|
|
8
|
+
import { Select } from "@primereact/ui/select";
|
|
9
|
+
import { useMemo, useState } from "react";
|
|
10
|
+
import { FieldShell } from "./FieldShell";
|
|
11
|
+
import { useFieldController } from "./useFieldController";
|
|
12
|
+
/**
|
|
13
|
+
* RHF-bound Select over PR11's portal-based compound Select. Single-select by
|
|
14
|
+
* default; pass `multiple` for array mode (absorbs the former MultiSelect).
|
|
15
|
+
*
|
|
16
|
+
* Value shape: the bound value is the selected option value (scalar) — or an
|
|
17
|
+
* ARRAY of them when `multiple`. PR11's `Select.Value` renders the selected
|
|
18
|
+
* label(s) in the trigger for both modes, so the wrapper stays presentation-thin.
|
|
19
|
+
*
|
|
20
|
+
* Portal-specific concerns: id + aria on Select.Trigger (a button, not <input>),
|
|
21
|
+
* and field.onBlur fired on overlay close (no native blur).
|
|
22
|
+
*
|
|
23
|
+
* Templating follows the library convention — named presets for the common case,
|
|
24
|
+
* a `renderOption` render-prop escape for anything custom:
|
|
25
|
+
* @example
|
|
26
|
+
* <SelectField name="city" control={control} label="Ciudad"
|
|
27
|
+
* options={CITIES} optionLabel="label" optionValue="value" /> // single
|
|
28
|
+
* <SelectField name="tags" control={control} label="Tags" multiple
|
|
29
|
+
* options={TAGS} optionLabel="label" optionValue="value" /> // array mode
|
|
30
|
+
* <SelectField ... optionTemplate="twoLine" descriptionField="region" /> // preset
|
|
31
|
+
* <SelectField ... renderOption={(o) => <Flag code={o.code} />} /> // escape
|
|
32
|
+
*/
|
|
33
|
+
export function SelectField(props) {
|
|
34
|
+
const { name, control, rules, defaultValue, shouldUnregister, disabled, label, labelMode, floatVariant, addonBefore, addonAfter, required, helpText, id, variant, size, className, fluid, placeholder, options, optionLabel, optionValue, optionTemplate, descriptionField, renderOption, multiple, ...rest } = props;
|
|
35
|
+
const f = useFieldController({
|
|
36
|
+
name,
|
|
37
|
+
control,
|
|
38
|
+
rules,
|
|
39
|
+
defaultValue,
|
|
40
|
+
shouldUnregister,
|
|
41
|
+
disabled,
|
|
42
|
+
helpText,
|
|
43
|
+
id,
|
|
44
|
+
variant,
|
|
45
|
+
size,
|
|
46
|
+
fluid,
|
|
47
|
+
});
|
|
48
|
+
const rows = (options ?? []);
|
|
49
|
+
const labelKey = optionLabel ?? "label";
|
|
50
|
+
// Resolve labelMode the same way FieldShell does: prop wins, else the global
|
|
51
|
+
// config default. In floating modes ('ifta'/'float') the label doubles as the
|
|
52
|
+
// placeholder, so suppress Select.Value's placeholder to avoid overlap.
|
|
53
|
+
const config = useFieldConfig();
|
|
54
|
+
const resolvedLabelMode = labelMode ?? config.labelMode;
|
|
55
|
+
const isFloating = resolvedLabelMode === "ifta" || resolvedLabelMode === "float";
|
|
56
|
+
const showValuePlaceholder = !label || !isFloating;
|
|
57
|
+
// `multiple` gets an in-popup filter box (checkbox indicators per option).
|
|
58
|
+
// Client-side filtering lives here — the wrapper owns `options`, so the
|
|
59
|
+
// consumer never wires it. Single-select keeps zero-config auto-render.
|
|
60
|
+
const [filterValue, setFilterValue] = useState("");
|
|
61
|
+
const filteredRows = useMemo(() => {
|
|
62
|
+
const base = (options ?? []);
|
|
63
|
+
if (!multiple || !filterValue)
|
|
64
|
+
return base;
|
|
65
|
+
const q = filterValue.toLowerCase();
|
|
66
|
+
return base.filter((option) => String(option[labelKey] ?? "").toLowerCase().includes(q));
|
|
67
|
+
}, [options, multiple, filterValue, labelKey]);
|
|
68
|
+
// Empty-value policy: in `multiple` mode the field value is an ARRAY, so an
|
|
69
|
+
// empty/cleared selection must be `[]` (never `null`) — a consumer doing
|
|
70
|
+
// `.map()`/`.length` on it can't crash. Single-select stays scalar/`null`.
|
|
71
|
+
const boundValue = multiple
|
|
72
|
+
? (f.field.value ?? [])
|
|
73
|
+
: (f.field.value ?? null);
|
|
74
|
+
// Effective per-option renderer: escape hatch wins, then preset, else null
|
|
75
|
+
// (null keeps the zero-config <Select.List/> auto-render).
|
|
76
|
+
const renderer = renderOption ??
|
|
77
|
+
(optionTemplate === "twoLine"
|
|
78
|
+
? (option) => (_jsxs("div", { className: 'flex flex-col', children: [_jsx("span", { className: 'font-medium', children: String(option[labelKey] ?? "") }), descriptionField ? (_jsx("span", { className: 'text-xs text-surface-500', children: String(option[descriptionField] ?? "") })) : null] }))
|
|
79
|
+
: null);
|
|
80
|
+
const { ref: fieldRef } = f.field;
|
|
81
|
+
return (_jsx(FieldShell, { id: f.id, label: label, labelMode: labelMode, floatVariant: floatVariant, addonBefore: addonBefore, addonAfter: addonAfter, required: required, helpText: helpText, errorMessage: f.errorMessage, children: _jsxs(Select.Root, { value: boundValue, onValueChange: (e) =>
|
|
82
|
+
// Clear in `multiple` mode stores `[]`, not `null`, keeping the array
|
|
83
|
+
// contract; single-select passes the scalar/`null` straight through.
|
|
84
|
+
f.field.onChange(multiple ? (e.value ?? []) : e.value), onOpenChange: (e) => {
|
|
85
|
+
// Portal has no native blur on the trigger — mark touched on close.
|
|
86
|
+
if (!e.value)
|
|
87
|
+
f.field.onBlur();
|
|
88
|
+
}, invalid: f.invalid, disabled: f.disabled, variant: f.variant, size: f.size,
|
|
89
|
+
// PR11's Select trigger does NOT stretch to the <Fluid> context (unlike
|
|
90
|
+
// InputText), so honor the fluid axis with the explicit `fluid` prop.
|
|
91
|
+
fluid: f.fluid, className: className, multiple: multiple, options: options, optionLabel: optionLabel, optionValue: optionValue, ...rest, children: [_jsxs(Select.Trigger, { id: f.id, ref: fieldRef, type: 'button', ...f.aria, children: [_jsx(Select.Value, { placeholder: showValuePlaceholder ? placeholder : undefined }), _jsx(Select.Clear, {}), _jsx(Select.Indicator, { children: _jsx(ChevronDown, {}) })] }), _jsx(Select.Portal, { children: _jsx(Select.Positioner, { children: _jsxs(Select.Popup, { children: [multiple ? (
|
|
92
|
+
// Multiple: in-popup filter + per-option checkmark indicator.
|
|
93
|
+
_jsxs(_Fragment, { children: [_jsx(Select.Header, { children: _jsxs(IconField.Root, { children: [_jsx(Select.Filter, { as: InputText, value: filterValue, onChange: (e) => setFilterValue(e.target.value), placeholder: 'Buscar\u2026' }), _jsx(IconField.Inset, { children: _jsx(Search, {}) })] }) }), _jsx(Select.List, { children: filteredRows.map((option, filteredIndex) => {
|
|
94
|
+
// `Select.Root` binds `options` to the FULL unfiltered array, so
|
|
95
|
+
// the explicit `index` passed to `Select.Option` must be the
|
|
96
|
+
// option's TRUE position there — not its position within the
|
|
97
|
+
// filtered subset — or a filtered click commits the wrong value
|
|
98
|
+
// (PR11 resolves the option as `options[index]` whenever an
|
|
99
|
+
// explicit index is given, skipping its uKey/findIndex fallback).
|
|
100
|
+
const trueIndex = rows.indexOf(option);
|
|
101
|
+
const key = optionValue ? String(option[optionValue]) : String(trueIndex);
|
|
102
|
+
return (_jsxs(Select.Option, { index: trueIndex, uKey: key, className: 'gap-2 justify-between', children: [renderer
|
|
103
|
+
? renderer(option, filteredIndex)
|
|
104
|
+
: String(option[labelKey] ?? ""), _jsx(Select.OptionIndicator, { className: 'data-unselected:invisible', children: _jsx(Check, {}) })] }, key));
|
|
105
|
+
}) }), _jsx(Select.Empty, {})] })) : renderer ? (_jsx(Select.List, { children: rows.map((option, index) => {
|
|
106
|
+
const key = optionValue ? String(option[optionValue]) : String(index);
|
|
107
|
+
return (_jsx(Select.Option, { index: index, uKey: key, children: renderer(option, index) }, key));
|
|
108
|
+
}) })) : (_jsx(Select.List, {})), !multiple && _jsx(Select.Empty, {})] }) }) })] }) }));
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=SelectField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectField.js","sourceRoot":"","sources":["../../../src/components/Forms/SelectField.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ToggleSwitchRootProps } from "@primereact/types/primitive/toggleswitch";
|
|
2
|
+
import type { FieldPath, FieldValues } from "react-hook-form";
|
|
3
|
+
import { type ChoiceFieldControllerProps } from "./useFieldController";
|
|
4
|
+
type SwitchExtras = Omit<ToggleSwitchRootProps, "checked" | "onCheckedChange" | "invalid" | "disabled" | "children" | "inputId">;
|
|
5
|
+
/**
|
|
6
|
+
* RHF-bound boolean toggle over PR11 compound `ToggleSwitch` (checked /
|
|
7
|
+
* onCheckedChange). Label sits beside the control by default.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* <SwitchField name="featured" control={control} label="Destacada" />
|
|
11
|
+
*/
|
|
12
|
+
export declare function SwitchField<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(props: ChoiceFieldControllerProps<TFieldValues, TName> & SwitchExtras): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=SwitchField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwitchField.d.ts","sourceRoot":"","sources":["../../../src/components/Forms/SwitchField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAEtF,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EAAE,KAAK,0BAA0B,EAAsB,MAAM,sBAAsB,CAAC;AAE3F,KAAK,YAAY,GAAG,IAAI,CACtB,qBAAqB,EACrB,SAAS,GAAG,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAChF,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,EAC/D,KAAK,EAAE,0BAA0B,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,YAAY,2CAiDtE"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { ToggleSwitch } from "@primereact/ui/toggleswitch";
|
|
3
|
+
import { FieldShell } from "./FieldShell";
|
|
4
|
+
import { useFieldController } from "./useFieldController";
|
|
5
|
+
/**
|
|
6
|
+
* RHF-bound boolean toggle over PR11 compound `ToggleSwitch` (checked /
|
|
7
|
+
* onCheckedChange). Label sits beside the control by default.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* <SwitchField name="featured" control={control} label="Destacada" />
|
|
11
|
+
*/
|
|
12
|
+
export function SwitchField(props) {
|
|
13
|
+
const { name, control, rules, defaultValue, shouldUnregister, disabled, label, labelMode, required, helpText, id, ...rest } = props;
|
|
14
|
+
const f = useFieldController({
|
|
15
|
+
name,
|
|
16
|
+
control,
|
|
17
|
+
rules,
|
|
18
|
+
defaultValue,
|
|
19
|
+
shouldUnregister,
|
|
20
|
+
disabled,
|
|
21
|
+
helpText,
|
|
22
|
+
id,
|
|
23
|
+
});
|
|
24
|
+
return (_jsx(FieldShell, { id: f.id, label: label, labelMode: labelMode ?? "beside", required: required, helpText: helpText, errorMessage: f.errorMessage, children: _jsx(ToggleSwitch.Root, { inputId: f.id, checked: Boolean(f.field.value), onCheckedChange: (e) => f.field.onChange(e.checked), invalid: f.invalid, disabled: f.disabled, ...rest, ...f.aria, children: _jsx(ToggleSwitch.Control, { children: _jsx(ToggleSwitch.Handle, {}) }) }) }));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=SwitchField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwitchField.js","sourceRoot":"","sources":["../../../src/components/Forms/SwitchField.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAoC,MAAM,6BAA6B,CAAC;AAE7F,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAmC,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAO3F;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAGzB,KAAqE;IACrE,MAAM,EACJ,IAAI,EACJ,OAAO,EACP,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,KAAK,EACL,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,EAAE,EACF,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IAEV,MAAM,CAAC,GAAG,kBAAkB,CAAsB;QAChD,IAAI;QACJ,OAAO;QACP,KAAK;QACL,YAAY;QACZ,gBAAgB;QAChB,QAAQ;QACR,QAAQ;QACR,EAAE;KACH,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,UAAU,IACT,EAAE,EAAE,CAAC,CAAC,EAAE,EACR,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,IAAI,QAAQ,EAChC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,CAAC,CAAC,YAAY,YAC5B,KAAC,YAAY,CAAC,IAAI,IAChB,OAAO,EAAE,CAAC,CAAC,EAAE,EACb,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAC/B,eAAe,EAAE,CAAC,CAA8B,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAChF,OAAO,EAAE,CAAC,CAAC,OAAO,EAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAChB,IAAI,KACJ,CAAC,CAAC,IAAI,YACV,KAAC,YAAY,CAAC,OAAO,cACnB,KAAC,YAAY,CAAC,MAAM,KAAG,GACF,GACL,GACT,CACd,CAAC;AACJ,CAAC"}
|
|
@@ -1,10 +1,31 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import type { InputTagsRootProps } from "@primereact/types/primitive/inputtags";
|
|
2
|
+
import type { FieldPath, FieldValues } from "react-hook-form";
|
|
3
|
+
import { type FieldControllerProps } from "./useFieldController";
|
|
4
|
+
type InputTagsExtras = Omit<InputTagsRootProps, "value" | "defaultValue" | "onValueChange" | "invalid" | "disabled" | "children">;
|
|
5
|
+
/**
|
|
6
|
+
* RHF-bound tag input over PR11's compound `InputTags`
|
|
7
|
+
* (Root → Items render-prop chips → Control render-prop entry input).
|
|
8
|
+
*
|
|
9
|
+
* The styled `Root` supplies the chip-field container; `Items` and `Control` are
|
|
10
|
+
* pure render-props, so the wrapper renders each chip as a themed `Chip.*` and the
|
|
11
|
+
* entry field as a themed `InputText` per the official Basic markup.
|
|
12
|
+
* Typing a value and pressing Enter (or `delimiter`) commits a tag; Backspace on
|
|
13
|
+
* an empty field removes the last one.
|
|
14
|
+
*
|
|
15
|
+
* Value shape: `string[]` (the tag list) or `[]` when unset. `onValueChange`
|
|
16
|
+
* writes the array into RHF.
|
|
17
|
+
*
|
|
18
|
+
* NOTE (PR11 11.0.0-rc.1): `InputTags.Root`'s `value`/`onValueChange` drive the
|
|
19
|
+
* whole control; the render-prop `Control` receives `controlProps` (which carry
|
|
20
|
+
* the Backspace/delimiter/blur handlers) and `Items` receives `{ item, remove }`
|
|
21
|
+
* — verified in-browser. No per-part value binding is needed.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* <TagsInput name="tags" control={control} label="Etiquetas" />
|
|
25
|
+
* <TagsInput name="tags" control={control} label="Etiquetas" max={5} />
|
|
26
|
+
*/
|
|
27
|
+
export declare function TagsInput<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(props: FieldControllerProps<TFieldValues, TName> & InputTagsExtras & {
|
|
28
|
+
placeholder?: string;
|
|
29
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
9
30
|
export default TagsInput;
|
|
10
31
|
//# sourceMappingURL=TagsInput.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TagsInput.d.ts","sourceRoot":"","sources":["../../../src/components/Forms/TagsInput.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"TagsInput.d.ts","sourceRoot":"","sources":["../../../src/components/Forms/TagsInput.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAiC,MAAM,uCAAuC,CAAC;AAG/G,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EAAE,KAAK,oBAAoB,EAAsB,MAAM,sBAAsB,CAAC;AAKrF,KAAK,eAAe,GAAG,IAAI,CACzB,kBAAkB,EAClB,OAAO,GAAG,cAAc,GAAG,eAAe,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CACjF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CACvB,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,EAC/D,KAAK,EAAE,oBAAoB,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,eAAe,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,2CA8F9F;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -1,11 +1,55 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Times } from "@primeicons/react/times";
|
|
3
|
+
import { Chip } from "@primereact/ui/chip";
|
|
4
|
+
import { InputTags } from "@primereact/ui/inputtags";
|
|
5
|
+
import { InputText } from "@primereact/ui/inputtext";
|
|
6
|
+
import { FieldShell } from "./FieldShell";
|
|
7
|
+
import { useFieldController } from "./useFieldController";
|
|
8
|
+
/**
|
|
9
|
+
* RHF-bound tag input over PR11's compound `InputTags`
|
|
10
|
+
* (Root → Items render-prop chips → Control render-prop entry input).
|
|
11
|
+
*
|
|
12
|
+
* The styled `Root` supplies the chip-field container; `Items` and `Control` are
|
|
13
|
+
* pure render-props, so the wrapper renders each chip as a themed `Chip.*` and the
|
|
14
|
+
* entry field as a themed `InputText` per the official Basic markup.
|
|
15
|
+
* Typing a value and pressing Enter (or `delimiter`) commits a tag; Backspace on
|
|
16
|
+
* an empty field removes the last one.
|
|
17
|
+
*
|
|
18
|
+
* Value shape: `string[]` (the tag list) or `[]` when unset. `onValueChange`
|
|
19
|
+
* writes the array into RHF.
|
|
20
|
+
*
|
|
21
|
+
* NOTE (PR11 11.0.0-rc.1): `InputTags.Root`'s `value`/`onValueChange` drive the
|
|
22
|
+
* whole control; the render-prop `Control` receives `controlProps` (which carry
|
|
23
|
+
* the Backspace/delimiter/blur handlers) and `Items` receives `{ item, remove }`
|
|
24
|
+
* — verified in-browser. No per-part value binding is needed.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* <TagsInput name="tags" control={control} label="Etiquetas" />
|
|
28
|
+
* <TagsInput name="tags" control={control} label="Etiquetas" max={5} />
|
|
29
|
+
*/
|
|
30
|
+
export function TagsInput(props) {
|
|
31
|
+
const { name, control, rules, defaultValue, shouldUnregister, disabled, label, labelMode, floatVariant, addonBefore, addonAfter, required, helpText, id, variant, size, fluid, placeholder, ...rest } = props;
|
|
32
|
+
const f = useFieldController({
|
|
33
|
+
name,
|
|
34
|
+
control,
|
|
35
|
+
rules,
|
|
36
|
+
defaultValue,
|
|
37
|
+
shouldUnregister,
|
|
38
|
+
disabled,
|
|
39
|
+
helpText,
|
|
40
|
+
id,
|
|
41
|
+
variant,
|
|
42
|
+
size,
|
|
43
|
+
fluid,
|
|
44
|
+
});
|
|
45
|
+
const tags = f.field.value ?? [];
|
|
46
|
+
return (_jsx(FieldShell, { id: f.id, label: label, labelMode: labelMode, floatVariant: floatVariant, addonBefore: addonBefore, addonAfter: addonAfter, required: required, helpText: helpText, errorMessage: f.errorMessage, children: _jsxs(InputTags.Root, { value: tags, onValueChange: (e) => f.field.onChange(e.value ?? []), invalid: f.invalid, disabled: f.disabled, variant: f.variant, fluid: f.fluid, ...rest, ...f.aria, children: [_jsx(InputTags.Items, { children: ({ item, remove, itemProps }) => (_jsxs(Chip.Root, { ...itemProps, children: [_jsx(Chip.Label, { children: item }), _jsx(Chip.Remove, { as: "button", type: "button", onClick: remove, "aria-label": `Remove ${item}`, children: _jsx(Times, {}) })] })) }), _jsx(InputTags.Control, { children: ({ controlProps }) => (_jsx(InputText, { ...controlProps, id: f.id, onBlur: f.field.onBlur, placeholder: tags.length === 0 ? placeholder : undefined, variant: f.variant, size: f.size, invalid: f.invalid, className: 'flex-[1_1_auto]',
|
|
47
|
+
// The InputTags container (.p-inputtags) IS the field — it owns the
|
|
48
|
+
// border + focus ring. The entry input must be chrome-less or it
|
|
49
|
+
// renders a second nested border/focus ring (official CSS sets the
|
|
50
|
+
// same on .p-inputtags .p-autocomplete-input). Inline style wins over
|
|
51
|
+
// PR11's non-!important :focus box-shadow/outline in every state.
|
|
52
|
+
style: { border: 0, background: "transparent", boxShadow: "none", outline: 0 } })) })] }) }));
|
|
53
|
+
}
|
|
10
54
|
export default TagsInput;
|
|
11
55
|
//# sourceMappingURL=TagsInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TagsInput.js","sourceRoot":"","sources":["../../../src/components/Forms/TagsInput.tsx"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"TagsInput.js","sourceRoot":"","sources":["../../../src/components/Forms/TagsInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import React from
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import type { TextareaProps } from "@primereact/types/primitive/textarea";
|
|
2
|
+
import type * as React from "react";
|
|
3
|
+
import type { FieldPath, FieldValues } from "react-hook-form";
|
|
4
|
+
import { type FieldControllerProps } from "./useFieldController";
|
|
5
|
+
type TextareaExtras = Omit<TextareaProps & React.TextareaHTMLAttributes<HTMLTextAreaElement>, "id" | "name" | "value" | "onChange" | "onBlur" | "defaultValue" | "invalid" | "disabled">;
|
|
6
|
+
/**
|
|
7
|
+
* RHF-bound multiline text over PR11 `Textarea` (native value/onChange).
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* <TextArea name="notes" control={control} label="Notas" rows={4} />
|
|
11
|
+
*/
|
|
12
|
+
export declare function TextArea<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(props: FieldControllerProps<TFieldValues, TName> & TextareaExtras): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export {};
|
|
11
14
|
//# sourceMappingURL=TextArea.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextArea.d.ts","sourceRoot":"","sources":["../../../src/components/Forms/TextArea.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TextArea.d.ts","sourceRoot":"","sources":["../../../src/components/Forms/TextArea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EAAE,KAAK,oBAAoB,EAAsB,MAAM,sBAAsB,CAAC;AAErF,KAAK,cAAc,GAAG,IAAI,CACxB,aAAa,GAAG,KAAK,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,EACjE,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,cAAc,GAAG,SAAS,GAAG,UAAU,CAC1F,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,QAAQ,CACtB,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,EAC/D,KAAK,EAAE,oBAAoB,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,cAAc,2CAkElE"}
|
|
@@ -1,11 +1,29 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
|
|
2
|
+
import { Textarea } from "@primereact/ui/textarea";
|
|
3
|
+
import { FieldShell } from "./FieldShell";
|
|
4
|
+
import { useFieldController } from "./useFieldController";
|
|
5
|
+
/**
|
|
6
|
+
* RHF-bound multiline text over PR11 `Textarea` (native value/onChange).
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* <TextArea name="notes" control={control} label="Notas" rows={4} />
|
|
10
|
+
*/
|
|
11
|
+
export function TextArea(props) {
|
|
12
|
+
const { name, control, rules, defaultValue, shouldUnregister, disabled, label, labelMode, floatVariant, addonBefore, addonAfter, required, helpText, id, variant, size, fluid, ...rest } = props;
|
|
13
|
+
const f = useFieldController({
|
|
14
|
+
name,
|
|
15
|
+
control,
|
|
16
|
+
rules,
|
|
17
|
+
defaultValue,
|
|
18
|
+
shouldUnregister,
|
|
19
|
+
disabled,
|
|
20
|
+
helpText,
|
|
21
|
+
id,
|
|
22
|
+
variant,
|
|
23
|
+
size,
|
|
24
|
+
fluid,
|
|
25
|
+
});
|
|
26
|
+
const { ref: fieldRef } = f.field;
|
|
27
|
+
return (_jsx(FieldShell, { id: f.id, label: label, labelMode: labelMode, floatVariant: floatVariant, addonBefore: addonBefore, addonAfter: addonAfter, required: required, helpText: helpText, errorMessage: f.errorMessage, children: _jsx(Textarea, { id: f.id, name: f.field.name, ref: fieldRef, value: f.field.value ?? "", onChange: (e) => f.field.onChange(e.target.value), onBlur: f.field.onBlur, invalid: f.invalid, disabled: f.disabled, variant: f.variant, size: f.size, fluid: f.fluid, ...rest, ...f.aria }) }));
|
|
28
|
+
}
|
|
11
29
|
//# sourceMappingURL=TextArea.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextArea.js","sourceRoot":"","sources":["../../../src/components/Forms/TextArea.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"TextArea.js","sourceRoot":"","sources":["../../../src/components/Forms/TextArea.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAA6B,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAOrF;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAGtB,KAAiE;IACjE,MAAM,EACJ,IAAI,EACJ,OAAO,EACP,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,KAAK,EACL,SAAS,EACT,YAAY,EACZ,WAAW,EACX,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,EAAE,EACF,OAAO,EACP,IAAI,EACJ,KAAK,EACL,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IAEV,MAAM,CAAC,GAAG,kBAAkB,CAAsB;QAChD,IAAI;QACJ,OAAO;QACP,KAAK;QACL,YAAY;QACZ,gBAAgB;QAChB,QAAQ;QACR,QAAQ;QACR,EAAE;QACF,OAAO;QACP,IAAI;QACJ,KAAK;KACN,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;IAElC,OAAO,CACL,KAAC,UAAU,IACT,EAAE,EAAE,CAAC,CAAC,EAAE,EACR,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,CAAC,CAAC,YAAY,YAC5B,KAAC,QAAQ,IACP,EAAE,EAAE,CAAC,CAAC,EAAE,EACR,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAClB,GAAG,EAAE,QAAQ,EACb,KAAK,EAAG,CAAC,CAAC,KAAK,CAAC,KAA4B,IAAI,EAAE,EAClD,QAAQ,EAAE,CAAC,CAAyC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzF,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,EACtB,OAAO,EAAE,CAAC,CAAC,OAAO,EAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ,EACpB,OAAO,EAAE,CAAC,CAAC,OAAO,EAClB,IAAI,EAAE,CAAC,CAAC,IAAI,EACZ,KAAK,EAAE,CAAC,CAAC,KAAK,KACV,IAAI,KACJ,CAAC,CAAC,IAAI,GACV,GACS,CACd,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { InputTextProps } from "@primereact/types/primitive/inputtext";
|
|
2
|
+
import type * as React from "react";
|
|
3
|
+
import type { FieldPath, FieldValues } from "react-hook-form";
|
|
4
|
+
import { type FieldControllerProps } from "./useFieldController";
|
|
5
|
+
type InputTextExtras = Omit<InputTextProps & React.InputHTMLAttributes<HTMLInputElement>, "id" | "name" | "value" | "onChange" | "onBlur" | "defaultValue" | "invalid" | "disabled">;
|
|
6
|
+
/**
|
|
7
|
+
* RHF-bound text input over PR11 `InputText` (native value/onChange shape).
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* <TextField name="title" control={control} label="Título" rules={{ required: "…" }} />
|
|
11
|
+
*/
|
|
12
|
+
export declare function TextField<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(props: FieldControllerProps<TFieldValues, TName> & InputTextExtras): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=TextField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextField.d.ts","sourceRoot":"","sources":["../../../src/components/Forms/TextField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAE5E,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EAAE,KAAK,oBAAoB,EAAsB,MAAM,sBAAsB,CAAC;AAMrF,KAAK,eAAe,GAAG,IAAI,CACzB,cAAc,GAAG,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAC5D,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,cAAc,GAAG,SAAS,GAAG,UAAU,CAC1F,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,EAC/D,KAAK,EAAE,oBAAoB,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,eAAe,2CAkEnE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { InputText } from "@primereact/ui/inputtext";
|
|
3
|
+
import { FieldShell } from "./FieldShell";
|
|
4
|
+
import { useFieldController } from "./useFieldController";
|
|
5
|
+
/**
|
|
6
|
+
* RHF-bound text input over PR11 `InputText` (native value/onChange shape).
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* <TextField name="title" control={control} label="Título" rules={{ required: "…" }} />
|
|
10
|
+
*/
|
|
11
|
+
export function TextField(props) {
|
|
12
|
+
const { name, control, rules, defaultValue, shouldUnregister, disabled, label, labelMode, floatVariant, addonBefore, addonAfter, required, helpText, id, variant, size, fluid, ...rest } = props;
|
|
13
|
+
const f = useFieldController({
|
|
14
|
+
name,
|
|
15
|
+
control,
|
|
16
|
+
rules,
|
|
17
|
+
defaultValue,
|
|
18
|
+
shouldUnregister,
|
|
19
|
+
disabled,
|
|
20
|
+
helpText,
|
|
21
|
+
id,
|
|
22
|
+
variant,
|
|
23
|
+
size,
|
|
24
|
+
fluid,
|
|
25
|
+
});
|
|
26
|
+
const { ref: fieldRef } = f.field;
|
|
27
|
+
return (_jsx(FieldShell, { id: f.id, label: label, labelMode: labelMode, floatVariant: floatVariant, addonBefore: addonBefore, addonAfter: addonAfter, required: required, helpText: helpText, errorMessage: f.errorMessage, children: _jsx(InputText, { id: f.id, name: f.field.name, ref: fieldRef, value: f.field.value ?? "", onChange: (e) => f.field.onChange(e.target.value), onBlur: f.field.onBlur, invalid: f.invalid, disabled: f.disabled, variant: f.variant, size: f.size, fluid: f.fluid, ...rest, ...f.aria }) }));
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=TextField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextField.js","sourceRoot":"","sources":["../../../src/components/Forms/TextField.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAGrD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAA6B,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAWrF;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAGvB,KAAkE;IAClE,MAAM,EACJ,IAAI,EACJ,OAAO,EACP,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,KAAK,EACL,SAAS,EACT,YAAY,EACZ,WAAW,EACX,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,EAAE,EACF,OAAO,EACP,IAAI,EACJ,KAAK,EACL,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IAEV,MAAM,CAAC,GAAG,kBAAkB,CAAsB;QAChD,IAAI;QACJ,OAAO;QACP,KAAK;QACL,YAAY;QACZ,gBAAgB;QAChB,QAAQ;QACR,QAAQ;QACR,EAAE;QACF,OAAO;QACP,IAAI;QACJ,KAAK;KACN,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;IAElC,OAAO,CACL,KAAC,UAAU,IACT,EAAE,EAAE,CAAC,CAAC,EAAE,EACR,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,CAAC,CAAC,YAAY,YAC5B,KAAC,SAAS,IACR,EAAE,EAAE,CAAC,CAAC,EAAE,EACR,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAClB,GAAG,EAAE,QAAQ,EACb,KAAK,EAAG,CAAC,CAAC,KAAK,CAAC,KAA4B,IAAI,EAAE,EAClD,QAAQ,EAAE,CAAC,CAAsC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACtF,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,EACtB,OAAO,EAAE,CAAC,CAAC,OAAO,EAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ,EACpB,OAAO,EAAE,CAAC,CAAC,OAAO,EAClB,IAAI,EAAE,CAAC,CAAC,IAAI,EACZ,KAAK,EAAE,CAAC,CAAC,KAAK,KACV,IAAI,KACJ,CAAC,CAAC,IAAI,GACV,GACS,CACd,CAAC;AACJ,CAAC"}
|
|
@@ -1,14 +1,35 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import type { ToggleButtonGroupProps } from "@primereact/types/primitive/togglebuttongroup";
|
|
2
|
+
import type { ReactNode } from "react";
|
|
3
|
+
import type { FieldPath, FieldValues } from "react-hook-form";
|
|
4
|
+
import { type ChoiceFieldControllerProps } from "./useFieldController";
|
|
5
|
+
type OptionRow = Record<string, unknown>;
|
|
6
|
+
type ToggleGroupExtras = Omit<ToggleButtonGroupProps, "value" | "onValueChange" | "invalid" | "disabled" | "children">;
|
|
7
|
+
/**
|
|
8
|
+
* RHF-bound segmented single-choice control over PR11's `ToggleButtonGroup`. Each
|
|
9
|
+
* segment is a `ToggleButton.Root` that renders themed with a distinct active
|
|
10
|
+
* (pressed) state from the theme's surface-emphasis tokens.
|
|
11
|
+
*
|
|
12
|
+
* Value shape: the selected segment's value (scalar) — or an ARRAY when `multiple`.
|
|
13
|
+
*
|
|
14
|
+
* NOTE (PR11 11.0.0-rc.1): like `RadioButtonGroup`, the styled `ToggleButtonGroup`
|
|
15
|
+
* and `ToggleButton.Root` are wired through two DIFFERENT React contexts in this
|
|
16
|
+
* rc — the group's `value`/`onValueChange` never reaches its children (verified
|
|
17
|
+
* in-browser). Until fixed upstream, binding is done per-segment via the documented
|
|
18
|
+
* `pressed`/`onPressedChange` props (no invented sub-parts); the group stays for
|
|
19
|
+
* layout/styling. `multiple` toggles scalar vs array value semantics here.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* <ToggleInlineButton name="view" control={control} label="Vista"
|
|
23
|
+
* options={VIEWS} optionLabel="label" optionValue="value" />
|
|
24
|
+
* <ToggleInlineButton ... multiple /> // array mode
|
|
25
|
+
* <ToggleInlineButton ... renderOption={(o) => <i className={o.icon} />} />
|
|
26
|
+
*/
|
|
27
|
+
export declare function ToggleInlineButton<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(props: ChoiceFieldControllerProps<TFieldValues, TName> & ToggleGroupExtras & {
|
|
28
|
+
options: OptionRow[];
|
|
29
|
+
optionLabel?: string;
|
|
30
|
+
optionValue?: string;
|
|
31
|
+
/** Escape hatch: full custom per-segment render. */
|
|
32
|
+
renderOption?: (option: OptionRow, index: number) => ReactNode;
|
|
33
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
13
34
|
export default ToggleInlineButton;
|
|
14
35
|
//# sourceMappingURL=ToggleInlineButton.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToggleInlineButton.d.ts","sourceRoot":"","sources":["../../../src/components/Forms/ToggleInlineButton.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ToggleInlineButton.d.ts","sourceRoot":"","sources":["../../../src/components/Forms/ToggleInlineButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AAG5F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EAAE,KAAK,0BAA0B,EAAsB,MAAM,sBAAsB,CAAC;AAE3F,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAIzC,KAAK,iBAAiB,GAAG,IAAI,CAC3B,sBAAsB,EACtB,OAAO,GAAG,eAAe,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAChE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,EAE/D,KAAK,EAAE,0BAA0B,CAAC,YAAY,EAAE,KAAK,CAAC,GACpD,iBAAiB,GAAG;IAClB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;CAChE,2CAmFJ;AAED,eAAe,kBAAkB,CAAC"}
|
|
@@ -1,9 +1,59 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
import { ToggleButton } from "@primereact/ui/togglebutton";
|
|
3
|
+
import { ToggleButtonGroup } from "@primereact/ui/togglebuttongroup";
|
|
4
|
+
import { FieldShell } from "./FieldShell";
|
|
5
|
+
import { useFieldController } from "./useFieldController";
|
|
6
|
+
/**
|
|
7
|
+
* RHF-bound segmented single-choice control over PR11's `ToggleButtonGroup`. Each
|
|
8
|
+
* segment is a `ToggleButton.Root` that renders themed with a distinct active
|
|
9
|
+
* (pressed) state from the theme's surface-emphasis tokens.
|
|
10
|
+
*
|
|
11
|
+
* Value shape: the selected segment's value (scalar) — or an ARRAY when `multiple`.
|
|
12
|
+
*
|
|
13
|
+
* NOTE (PR11 11.0.0-rc.1): like `RadioButtonGroup`, the styled `ToggleButtonGroup`
|
|
14
|
+
* and `ToggleButton.Root` are wired through two DIFFERENT React contexts in this
|
|
15
|
+
* rc — the group's `value`/`onValueChange` never reaches its children (verified
|
|
16
|
+
* in-browser). Until fixed upstream, binding is done per-segment via the documented
|
|
17
|
+
* `pressed`/`onPressedChange` props (no invented sub-parts); the group stays for
|
|
18
|
+
* layout/styling. `multiple` toggles scalar vs array value semantics here.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* <ToggleInlineButton name="view" control={control} label="Vista"
|
|
22
|
+
* options={VIEWS} optionLabel="label" optionValue="value" />
|
|
23
|
+
* <ToggleInlineButton ... multiple /> // array mode
|
|
24
|
+
* <ToggleInlineButton ... renderOption={(o) => <i className={o.icon} />} />
|
|
25
|
+
*/
|
|
26
|
+
export function ToggleInlineButton(props) {
|
|
27
|
+
const { name, control, rules, defaultValue, shouldUnregister, disabled, label, labelMode, required, helpText, id, options, optionLabel, optionValue, renderOption, multiple, ...rest } = props;
|
|
28
|
+
const f = useFieldController({
|
|
29
|
+
name,
|
|
30
|
+
control,
|
|
31
|
+
rules,
|
|
32
|
+
defaultValue,
|
|
33
|
+
shouldUnregister,
|
|
34
|
+
disabled,
|
|
35
|
+
helpText,
|
|
36
|
+
id,
|
|
37
|
+
});
|
|
38
|
+
const labelKey = optionLabel ?? "label";
|
|
39
|
+
const valueKey = optionValue ?? "value";
|
|
40
|
+
// Per-segment pressed derivation + write-back (scalar for single, array for multiple).
|
|
41
|
+
const selected = multiple ? (f.field.value ?? []) : f.field.value;
|
|
42
|
+
const isPressed = (optValue) => multiple ? selected.includes(optValue) : selected === optValue;
|
|
43
|
+
const toggle = (optValue, pressed) => {
|
|
44
|
+
if (multiple) {
|
|
45
|
+
const arr = selected;
|
|
46
|
+
f.field.onChange(pressed ? [...arr, optValue] : arr.filter((v) => v !== optValue));
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
f.field.onChange(pressed ? optValue : null);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const { ref: fieldRef } = f.field;
|
|
53
|
+
return (_jsx(FieldShell, { id: f.id, label: label, labelMode: labelMode ?? "beside", required: required, helpText: helpText, errorMessage: f.errorMessage, children: _jsx(ToggleButtonGroup, { ref: fieldRef, multiple: multiple, invalid: f.invalid, disabled: f.disabled, ...rest, ...f.aria, children: options.map((option, index) => {
|
|
54
|
+
const optValue = option[valueKey];
|
|
55
|
+
return (_jsx(ToggleButton.Root, { value: optValue, pressed: isPressed(optValue), onPressedChange: (e) => toggle(optValue, e.pressed), children: _jsx(ToggleButton.Indicator, { children: renderOption ? renderOption(option, index) : String(option[labelKey] ?? "") }) }, `${f.id}_${String(optValue)}`));
|
|
56
|
+
}) }) }));
|
|
57
|
+
}
|
|
8
58
|
export default ToggleInlineButton;
|
|
9
59
|
//# sourceMappingURL=ToggleInlineButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToggleInlineButton.js","sourceRoot":"","sources":["../../../src/components/Forms/ToggleInlineButton.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"ToggleInlineButton.js","sourceRoot":"","sources":["../../../src/components/Forms/ToggleInlineButton.tsx"],"names":[],"mappings":"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"}
|