@proef/common-ui 0.0.0-stage → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/assets/imagem-6ee08a37d9.png +0 -0
- package/dist/esm/assets/imagem-6fcae1b87b.png +0 -0
- package/dist/esm/index.js +324 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/legacy/assets/svgs/proef-footer-logo.svg.js +5 -0
- package/dist/esm/legacy/assets/svgs/proef-footer-logo.svg.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Acronym/Acronym.css +43 -0
- package/dist/esm/legacy/components/atoms/Acronym/Acronym.js +31 -0
- package/dist/esm/legacy/components/atoms/Acronym/Acronym.js.map +1 -0
- package/dist/esm/legacy/components/atoms/BreadCrumb/BreadCrumb.css +36 -0
- package/dist/esm/legacy/components/atoms/BreadCrumb/BreadCrumb.js +57 -0
- package/dist/esm/legacy/components/atoms/BreadCrumb/BreadCrumb.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Button/variants/ActionButton.css +218 -0
- package/dist/esm/legacy/components/atoms/Button/variants/ActionButton.js +50 -0
- package/dist/esm/legacy/components/atoms/Button/variants/ActionButton.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Button/variants/FilterButton.css +56 -0
- package/dist/esm/legacy/components/atoms/Button/variants/FilterButton.js +34 -0
- package/dist/esm/legacy/components/atoms/Button/variants/FilterButton.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Button/variants/IconButton.css +74 -0
- package/dist/esm/legacy/components/atoms/Button/variants/IconButton.js +29 -0
- package/dist/esm/legacy/components/atoms/Button/variants/IconButton.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Button/variants/MainButton.css +99 -0
- package/dist/esm/legacy/components/atoms/Button/variants/MainButton.js +36 -0
- package/dist/esm/legacy/components/atoms/Button/variants/MainButton.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Button/variants/TabButton.css +63 -0
- package/dist/esm/legacy/components/atoms/Button/variants/TabButton.js +21 -0
- package/dist/esm/legacy/components/atoms/Button/variants/TabButton.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Field/Field.css +171 -0
- package/dist/esm/legacy/components/atoms/Field/Field.js +70 -0
- package/dist/esm/legacy/components/atoms/Field/Field.js.map +1 -0
- package/dist/esm/legacy/components/atoms/IconText/IconText.css +10 -0
- package/dist/esm/legacy/components/atoms/IconText/IconText.js +25 -0
- package/dist/esm/legacy/components/atoms/IconText/IconText.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Icone/Icone.js +24 -0
- package/dist/esm/legacy/components/atoms/Icone/Icone.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Input/Input.css +12 -0
- package/dist/esm/legacy/components/atoms/Input/Input.js +28 -0
- package/dist/esm/legacy/components/atoms/Input/Input.js.map +1 -0
- package/dist/esm/legacy/components/atoms/InputData/InputData.js +25 -0
- package/dist/esm/legacy/components/atoms/InputData/InputData.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Label/Label.css +192 -0
- package/dist/esm/legacy/components/atoms/Label/Label.js +13 -0
- package/dist/esm/legacy/components/atoms/Label/Label.js.map +1 -0
- package/dist/esm/legacy/components/atoms/MultiTagPickerTag/MultiTagPickerTag.css +40 -0
- package/dist/esm/legacy/components/atoms/MultiTagPickerTag/MultiTagPickerTag.js +21 -0
- package/dist/esm/legacy/components/atoms/MultiTagPickerTag/MultiTagPickerTag.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Select/Select.css +16 -0
- package/dist/esm/legacy/components/atoms/Select/Select.js +27 -0
- package/dist/esm/legacy/components/atoms/Select/Select.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Stack/Stack.js +20 -0
- package/dist/esm/legacy/components/atoms/Stack/Stack.js.map +1 -0
- package/dist/esm/legacy/components/atoms/Switch/CustomSwitch.css +36 -0
- package/dist/esm/legacy/components/atoms/Switch/CustomSwitch.js +29 -0
- package/dist/esm/legacy/components/atoms/Switch/CustomSwitch.js.map +1 -0
- package/dist/esm/legacy/components/charts/Charts.js +349 -0
- package/dist/esm/legacy/components/charts/Charts.js.map +1 -0
- package/dist/esm/legacy/components/layout/AppLauncher/AppLauncher.js +100 -0
- package/dist/esm/legacy/components/layout/AppLauncher/AppLauncher.js.map +1 -0
- package/dist/esm/legacy/components/layout/Error/Error.css +20 -0
- package/dist/esm/legacy/components/layout/Error/Error.js +12 -0
- package/dist/esm/legacy/components/layout/Error/Error.js.map +1 -0
- package/dist/esm/legacy/components/layout/Footer/Footer.css +42 -0
- package/dist/esm/legacy/components/layout/Footer/Footer.js +23 -0
- package/dist/esm/legacy/components/layout/Footer/Footer.js.map +1 -0
- package/dist/esm/legacy/components/layout/Header/Header.css +66 -0
- package/dist/esm/legacy/components/layout/Header/Header.js +37 -0
- package/dist/esm/legacy/components/layout/Header/Header.js.map +1 -0
- package/dist/esm/legacy/components/layout/Layout/Layout.js +31 -0
- package/dist/esm/legacy/components/layout/Layout/Layout.js.map +1 -0
- package/dist/esm/legacy/components/layout/Sidebar/Sidebar.js +38 -0
- package/dist/esm/legacy/components/layout/Sidebar/Sidebar.js.map +1 -0
- package/dist/esm/legacy/components/layout/Spinner/Spinner.css +10 -0
- package/dist/esm/legacy/components/layout/Spinner/Spinner.js +19 -0
- package/dist/esm/legacy/components/layout/Spinner/Spinner.js.map +1 -0
- package/dist/esm/legacy/components/layout/TopBar/TopBar.js +34 -0
- package/dist/esm/legacy/components/layout/TopBar/TopBar.js.map +1 -0
- package/dist/esm/legacy/components/layout/TopNavLayout/TopNavLayout.js +82 -0
- package/dist/esm/legacy/components/layout/TopNavLayout/TopNavLayout.js.map +1 -0
- package/dist/esm/legacy/components/molecules/BarraValor/BarraValor.js +25 -0
- package/dist/esm/legacy/components/molecules/BarraValor/BarraValor.js.map +1 -0
- package/dist/esm/legacy/components/molecules/ColumnPicker/ColumnPicker.js +246 -0
- package/dist/esm/legacy/components/molecules/ColumnPicker/ColumnPicker.js.map +1 -0
- package/dist/esm/legacy/components/molecules/ConfirmModal/ConfirmModal.css +3 -0
- package/dist/esm/legacy/components/molecules/ConfirmModal/ConfirmModal.js +33 -0
- package/dist/esm/legacy/components/molecules/ConfirmModal/ConfirmModal.js.map +1 -0
- package/dist/esm/legacy/components/molecules/DataTable/DataTable.js +1259 -0
- package/dist/esm/legacy/components/molecules/DataTable/DataTable.js.map +1 -0
- package/dist/esm/legacy/components/molecules/FileDropzone/FileDropzone.js +68 -0
- package/dist/esm/legacy/components/molecules/FileDropzone/FileDropzone.js.map +1 -0
- package/dist/esm/legacy/components/molecules/LanguageSwitcher/LanguageSwitcher.js +96 -0
- package/dist/esm/legacy/components/molecules/LanguageSwitcher/LanguageSwitcher.js.map +1 -0
- package/dist/esm/legacy/components/molecules/Modal/Modal.css +54 -0
- package/dist/esm/legacy/components/molecules/Modal/Modal.js +64 -0
- package/dist/esm/legacy/components/molecules/Modal/Modal.js.map +1 -0
- package/dist/esm/legacy/components/molecules/MultiTagPicker/MultiTagPicker.css +97 -0
- package/dist/esm/legacy/components/molecules/MultiTagPicker/MultiTagPicker.js +113 -0
- package/dist/esm/legacy/components/molecules/MultiTagPicker/MultiTagPicker.js.map +1 -0
- package/dist/esm/legacy/components/molecules/PhotoAvatar/PhotoAvatar.js +114 -0
- package/dist/esm/legacy/components/molecules/PhotoAvatar/PhotoAvatar.js.map +1 -0
- package/dist/esm/legacy/components/molecules/SeletorPesquisa/SeletorPesquisa.js +116 -0
- package/dist/esm/legacy/components/molecules/SeletorPesquisa/SeletorPesquisa.js.map +1 -0
- package/dist/esm/legacy/components/molecules/Sidebar/Sidebar.css +69 -0
- package/dist/esm/legacy/components/molecules/Sidebar/Sidebar.js +62 -0
- package/dist/esm/legacy/components/molecules/Sidebar/Sidebar.js.map +1 -0
- package/dist/esm/legacy/components/molecules/UserAvatar/UserAvatar.js +23 -0
- package/dist/esm/legacy/components/molecules/UserAvatar/UserAvatar.js.map +1 -0
- package/dist/esm/legacy/components/organisms/GanttChart/GanttChart.js +162 -0
- package/dist/esm/legacy/components/organisms/GanttChart/GanttChart.js.map +1 -0
- package/dist/esm/legacy/components/organisms/Kanban/Kanban.js +88 -0
- package/dist/esm/legacy/components/organisms/Kanban/Kanban.js.map +1 -0
- package/dist/esm/legacy/components/organisms/LazyLoader/LazyLoader.js +87 -0
- package/dist/esm/legacy/components/organisms/LazyLoader/LazyLoader.js.map +1 -0
- package/dist/esm/legacy/components/organisms/MapaPontos/MapaPontos.js +427 -0
- package/dist/esm/legacy/components/organisms/MapaPontos/MapaPontos.js.map +1 -0
- package/dist/esm/legacy/components/organisms/PainelFiltros/PainelFiltros.js +218 -0
- package/dist/esm/legacy/components/organisms/PainelFiltros/PainelFiltros.js.map +1 -0
- package/dist/esm/legacy/components/organisms/PesquisaRapida/PesquisaRapida.js +147 -0
- package/dist/esm/legacy/components/organisms/PesquisaRapida/PesquisaRapida.js.map +1 -0
- package/dist/esm/legacy/components/organisms/Profile/Profile.css +26 -0
- package/dist/esm/legacy/components/organisms/Profile/Profile.js +26 -0
- package/dist/esm/legacy/components/organisms/Profile/Profile.js.map +1 -0
- package/dist/esm/legacy/components/organisms/RoleGuard/RoleGuard.js +79 -0
- package/dist/esm/legacy/components/organisms/RoleGuard/RoleGuard.js.map +1 -0
- package/dist/esm/legacy/components/organisms/Selector/Selector.css +87 -0
- package/dist/esm/legacy/components/organisms/Selector/Selector.js +181 -0
- package/dist/esm/legacy/components/organisms/Selector/Selector.js.map +1 -0
- package/dist/esm/legacy/components/organisms/StatusMatrix/StatusMatrix.js +115 -0
- package/dist/esm/legacy/components/organisms/StatusMatrix/StatusMatrix.js.map +1 -0
- package/dist/esm/legacy/components/ui/Avisos.js +33 -0
- package/dist/esm/legacy/components/ui/Avisos.js.map +1 -0
- package/dist/esm/legacy/components/ui/BarraAcoes.js +19 -0
- package/dist/esm/legacy/components/ui/BarraAcoes.js.map +1 -0
- package/dist/esm/legacy/components/ui/CabecalhoPagina.js +19 -0
- package/dist/esm/legacy/components/ui/CabecalhoPagina.js.map +1 -0
- package/dist/esm/legacy/components/ui/CaixaPesquisa.js +9 -0
- package/dist/esm/legacy/components/ui/CaixaPesquisa.js.map +1 -0
- package/dist/esm/legacy/components/ui/Confirmacao.js +34 -0
- package/dist/esm/legacy/components/ui/Confirmacao.js.map +1 -0
- package/dist/esm/legacy/components/ui/Escolha.js +41 -0
- package/dist/esm/legacy/components/ui/Escolha.js.map +1 -0
- package/dist/esm/legacy/components/ui/FaixaAviso.js +19 -0
- package/dist/esm/legacy/components/ui/FaixaAviso.js.map +1 -0
- package/dist/esm/legacy/components/ui/MenuAcoes.js +116 -0
- package/dist/esm/legacy/components/ui/MenuAcoes.js.map +1 -0
- package/dist/esm/legacy/components/ui/Passos.js +32 -0
- package/dist/esm/legacy/components/ui/Passos.js.map +1 -0
- package/dist/esm/legacy/components/ui/Separadores.js +17 -0
- package/dist/esm/legacy/components/ui/Separadores.js.map +1 -0
- package/dist/esm/legacy/components/ui/TextoAuto.js +33 -0
- package/dist/esm/legacy/components/ui/TextoAuto.js.map +1 -0
- package/dist/esm/legacy/components/ui/Ui.js +263 -0
- package/dist/esm/legacy/components/ui/Ui.js.map +1 -0
- package/dist/esm/legacy/components/ui/painelFlutuante.js +13 -0
- package/dist/esm/legacy/components/ui/painelFlutuante.js.map +1 -0
- package/dist/esm/legacy/constants/Colors.js +33 -0
- package/dist/esm/legacy/constants/Colors.js.map +1 -0
- package/dist/esm/legacy/constants/FontWeight.js +35 -0
- package/dist/esm/legacy/constants/FontWeight.js.map +1 -0
- package/dist/esm/legacy/contexts/apiContext.js +25 -0
- package/dist/esm/legacy/contexts/apiContext.js.map +1 -0
- package/dist/esm/legacy/contexts/authContext.js +85 -0
- package/dist/esm/legacy/contexts/authContext.js.map +1 -0
- package/dist/esm/legacy/contexts/socketContext.js +34 -0
- package/dist/esm/legacy/contexts/socketContext.js.map +1 -0
- package/dist/esm/legacy/hooks/useApi.js +62 -0
- package/dist/esm/legacy/hooks/useApi.js.map +1 -0
- package/dist/esm/legacy/pages/Error/ErrorPage.css +18 -0
- package/dist/esm/legacy/pages/Error/ErrorPage.js +50 -0
- package/dist/esm/legacy/pages/Error/ErrorPage.js.map +1 -0
- package/dist/esm/legacy/pages/Loading/Loading.css +46 -0
- package/dist/esm/legacy/pages/Loading/Loading.js +9 -0
- package/dist/esm/legacy/pages/Loading/Loading.js.map +1 -0
- package/dist/esm/legacy/pages/Login/LoginScreen.js +46 -0
- package/dist/esm/legacy/pages/Login/LoginScreen.js.map +1 -0
- package/dist/esm/legacy/pages/NotFound/NotFound.css +21 -0
- package/dist/esm/legacy/pages/NotFound/NotFound.js +24 -0
- package/dist/esm/legacy/pages/NotFound/NotFound.js.map +1 -0
- package/dist/esm/legacy/styles/themes/ButtonThemes.js +28 -0
- package/dist/esm/legacy/styles/themes/ButtonThemes.js.map +1 -0
- package/dist/esm/legacy/styles/utils/utils.js +7 -0
- package/dist/esm/legacy/styles/utils/utils.js.map +1 -0
- package/dist/esm/legacy/utils/stringUtils.js +35 -0
- package/dist/esm/legacy/utils/stringUtils.js.map +1 -0
- package/dist/esm/v1/capabilities/documents/QRScanning/scanQRCodes.js +157 -0
- package/dist/esm/v1/capabilities/documents/QRScanning/scanQRCodes.js.map +1 -0
- package/dist/esm/v1/capabilities/overlay/useFloatingPanel.js +52 -0
- package/dist/esm/v1/capabilities/overlay/useFloatingPanel.js.map +1 -0
- package/dist/esm/v1/capabilities/theme/useIsDark.js +15 -0
- package/dist/esm/v1/capabilities/theme/useIsDark.js.map +1 -0
- package/dist/esm/v1/capabilities/theme/useTheme.js +66 -0
- package/dist/esm/v1/capabilities/theme/useTheme.js.map +1 -0
- package/dist/esm/v1/components/data/Pagination/Pagination.js +66 -0
- package/dist/esm/v1/components/data/Pagination/Pagination.js.map +1 -0
- package/dist/esm/v1/components/documents/DocumentDropzone/DocumentDropzone.js +307 -0
- package/dist/esm/v1/components/documents/DocumentDropzone/DocumentDropzone.js.map +1 -0
- package/dist/esm/v1/components/feedback/Toast/Toast.js +105 -0
- package/dist/esm/v1/components/feedback/Toast/Toast.js.map +1 -0
- package/dist/esm/v1/components/forms/FormField/FormField.js +59 -0
- package/dist/esm/v1/components/forms/FormField/FormField.js.map +1 -0
- package/dist/esm/v1/components/forms/FormGrid/FormGrid.js +20 -0
- package/dist/esm/v1/components/forms/FormGrid/FormGrid.js.map +1 -0
- package/dist/esm/v1/components/layout/AppShell/AppShell.js +89 -0
- package/dist/esm/v1/components/layout/AppShell/AppShell.js.map +1 -0
- package/dist/esm/v1/components/layout/Page/Page.js +16 -0
- package/dist/esm/v1/components/layout/Page/Page.js.map +1 -0
- package/dist/esm/v1/components/layout/PageHeader/PageHeader.js +26 -0
- package/dist/esm/v1/components/layout/PageHeader/PageHeader.js.map +1 -0
- package/dist/esm/v1/components/layout/SideNav/SideNav.js +287 -0
- package/dist/esm/v1/components/layout/SideNav/SideNav.js.map +1 -0
- package/dist/esm/v1/components/layout/navTrail.js +19 -0
- package/dist/esm/v1/components/layout/navTrail.js.map +1 -0
- package/dist/esm/v1/components/lists/ListFinder/ListFinder.js +271 -0
- package/dist/esm/v1/components/lists/ListFinder/ListFinder.js.map +1 -0
- package/dist/esm/v1/components/lists/ListFinder/labels.js +18 -0
- package/dist/esm/v1/components/lists/ListFinder/labels.js.map +1 -0
- package/dist/esm/v1/components/overlays/ConfirmDialog/ConfirmDialog.js +95 -0
- package/dist/esm/v1/components/overlays/ConfirmDialog/ConfirmDialog.js.map +1 -0
- package/dist/esm/v1/components/overlays/Dialog/Dialog.js +141 -0
- package/dist/esm/v1/components/overlays/Dialog/Dialog.js.map +1 -0
- package/dist/esm/v1/components/overlays/Tooltip/Tooltip.js +98 -0
- package/dist/esm/v1/components/overlays/Tooltip/Tooltip.js.map +1 -0
- package/dist/esm/v1/components/overlays/Tooltip/TooltipLayer.js +84 -0
- package/dist/esm/v1/components/overlays/Tooltip/TooltipLayer.js.map +1 -0
- package/dist/esm/v1/components/overlays/Tooltip/TooltipPanel.js +33 -0
- package/dist/esm/v1/components/overlays/Tooltip/TooltipPanel.js.map +1 -0
- package/dist/esm/v1/components/overlays/topLayer.js +28 -0
- package/dist/esm/v1/components/overlays/topLayer.js.map +1 -0
- package/dist/esm/v1/components/tables/PaginatedTable/PaginatedTable.js +50 -0
- package/dist/esm/v1/components/tables/PaginatedTable/PaginatedTable.js.map +1 -0
- package/dist/esm/v1/components/tables/Table/ColumnFilter.js +292 -0
- package/dist/esm/v1/components/tables/Table/ColumnFilter.js.map +1 -0
- package/dist/esm/v1/components/tables/Table/OverlayScrollbar.js +129 -0
- package/dist/esm/v1/components/tables/Table/OverlayScrollbar.js.map +1 -0
- package/dist/esm/v1/components/tables/Table/Table.js +1410 -0
- package/dist/esm/v1/components/tables/Table/Table.js.map +1 -0
- package/dist/esm/v1/components/tables/Table/labels.js +44 -0
- package/dist/esm/v1/components/tables/Table/labels.js.map +1 -0
- package/dist/esm/v1/foundations/icons/icons.js +227 -0
- package/dist/esm/v1/foundations/icons/icons.js.map +1 -0
- package/dist/esm/v1/primitives/buttons/Button/Button.js +41 -0
- package/dist/esm/v1/primitives/buttons/Button/Button.js.map +1 -0
- package/dist/esm/v1/primitives/buttons/SegmentedControl/SegmentedControl.js +65 -0
- package/dist/esm/v1/primitives/buttons/SegmentedControl/SegmentedControl.js.map +1 -0
- package/dist/esm/v1/primitives/buttons/SegmentedControl/segmentedStyles.js +10 -0
- package/dist/esm/v1/primitives/buttons/SegmentedControl/segmentedStyles.js.map +1 -0
- package/dist/esm/v1/primitives/display/Avatar/Avatar.js +120 -0
- package/dist/esm/v1/primitives/display/Avatar/Avatar.js.map +1 -0
- package/dist/esm/v1/primitives/display/Badge/Badge.js +23 -0
- package/dist/esm/v1/primitives/display/Badge/Badge.js.map +1 -0
- package/dist/esm/v1/primitives/display/Card/Card.js +22 -0
- package/dist/esm/v1/primitives/display/Card/Card.js.map +1 -0
- package/dist/esm/v1/primitives/display/FilterChips/FilterChips.js +45 -0
- package/dist/esm/v1/primitives/display/FilterChips/FilterChips.js.map +1 -0
- package/dist/esm/v1/primitives/display/Kpi/Kpi.js +103 -0
- package/dist/esm/v1/primitives/display/Kpi/Kpi.js.map +1 -0
- package/dist/esm/v1/primitives/display/Notice/Notice.js +71 -0
- package/dist/esm/v1/primitives/display/Notice/Notice.js.map +1 -0
- package/dist/esm/v1/primitives/display/Person/Person.js +14 -0
- package/dist/esm/v1/primitives/display/Person/Person.js.map +1 -0
- package/dist/esm/v1/primitives/display/RichText/RichText.js +12 -0
- package/dist/esm/v1/primitives/display/RichText/RichText.js.map +1 -0
- package/dist/esm/v1/primitives/display/RichText/utils.js +56 -0
- package/dist/esm/v1/primitives/display/RichText/utils.js.map +1 -0
- package/dist/esm/v1/primitives/documents/PdfPreview/PdfPreview.js +137 -0
- package/dist/esm/v1/primitives/documents/PdfPreview/PdfPreview.js.map +1 -0
- package/dist/esm/v1/primitives/documents/PdfPreview/pdfjs.js +26 -0
- package/dist/esm/v1/primitives/documents/PdfPreview/pdfjs.js.map +1 -0
- package/dist/esm/v1/primitives/forms/Checkbox/Checkbox.js +37 -0
- package/dist/esm/v1/primitives/forms/Checkbox/Checkbox.js.map +1 -0
- package/dist/esm/v1/primitives/forms/DateInput/DateInput.js +150 -0
- package/dist/esm/v1/primitives/forms/DateInput/DateInput.js.map +1 -0
- package/dist/esm/v1/primitives/forms/LookupInput/LookupInput.js +37 -0
- package/dist/esm/v1/primitives/forms/LookupInput/LookupInput.js.map +1 -0
- package/dist/esm/v1/primitives/forms/RichTextEditor/RichTextEditor.js +253 -0
- package/dist/esm/v1/primitives/forms/RichTextEditor/RichTextEditor.js.map +1 -0
- package/dist/esm/v1/primitives/forms/SearchInput/SearchInput.js +43 -0
- package/dist/esm/v1/primitives/forms/SearchInput/SearchInput.js.map +1 -0
- package/dist/esm/v1/primitives/forms/SelectInput/SelectInput.js +207 -0
- package/dist/esm/v1/primitives/forms/SelectInput/SelectInput.js.map +1 -0
- package/dist/esm/v1/primitives/forms/TextArea/TextArea.js +75 -0
- package/dist/esm/v1/primitives/forms/TextArea/TextArea.js.map +1 -0
- package/dist/esm/v1/primitives/forms/TextInput/TextInput.js +21 -0
- package/dist/esm/v1/primitives/forms/TextInput/TextInput.js.map +1 -0
- package/dist/esm/v1/primitives/forms/field.js +14 -0
- package/dist/esm/v1/primitives/forms/field.js.map +1 -0
- package/dist/esm/v1/primitives/lists/ListItem/ListItem.js +73 -0
- package/dist/esm/v1/primitives/lists/ListItem/ListItem.js.map +1 -0
- package/dist/esm/v1/primitives/navigation/Tabs/Tabs.js +96 -0
- package/dist/esm/v1/primitives/navigation/Tabs/Tabs.js.map +1 -0
- package/dist/style.components.css +3 -0
- package/dist/style.css +2 -0
- package/dist/style.layered.css +2 -0
- package/dist/tailwind.css +24 -0
- package/dist/theme-boot.js +1 -0
- package/dist/theme.css +265 -0
- package/dist/tokens.css +121 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/legacy/components/atoms/Acronym/Acronym.d.ts +11 -0
- package/dist/types/legacy/components/atoms/BreadCrumb/BreadCrumb.d.ts +9 -0
- package/dist/types/legacy/components/atoms/Button/variants/ActionButton.d.ts +14 -0
- package/dist/types/legacy/components/atoms/Button/variants/FilterButton.d.ts +12 -0
- package/dist/types/legacy/components/atoms/Button/variants/IconButton.d.ts +22 -0
- package/dist/types/legacy/components/atoms/Button/variants/MainButton.d.ts +17 -0
- package/dist/types/legacy/components/atoms/Button/variants/TabButton.d.ts +14 -0
- package/dist/types/legacy/components/atoms/Field/Field.d.ts +15 -0
- package/dist/types/legacy/components/atoms/IconText/IconText.d.ts +12 -0
- package/dist/types/legacy/components/atoms/Icone/Icone.d.ts +31 -0
- package/dist/types/legacy/components/atoms/Input/Input.d.ts +13 -0
- package/dist/types/legacy/components/atoms/InputData/InputData.d.ts +38 -0
- package/dist/types/legacy/components/atoms/Label/Label.d.ts +11 -0
- package/dist/types/legacy/components/atoms/MultiTagPickerTag/MultiTagPickerTag.d.ts +10 -0
- package/dist/types/legacy/components/atoms/SearchSelect/SearchSelect.d.ts +15 -0
- package/dist/types/legacy/components/atoms/Select/Select.d.ts +16 -0
- package/dist/types/legacy/components/atoms/Stack/Stack.d.ts +9 -0
- package/dist/types/legacy/components/atoms/Switch/CustomSwitch.d.ts +12 -0
- package/dist/types/legacy/components/charts/Charts.d.ts +149 -0
- package/dist/types/legacy/components/layout/AppLauncher/AppLauncher.d.ts +35 -0
- package/dist/types/legacy/components/layout/Error/Error.d.ts +8 -0
- package/dist/types/legacy/components/layout/Footer/Footer.d.ts +11 -0
- package/dist/types/legacy/components/layout/Header/Header.d.ts +16 -0
- package/dist/types/legacy/components/layout/Layout/Layout.d.ts +35 -0
- package/dist/types/legacy/components/layout/Sidebar/Sidebar.d.ts +56 -0
- package/dist/types/legacy/components/layout/Spinner/Spinner.d.ts +5 -0
- package/dist/types/legacy/components/layout/TopBar/TopBar.d.ts +10 -0
- package/dist/types/legacy/components/layout/TopNavLayout/TopNavLayout.d.ts +43 -0
- package/dist/types/legacy/components/molecules/BarraValor/BarraValor.d.ts +28 -0
- package/dist/types/legacy/components/molecules/ColumnPicker/ColumnPicker.d.ts +116 -0
- package/dist/types/legacy/components/molecules/ConfirmModal/ConfirmModal.d.ts +13 -0
- package/dist/types/legacy/components/molecules/DataTable/DataTable.d.ts +344 -0
- package/dist/types/legacy/components/molecules/FileDropzone/FileDropzone.d.ts +25 -0
- package/dist/types/legacy/components/molecules/LanguageSwitcher/LanguageSwitcher.d.ts +33 -0
- package/dist/types/legacy/components/molecules/Modal/Modal.d.ts +22 -0
- package/dist/types/legacy/components/molecules/MultiTagPicker/MultiTagPicker.d.ts +25 -0
- package/dist/types/legacy/components/molecules/PhotoAvatar/PhotoAvatar.d.ts +34 -0
- package/dist/types/legacy/components/molecules/SeletorPesquisa/SeletorPesquisa.d.ts +48 -0
- package/dist/types/legacy/components/molecules/Sidebar/Sidebar.d.ts +12 -0
- package/dist/types/legacy/components/molecules/UserAvatar/UserAvatar.d.ts +19 -0
- package/dist/types/legacy/components/organisms/GanttChart/GanttChart.d.ts +62 -0
- package/dist/types/legacy/components/organisms/Kanban/Kanban.d.ts +44 -0
- package/dist/types/legacy/components/organisms/LazyLoader/LazyLoader.d.ts +16 -0
- package/dist/types/legacy/components/organisms/MapaPontos/MapaPontos.d.ts +206 -0
- package/dist/types/legacy/components/organisms/PainelFiltros/PainelFiltros.d.ts +69 -0
- package/dist/types/legacy/components/organisms/PesquisaRapida/PesquisaRapida.d.ts +53 -0
- package/dist/types/legacy/components/organisms/Profile/Profile.d.ts +12 -0
- package/dist/types/legacy/components/organisms/RoleGuard/RoleGuard.d.ts +37 -0
- package/dist/types/legacy/components/organisms/Selector/Selector.d.ts +20 -0
- package/dist/types/legacy/components/organisms/StatusMatrix/StatusMatrix.d.ts +54 -0
- package/dist/types/legacy/components/ui/Avisos.d.ts +33 -0
- package/dist/types/legacy/components/ui/BarraAcoes.d.ts +19 -0
- package/dist/types/legacy/components/ui/CabecalhoPagina.d.ts +23 -0
- package/dist/types/legacy/components/ui/CaixaPesquisa.d.ts +14 -0
- package/dist/types/legacy/components/ui/Confirmacao.d.ts +24 -0
- package/dist/types/legacy/components/ui/Escolha.d.ts +35 -0
- package/dist/types/legacy/components/ui/FaixaAviso.d.ts +19 -0
- package/dist/types/legacy/components/ui/MenuAcoes.d.ts +31 -0
- package/dist/types/legacy/components/ui/Passos.d.ts +31 -0
- package/dist/types/legacy/components/ui/Separadores.d.ts +19 -0
- package/dist/types/legacy/components/ui/TextoAuto.d.ts +23 -0
- package/dist/types/legacy/components/ui/Ui.d.ts +181 -0
- package/dist/types/legacy/components/ui/painelFlutuante.d.ts +16 -0
- package/dist/types/legacy/constants/Colors.d.ts +28 -0
- package/dist/types/legacy/constants/FontWeight.d.ts +9 -0
- package/dist/types/legacy/contexts/apiContext.d.ts +10 -0
- package/dist/types/legacy/contexts/authContext.d.ts +31 -0
- package/dist/types/legacy/contexts/socketContext.d.ts +16 -0
- package/dist/types/legacy/exports/assets.d.ts +0 -0
- package/dist/types/legacy/exports/atoms.d.ts +19 -0
- package/dist/types/legacy/exports/charts.d.ts +2 -0
- package/dist/types/legacy/exports/constants.d.ts +0 -0
- package/dist/types/legacy/exports/contexts.d.ts +3 -0
- package/dist/types/legacy/exports/hooks.d.ts +4 -0
- package/dist/types/legacy/exports/layout.d.ts +14 -0
- package/dist/types/legacy/exports/molecules.d.ts +21 -0
- package/dist/types/legacy/exports/organisms.d.ts +17 -0
- package/dist/types/legacy/exports/pages.d.ts +5 -0
- package/dist/types/legacy/exports/styles.d.ts +2 -0
- package/dist/types/legacy/exports/types.d.ts +7 -0
- package/dist/types/legacy/exports/ui.d.ts +24 -0
- package/dist/types/legacy/exports/utils.d.ts +1 -0
- package/dist/types/legacy/hooks/useApi.d.ts +19 -0
- package/dist/types/legacy/pages/Error/ErrorPage.d.ts +16 -0
- package/dist/types/legacy/pages/Loading/Loading.d.ts +8 -0
- package/dist/types/legacy/pages/Login/LoginScreen.d.ts +42 -0
- package/dist/types/legacy/pages/NotFound/NotFound.d.ts +8 -0
- package/dist/types/legacy/styles/themes/ButtonThemes.d.ts +6 -0
- package/dist/types/legacy/styles/utils/utils.d.ts +2 -0
- package/dist/types/legacy/types/Fetcher.d.ts +5 -0
- package/dist/types/legacy/types/LoggedUser.d.ts +10 -0
- package/dist/types/legacy/types/SelectableElement.d.ts +6 -0
- package/dist/types/legacy/types/SidebarMenu.d.ts +12 -0
- package/dist/types/legacy/types/themes/AcronymThemes.d.ts +4 -0
- package/dist/types/legacy/types/themes/ButtonThemes.d.ts +21 -0
- package/dist/types/legacy/types/themes/CustomSwitchThemes.d.ts +4 -0
- package/dist/types/legacy/types/themes/IconTextThemes.d.ts +6 -0
- package/dist/types/legacy/utils/keycloak.d.ts +0 -0
- package/dist/types/legacy/utils/stringUtils.d.ts +6 -0
- package/dist/types/v1/capabilities/documents/QRScanning/scanQRCodes.d.ts +25 -0
- package/dist/types/v1/capabilities/overlay/useFloatingPanel.d.ts +20 -0
- package/dist/types/v1/capabilities/theme/useIsDark.d.ts +10 -0
- package/dist/types/v1/capabilities/theme/useTheme.d.ts +29 -0
- package/dist/types/v1/components/data/Pagination/Pagination.d.ts +33 -0
- package/dist/types/v1/components/documents/DocumentDropzone/DocumentDropzone.d.ts +60 -0
- package/dist/types/v1/components/feedback/Toast/Toast.d.ts +51 -0
- package/dist/types/v1/components/forms/FormField/FormField.d.ts +44 -0
- package/dist/types/v1/components/forms/FormGrid/FormGrid.d.ts +23 -0
- package/dist/types/v1/components/layout/AppShell/AppShell.d.ts +35 -0
- package/dist/types/v1/components/layout/Page/Page.d.ts +23 -0
- package/dist/types/v1/components/layout/PageHeader/PageHeader.d.ts +35 -0
- package/dist/types/v1/components/layout/SideNav/SideNav.d.ts +92 -0
- package/dist/types/v1/components/layout/navTrail.d.ts +15 -0
- package/dist/types/v1/components/lists/ListFinder/ListFinder.d.ts +86 -0
- package/dist/types/v1/components/lists/ListFinder/labels.d.ts +24 -0
- package/dist/types/v1/components/overlays/ConfirmDialog/ConfirmDialog.d.ts +59 -0
- package/dist/types/v1/components/overlays/Dialog/Dialog.d.ts +66 -0
- package/dist/types/v1/components/overlays/Tooltip/Tooltip.d.ts +34 -0
- package/dist/types/v1/components/overlays/Tooltip/TooltipLayer.d.ts +18 -0
- package/dist/types/v1/components/overlays/Tooltip/TooltipPanel.d.ts +23 -0
- package/dist/types/v1/components/overlays/topLayer.d.ts +23 -0
- package/dist/types/v1/components/tables/PaginatedTable/PaginatedTable.d.ts +41 -0
- package/dist/types/v1/components/tables/Table/ColumnFilter.d.ts +48 -0
- package/dist/types/v1/components/tables/Table/OverlayScrollbar.d.ts +34 -0
- package/dist/types/v1/components/tables/Table/Table.d.ts +250 -0
- package/dist/types/v1/components/tables/Table/labels.d.ts +54 -0
- package/dist/types/v1/foundations/icons/icons.d.ts +81 -0
- package/dist/types/v1/index.d.ts +86 -0
- package/dist/types/v1/primitives/buttons/Button/Button.d.ts +35 -0
- package/dist/types/v1/primitives/buttons/SegmentedControl/SegmentedControl.d.ts +28 -0
- package/dist/types/v1/primitives/buttons/SegmentedControl/segmentedStyles.d.ts +16 -0
- package/dist/types/v1/primitives/display/Avatar/Avatar.d.ts +30 -0
- package/dist/types/v1/primitives/display/Badge/Badge.d.ts +25 -0
- package/dist/types/v1/primitives/display/Card/Card.d.ts +22 -0
- package/dist/types/v1/primitives/display/FilterChips/FilterChips.d.ts +33 -0
- package/dist/types/v1/primitives/display/Kpi/Kpi.d.ts +68 -0
- package/dist/types/v1/primitives/display/Notice/Notice.d.ts +29 -0
- package/dist/types/v1/primitives/display/Person/Person.d.ts +15 -0
- package/dist/types/v1/primitives/display/RichText/RichText.d.ts +17 -0
- package/dist/types/v1/primitives/display/RichText/utils.d.ts +22 -0
- package/dist/types/v1/primitives/documents/PdfPreview/PdfPreview.d.ts +17 -0
- package/dist/types/v1/primitives/documents/PdfPreview/pdfjs.d.ts +11 -0
- package/dist/types/v1/primitives/forms/Checkbox/Checkbox.d.ts +25 -0
- package/dist/types/v1/primitives/forms/DateInput/DateInput.d.ts +43 -0
- package/dist/types/v1/primitives/forms/LookupInput/LookupInput.d.ts +28 -0
- package/dist/types/v1/primitives/forms/RichTextEditor/RichTextEditor.d.ts +64 -0
- package/dist/types/v1/primitives/forms/SearchInput/SearchInput.d.ts +23 -0
- package/dist/types/v1/primitives/forms/SelectInput/SelectInput.d.ts +70 -0
- package/dist/types/v1/primitives/forms/TextArea/TextArea.d.ts +40 -0
- package/dist/types/v1/primitives/forms/TextInput/TextInput.d.ts +16 -0
- package/dist/types/v1/primitives/forms/field.d.ts +22 -0
- package/dist/types/v1/primitives/lists/ListItem/ListItem.d.ts +67 -0
- package/dist/types/v1/primitives/navigation/Tabs/Tabs.d.ts +58 -0
- package/package.json +125 -6
- package/README.md +0 -3
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
.cui-selector {
|
|
2
|
+
max-width: 45vw;
|
|
3
|
+
}
|
|
4
|
+
.cui-selector__search {
|
|
5
|
+
border-radius: 25px;
|
|
6
|
+
padding: 10px;
|
|
7
|
+
}
|
|
8
|
+
.cui-selector__selected {
|
|
9
|
+
margin: 4vh 0;
|
|
10
|
+
border: 2px solid var(--dark-blue);
|
|
11
|
+
border-radius: 25px;
|
|
12
|
+
}
|
|
13
|
+
.cui-selector__selected-list {
|
|
14
|
+
padding: 10px;
|
|
15
|
+
display: flex;
|
|
16
|
+
justify-content: left;
|
|
17
|
+
align-items: center;
|
|
18
|
+
flex-wrap: wrap;
|
|
19
|
+
gap: 10px;
|
|
20
|
+
max-height: 17vh;
|
|
21
|
+
overflow-y: auto;
|
|
22
|
+
}
|
|
23
|
+
.cui-selector__selected-list-item {
|
|
24
|
+
font-size: 13px;
|
|
25
|
+
display: flex;
|
|
26
|
+
padding: 10px;
|
|
27
|
+
background: var(--dark-blue);
|
|
28
|
+
color: white;
|
|
29
|
+
border-radius: 25px;
|
|
30
|
+
}
|
|
31
|
+
.cui-selector__selected-list-info {
|
|
32
|
+
display: flex;
|
|
33
|
+
align-items: center;
|
|
34
|
+
}
|
|
35
|
+
.cui-selector__selected-list-option {
|
|
36
|
+
margin: 0 0 0 7px;
|
|
37
|
+
}
|
|
38
|
+
.cui-selector__elements {
|
|
39
|
+
margin: 5vh 0;
|
|
40
|
+
height: 30vh;
|
|
41
|
+
overflow: auto;
|
|
42
|
+
}
|
|
43
|
+
.cui-selector__elements-list {
|
|
44
|
+
display: flex;
|
|
45
|
+
flex-direction: column;
|
|
46
|
+
gap: 10px;
|
|
47
|
+
padding-right: 10px;
|
|
48
|
+
cursor: pointer;
|
|
49
|
+
}
|
|
50
|
+
.cui-selector__elements-list-item {
|
|
51
|
+
display: flex;
|
|
52
|
+
justify-content: space-between;
|
|
53
|
+
padding: 10px;
|
|
54
|
+
border-radius: 25px;
|
|
55
|
+
}
|
|
56
|
+
.cui-selector__elements-list-item-selected {
|
|
57
|
+
color: white;
|
|
58
|
+
background: var(--dark-blue);
|
|
59
|
+
}
|
|
60
|
+
.cui-selector__elements-list-item-not-selected {
|
|
61
|
+
background: var(--light-gray-01);
|
|
62
|
+
color: var(--dark-blue);
|
|
63
|
+
}
|
|
64
|
+
.cui-selector__elements-list-item-description {
|
|
65
|
+
display: flex;
|
|
66
|
+
justify-content: left;
|
|
67
|
+
align-items: center;
|
|
68
|
+
}
|
|
69
|
+
.cui-selector__elements-list-item-option {
|
|
70
|
+
display: flex;
|
|
71
|
+
justify-content: right;
|
|
72
|
+
align-items: center;
|
|
73
|
+
}
|
|
74
|
+
.cui-selector__elements-list-item-option label {
|
|
75
|
+
margin: 0 10px;
|
|
76
|
+
}
|
|
77
|
+
.cui-selector__elements-empty {
|
|
78
|
+
padding: 1rem;
|
|
79
|
+
}
|
|
80
|
+
.cui-selector__selected-empty {
|
|
81
|
+
padding: 1rem;
|
|
82
|
+
}
|
|
83
|
+
.cui-selector__confirmation {
|
|
84
|
+
display: flex;
|
|
85
|
+
justify-content: center;
|
|
86
|
+
margin: 1vh 0;
|
|
87
|
+
}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useId, useState, useEffect } from "react";
|
|
3
|
+
import { faSave, faMinus, faPlus, faQuestion } from "@fortawesome/free-solid-svg-icons";
|
|
4
|
+
import { ActionButtonThemeStyled, IconTextDarkThemeStyled, IconButtonThemeStyled, IconTextLightThemeStyled } from "../../../styles/themes/ButtonThemes.js";
|
|
5
|
+
import Modal from "../../molecules/Modal/Modal.js";
|
|
6
|
+
import SearchInput from "../../../../v1/primitives/forms/SearchInput/SearchInput.js";
|
|
7
|
+
import { LazyLoader } from "../LazyLoader/LazyLoader.js";
|
|
8
|
+
import './Selector.css';/* empty css */
|
|
9
|
+
import Spinner from "../../layout/Spinner/Spinner.js";
|
|
10
|
+
import Tooltip from "../../../../v1/components/overlays/Tooltip/Tooltip.js";
|
|
11
|
+
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
12
|
+
import ActionButton from "../../atoms/Button/variants/ActionButton.js";
|
|
13
|
+
import IconText from "../../atoms/IconText/IconText.js";
|
|
14
|
+
import IconButton from "../../atoms/Button/variants/IconButton.js";
|
|
15
|
+
const Selector = ({
|
|
16
|
+
title,
|
|
17
|
+
icon,
|
|
18
|
+
onClose,
|
|
19
|
+
onConfirm,
|
|
20
|
+
initiallySelected,
|
|
21
|
+
blocked = [],
|
|
22
|
+
fetcher,
|
|
23
|
+
single = false,
|
|
24
|
+
working = false,
|
|
25
|
+
onDisabled
|
|
26
|
+
}) => {
|
|
27
|
+
const scrollContainerId = useId();
|
|
28
|
+
const [selectedElements, setSelectedElements] = useState(initiallySelected);
|
|
29
|
+
const [filter, setFilter] = useState({
|
|
30
|
+
term: {
|
|
31
|
+
type: "text",
|
|
32
|
+
active: false,
|
|
33
|
+
text: ""
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
setSelectedElements(initiallySelected);
|
|
38
|
+
}, [initiallySelected]);
|
|
39
|
+
const handleSearch = (text) => {
|
|
40
|
+
setFilter({
|
|
41
|
+
term: {
|
|
42
|
+
type: "text",
|
|
43
|
+
active: text != "" ? true : false,
|
|
44
|
+
text
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
const toggleElementSelection = (element) => {
|
|
49
|
+
const isSelected = selectedElements.some((se) => se.id === element.id);
|
|
50
|
+
if (isSelected) {
|
|
51
|
+
setSelectedElements(selectedElements.filter((se) => se.id !== element.id));
|
|
52
|
+
} else {
|
|
53
|
+
if (single) {
|
|
54
|
+
setSelectedElements([element]);
|
|
55
|
+
} else {
|
|
56
|
+
setSelectedElements([...selectedElements, element]);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
const renderElement = (element) => {
|
|
61
|
+
const isSelected = selectedElements.some((se) => se.id === element.id);
|
|
62
|
+
const isBlocked = blocked.includes(element.id);
|
|
63
|
+
const isDisabled = element.disabled || false;
|
|
64
|
+
return /* @__PURE__ */ jsxs(
|
|
65
|
+
"li",
|
|
66
|
+
{
|
|
67
|
+
className: `cui-selector__elements-list-item ${isSelected ? "cui-selector__elements-list-item-selected" : "cui-selector__elements-list-item-not-selected"} ${isBlocked ? "cui-selector__elements-list-item-blocked" : ""}`,
|
|
68
|
+
onClick: !isBlocked && !isDisabled ? () => toggleElementSelection(element) : void 0,
|
|
69
|
+
children: [
|
|
70
|
+
/* @__PURE__ */ jsx("span", { className: "cui-selector__elements-list-item-description", children: /* @__PURE__ */ jsx(
|
|
71
|
+
IconText,
|
|
72
|
+
{
|
|
73
|
+
icon,
|
|
74
|
+
text: element.name,
|
|
75
|
+
theme: isSelected ? IconTextDarkThemeStyled : IconTextLightThemeStyled
|
|
76
|
+
}
|
|
77
|
+
) }),
|
|
78
|
+
/* @__PURE__ */ jsxs("span", { className: "cui-selector__elements-list-item-option", children: [
|
|
79
|
+
element.code && /* @__PURE__ */ jsx("label", { children: element.code }),
|
|
80
|
+
!isBlocked && !isDisabled ? /* @__PURE__ */ jsx(
|
|
81
|
+
IconButton,
|
|
82
|
+
{
|
|
83
|
+
onClick: () => {
|
|
84
|
+
toggleElementSelection(element);
|
|
85
|
+
},
|
|
86
|
+
icon: isSelected ? faMinus : faPlus,
|
|
87
|
+
theme: IconButtonThemeStyled
|
|
88
|
+
}
|
|
89
|
+
) : /* @__PURE__ */ jsx(
|
|
90
|
+
Tooltip,
|
|
91
|
+
{
|
|
92
|
+
interactive: true,
|
|
93
|
+
tip: onDisabled ? onDisabled(element) : isBlocked ? /* @__PURE__ */ jsx("div", { children: "Bloqueado..." }) : /* @__PURE__ */ jsx("div", { children: "Sem dados...." }),
|
|
94
|
+
children: /* @__PURE__ */ jsx(
|
|
95
|
+
IconButton,
|
|
96
|
+
{
|
|
97
|
+
onClick: () => {
|
|
98
|
+
},
|
|
99
|
+
icon: faQuestion,
|
|
100
|
+
theme: IconButtonThemeStyled,
|
|
101
|
+
disabled: true
|
|
102
|
+
}
|
|
103
|
+
)
|
|
104
|
+
}
|
|
105
|
+
)
|
|
106
|
+
] })
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
element.id
|
|
110
|
+
);
|
|
111
|
+
};
|
|
112
|
+
const renderSelectedElements = () => {
|
|
113
|
+
if (selectedElements.length === 0) {
|
|
114
|
+
return /* @__PURE__ */ jsx("p", { className: "cui-selector__selected-empty", children: "Sem elementos selecionados..." });
|
|
115
|
+
}
|
|
116
|
+
return /* @__PURE__ */ jsx("ul", { className: "cui-selector__selected-list", children: selectedElements.map((element) => {
|
|
117
|
+
const isBlocked = blocked.includes(element.id);
|
|
118
|
+
if (isBlocked) return null;
|
|
119
|
+
return /* @__PURE__ */ jsxs("li", { className: "cui-selector__selected-list-item", children: [
|
|
120
|
+
/* @__PURE__ */ jsx("span", { className: "cui-selector__selected-list-info", children: /* @__PURE__ */ jsx(
|
|
121
|
+
IconText,
|
|
122
|
+
{
|
|
123
|
+
icon,
|
|
124
|
+
theme: IconTextDarkThemeStyled,
|
|
125
|
+
text: element.name
|
|
126
|
+
}
|
|
127
|
+
) }),
|
|
128
|
+
/* @__PURE__ */ jsx("span", { className: "cui-selector__selected-list-option", children: /* @__PURE__ */ jsx(
|
|
129
|
+
IconButton,
|
|
130
|
+
{
|
|
131
|
+
icon: faMinus,
|
|
132
|
+
onClick: () => setSelectedElements(
|
|
133
|
+
selectedElements.filter((e) => e.id !== element.id)
|
|
134
|
+
),
|
|
135
|
+
theme: IconButtonThemeStyled
|
|
136
|
+
}
|
|
137
|
+
) })
|
|
138
|
+
] }, element.id);
|
|
139
|
+
}) });
|
|
140
|
+
};
|
|
141
|
+
const handleConfirm = () => {
|
|
142
|
+
onConfirm(selectedElements);
|
|
143
|
+
};
|
|
144
|
+
return /* @__PURE__ */ jsx(Modal, { title, onClose, children: /* @__PURE__ */ jsxs("div", { className: "cui-selector", children: [
|
|
145
|
+
/* @__PURE__ */ jsx("div", { className: "cui-selector__search", children: /* @__PURE__ */ jsx(SearchInput, { value: filter.term.text, onChange: handleSearch, className: "w-full" }) }),
|
|
146
|
+
/* @__PURE__ */ jsx("div", { className: "cui-selector__selected", children: renderSelectedElements() }),
|
|
147
|
+
/* @__PURE__ */ jsx("div", { id: scrollContainerId, className: "cui-selector__elements", children: /* @__PURE__ */ jsx(
|
|
148
|
+
LazyLoader,
|
|
149
|
+
{
|
|
150
|
+
endpoint: fetcher.endpoint,
|
|
151
|
+
params: {
|
|
152
|
+
filters: {
|
|
153
|
+
...fetcher.params,
|
|
154
|
+
...filter.term.active && {
|
|
155
|
+
term: {
|
|
156
|
+
type: filter.term.type,
|
|
157
|
+
text: filter.term.text
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
limit: 15,
|
|
163
|
+
scrollableTarget: scrollContainerId,
|
|
164
|
+
children: (items, loading, error) => /* @__PURE__ */ jsx("ul", { className: "cui-selector__elements-list", children: items.length > 0 ? items.map((element) => renderElement(element)) : /* @__PURE__ */ jsx("li", { className: "cui-selector__elements-empty", children: "No elements found" }) })
|
|
165
|
+
}
|
|
166
|
+
) }),
|
|
167
|
+
/* @__PURE__ */ jsx("div", { className: "cui-selector__confirmation", children: !working ? /* @__PURE__ */ jsx(
|
|
168
|
+
ActionButton,
|
|
169
|
+
{
|
|
170
|
+
title: "Confirmar",
|
|
171
|
+
icon: /* @__PURE__ */ jsx(FontAwesomeIcon, { icon: faSave }),
|
|
172
|
+
onClick: handleConfirm,
|
|
173
|
+
theme: ActionButtonThemeStyled
|
|
174
|
+
}
|
|
175
|
+
) : /* @__PURE__ */ jsx(Spinner, {}) })
|
|
176
|
+
] }) });
|
|
177
|
+
};
|
|
178
|
+
export {
|
|
179
|
+
Selector
|
|
180
|
+
};
|
|
181
|
+
//# sourceMappingURL=Selector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Selector.js","sources":["../../../../../../src/legacy/components/organisms/Selector/Selector.tsx"],"sourcesContent":["import React, { ReactNode, useEffect, useId, useState } from 'react'\r\nimport {\r\n faMinus,\r\n faPlus,\r\n faQuestion,\r\n faSave,\r\n} from '@fortawesome/free-solid-svg-icons'\r\nimport { IconProp } from '@fortawesome/fontawesome-svg-core'\r\nimport { ActionButton, IconText, IconButton } from '../../../exports/atoms'\r\nimport {\r\n ActionButtonThemeStyled,\r\n IconButtonThemeStyled,\r\n IconTextDarkThemeStyled,\r\n IconTextLightThemeStyled,\r\n} from '../../../styles/themes/ButtonThemes'\r\n\r\nimport Modal from '../../molecules/Modal/Modal'\r\nimport SearchInput from '../../../../v1/primitives/forms/SearchInput/SearchInput'\r\nimport { Fetcher } from '../../../types/Fetcher'\r\nimport { LazyLoader } from '../LazyLoader/LazyLoader'\r\nimport './Selector.scss'\r\nimport { SelectableElement } from '../../../types/SelectableElement'\r\nimport Spinner from '../../layout/Spinner/Spinner'\r\nimport TooltipWrapper from '../../../../v1/components/overlays/Tooltip/Tooltip'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\n\r\ntype SelectorProps<T extends SelectableElement> = {\r\n title: string\r\n onClose: () => void\r\n onConfirm: (selected: T[]) => void\r\n onDisabled?: (disabled: T) => ReactNode\r\n initiallySelected: T[]\r\n blocked?: string[]\r\n single?: boolean\r\n icon: IconProp\r\n fetcher: Fetcher\r\n working?: boolean\r\n}\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nexport const Selector = <T extends SelectableElement>({\r\n title,\r\n icon,\r\n onClose,\r\n onConfirm,\r\n initiallySelected,\r\n blocked = [],\r\n fetcher,\r\n single = false,\r\n working = false,\r\n onDisabled,\r\n}: SelectorProps<T>) => {\r\n const scrollContainerId = useId()\r\n const [selectedElements, setSelectedElements] =\r\n useState<T[]>(initiallySelected)\r\n\r\n const [filter, setFilter] = useState({\r\n term: {\r\n type: 'text',\r\n active: false,\r\n text: '',\r\n },\r\n })\r\n\r\n useEffect(() => {\r\n setSelectedElements(initiallySelected)\r\n }, [initiallySelected])\r\n\r\n const handleSearch = (text: string) => {\r\n setFilter({\r\n term: {\r\n type: 'text',\r\n active: text != '' ? true : false,\r\n text: text,\r\n },\r\n })\r\n }\r\n\r\n const toggleElementSelection = (element: T) => {\r\n const isSelected = selectedElements.some((se) => se.id === element.id)\r\n\r\n if (isSelected) {\r\n setSelectedElements(selectedElements.filter((se) => se.id !== element.id))\r\n } else {\r\n if (single) {\r\n setSelectedElements([element])\r\n } else {\r\n setSelectedElements([...selectedElements, element])\r\n }\r\n }\r\n }\r\n\r\n const renderElement = (element: T) => {\r\n const isSelected = selectedElements.some((se) => se.id === element.id)\r\n const isBlocked = blocked.includes(element.id)\r\n const isDisabled = element.disabled || false\r\n\r\n return (\r\n <li\r\n key={element.id}\r\n className={`cui-selector__elements-list-item ${\r\n isSelected\r\n ? 'cui-selector__elements-list-item-selected'\r\n : 'cui-selector__elements-list-item-not-selected'\r\n } ${isBlocked ? 'cui-selector__elements-list-item-blocked' : ''}`}\r\n onClick={\r\n !isBlocked && !isDisabled\r\n ? () => toggleElementSelection(element)\r\n : undefined\r\n }\r\n >\r\n <span className={'cui-selector__elements-list-item-description'}>\r\n <IconText\r\n icon={icon}\r\n text={element.name}\r\n theme={\r\n isSelected ? IconTextDarkThemeStyled : IconTextLightThemeStyled\r\n }\r\n />\r\n </span>\r\n <span className={'cui-selector__elements-list-item-option'}>\r\n {element.code && <label>{element.code}</label>}\r\n {!isBlocked && !isDisabled ? (\r\n <IconButton\r\n onClick={() => {\r\n toggleElementSelection(element)\r\n }}\r\n icon={isSelected ? faMinus : faPlus}\r\n theme={IconButtonThemeStyled}\r\n />\r\n ) : (\r\n <TooltipWrapper\r\n interactive={true}\r\n tip={\r\n onDisabled ? (\r\n onDisabled(element)\r\n ) : isBlocked ? (\r\n <div>Bloqueado...</div>\r\n ) : (\r\n <div>Sem dados....</div>\r\n )\r\n }\r\n >\r\n <IconButton\r\n onClick={() => {}}\r\n icon={faQuestion}\r\n theme={IconButtonThemeStyled}\r\n disabled={true}\r\n />\r\n </TooltipWrapper>\r\n )}\r\n </span>\r\n </li>\r\n )\r\n }\r\n\r\n const renderSelectedElements = () => {\r\n if (selectedElements.length === 0) {\r\n return (\r\n <p className=\"cui-selector__selected-empty\">\r\n Sem elementos selecionados...\r\n </p>\r\n )\r\n }\r\n\r\n return (\r\n <ul className=\"cui-selector__selected-list\">\r\n {selectedElements.map((element) => {\r\n const isBlocked = blocked.includes(element.id)\r\n\r\n if (isBlocked) return null\r\n\r\n return (\r\n <li key={element.id} className=\"cui-selector__selected-list-item\">\r\n <span className={'cui-selector__selected-list-info'}>\r\n <IconText\r\n icon={icon}\r\n theme={IconTextDarkThemeStyled}\r\n text={element.name}\r\n />\r\n </span>\r\n <span className={'cui-selector__selected-list-option'}>\r\n <IconButton\r\n icon={faMinus}\r\n onClick={() =>\r\n setSelectedElements(\r\n selectedElements.filter((e) => e.id !== element.id)\r\n )\r\n }\r\n theme={IconButtonThemeStyled}\r\n />\r\n </span>\r\n </li>\r\n )\r\n })}\r\n </ul>\r\n )\r\n }\r\n\r\n const handleConfirm = () => {\r\n onConfirm(selectedElements)\r\n }\r\n\r\n return (\r\n <Modal title={title} onClose={onClose}>\r\n <div className=\"cui-selector\">\r\n <div className=\"cui-selector__search\">\r\n <SearchInput value={filter.term.text} onChange={handleSearch} className=\"w-full\" />\r\n </div>\r\n\r\n <div className=\"cui-selector__selected\">{renderSelectedElements()}</div>\r\n\r\n <div id={scrollContainerId} className=\"cui-selector__elements\">\r\n <LazyLoader<T>\r\n endpoint={fetcher.endpoint}\r\n params={{\r\n filters: {\r\n ...fetcher.params,\r\n ...(filter.term.active && {\r\n term: {\r\n type: filter.term.type,\r\n text: filter.term.text,\r\n },\r\n }),\r\n },\r\n }}\r\n limit={15}\r\n scrollableTarget={scrollContainerId}\r\n >\r\n {(items, loading, error) => (\r\n <ul className=\"cui-selector__elements-list\">\r\n {items.length > 0 ? (\r\n items.map((element) => renderElement(element))\r\n ) : (\r\n <li className=\"cui-selector__elements-empty\">\r\n No elements found\r\n </li>\r\n )}\r\n </ul>\r\n )}\r\n </LazyLoader>\r\n </div>\r\n\r\n <div className=\"cui-selector__confirmation\">\r\n {!working ? (\r\n <ActionButton\r\n title=\"Confirmar\"\r\n icon={<FontAwesomeIcon icon={faSave} />}\r\n onClick={handleConfirm}\r\n theme={ActionButtonThemeStyled}\r\n />\r\n ) : (\r\n <Spinner />\r\n )}\r\n </div>\r\n </div>\r\n </Modal>\r\n )\r\n}\r\n"],"names":["TooltipWrapper"],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useMemo } from "react";
|
|
3
|
+
const alturaAutomatica = (labels) => Math.min(260, Math.max(64, Math.ceil(Math.max(0, ...labels.map((l) => l.length)) * 6.2) + 12));
|
|
4
|
+
function StatusMatrix({
|
|
5
|
+
rows,
|
|
6
|
+
columns,
|
|
7
|
+
statuses,
|
|
8
|
+
cell,
|
|
9
|
+
cellSize = 22,
|
|
10
|
+
labelWidth = 280,
|
|
11
|
+
corner = "",
|
|
12
|
+
showLegend = true,
|
|
13
|
+
onCellClick,
|
|
14
|
+
emptyText = "—",
|
|
15
|
+
className = "",
|
|
16
|
+
columnHeaderHeight
|
|
17
|
+
}) {
|
|
18
|
+
const [tip, setTip] = useState(null);
|
|
19
|
+
const largura = columns.length * cellSize;
|
|
20
|
+
const ALTURA_CAB_COLUNA = useMemo(() => columnHeaderHeight ?? alturaAutomatica(columns.map((c) => c.label)), [columnHeaderHeight, columns]);
|
|
21
|
+
const faixas = useMemo(() => {
|
|
22
|
+
const out = [];
|
|
23
|
+
columns.forEach((c, i) => {
|
|
24
|
+
const g = c.group ?? "";
|
|
25
|
+
const ult = out[out.length - 1];
|
|
26
|
+
if (ult && ult.group === g) ult.n++;
|
|
27
|
+
else out.push({ group: g, start: i, n: 1 });
|
|
28
|
+
});
|
|
29
|
+
return out;
|
|
30
|
+
}, [columns]);
|
|
31
|
+
const temGrupos = faixas.some((f) => f.group);
|
|
32
|
+
const mostrarTip = (e, content) => {
|
|
33
|
+
if (!content) return;
|
|
34
|
+
setTip({ x: e.clientX + 12, y: e.clientY + 12, content });
|
|
35
|
+
};
|
|
36
|
+
const linhas = [];
|
|
37
|
+
let grupoAtual;
|
|
38
|
+
for (const row of rows) {
|
|
39
|
+
if (row.group && row.group !== grupoAtual) {
|
|
40
|
+
grupoAtual = row.group;
|
|
41
|
+
linhas.push(
|
|
42
|
+
/* @__PURE__ */ jsxs("div", { className: "flex border-b border-slate-200 bg-slate-50", children: [
|
|
43
|
+
/* @__PURE__ */ jsx("div", { className: "sticky left-0 z-[2] shrink-0 border-r border-slate-200 bg-slate-50 px-2 py-1 text-[11px] font-bold uppercase tracking-wide text-slate-500", style: { width: labelWidth }, children: row.group }),
|
|
44
|
+
/* @__PURE__ */ jsx("div", { className: "shrink-0", style: { width: largura } })
|
|
45
|
+
] }, `g-${row.group}-${row.id}`)
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
linhas.push(
|
|
49
|
+
/* @__PURE__ */ jsxs("div", { className: "group flex border-b border-slate-200 hover:bg-blue-50/60", style: { height: cellSize }, children: [
|
|
50
|
+
/* @__PURE__ */ jsxs("div", { className: "sticky left-0 z-[2] shrink-0 truncate border-r border-slate-200 bg-white px-2 leading-[22px] group-hover:bg-blue-50", style: { width: labelWidth, lineHeight: `${cellSize}px` }, title: row.label, children: [
|
|
51
|
+
row.label,
|
|
52
|
+
row.sublabel && /* @__PURE__ */ jsx("span", { className: "ml-1 text-[11px] text-slate-400", children: row.sublabel })
|
|
53
|
+
] }),
|
|
54
|
+
/* @__PURE__ */ jsx("div", { className: "relative flex shrink-0", style: { width: largura }, children: columns.map((col) => {
|
|
55
|
+
const c = cell(row, col);
|
|
56
|
+
const st = c?.status ? statuses[c.status] : void 0;
|
|
57
|
+
return /* @__PURE__ */ jsxs(
|
|
58
|
+
"div",
|
|
59
|
+
{
|
|
60
|
+
className: `relative shrink-0 border-r border-slate-100 ${onCellClick ? "cursor-pointer" : ""}`,
|
|
61
|
+
style: { width: cellSize, height: cellSize - 1 },
|
|
62
|
+
onMouseMove: (e) => mostrarTip(e, c?.tooltip ?? `${row.label} · ${col.label}${st ? ` · ${st.label}` : ""}`),
|
|
63
|
+
onMouseLeave: () => setTip(null),
|
|
64
|
+
onClick: onCellClick ? () => onCellClick(row, col) : void 0,
|
|
65
|
+
children: [
|
|
66
|
+
st && /* @__PURE__ */ jsx("div", { className: "absolute inset-[2px] flex items-center justify-center rounded-sm text-[10px] font-semibold text-white", style: { background: st.color }, children: c?.text }),
|
|
67
|
+
c?.warning && /* @__PURE__ */ jsx("span", { className: "absolute right-[1px] top-[1px] h-[6px] w-[6px] rounded-full border border-white bg-orange-500" })
|
|
68
|
+
]
|
|
69
|
+
},
|
|
70
|
+
col.id
|
|
71
|
+
);
|
|
72
|
+
}) })
|
|
73
|
+
] }, row.id)
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
return /* @__PURE__ */ jsxs("div", { className, children: [
|
|
77
|
+
showLegend && /* @__PURE__ */ jsx("div", { className: "mb-2 flex flex-wrap gap-3 text-xs text-slate-500", children: Object.entries(statuses).map(([k, s]) => /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1", children: [
|
|
78
|
+
/* @__PURE__ */ jsx("i", { className: "inline-block h-2.5 w-2.5 rounded-sm", style: { background: s.color } }),
|
|
79
|
+
s.label
|
|
80
|
+
] }, k)) }),
|
|
81
|
+
/* @__PURE__ */ jsx("div", { className: "max-h-[calc(100vh-220px)] overflow-auto rounded-lg border border-slate-200 bg-white text-[13px]", children: /* @__PURE__ */ jsxs("div", { className: "w-max min-w-full", children: [
|
|
82
|
+
/* @__PURE__ */ jsxs("div", { className: "sticky top-0 z-[3] flex border-b border-slate-200 bg-white", children: [
|
|
83
|
+
/* @__PURE__ */ jsx("div", { className: "sticky left-0 z-[4] flex shrink-0 items-end border-r border-slate-200 bg-white px-2 py-2 font-semibold", style: { width: labelWidth }, children: corner }),
|
|
84
|
+
/* @__PURE__ */ jsxs("div", { className: "relative shrink-0 bg-white", style: { width: largura, height: ALTURA_CAB_COLUNA + (temGrupos ? 20 : 0) }, children: [
|
|
85
|
+
temGrupos && faixas.map((f) => /* @__PURE__ */ jsx(
|
|
86
|
+
"div",
|
|
87
|
+
{
|
|
88
|
+
className: "absolute top-0 h-5 truncate border-l border-slate-200 px-1 text-[11px] font-bold uppercase tracking-wide text-slate-500",
|
|
89
|
+
style: { left: f.start * cellSize, width: f.n * cellSize },
|
|
90
|
+
title: f.group,
|
|
91
|
+
children: f.group
|
|
92
|
+
},
|
|
93
|
+
`${f.group}-${f.start}`
|
|
94
|
+
)),
|
|
95
|
+
columns.map((c, i) => /* @__PURE__ */ jsx(
|
|
96
|
+
"div",
|
|
97
|
+
{
|
|
98
|
+
className: "absolute bottom-1 flex justify-center text-[10px] text-slate-500",
|
|
99
|
+
style: { left: i * cellSize, width: cellSize, height: ALTURA_CAB_COLUNA - 4 },
|
|
100
|
+
title: c.label,
|
|
101
|
+
children: /* @__PURE__ */ jsx("span", { className: "whitespace-nowrap", style: { writingMode: "vertical-rl", transform: "rotate(180deg)" }, children: c.label })
|
|
102
|
+
},
|
|
103
|
+
c.id
|
|
104
|
+
))
|
|
105
|
+
] })
|
|
106
|
+
] }),
|
|
107
|
+
rows.length && columns.length ? linhas : /* @__PURE__ */ jsx("div", { className: "p-6 text-center text-sm text-slate-400", children: emptyText })
|
|
108
|
+
] }) }),
|
|
109
|
+
tip && /* @__PURE__ */ jsx("div", { className: "pointer-events-none fixed z-50 max-w-[340px] rounded-md bg-slate-900 px-2 py-1.5 text-xs text-white shadow-lg", style: { left: tip.x, top: tip.y }, children: tip.content })
|
|
110
|
+
] });
|
|
111
|
+
}
|
|
112
|
+
export {
|
|
113
|
+
StatusMatrix as default
|
|
114
|
+
};
|
|
115
|
+
//# sourceMappingURL=StatusMatrix.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusMatrix.js","sources":["../../../../../../src/legacy/components/organisms/StatusMatrix/StatusMatrix.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react'\r\n\r\n// Matriz de estados: linhas × colunas, cada célula pintada com a cor do seu estado\r\n// (ex.: tarefas × apoios — vazio / em curso / concluído). Cabeçalho e 1.ª coluna fixos,\r\n// grupos de linhas (cabeçalho de secção) e de colunas (faixa por cima), tooltip por célula.\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nexport interface StatusMatrixRow {\r\n id: string\r\n label: string\r\n /** Cabeçalho de secção mostrado antes da linha quando muda (ex: \"Fundações\"). */\r\n group?: string\r\n /** Texto pequeno à direita do rótulo (ex: \"12/40\"). */\r\n sublabel?: string\r\n}\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nexport interface StatusMatrixColumn {\r\n id: string\r\n label: string\r\n /** Faixa por cima das colunas consecutivas com o mesmo grupo (ex: \"Ramal 1\"). */\r\n group?: string\r\n}\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nexport interface StatusMatrixStatus {\r\n label: string\r\n /** Cor da célula (CSS). */\r\n color: string\r\n}\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nexport interface StatusMatrixCell {\r\n /** Chave em `statuses`. Sem estado = célula vazia. */\r\n status?: string\r\n /** Texto curto dentro da célula (ex: nº de dias). */\r\n text?: string\r\n tooltip?: React.ReactNode\r\n /** Mostra um ponto de aviso no canto da célula. */\r\n warning?: boolean\r\n}\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nexport interface StatusMatrixProps {\r\n rows: StatusMatrixRow[]\r\n columns: StatusMatrixColumn[]\r\n statuses: Record<string, StatusMatrixStatus>\r\n /** Conteúdo de cada célula; null/undefined = vazia. */\r\n cell: (row: StatusMatrixRow, column: StatusMatrixColumn) => StatusMatrixCell | null | undefined\r\n cellSize?: number\r\n labelWidth?: number\r\n /** Texto do canto superior esquerdo (ex: \"Tarefa \\ Apoio\"). */\r\n corner?: string\r\n /** Mostra a legenda dos estados por cima da matriz. */\r\n showLegend?: boolean\r\n onCellClick?: (row: StatusMatrixRow, column: StatusMatrixColumn) => void\r\n emptyText?: string\r\n className?: string\r\n /** Altura (px) do cabeçalho das colunas (rótulos verticais). Omisso = automática pelo rótulo mais comprido (64–260). */\r\n columnHeaderHeight?: number\r\n}\r\n\r\n// ~6 px por carácter a 10 px de letra, na vertical\r\nconst alturaAutomatica = (labels: string[]) => Math.min(260, Math.max(64, Math.ceil(Math.max(0, ...labels.map((l) => l.length)) * 6.2) + 12))\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nexport default function StatusMatrix({\r\n rows,\r\n columns,\r\n statuses,\r\n cell,\r\n cellSize = 22,\r\n labelWidth = 280,\r\n corner = '',\r\n showLegend = true,\r\n onCellClick,\r\n emptyText = '—',\r\n className = '',\r\n columnHeaderHeight,\r\n}: StatusMatrixProps) {\r\n const [tip, setTip] = useState<{ x: number; y: number; content: React.ReactNode } | null>(null)\r\n const largura = columns.length * cellSize\r\n const ALTURA_CAB_COLUNA = useMemo(() => columnHeaderHeight ?? alturaAutomatica(columns.map((c) => c.label)), [columnHeaderHeight, columns])\r\n\r\n // Faixas de grupo das colunas (colunas consecutivas com o mesmo grupo)\r\n const faixas = useMemo(() => {\r\n const out: { group: string; start: number; n: number }[] = []\r\n columns.forEach((c, i) => {\r\n const g = c.group ?? ''\r\n const ult = out[out.length - 1]\r\n if (ult && ult.group === g) ult.n++\r\n else out.push({ group: g, start: i, n: 1 })\r\n })\r\n return out\r\n }, [columns])\r\n const temGrupos = faixas.some((f) => f.group)\r\n\r\n const mostrarTip = (e: React.MouseEvent, content: React.ReactNode) => {\r\n if (!content) return\r\n setTip({ x: e.clientX + 12, y: e.clientY + 12, content })\r\n }\r\n\r\n const linhas: React.ReactNode[] = []\r\n let grupoAtual: string | undefined\r\n for (const row of rows) {\r\n if (row.group && row.group !== grupoAtual) {\r\n grupoAtual = row.group\r\n linhas.push(\r\n <div key={`g-${row.group}-${row.id}`} className=\"flex border-b border-slate-200 bg-slate-50\">\r\n <div className=\"sticky left-0 z-[2] shrink-0 border-r border-slate-200 bg-slate-50 px-2 py-1 text-[11px] font-bold uppercase tracking-wide text-slate-500\" style={{ width: labelWidth }}>\r\n {row.group}\r\n </div>\r\n <div className=\"shrink-0\" style={{ width: largura }} />\r\n </div>\r\n )\r\n }\r\n linhas.push(\r\n <div key={row.id} className=\"group flex border-b border-slate-200 hover:bg-blue-50/60\" style={{ height: cellSize }}>\r\n <div className=\"sticky left-0 z-[2] shrink-0 truncate border-r border-slate-200 bg-white px-2 leading-[22px] group-hover:bg-blue-50\" style={{ width: labelWidth, lineHeight: `${cellSize}px` }} title={row.label}>\r\n {row.label}\r\n {row.sublabel && <span className=\"ml-1 text-[11px] text-slate-400\">{row.sublabel}</span>}\r\n </div>\r\n <div className=\"relative flex shrink-0\" style={{ width: largura }}>\r\n {columns.map((col) => {\r\n const c = cell(row, col)\r\n const st = c?.status ? statuses[c.status] : undefined\r\n return (\r\n <div\r\n key={col.id}\r\n className={`relative shrink-0 border-r border-slate-100 ${onCellClick ? 'cursor-pointer' : ''}`}\r\n style={{ width: cellSize, height: cellSize - 1 }}\r\n onMouseMove={(e) => mostrarTip(e, c?.tooltip ?? `${row.label} · ${col.label}${st ? ` · ${st.label}` : ''}`)}\r\n onMouseLeave={() => setTip(null)}\r\n onClick={onCellClick ? () => onCellClick(row, col) : undefined}\r\n >\r\n {st && (\r\n <div className=\"absolute inset-[2px] flex items-center justify-center rounded-sm text-[10px] font-semibold text-white\" style={{ background: st.color }}>\r\n {c?.text}\r\n </div>\r\n )}\r\n {c?.warning && <span className=\"absolute right-[1px] top-[1px] h-[6px] w-[6px] rounded-full border border-white bg-orange-500\" />}\r\n </div>\r\n )\r\n })}\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <div className={className}>\r\n {showLegend && (\r\n <div className=\"mb-2 flex flex-wrap gap-3 text-xs text-slate-500\">\r\n {Object.entries(statuses).map(([k, s]) => (\r\n <span key={k} className=\"inline-flex items-center gap-1\">\r\n <i className=\"inline-block h-2.5 w-2.5 rounded-sm\" style={{ background: s.color }} />\r\n {s.label}\r\n </span>\r\n ))}\r\n </div>\r\n )}\r\n <div className=\"max-h-[calc(100vh-220px)] overflow-auto rounded-lg border border-slate-200 bg-white text-[13px]\">\r\n {/* w-max: cabeçalho e linhas com a largura total do conteúdo — sem isto o fundo do cabeçalho\r\n fixo só cobria a parte visível e, ao rolar na horizontal, as células passavam por cima */}\r\n <div className=\"w-max min-w-full\">\r\n {/* Cabeçalho: grupos de colunas + rótulos verticais */}\r\n <div className=\"sticky top-0 z-[3] flex border-b border-slate-200 bg-white\">\r\n <div className=\"sticky left-0 z-[4] flex shrink-0 items-end border-r border-slate-200 bg-white px-2 py-2 font-semibold\" style={{ width: labelWidth }}>\r\n {corner}\r\n </div>\r\n <div className=\"relative shrink-0 bg-white\" style={{ width: largura, height: ALTURA_CAB_COLUNA + (temGrupos ? 20 : 0) }}>\r\n {temGrupos &&\r\n faixas.map((f) => (\r\n <div\r\n key={`${f.group}-${f.start}`}\r\n className=\"absolute top-0 h-5 truncate border-l border-slate-200 px-1 text-[11px] font-bold uppercase tracking-wide text-slate-500\"\r\n style={{ left: f.start * cellSize, width: f.n * cellSize }}\r\n title={f.group}\r\n >\r\n {f.group}\r\n </div>\r\n ))}\r\n {columns.map((c, i) => (\r\n <div\r\n key={c.id}\r\n className=\"absolute bottom-1 flex justify-center text-[10px] text-slate-500\"\r\n style={{ left: i * cellSize, width: cellSize, height: ALTURA_CAB_COLUNA - 4 }}\r\n title={c.label}\r\n >\r\n <span className=\"whitespace-nowrap\" style={{ writingMode: 'vertical-rl', transform: 'rotate(180deg)' }}>\r\n {c.label}\r\n </span>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n {rows.length && columns.length ? linhas : <div className=\"p-6 text-center text-sm text-slate-400\">{emptyText}</div>}\r\n </div>\r\n </div>\r\n {tip && (\r\n <div className=\"pointer-events-none fixed z-50 max-w-[340px] rounded-md bg-slate-900 px-2 py-1.5 text-xs text-white shadow-lg\" style={{ left: tip.x, top: tip.y }}>\r\n {tip.content}\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import ToastProvider, { useToast } from "../../../v1/components/feedback/Toast/Toast.js";
|
|
4
|
+
const opcoesV1 = (o = {}) => ({
|
|
5
|
+
duration: o.duracao,
|
|
6
|
+
action: o.acao && { label: o.acao.rotulo, onClick: o.acao.onClick }
|
|
7
|
+
});
|
|
8
|
+
function AvisosProvider({ children, rotuloFechar = "Fechar aviso", maximo = 4 }) {
|
|
9
|
+
return /* @__PURE__ */ jsx(ToastProvider, { closeLabel: rotuloFechar, max: maximo, children });
|
|
10
|
+
}
|
|
11
|
+
function useAvisos() {
|
|
12
|
+
let toast;
|
|
13
|
+
try {
|
|
14
|
+
toast = useToast();
|
|
15
|
+
} catch {
|
|
16
|
+
throw new Error("useAvisos tem de ser usado dentro de um <AvisosProvider>.");
|
|
17
|
+
}
|
|
18
|
+
return useMemo(
|
|
19
|
+
() => ({
|
|
20
|
+
sucesso: (m, o) => toast.success(m, opcoesV1(o)),
|
|
21
|
+
erro: (m, o) => toast.error(m, opcoesV1(o)),
|
|
22
|
+
aviso: (m, o) => toast.warning(m, opcoesV1(o)),
|
|
23
|
+
info: (m, o) => toast.info(m, opcoesV1(o)),
|
|
24
|
+
fechar: toast.dismiss
|
|
25
|
+
}),
|
|
26
|
+
[toast]
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
export {
|
|
30
|
+
AvisosProvider,
|
|
31
|
+
useAvisos
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=Avisos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Avisos.js","sources":["../../../../../src/legacy/components/ui/Avisos.tsx"],"sourcesContent":["import React, { useMemo, type ReactNode } from 'react'\r\nimport ToastProvider, { useToast, type ToastOptions } from '../../../v1/components/feedback/Toast/Toast'\r\n\r\n/*\r\n * Migrado para o V1: os avisos são o `ToastProvider` / `useToast` do V1. Este\r\n * ficheiro só traduz a API antiga (em português) para a nova, para as apps que\r\n * ainda a usam continuarem a funcionar sem mudanças.\r\n */\r\n\r\n/** @deprecated Legacy — usar `useToast` do V1. */\r\nexport type TipoAviso = 'sucesso' | 'erro' | 'aviso' | 'info'\r\n\r\n/** @deprecated Legacy — usar `ToastOptions` do V1. */\r\nexport interface OpcoesAviso {\r\n /** Botão no aviso (ex: \"Tentar de novo\", \"Desfazer\"). */\r\n acao?: { rotulo: string; onClick: () => void }\r\n /** Milissegundos até fechar sozinho. 0 = só fecha à mão. */\r\n duracao?: number\r\n}\r\n\r\n/** @deprecated Legacy — usar `ToastApi` do V1. */\r\nexport interface AvisosApi {\r\n sucesso: (mensagem: ReactNode, opcoes?: OpcoesAviso) => number\r\n erro: (mensagem: ReactNode, opcoes?: OpcoesAviso) => number\r\n aviso: (mensagem: ReactNode, opcoes?: OpcoesAviso) => number\r\n info: (mensagem: ReactNode, opcoes?: OpcoesAviso) => number\r\n fechar: (id: number) => void\r\n}\r\n\r\n/** @deprecated Legacy — usar `ToastProviderProps` do V1. */\r\nexport interface AvisosProviderProps {\r\n children: ReactNode\r\n /** Rótulo do botão de fechar (leitores de ecrã). */\r\n rotuloFechar?: string\r\n /** Máximo de avisos visíveis ao mesmo tempo; os mais antigos saem. */\r\n maximo?: number\r\n}\r\n\r\nconst opcoesV1 = (o: OpcoesAviso = {}): ToastOptions => ({\r\n duration: o.duracao,\r\n action: o.acao && { label: o.acao.rotulo, onClick: o.acao.onClick },\r\n})\r\n\r\n/** @deprecated Legacy — usar `ToastProvider` do V1. */\r\nexport function AvisosProvider({ children, rotuloFechar = 'Fechar aviso', maximo = 4 }: AvisosProviderProps) {\r\n return (\r\n <ToastProvider closeLabel={rotuloFechar} max={maximo}>\r\n {children}\r\n </ToastProvider>\r\n )\r\n}\r\n\r\n/** @deprecated Legacy — usar `useToast` do V1. */\r\nexport function useAvisos(): AvisosApi {\r\n let toast: ReturnType<typeof useToast>\r\n try {\r\n toast = useToast()\r\n } catch {\r\n // A mensagem de sempre, com o nome que estas apps conhecem.\r\n throw new Error('useAvisos tem de ser usado dentro de um <AvisosProvider>.')\r\n }\r\n return useMemo<AvisosApi>(\r\n () => ({\r\n sucesso: (m, o) => toast.success(m, opcoesV1(o)),\r\n erro: (m, o) => toast.error(m, opcoesV1(o)),\r\n aviso: (m, o) => toast.warning(m, opcoesV1(o)),\r\n info: (m, o) => toast.info(m, opcoesV1(o)),\r\n fechar: toast.dismiss,\r\n }),\r\n [toast],\r\n )\r\n}\r\n"],"names":[],"mappings":";;;AAsCA,MAAM,WAAW,CAAC,IAAiB,QAAsB;AAAA,EACvD,UAAU,EAAE;AAAA,EACZ,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,QAAQ,SAAS,EAAE,KAAK,QAAA;AAC5D;AAGO,SAAS,eAAe,EAAE,UAAU,eAAe,gBAAgB,SAAS,KAA0B;AAC3G,6BACG,eAAA,EAAc,YAAY,cAAc,KAAK,QAC3C,UACH;AAEJ;AAGO,SAAS,YAAuB;AACrC,MAAI;AACJ,MAAI;AACF,YAAQ,SAAA;AAAA,EACV,QAAQ;AAEN,UAAM,IAAI,MAAM,2DAA2D;AAAA,EAC7E;AACA,SAAO;AAAA,IACL,OAAO;AAAA,MACL,SAAS,CAAC,GAAG,MAAM,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC;AAAA,MAC/C,MAAM,CAAC,GAAG,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;AAAA,MAC1C,OAAO,CAAC,GAAG,MAAM,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC;AAAA,MAC7C,MAAM,CAAC,GAAG,MAAM,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC;AAAA,MACzC,QAAQ,MAAM;AAAA,IAAA;AAAA,IAEhB,CAAC,KAAK;AAAA,EAAA;AAEV;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
function BarraAcoes({ children, esquerda, fixa = true }) {
|
|
3
|
+
return /* @__PURE__ */ jsxs(
|
|
4
|
+
"div",
|
|
5
|
+
{
|
|
6
|
+
role: "group",
|
|
7
|
+
"aria-label": "Ações",
|
|
8
|
+
className: `${fixa ? "sticky bottom-0 z-20" : ""} flex flex-wrap items-center gap-2 border-t border-slate-200 bg-white/95 px-4 py-3 backdrop-blur dark:border-slate-700 dark:bg-slate-900/95`,
|
|
9
|
+
children: [
|
|
10
|
+
esquerda && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap items-center gap-2", children: esquerda }),
|
|
11
|
+
/* @__PURE__ */ jsx("div", { className: "ml-auto flex flex-wrap items-center gap-2", children })
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
BarraAcoes as default
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=BarraAcoes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BarraAcoes.js","sources":["../../../../../src/legacy/components/ui/BarraAcoes.tsx"],"sourcesContent":["import React, { type ReactNode } from 'react'\r\n\r\n/** @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy. */\r\nexport interface BarraAcoesProps {\r\n /** Ações principais, à direita (ex: \"Guardar\"). A principal vai em último. */\r\n children: ReactNode\r\n /** Ações secundárias, à esquerda (ex: \"Voltar à lista\"). */\r\n esquerda?: ReactNode\r\n /** Fica colada ao fundo do ecrã enquanto se desce na página. Por omissão sim. */\r\n fixa?: boolean\r\n}\r\n\r\n/**\r\n * Barra de ações de uma página de detalhe ou formulário.\r\n *\r\n * Fixa ao fundo para \"Guardar\" estar sempre à vista: numa página longa o botão\r\n * no topo desaparece ao descer, e os botões repetidos em cima e em baixo\r\n * acabavam com textos diferentes.\r\n * @deprecated Legacy — não usar em código novo. Ver Storybook › Legacy.\r\n */\r\nexport default function BarraAcoes({ children, esquerda, fixa = true }: BarraAcoesProps) {\r\n return (\r\n <div\r\n role=\"group\"\r\n aria-label=\"Ações\"\r\n className={`${fixa ? 'sticky bottom-0 z-20' : ''} flex flex-wrap items-center gap-2 border-t border-slate-200 bg-white/95 px-4 py-3 backdrop-blur dark:border-slate-700 dark:bg-slate-900/95`}\r\n >\r\n {esquerda && <div className=\"flex flex-wrap items-center gap-2\">{esquerda}</div>}\r\n <div className=\"ml-auto flex flex-wrap items-center gap-2\">{children}</div>\r\n </div>\r\n )\r\n}\r\n"],"names":[],"mappings":";AAoBA,SAAwB,WAAW,EAAE,UAAU,UAAU,OAAO,QAAyB;AACvF,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,WAAW,GAAG,OAAO,yBAAyB,EAAE;AAAA,MAE/C,UAAA;AAAA,QAAA,YAAY,oBAAC,OAAA,EAAI,WAAU,qCAAqC,UAAA,UAAS;AAAA,QAC1E,oBAAC,OAAA,EAAI,WAAU,6CAA6C,SAAA,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG3E;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import PageHeader from "../../../v1/components/layout/PageHeader/PageHeader.js";
|
|
3
|
+
function CabecalhoPagina({ titulo, descricao, caminho, acoes, extra, rotuloCaminho = "Caminho" }) {
|
|
4
|
+
return /* @__PURE__ */ jsx(
|
|
5
|
+
PageHeader,
|
|
6
|
+
{
|
|
7
|
+
title: titulo,
|
|
8
|
+
description: descricao,
|
|
9
|
+
breadcrumb: caminho?.map((n) => ({ label: n.rotulo, href: n.href, onClick: n.onClick })),
|
|
10
|
+
actions: acoes,
|
|
11
|
+
extra,
|
|
12
|
+
breadcrumbLabel: rotuloCaminho
|
|
13
|
+
}
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
CabecalhoPagina as default
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=CabecalhoPagina.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CabecalhoPagina.js","sources":["../../../../../src/legacy/components/ui/CabecalhoPagina.tsx"],"sourcesContent":["import React, { type ReactNode } from 'react'\r\nimport PageHeader from '../../../v1/components/layout/PageHeader/PageHeader'\r\n\r\n/*\r\n * Migrado para o V1: o cabeçalho é o `PageHeader` do V1 (ou o `Page`, que o\r\n * inclui). Este ficheiro só traduz a API antiga (em português) para a nova,\r\n * para as apps que ainda a usam continuarem a funcionar sem mudanças.\r\n */\r\n\r\n/** @deprecated Legacy — usar `BreadcrumbItem` do V1. */\r\nexport interface NivelCaminho {\r\n rotulo: ReactNode\r\n /** Ligação normal. Para o router da app, usar `onClick` (ex: `() => navigate('/x')`). */\r\n href?: string\r\n onClick?: () => void\r\n}\r\n\r\n/** @deprecated Legacy — usar `PageHeaderProps` do V1. */\r\nexport interface CabecalhoPaginaProps {\r\n titulo: ReactNode\r\n descricao?: ReactNode\r\n /** Caminho até à página (área › lista › registo). O último nível é a página atual. */\r\n caminho?: NivelCaminho[]\r\n /** Botões da página (ex: \"Novo\", \"Editar\"). */\r\n acoes?: ReactNode\r\n /** Linha extra por baixo da descrição (etiquetas de estado, responsável…). */\r\n extra?: ReactNode\r\n /** Rótulo acessível da navegação do caminho. */\r\n rotuloCaminho?: string\r\n}\r\n\r\n/** @deprecated Legacy — usar `PageHeader` (ou `Page`) do V1. */\r\nexport default function CabecalhoPagina({ titulo, descricao, caminho, acoes, extra, rotuloCaminho = 'Caminho' }: CabecalhoPaginaProps) {\r\n return (\r\n <PageHeader\r\n title={titulo}\r\n description={descricao}\r\n breadcrumb={caminho?.map((n) => ({ label: n.rotulo, href: n.href, onClick: n.onClick }))}\r\n actions={acoes}\r\n extra={extra}\r\n breadcrumbLabel={rotuloCaminho}\r\n />\r\n )\r\n}\r\n"],"names":[],"mappings":";;AAgCA,SAAwB,gBAAgB,EAAE,QAAQ,WAAW,SAAS,OAAO,OAAO,gBAAgB,aAAmC;AACrI,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,MACP,aAAa;AAAA,MACb,YAAY,SAAS,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,MAAM,EAAE,MAAM,SAAS,EAAE,UAAU;AAAA,MACvF,SAAS;AAAA,MACT;AAAA,MACA,iBAAiB;AAAA,IAAA;AAAA,EAAA;AAGvB;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import SearchInput from "../../../v1/primitives/forms/SearchInput/SearchInput.js";
|
|
3
|
+
function CaixaPesquisa({ valor, onMudar, placeholder = "Pesquisar…", rotulo, className = "w-56", autoFocus }) {
|
|
4
|
+
return /* @__PURE__ */ jsx(SearchInput, { value: valor, onChange: onMudar, placeholder, label: rotulo, className, autoFocus });
|
|
5
|
+
}
|
|
6
|
+
export {
|
|
7
|
+
CaixaPesquisa as default
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=CaixaPesquisa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CaixaPesquisa.js","sources":["../../../../../src/legacy/components/ui/CaixaPesquisa.tsx"],"sourcesContent":["import React from 'react'\r\nimport SearchInput from '../../../v1/primitives/forms/SearchInput/SearchInput'\r\n\r\n/*\r\n * Migrado para o V1: a caixa de pesquisa é o `SearchInput` do V1 (mesmo\r\n * aspeto e comportamento). Este ficheiro só traduz a API antiga.\r\n */\r\n\r\n/** @deprecated Legacy — usar `SearchInputProps` do V1. */\r\nexport interface CaixaPesquisaProps {\r\n valor: string\r\n onMudar: (valor: string) => void\r\n placeholder?: string\r\n /** Nome acessível (leitores de ecrã). Por omissão, o placeholder. */\r\n rotulo?: string\r\n /** Largura (classes tailwind). Por omissão w-56. */\r\n className?: string\r\n autoFocus?: boolean\r\n}\r\n\r\n/** @deprecated Legacy — usar `SearchInput` do V1. */\r\nexport default function CaixaPesquisa({ valor, onMudar, placeholder = 'Pesquisar…', rotulo, className = 'w-56', autoFocus }: CaixaPesquisaProps) {\r\n return <SearchInput value={valor} onChange={onMudar} placeholder={placeholder} label={rotulo} className={className} autoFocus={autoFocus} />\r\n}\r\n"],"names":[],"mappings":";;AAqBA,SAAwB,cAAc,EAAE,OAAO,SAAS,cAAc,cAAc,QAAQ,YAAY,QAAQ,aAAiC;AAC/I,SAAO,oBAAC,aAAA,EAAY,OAAO,OAAO,UAAU,SAAS,aAA0B,OAAO,QAAQ,WAAsB,UAAA,CAAsB;AAC5I;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import ConfirmDialog from "../../../v1/components/overlays/ConfirmDialog/ConfirmDialog.js";
|
|
3
|
+
function Confirmacao({
|
|
4
|
+
aberto,
|
|
5
|
+
titulo,
|
|
6
|
+
children,
|
|
7
|
+
onConfirmar,
|
|
8
|
+
onCancelar,
|
|
9
|
+
textoConfirmar = "Confirmar",
|
|
10
|
+
textoCancelar = "Cancelar",
|
|
11
|
+
variante = "normal",
|
|
12
|
+
aConfirmar = false,
|
|
13
|
+
acaoSecundaria
|
|
14
|
+
}) {
|
|
15
|
+
return /* @__PURE__ */ jsx(
|
|
16
|
+
ConfirmDialog,
|
|
17
|
+
{
|
|
18
|
+
open: aberto,
|
|
19
|
+
title: titulo,
|
|
20
|
+
message: children,
|
|
21
|
+
tone: variante === "perigo" ? "danger" : "default",
|
|
22
|
+
confirmLabel: textoConfirmar,
|
|
23
|
+
cancelLabel: textoCancelar,
|
|
24
|
+
loading: aConfirmar,
|
|
25
|
+
secondaryAction: acaoSecundaria && { label: acaoSecundaria.rotulo, onClick: acaoSecundaria.onClick },
|
|
26
|
+
onConfirm: onConfirmar,
|
|
27
|
+
onCancel: onCancelar
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
Confirmacao as default
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=Confirmacao.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Confirmacao.js","sources":["../../../../../src/legacy/components/ui/Confirmacao.tsx"],"sourcesContent":["import React, { type ReactNode } from 'react'\r\nimport ConfirmDialog from '../../../v1/components/overlays/ConfirmDialog/ConfirmDialog'\r\n\r\n/*\r\n * Migrado para o V1: a confirmação é o `ConfirmDialog` do V1 (ou `useConfirm`).\r\n * Este ficheiro só traduz a API antiga (em português) para a nova, para as\r\n * apps que ainda a usam continuarem a funcionar sem mudanças.\r\n */\r\n\r\n/** @deprecated Legacy — usar `ConfirmDialog` ou `useConfirm` do V1. */\r\nexport interface ConfirmacaoProps {\r\n aberto: boolean\r\n titulo: ReactNode\r\n /** Explicação: o que vai acontecer, a que registo, se é reversível. */\r\n children?: ReactNode\r\n onConfirmar: () => void\r\n onCancelar: () => void\r\n /** Texto do botão — o verbo da ação (\"Eliminar\", \"Submeter\"), não \"OK\". */\r\n textoConfirmar?: string\r\n textoCancelar?: string\r\n /** `perigo` pinta a ação a vermelho e põe o foco em Cancelar. */\r\n variante?: 'normal' | 'perigo'\r\n /** A ação está a correr: botões desativados. */\r\n aConfirmar?: boolean\r\n /** Uma segunda saída (ex: \"Desativar\" em vez de eliminar, \"Eliminar só o contrato\"). */\r\n acaoSecundaria?: { rotulo: string; onClick: () => void }\r\n}\r\n\r\n/** @deprecated Legacy — usar `ConfirmDialog` ou `useConfirm` do V1. */\r\nexport default function Confirmacao({\r\n aberto,\r\n titulo,\r\n children,\r\n onConfirmar,\r\n onCancelar,\r\n textoConfirmar = 'Confirmar',\r\n textoCancelar = 'Cancelar',\r\n variante = 'normal',\r\n aConfirmar = false,\r\n acaoSecundaria,\r\n}: ConfirmacaoProps) {\r\n return (\r\n <ConfirmDialog\r\n open={aberto}\r\n title={titulo}\r\n message={children}\r\n tone={variante === 'perigo' ? 'danger' : 'default'}\r\n confirmLabel={textoConfirmar}\r\n cancelLabel={textoCancelar}\r\n loading={aConfirmar}\r\n secondaryAction={acaoSecundaria && { label: acaoSecundaria.rotulo, onClick: acaoSecundaria.onClick }}\r\n onConfirm={onConfirmar}\r\n onCancel={onCancelar}\r\n />\r\n )\r\n}\r\n"],"names":[],"mappings":";;AA6BA,SAAwB,YAAY;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,aAAa;AAAA,EACb;AACF,GAAqB;AACnB,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAM;AAAA,MACN,OAAO;AAAA,MACP,SAAS;AAAA,MACT,MAAM,aAAa,WAAW,WAAW;AAAA,MACzC,cAAc;AAAA,MACd,aAAa;AAAA,MACb,SAAS;AAAA,MACT,iBAAiB,kBAAkB,EAAE,OAAO,eAAe,QAAQ,SAAS,eAAe,QAAA;AAAA,MAC3F,WAAW;AAAA,MACX,UAAU;AAAA,IAAA;AAAA,EAAA;AAGhB;"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { SelectInput } from "../../../v1/primitives/forms/SelectInput/SelectInput.js";
|
|
3
|
+
function Escolha({
|
|
4
|
+
valor,
|
|
5
|
+
opcoes,
|
|
6
|
+
onMudar,
|
|
7
|
+
rotulo,
|
|
8
|
+
placeholder = "Escolher…",
|
|
9
|
+
opcaoVazia,
|
|
10
|
+
disabled = false,
|
|
11
|
+
pesquisa,
|
|
12
|
+
className,
|
|
13
|
+
tamanho = "barra",
|
|
14
|
+
aspeto = "campo",
|
|
15
|
+
corEtiqueta
|
|
16
|
+
}) {
|
|
17
|
+
const etiqueta = aspeto === "etiqueta";
|
|
18
|
+
return /* @__PURE__ */ jsx(
|
|
19
|
+
SelectInput,
|
|
20
|
+
{
|
|
21
|
+
"aria-label": rotulo,
|
|
22
|
+
value: valor,
|
|
23
|
+
onValueChange: onMudar,
|
|
24
|
+
options: opcoes.map((o) => typeof o === "string" ? o : { value: o.valor, label: o.rotulo, description: o.descricao }),
|
|
25
|
+
placeholder,
|
|
26
|
+
placeholderOption: false,
|
|
27
|
+
emptyOption: opcaoVazia,
|
|
28
|
+
disabled,
|
|
29
|
+
searchable: pesquisa,
|
|
30
|
+
variant: etiqueta ? "pill" : "field",
|
|
31
|
+
pillClassName: corEtiqueta,
|
|
32
|
+
tall: tamanho === "formulario",
|
|
33
|
+
labels: { search: "Pesquisar…", searchIn: "Pesquisar em {label}", noResults: "Sem resultados" },
|
|
34
|
+
className: `inline-block ${className ?? (etiqueta ? "" : "min-w-[10rem] max-w-[18rem]")}`
|
|
35
|
+
}
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
export {
|
|
39
|
+
Escolha as default
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=Escolha.js.map
|