@orangesix/react 1.0.0 → 1.0.6
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/api/index.cjs.js +2 -0
- package/api/index.cjs.js.map +1 -0
- package/api/index.d.ts +26 -0
- package/api/index.esm.js +2 -0
- package/api/index.esm.js.map +1 -0
- package/api/package.json +5 -0
- package/api/theme.css +1 -0
- package/box/_box.scss +83 -0
- package/box/index.cjs.js +2 -0
- package/box/index.cjs.js.map +1 -0
- package/box/index.d.ts +147 -0
- package/box/index.esm.js +2 -0
- package/box/index.esm.js.map +1 -0
- package/box/package.json +5 -0
- package/editor/_editor.scss +53 -0
- package/editor/index.cjs.js +2 -0
- package/editor/index.cjs.js.map +1 -0
- package/editor/index.d.ts +92 -0
- package/editor/index.esm.js +2 -0
- package/editor/index.esm.js.map +1 -0
- package/editor/package.json +5 -0
- package/package.json +33 -23
- package/table/_table.scss +136 -0
- package/table/index.cjs.js +2 -0
- package/table/index.cjs.js.map +1 -0
- package/table/index.d.ts +256 -0
- package/table/index.esm.js +2 -0
- package/table/index.esm.js.map +1 -0
- package/table/package.json +5 -0
- package/utils/index.cjs.js +2 -0
- package/utils/index.cjs.js.map +1 -0
- package/utils/index.d.ts +155 -0
- package/utils/index.esm.js +2 -0
- package/utils/index.esm.js.map +1 -0
- package/utils/package.json +5 -0
- package/LICENSE +0 -21
- package/README.md +0 -2
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--table-frozen: #fff;
|
|
3
|
+
--table-sort-size: 12px;
|
|
4
|
+
--table-sort-active: #0D6EFD;
|
|
5
|
+
--table-checkbox-size: 17px;
|
|
6
|
+
--table-scrollbar: #e1e1e1;
|
|
7
|
+
--table-select: var(--bs-light, #e1e1e1);
|
|
8
|
+
--table-header: var(--bs-light, #f5f5f5);
|
|
9
|
+
--table-footer: var(--bs-light, #f5f5f5);
|
|
10
|
+
--table-paginator-color: var(--bs-secondary-300, #b9b9b9);
|
|
11
|
+
--table-paginator-active: var(--bs-primary, #0D6EFD);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.table-responsive {
|
|
15
|
+
width: 100%;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.table {
|
|
19
|
+
width: 100%;
|
|
20
|
+
margin-bottom: 0;
|
|
21
|
+
|
|
22
|
+
&-footer,
|
|
23
|
+
&-header {
|
|
24
|
+
width: 100%;
|
|
25
|
+
display: flex;
|
|
26
|
+
padding: 0;
|
|
27
|
+
margin: 0;
|
|
28
|
+
background: var(--table-header, #F5F5F5);
|
|
29
|
+
border-bottom: 1px solid #dee2e6;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
&-footer {
|
|
33
|
+
border-top: 1px solid #dee2e6;
|
|
34
|
+
background: var(--table-footer, #F5F5F5);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&-sort {
|
|
38
|
+
cursor: pointer;
|
|
39
|
+
color: var(--bs-secondary, #5555);
|
|
40
|
+
|
|
41
|
+
svg {
|
|
42
|
+
width: var(--table-sort-size, 12px);
|
|
43
|
+
height: var(--table-sort-size, 12px);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
&-sort-active {
|
|
48
|
+
span[data-pc-section='sort'] {
|
|
49
|
+
svg {
|
|
50
|
+
color: var(--bs-primary, #0D6EFD);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
&-resizable {
|
|
56
|
+
text-overflow: ellipsis;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Personalização do style do PrimeReact
|
|
62
|
+
*/
|
|
63
|
+
.p-datatable {
|
|
64
|
+
|
|
65
|
+
.p-datatable-wrapper {
|
|
66
|
+
&::-webkit-scrollbar {
|
|
67
|
+
height: 8px;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
&::-webkit-scrollbar-thumb {
|
|
71
|
+
background: var(--table-scrollbar, #e1e1e1);
|
|
72
|
+
border-radius: 10px;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.p-datatable-tbody {
|
|
77
|
+
.p-highlight {
|
|
78
|
+
background: var(--table-select, #e1e1e1);
|
|
79
|
+
|
|
80
|
+
td {
|
|
81
|
+
font-weight: bolder;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
td.p-frozen-column {
|
|
85
|
+
background: var(--table-select, #e1e1e1);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.p-row-toggler {
|
|
90
|
+
width: 14px;
|
|
91
|
+
height: 14px;
|
|
92
|
+
margin-left: 5px;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.p-frozen-column {
|
|
97
|
+
position: sticky;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.p-frozen-column[data-pc-section="bodycell"] {
|
|
101
|
+
background: var(--table-frozen, #fff)
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.p-checkbox-box {
|
|
105
|
+
width: var(--table-checkbox-size, 17px);
|
|
106
|
+
height: var(--table-checkbox-size, 17px);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.p-checkbox.p-highlight .p-checkbox-box {
|
|
110
|
+
background: var(--bs-primary, #0D6EFD);
|
|
111
|
+
border-color: var(--bs-primary, #0D6EFD);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.p-checkbox:has(.p-checkbox-input:hover) .p-highlight .p-checkbox-box {
|
|
115
|
+
border-color: var(--bs-primary, #0D6EFD);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.p-paginator {
|
|
119
|
+
|
|
120
|
+
.p-paginator-first,
|
|
121
|
+
.p-paginator-page,
|
|
122
|
+
.p-paginator-last, {
|
|
123
|
+
font-size: .9em;
|
|
124
|
+
min-width: 28px;
|
|
125
|
+
height: 28px;
|
|
126
|
+
color: var(--table-paginator-color, #b9b9b9)
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.p-paginator-page.p-highlight {
|
|
130
|
+
color: #fff;
|
|
131
|
+
border: none;
|
|
132
|
+
background: var(--table-paginator-active, #0D6EFD);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("react"),t=require("primereact/utils"),a=require("primereact/column"),o=require("primereact/datatable");const r=({children:a,...o})=>{const r={size:`box-size-${o.size??"100"}`,direction:`box-direction-${o.direction??"row"}`,justify:void 0===o.justify?"":Array.isArray(o.justify)?o.justify?.join(" "):o.justify,align:void 0===o.align?"":Array.isArray(o.align)?o.align?.join(" "):o.align},n={className:t.classNames(["box",o.className??"",r.size,r.direction,r.justify,r.align]),style:o.css};return e.createElement("div",{...n},a)};function n(e){return{value:e.data,dataKey:"id",lazy:void 0!==e.lazy,resizableColumns:e.styleResizable??!1,columnResizeMode:"expand",emptyMessage:e.emptyMessage??"Não há informações disponíveis no momento.",header:e.templeteHeader,footer:e.templateFooter}}function l(e){return{sortField:e.lazy?.sortField,sortOrder:e.lazy?.sortOrder??null,onSort:void 0!==e.lazy?function(t){e.onSort&&e.onSort(t.sortField,t.sortOrder)}:void 0}}function i(e,t,a){return{groupRowsBy:e.rowGroup,rowGroupMode:e.rowGroupMode,rowGroupHeaderTemplate:e.rowGroupHeaderTemplate,rowGroupFooterTemplate:e.rowGroupFooterTemplate,expandableRowGroups:e.rowExpandable??!1,expandedRows:t,onRowToggle(e){a(e.data)}}}function s(e){return{metaKeySelection:void 0!==e.onSelection,selection:e.selection,selectionMode:void 0!==e.onSelection?e.selectionMode??"single":void 0,onSelectionChange:function(t){e.onSelection&&e.onSelection(t.value)}}}function d(t){return{paginator:t.paginator??!1,paginatorClassName:"pagination",totalRecords:t?.lazy?.paginationTotal??void 0,first:void 0===t?.lazy?.paginationPage?0:((t?.lazy?.paginationPage??0)-1)*(t.paginatorRow??10),rows:t.paginator?t.paginatorRow??10:void 0,rowsPerPageOptions:[5,10,15,20,50,100],paginatorTemplate:{layout:"RowsPerPageDropdown FirstPageLink PageLinks LastPageLink CurrentPageReport",CurrentPageReport:t=>e.createElement("p",{className:"text-secondary mx-2",style:{fontSize:".9em"}},"Total de registros: ",t.totalRecords),RowsPerPageDropdown:t=>e.createElement("select",{className:"form-select form-select-sm mx-2",style:{maxWidth:"60px"},value:t.value,onChange:e=>{const a={};a.value=e.target.value,t.onChange(a)}},t.options.map((t=>e.createElement("option",{key:t.value,value:t.value},t.label))))},paginatorRight:t.templatePaginationRight,paginatorLeft:t.templatePaginationLeft,onPage:void 0!==t.lazy?function(e){let a=e.first/(t.paginatorRow??10);t.onPaginator&&t.onPaginator(a+1,e.rows)}:void 0}}function c(e){return{root:{className:"table-responsive"},table:{className:t.classNames(["table",e.styleHover?"table-hover":"",e.styleStriped?"table-striped":"","small"===e.styleSize?"table-sm":"","bordered"===e.styleType?"table-bordered":"borderless"===e.styleType?"table-borderless":""])},header:{className:"table-header"},footer:{className:"table-footer"},paginator:{root:{className:t.classNames(["p-0 d-flex mb-1 mt-2",`justify-content-${e.paginatorAlign??"center"}`]),style:{borderTop:"none"}},firstPageButton:{style:{borderTopLeftRadius:"3px",borderBottomLeftRadius:"3px"}},lastPageButton:{style:{borderTopRightRadius:"3px",borderBottomRightRadius:"3px"}}}}}function p(){return{sort:{className:"table-sort"},headerCell:e=>({className:t.classNames([e?.context.sorted?"table-sort-active":""])}),bodyCell:{className:"table-resizable"}}}exports.Table=function(t){const[u,m]=e.useState([]);return e.createElement(r,{className:"p-0",size:t.size??"100"},e.createElement(o.DataTable,{pt:{...c(t)},tableClassName:t.className,...n(t),...l(t),...s(t),...d(t),...i(t,u,m)},"checkbox"===t.selectionMode&&e.createElement(a.Column,{align:"center",headerStyle:{width:"2.5rem"},pt:{...p()},selectionMode:"multiple"}),t.column.map((t=>e.createElement(a.Column,{unstyled:!0,align:t.align,alignFrozen:t.frozen?"right":void 0,alignHeader:t.alignHeader,body:t.body,field:t.id,frozen:void 0!==t.frozen,header:t.header,key:t.id,pt:{...p()},sortable:t.sort??!1,style:t.style})))))};
|
|
2
|
+
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../../src/box/box.tsx","../../src/table/core/core.tsx","../../src/table/core/sort.tsx","../../src/table/core/group.tsx","../../src/table/core/selection.tsx","../../src/table/core/pagination.tsx","../../src/table/styled.ts","../../src/table/table.tsx"],"sourcesContent":["import { BoxProps } from \"./types\";\r\nimport React, { HTMLAttributes } from \"react\";\r\nimport { classNames } from \"primereact/utils\";\r\n\r\n/**\r\n * Componente - `Box`\r\n *\r\n * Um componente versátil que pode ser utilizado para criar seções ou caixas em uma página.\r\n * Permite personalizar o estilo e o conteúdo através de propriedades.\r\n *\r\n * Exemplo de uso:\r\n * ```tsx\r\n * <Box align=\"align-items-center\"\r\n * justify=\"justify-content-end\"\r\n * size=\"25\">\r\n * ...conteúdo HTML\r\n * </Box>\r\n * ```\r\n */\r\nexport const Box = ({ children, ...props }: BoxProps) => {\r\n const css = {\r\n size: `box-size-${(props.size ?? \"100\")}`,\r\n direction: `box-direction-${props.direction ?? \"row\"}`,\r\n justify: props.justify === undefined ? \"\" : Array.isArray(props.justify) ? props.justify?.join(\" \") : props.justify,\r\n align: props.align === undefined ? \"\" : Array.isArray(props.align) ? props.align?.join(\" \") : props.align\r\n };\r\n\r\n const attr: HTMLAttributes<\"div\"> & Omit<BoxProps, \"children\"> = {\r\n className: classNames([\r\n \"box\",\r\n props.className ?? \"\",\r\n css.size,\r\n css.direction,\r\n css.justify,\r\n css.align\r\n ]),\r\n style: props.css\r\n };\r\n\r\n return (\r\n <div {...attr as any}>{children}</div>\r\n );\r\n};","import { TableProps } from \"../types\";\r\nimport { DataTableBaseProps } from \"primereact/datatable\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Define as configurações do modo principal da tabela.\r\n */\r\nexport function tableCore(\r\n props: TableProps<any>\r\n): Partial<DataTableBaseProps<any>> {\r\n return {\r\n value: props.data as any,\r\n dataKey: \"id\",\r\n lazy: props.lazy !== undefined,\r\n resizableColumns: props.styleResizable ?? false,\r\n columnResizeMode: \"expand\",\r\n emptyMessage: props.emptyMessage ?? \"Não há informações disponíveis no momento.\",\r\n header: props.templeteHeader,\r\n footer: props.templateFooter\r\n };\r\n}","import { TableProps } from \"../types\";\r\nimport { DataTableProps, DataTableStateEvent } from \"primereact/datatable\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Define as configurações do modo de ordenação de resultado.\r\n */\r\nexport function tableSort(\r\n props: TableProps<any>\r\n): Partial<DataTableProps<any>> {\r\n\r\n function onSort(event: DataTableStateEvent) {\r\n if (props.onSort) {\r\n props.onSort(event.sortField, event.sortOrder);\r\n }\r\n }\r\n\r\n return {\r\n sortField: props.lazy?.sortField,\r\n sortOrder: props.lazy?.sortOrder ?? null,\r\n onSort: props.lazy !== undefined ? onSort : undefined\r\n };\r\n}","import React from \"react\";\r\nimport { TableProps } from \"../types\";\r\nimport { DataTableBaseProps, DataTableRowToggleEvent } from \"primereact/datatable\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Define as configurações de agrupamento da tabela.\r\n */\r\nexport function tableGroup(\r\n props: TableProps<any>,\r\n expandedRows: any,\r\n setExpandedRows: React.Dispatch<any>\r\n): Partial<DataTableBaseProps<any>> {\r\n return {\r\n groupRowsBy: props.rowGroup,\r\n rowGroupMode: props.rowGroupMode,\r\n rowGroupHeaderTemplate: props.rowGroupHeaderTemplate,\r\n rowGroupFooterTemplate: props.rowGroupFooterTemplate,\r\n expandableRowGroups: props.rowExpandable ?? false,\r\n expandedRows: expandedRows,\r\n onRowToggle(event: DataTableRowToggleEvent) {\r\n setExpandedRows(event.data);\r\n }\r\n };\r\n}","import { TableProps } from \"../types\";\r\nimport { DataTableProps, DataTableSelectionSingleChangeEvent } from \"primereact/datatable\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Define as configurações do modo de seleção de dados.\r\n */\r\nexport function tableSelection(\r\n props: TableProps<any>\r\n): Partial<DataTableProps<any>> {\r\n\r\n function onSelect(e: DataTableSelectionSingleChangeEvent<any>) {\r\n if (props.onSelection) {\r\n props.onSelection(e.value);\r\n }\r\n }\r\n\r\n return {\r\n metaKeySelection: props.onSelection !== undefined,\r\n selection: props.selection,\r\n selectionMode: props.onSelection !== undefined ? (props.selectionMode as any ?? \"single\") : undefined,\r\n onSelectionChange: onSelect,\r\n };\r\n}","import React from \"react\";\r\nimport { TableProps } from \"../types\";\r\nimport { PaginatorChangeEvent } from \"primereact/paginator\";\r\nimport { DataTableBaseProps, DataTableStateEvent } from \"primereact/datatable\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Define as configurações do modo de paginação de resultado.\r\n */\r\nexport function tablePagination(\r\n props: TableProps<any>\r\n): Partial<DataTableBaseProps<any>> {\r\n\r\n function onPage(event: DataTableStateEvent) {\r\n let paginationPage = event.first / (props.paginatorRow ?? 10);\r\n if (props.onPaginator) {\r\n props.onPaginator(paginationPage + 1, event.rows);\r\n }\r\n }\r\n\r\n return {\r\n paginator: props.paginator ?? false,\r\n paginatorClassName: \"pagination\",\r\n totalRecords: props?.lazy?.paginationTotal ?? undefined,\r\n first: props?.lazy?.paginationPage === undefined ? 0 : ((props?.lazy?.paginationPage ?? 0) - 1) * (props.paginatorRow ?? 10),\r\n rows: props.paginator ? (props.paginatorRow ?? 10) : undefined,\r\n rowsPerPageOptions: [5, 10, 15, 20, 50, 100],\r\n paginatorTemplate: {\r\n layout: \"RowsPerPageDropdown FirstPageLink PageLinks LastPageLink CurrentPageReport\",\r\n CurrentPageReport: options => {\r\n return (\r\n <p className=\"text-secondary mx-2\"\r\n style={{ fontSize: \".9em\" }}>Total de registros: {options.totalRecords}</p>\r\n );\r\n },\r\n RowsPerPageDropdown: options => {\r\n return (\r\n <select className=\"form-select form-select-sm mx-2\"\r\n style={{ maxWidth: \"60px\" }}\r\n value={options.value}\r\n onChange={(e) => {\r\n const event = {} as PaginatorChangeEvent;\r\n event.value = e.target.value;\r\n options.onChange(event);\r\n }}>\r\n {options.options.map(obj => <option key={obj.value}\r\n value={obj.value}>{obj.label}</option>)}\r\n </select>\r\n );\r\n }\r\n },\r\n paginatorRight: props.templatePaginationRight,\r\n paginatorLeft: props.templatePaginationLeft,\r\n onPage: props.lazy !== undefined ? onPage : undefined,\r\n };\r\n}","import { TableProps } from \"./types\";\r\nimport { classNames } from \"primereact/utils\";\r\nimport { ColumnPassThroughOptions } from \"primereact/column\";\r\nimport { DataTablePassThroughOptions } from \"primereact/datatable\";\r\n\r\n/**\r\n * Realiza a personalização na TABLE\r\n */\r\nexport function bootstrapTableStyle(props: TableProps<any>): DataTablePassThroughOptions {\r\n return {\r\n root: {\r\n className: \"table-responsive\"\r\n },\r\n table: {\r\n className: classNames([\r\n \"table\",\r\n props.styleHover ? \"table-hover\" : \"\",\r\n props.styleStriped ? \"table-striped\" : \"\",\r\n props.styleSize === \"small\" ? \"table-sm\" : \"\",\r\n props.styleType === \"bordered\" ? \"table-bordered\" : props.styleType === \"borderless\" ? \"table-borderless\" : \"\",\r\n ]),\r\n },\r\n header: {\r\n className: \"table-header\",\r\n },\r\n footer: {\r\n className: \"table-footer\"\r\n },\r\n paginator: {\r\n root: {\r\n className: classNames([\r\n \"p-0 d-flex mb-1 mt-2\",\r\n `justify-content-${props.paginatorAlign ?? \"center\"}`\r\n ]),\r\n style: { borderTop: \"none\" }\r\n },\r\n firstPageButton: {\r\n style: { borderTopLeftRadius: \"3px\", borderBottomLeftRadius: \"3px\" }\r\n },\r\n lastPageButton: {\r\n style: { borderTopRightRadius: \"3px\", borderBottomRightRadius: \"3px\" }\r\n }\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Realiza a personalização na COLUNA da tabela\r\n */\r\nexport function bootstrapColumnStyle(): ColumnPassThroughOptions {\r\n\r\n return {\r\n sort: {\r\n className: \"table-sort\"\r\n },\r\n headerCell: (options) => {\r\n return {\r\n className: classNames([\r\n options?.context.sorted ? \"table-sort-active\" : \"\",\r\n ])\r\n };\r\n },\r\n bodyCell: {\r\n className: \"table-resizable\"\r\n },\r\n };\r\n}","import React, { useState } from \"react\";\r\nimport { Box } from \"../box\";\r\nimport { TableProps } from \"./types\";\r\nimport { tableCore } from \"./core/core\";\r\nimport { tableSort } from \"./core/sort\";\r\nimport { tableGroup } from \"./core/group\";\r\nimport { Column } from \"primereact/column\";\r\nimport { DataTable } from \"primereact/datatable\";\r\nimport { tableSelection } from \"./core/selection\";\r\nimport { tablePagination } from \"./core/pagination\";\r\nimport { bootstrapColumnStyle, bootstrapTableStyle } from \"./styled\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Um componente versátil que pode ser utilizado para criar tabela de dados.\r\n * Permite personalizar o estilo e o conteúdo através de propriedades.\r\n */\r\nexport function Table<T = any>(props: TableProps<T>) {\r\n const [expandedRows, setExpandedRows] = useState([]);\r\n\r\n /*\r\n |------------------------------------------\r\n | render() - Renderização do componente\r\n |------------------------------------------\r\n */\r\n return (\r\n <Box className=\"p-0\"\r\n size={props.size ?? \"100\"}>\r\n {/*@ts-ignore*/}\r\n <DataTable<any>\r\n pt={{ ...bootstrapTableStyle(props) }}\r\n tableClassName={props.className}\r\n {...tableCore(props)}\r\n {...tableSort(props)}\r\n {...tableSelection(props)}\r\n {...tablePagination(props)}\r\n {...tableGroup(props, expandedRows, setExpandedRows)}>\r\n {props.selectionMode === \"checkbox\"\r\n && <Column align=\"center\"\r\n headerStyle={{ width: \"2.5rem\" }}\r\n pt={{ ...bootstrapColumnStyle() }}\r\n selectionMode=\"multiple\"/>}\r\n {props.column.map(obj => {\r\n return (\r\n <Column\r\n unstyled\r\n align={obj.align}\r\n alignFrozen={obj.frozen ? \"right\" : undefined}\r\n alignHeader={obj.alignHeader}\r\n body={obj.body}\r\n field={obj.id}\r\n frozen={obj.frozen !== undefined}\r\n header={obj.header}\r\n key={obj.id}\r\n pt={{ ...bootstrapColumnStyle() }}\r\n sortable={obj.sort ?? false}\r\n style={obj.style}/>\r\n );\r\n })}\r\n </DataTable>\r\n </Box>\r\n );\r\n}"],"names":["Box","children","props","css","size","direction","justify","undefined","Array","isArray","join","align","attr","className","classNames","style","React","createElement","tableCore","value","data","dataKey","lazy","resizableColumns","styleResizable","columnResizeMode","emptyMessage","header","templeteHeader","footer","templateFooter","tableSort","sortField","sortOrder","onSort","event","tableGroup","expandedRows","setExpandedRows","groupRowsBy","rowGroup","rowGroupMode","rowGroupHeaderTemplate","rowGroupFooterTemplate","expandableRowGroups","rowExpandable","onRowToggle","tableSelection","metaKeySelection","onSelection","selection","selectionMode","onSelectionChange","e","tablePagination","paginator","paginatorClassName","totalRecords","paginationTotal","first","paginationPage","paginatorRow","rows","rowsPerPageOptions","paginatorTemplate","layout","CurrentPageReport","options","fontSize","RowsPerPageDropdown","maxWidth","onChange","target","map","obj","key","label","paginatorRight","templatePaginationRight","paginatorLeft","templatePaginationLeft","onPage","onPaginator","bootstrapTableStyle","root","table","styleHover","styleStriped","styleSize","styleType","paginatorAlign","borderTop","firstPageButton","borderTopLeftRadius","borderBottomLeftRadius","lastPageButton","borderTopRightRadius","borderBottomRightRadius","bootstrapColumnStyle","sort","headerCell","context","sorted","bodyCell","useState","DataTable","pt","tableClassName","Column","headerStyle","width","column","unstyled","alignFrozen","frozen","alignHeader","body","field","id","sortable"],"mappings":"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"}
|
package/table/index.d.ts
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import React, { CSSProperties } from 'react';
|
|
2
|
+
import { ColumnHeaderOptions, ColumnBodyOptions } from 'primereact/column';
|
|
3
|
+
import { SortOrder } from 'primereact/datatable';
|
|
4
|
+
|
|
5
|
+
interface TableColumnProps {
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Propriedade de dados de uma linha.
|
|
9
|
+
*/
|
|
10
|
+
id: string
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Conteúdo do cabeçalho da tabela.
|
|
14
|
+
*/
|
|
15
|
+
header: React.ReactNode | ((options: ColumnHeaderOptions) => React.ReactNode)
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Alinha o conteúdo da coluna, os valores válidos são à esquerda, à direita e ao centro.
|
|
19
|
+
*/
|
|
20
|
+
align?: null | "center" | "left" | "right"
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Alinha o header da coluna, os valores válidos são à esquerda, à direita e ao centro.
|
|
24
|
+
*/
|
|
25
|
+
alignHeader?: null | "center" | "left" | "right"
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Classe de estilo do componente.
|
|
29
|
+
*/
|
|
30
|
+
className?: string
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Define se o campo vai ser ordernado
|
|
34
|
+
*/
|
|
35
|
+
sort?: boolean
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Conteúdo do corpo da coluna.
|
|
39
|
+
*/
|
|
40
|
+
body?: (data: any, options: ColumnBodyOptions) => React.ReactNode
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Define as propriedades `css` para cada coluna
|
|
44
|
+
*/
|
|
45
|
+
style?: CSSProperties
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Define se coluna vai ser congelada e qual posição
|
|
49
|
+
*/
|
|
50
|
+
frozen?: boolean
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
interface TableSortProps {
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Método para realizar ordernação manual
|
|
57
|
+
*/
|
|
58
|
+
onSort?(field: string, order: SortOrder): void
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
interface TableGroupProps {
|
|
62
|
+
/**
|
|
63
|
+
* Define a representação do objeto de agrupamento
|
|
64
|
+
*/
|
|
65
|
+
rowGroup?: string
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Define o tipo de agrupamento da tabela
|
|
69
|
+
*/
|
|
70
|
+
rowGroupMode?: "subheader" | "rowgroup"
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Define se o agrupamento vai ser expandido ou não
|
|
74
|
+
*/
|
|
75
|
+
rowExpandable?: boolean
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Define o template do agrupamento - Header
|
|
79
|
+
*/
|
|
80
|
+
rowGroupHeaderTemplate?: any
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Define o template do agrupamento - Footer
|
|
84
|
+
*/
|
|
85
|
+
rowGroupFooterTemplate?: any
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Define as tipagens `default` de todos os componentes do pacote
|
|
90
|
+
*/
|
|
91
|
+
interface ApiComponentProps {
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Adiciona no atributo `class` do componente o valor atribuido nessa propriedade
|
|
95
|
+
*/
|
|
96
|
+
className?: string
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Define o tamanho da box do componente de acordo com o valores abaixo
|
|
100
|
+
*/
|
|
101
|
+
size?: "5" | "10" | "12-5" | "15" | "17-5" | "20" | "22-5" | "25" | "30" | "33" | "35" | "40" | "45" | "50" | "55" | "60" | "65" | "70" | "75" | "80" | "85" | "90" | "95" | "100"
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Define as propriedades css do component `style`
|
|
105
|
+
*/
|
|
106
|
+
css?: CSSProperties
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
interface TableStyleProps {
|
|
110
|
+
/**
|
|
111
|
+
* Define estilo da tabela como listrada
|
|
112
|
+
*/
|
|
113
|
+
styleStriped?: boolean
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Define estilo da tabela quando passa mouse sobre a linha da tabela
|
|
117
|
+
*/
|
|
118
|
+
styleHover?: boolean
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Define se as coluna das tabela por ser redimensionadas
|
|
122
|
+
*/
|
|
123
|
+
styleResizable?: boolean
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Define estilo da tabela com bordar ou sem borda
|
|
127
|
+
*/
|
|
128
|
+
styleType?: "bordered" | "borderless"
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Define o tamanho da tabela.
|
|
132
|
+
*/
|
|
133
|
+
styleSize?: "small"
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
interface TableTemplateProps {
|
|
137
|
+
/**
|
|
138
|
+
* Conteúdo do cabeçalho personalizado.
|
|
139
|
+
*/
|
|
140
|
+
templeteHeader?: React.ReactNode
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Conteúdo do rodapé personalizado.
|
|
144
|
+
*/
|
|
145
|
+
templateFooter?: React.ReactNode
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Contéudo personalizado do lado esquerdo do elemento de `paginação`
|
|
149
|
+
*/
|
|
150
|
+
templatePaginationLeft?: React.ReactNode
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Contéudo personalizado do lado direiro do elemento de `paginação`
|
|
154
|
+
*/
|
|
155
|
+
templatePaginationRight?: React.ReactNode
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
interface TableSelectionProps {
|
|
159
|
+
/**
|
|
160
|
+
* Objeto selecionando dentro da tabela
|
|
161
|
+
*/
|
|
162
|
+
selection?: any
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Define qual tipo de seleção
|
|
166
|
+
*/
|
|
167
|
+
selectionMode?: "single" | "checkbox"
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Realiza a seleção do element
|
|
171
|
+
*/
|
|
172
|
+
onSelection?(value: any): void
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
interface TablePaginationProps {
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Define se tabela vai utilizar paginação de resultado
|
|
179
|
+
*/
|
|
180
|
+
paginator?: boolean
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Define o numero de elemento por página
|
|
184
|
+
*/
|
|
185
|
+
paginatorRow?: 5 | 10 | 15 | 20 | 25 | 50 | 100
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Define o alinhamento da paginação
|
|
189
|
+
*/
|
|
190
|
+
paginatorAlign?: "end" | "center" | "start"
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Método para realizar paginação manual
|
|
194
|
+
*/
|
|
195
|
+
onPaginator?(number: number, elements: number): void
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
type TableLazyProps = {
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Define qual campo vem com a ordernação padrão do back-end
|
|
202
|
+
*/
|
|
203
|
+
sortField?: string
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Define qual é o tipo de ordenação padrão do back-end
|
|
207
|
+
*/
|
|
208
|
+
sortOrder?: SortOrder
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Define qual é paginação inicial
|
|
212
|
+
*/
|
|
213
|
+
paginationPage?: number
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Define o número total de registro da tabela
|
|
217
|
+
*/
|
|
218
|
+
paginationTotal?: number
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
interface TableProps<T> extends TableStyleProps, TableSelectionProps, TableTemplateProps, TableSortProps, TablePaginationProps, TableGroupProps, ApiComponentProps {
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Uma matriz de objeto que renderiza o cabeçalho
|
|
225
|
+
*/
|
|
226
|
+
column: Array<TableColumnProps>
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Uma matriz de objetos a serem exibidos.
|
|
230
|
+
*/
|
|
231
|
+
data: Array<T>
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Texto a ser exibido quando não há dados.
|
|
235
|
+
*/
|
|
236
|
+
emptyMessage?: string
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* Define se a gerenciamento da tabela vai ser manual ou dinamica
|
|
240
|
+
*/
|
|
241
|
+
lazy?: TableLazyProps
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Componente - `Table`
|
|
246
|
+
*
|
|
247
|
+
* Um componente versátil que pode ser utilizado para criar tabela de dados.
|
|
248
|
+
* Permite personalizar o estilo e o conteúdo através de propriedades.
|
|
249
|
+
*/
|
|
250
|
+
declare function Table<T = any>(props: TableProps<T>): React.JSX.Element;
|
|
251
|
+
|
|
252
|
+
type ITableProps<T = any> = TableProps<T>;
|
|
253
|
+
type ITableColumnProps = TableColumnProps;
|
|
254
|
+
type ITableLazyProps = TableLazyProps;
|
|
255
|
+
|
|
256
|
+
export { type ITableColumnProps, type ITableLazyProps, type ITableProps, Table };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e,{useState as t}from"react";import{classNames as o}from"primereact/utils";import{Column as a}from"primereact/column";import{DataTable as r}from"primereact/datatable";const n=({children:t,...a})=>{const r={size:`box-size-${a.size??"100"}`,direction:`box-direction-${a.direction??"row"}`,justify:void 0===a.justify?"":Array.isArray(a.justify)?a.justify?.join(" "):a.justify,align:void 0===a.align?"":Array.isArray(a.align)?a.align?.join(" "):a.align},n={className:o(["box",a.className??"",r.size,r.direction,r.justify,r.align]),style:a.css};return e.createElement("div",{...n},t)};function i(e){return{value:e.data,dataKey:"id",lazy:void 0!==e.lazy,resizableColumns:e.styleResizable??!1,columnResizeMode:"expand",emptyMessage:e.emptyMessage??"Não há informações disponíveis no momento.",header:e.templeteHeader,footer:e.templateFooter}}function l(e){return{sortField:e.lazy?.sortField,sortOrder:e.lazy?.sortOrder??null,onSort:void 0!==e.lazy?function(t){e.onSort&&e.onSort(t.sortField,t.sortOrder)}:void 0}}function s(e,t,o){return{groupRowsBy:e.rowGroup,rowGroupMode:e.rowGroupMode,rowGroupHeaderTemplate:e.rowGroupHeaderTemplate,rowGroupFooterTemplate:e.rowGroupFooterTemplate,expandableRowGroups:e.rowExpandable??!1,expandedRows:t,onRowToggle(e){o(e.data)}}}function d(e){return{metaKeySelection:void 0!==e.onSelection,selection:e.selection,selectionMode:void 0!==e.onSelection?e.selectionMode??"single":void 0,onSelectionChange:function(t){e.onSelection&&e.onSelection(t.value)}}}function p(t){return{paginator:t.paginator??!1,paginatorClassName:"pagination",totalRecords:t?.lazy?.paginationTotal??void 0,first:void 0===t?.lazy?.paginationPage?0:((t?.lazy?.paginationPage??0)-1)*(t.paginatorRow??10),rows:t.paginator?t.paginatorRow??10:void 0,rowsPerPageOptions:[5,10,15,20,50,100],paginatorTemplate:{layout:"RowsPerPageDropdown FirstPageLink PageLinks LastPageLink CurrentPageReport",CurrentPageReport:t=>e.createElement("p",{className:"text-secondary mx-2",style:{fontSize:".9em"}},"Total de registros: ",t.totalRecords),RowsPerPageDropdown:t=>e.createElement("select",{className:"form-select form-select-sm mx-2",style:{maxWidth:"60px"},value:t.value,onChange:e=>{const o={};o.value=e.target.value,t.onChange(o)}},t.options.map((t=>e.createElement("option",{key:t.value,value:t.value},t.label))))},paginatorRight:t.templatePaginationRight,paginatorLeft:t.templatePaginationLeft,onPage:void 0!==t.lazy?function(e){let o=e.first/(t.paginatorRow??10);t.onPaginator&&t.onPaginator(o+1,e.rows)}:void 0}}function c(e){return{root:{className:"table-responsive"},table:{className:o(["table",e.styleHover?"table-hover":"",e.styleStriped?"table-striped":"","small"===e.styleSize?"table-sm":"","bordered"===e.styleType?"table-bordered":"borderless"===e.styleType?"table-borderless":""])},header:{className:"table-header"},footer:{className:"table-footer"},paginator:{root:{className:o(["p-0 d-flex mb-1 mt-2",`justify-content-${e.paginatorAlign??"center"}`]),style:{borderTop:"none"}},firstPageButton:{style:{borderTopLeftRadius:"3px",borderBottomLeftRadius:"3px"}},lastPageButton:{style:{borderTopRightRadius:"3px",borderBottomRightRadius:"3px"}}}}}function m(){return{sort:{className:"table-sort"},headerCell:e=>({className:o([e?.context.sorted?"table-sort-active":""])}),bodyCell:{className:"table-resizable"}}}function g(o){const[g,u]=t([]);return e.createElement(n,{className:"p-0",size:o.size??"100"},e.createElement(r,{pt:{...c(o)},tableClassName:o.className,...i(o),...l(o),...d(o),...p(o),...s(o,g,u)},"checkbox"===o.selectionMode&&e.createElement(a,{align:"center",headerStyle:{width:"2.5rem"},pt:{...m()},selectionMode:"multiple"}),o.column.map((t=>e.createElement(a,{unstyled:!0,align:t.align,alignFrozen:t.frozen?"right":void 0,alignHeader:t.alignHeader,body:t.body,field:t.id,frozen:void 0!==t.frozen,header:t.header,key:t.id,pt:{...m()},sortable:t.sort??!1,style:t.style})))))}export{g as Table};
|
|
2
|
+
//# sourceMappingURL=index.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../src/box/box.tsx","../../src/table/core/core.tsx","../../src/table/core/sort.tsx","../../src/table/core/group.tsx","../../src/table/core/selection.tsx","../../src/table/core/pagination.tsx","../../src/table/styled.ts","../../src/table/table.tsx"],"sourcesContent":["import { BoxProps } from \"./types\";\r\nimport React, { HTMLAttributes } from \"react\";\r\nimport { classNames } from \"primereact/utils\";\r\n\r\n/**\r\n * Componente - `Box`\r\n *\r\n * Um componente versátil que pode ser utilizado para criar seções ou caixas em uma página.\r\n * Permite personalizar o estilo e o conteúdo através de propriedades.\r\n *\r\n * Exemplo de uso:\r\n * ```tsx\r\n * <Box align=\"align-items-center\"\r\n * justify=\"justify-content-end\"\r\n * size=\"25\">\r\n * ...conteúdo HTML\r\n * </Box>\r\n * ```\r\n */\r\nexport const Box = ({ children, ...props }: BoxProps) => {\r\n const css = {\r\n size: `box-size-${(props.size ?? \"100\")}`,\r\n direction: `box-direction-${props.direction ?? \"row\"}`,\r\n justify: props.justify === undefined ? \"\" : Array.isArray(props.justify) ? props.justify?.join(\" \") : props.justify,\r\n align: props.align === undefined ? \"\" : Array.isArray(props.align) ? props.align?.join(\" \") : props.align\r\n };\r\n\r\n const attr: HTMLAttributes<\"div\"> & Omit<BoxProps, \"children\"> = {\r\n className: classNames([\r\n \"box\",\r\n props.className ?? \"\",\r\n css.size,\r\n css.direction,\r\n css.justify,\r\n css.align\r\n ]),\r\n style: props.css\r\n };\r\n\r\n return (\r\n <div {...attr as any}>{children}</div>\r\n );\r\n};","import { TableProps } from \"../types\";\r\nimport { DataTableBaseProps } from \"primereact/datatable\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Define as configurações do modo principal da tabela.\r\n */\r\nexport function tableCore(\r\n props: TableProps<any>\r\n): Partial<DataTableBaseProps<any>> {\r\n return {\r\n value: props.data as any,\r\n dataKey: \"id\",\r\n lazy: props.lazy !== undefined,\r\n resizableColumns: props.styleResizable ?? false,\r\n columnResizeMode: \"expand\",\r\n emptyMessage: props.emptyMessage ?? \"Não há informações disponíveis no momento.\",\r\n header: props.templeteHeader,\r\n footer: props.templateFooter\r\n };\r\n}","import { TableProps } from \"../types\";\r\nimport { DataTableProps, DataTableStateEvent } from \"primereact/datatable\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Define as configurações do modo de ordenação de resultado.\r\n */\r\nexport function tableSort(\r\n props: TableProps<any>\r\n): Partial<DataTableProps<any>> {\r\n\r\n function onSort(event: DataTableStateEvent) {\r\n if (props.onSort) {\r\n props.onSort(event.sortField, event.sortOrder);\r\n }\r\n }\r\n\r\n return {\r\n sortField: props.lazy?.sortField,\r\n sortOrder: props.lazy?.sortOrder ?? null,\r\n onSort: props.lazy !== undefined ? onSort : undefined\r\n };\r\n}","import React from \"react\";\r\nimport { TableProps } from \"../types\";\r\nimport { DataTableBaseProps, DataTableRowToggleEvent } from \"primereact/datatable\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Define as configurações de agrupamento da tabela.\r\n */\r\nexport function tableGroup(\r\n props: TableProps<any>,\r\n expandedRows: any,\r\n setExpandedRows: React.Dispatch<any>\r\n): Partial<DataTableBaseProps<any>> {\r\n return {\r\n groupRowsBy: props.rowGroup,\r\n rowGroupMode: props.rowGroupMode,\r\n rowGroupHeaderTemplate: props.rowGroupHeaderTemplate,\r\n rowGroupFooterTemplate: props.rowGroupFooterTemplate,\r\n expandableRowGroups: props.rowExpandable ?? false,\r\n expandedRows: expandedRows,\r\n onRowToggle(event: DataTableRowToggleEvent) {\r\n setExpandedRows(event.data);\r\n }\r\n };\r\n}","import { TableProps } from \"../types\";\r\nimport { DataTableProps, DataTableSelectionSingleChangeEvent } from \"primereact/datatable\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Define as configurações do modo de seleção de dados.\r\n */\r\nexport function tableSelection(\r\n props: TableProps<any>\r\n): Partial<DataTableProps<any>> {\r\n\r\n function onSelect(e: DataTableSelectionSingleChangeEvent<any>) {\r\n if (props.onSelection) {\r\n props.onSelection(e.value);\r\n }\r\n }\r\n\r\n return {\r\n metaKeySelection: props.onSelection !== undefined,\r\n selection: props.selection,\r\n selectionMode: props.onSelection !== undefined ? (props.selectionMode as any ?? \"single\") : undefined,\r\n onSelectionChange: onSelect,\r\n };\r\n}","import React from \"react\";\r\nimport { TableProps } from \"../types\";\r\nimport { PaginatorChangeEvent } from \"primereact/paginator\";\r\nimport { DataTableBaseProps, DataTableStateEvent } from \"primereact/datatable\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Define as configurações do modo de paginação de resultado.\r\n */\r\nexport function tablePagination(\r\n props: TableProps<any>\r\n): Partial<DataTableBaseProps<any>> {\r\n\r\n function onPage(event: DataTableStateEvent) {\r\n let paginationPage = event.first / (props.paginatorRow ?? 10);\r\n if (props.onPaginator) {\r\n props.onPaginator(paginationPage + 1, event.rows);\r\n }\r\n }\r\n\r\n return {\r\n paginator: props.paginator ?? false,\r\n paginatorClassName: \"pagination\",\r\n totalRecords: props?.lazy?.paginationTotal ?? undefined,\r\n first: props?.lazy?.paginationPage === undefined ? 0 : ((props?.lazy?.paginationPage ?? 0) - 1) * (props.paginatorRow ?? 10),\r\n rows: props.paginator ? (props.paginatorRow ?? 10) : undefined,\r\n rowsPerPageOptions: [5, 10, 15, 20, 50, 100],\r\n paginatorTemplate: {\r\n layout: \"RowsPerPageDropdown FirstPageLink PageLinks LastPageLink CurrentPageReport\",\r\n CurrentPageReport: options => {\r\n return (\r\n <p className=\"text-secondary mx-2\"\r\n style={{ fontSize: \".9em\" }}>Total de registros: {options.totalRecords}</p>\r\n );\r\n },\r\n RowsPerPageDropdown: options => {\r\n return (\r\n <select className=\"form-select form-select-sm mx-2\"\r\n style={{ maxWidth: \"60px\" }}\r\n value={options.value}\r\n onChange={(e) => {\r\n const event = {} as PaginatorChangeEvent;\r\n event.value = e.target.value;\r\n options.onChange(event);\r\n }}>\r\n {options.options.map(obj => <option key={obj.value}\r\n value={obj.value}>{obj.label}</option>)}\r\n </select>\r\n );\r\n }\r\n },\r\n paginatorRight: props.templatePaginationRight,\r\n paginatorLeft: props.templatePaginationLeft,\r\n onPage: props.lazy !== undefined ? onPage : undefined,\r\n };\r\n}","import { TableProps } from \"./types\";\r\nimport { classNames } from \"primereact/utils\";\r\nimport { ColumnPassThroughOptions } from \"primereact/column\";\r\nimport { DataTablePassThroughOptions } from \"primereact/datatable\";\r\n\r\n/**\r\n * Realiza a personalização na TABLE\r\n */\r\nexport function bootstrapTableStyle(props: TableProps<any>): DataTablePassThroughOptions {\r\n return {\r\n root: {\r\n className: \"table-responsive\"\r\n },\r\n table: {\r\n className: classNames([\r\n \"table\",\r\n props.styleHover ? \"table-hover\" : \"\",\r\n props.styleStriped ? \"table-striped\" : \"\",\r\n props.styleSize === \"small\" ? \"table-sm\" : \"\",\r\n props.styleType === \"bordered\" ? \"table-bordered\" : props.styleType === \"borderless\" ? \"table-borderless\" : \"\",\r\n ]),\r\n },\r\n header: {\r\n className: \"table-header\",\r\n },\r\n footer: {\r\n className: \"table-footer\"\r\n },\r\n paginator: {\r\n root: {\r\n className: classNames([\r\n \"p-0 d-flex mb-1 mt-2\",\r\n `justify-content-${props.paginatorAlign ?? \"center\"}`\r\n ]),\r\n style: { borderTop: \"none\" }\r\n },\r\n firstPageButton: {\r\n style: { borderTopLeftRadius: \"3px\", borderBottomLeftRadius: \"3px\" }\r\n },\r\n lastPageButton: {\r\n style: { borderTopRightRadius: \"3px\", borderBottomRightRadius: \"3px\" }\r\n }\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Realiza a personalização na COLUNA da tabela\r\n */\r\nexport function bootstrapColumnStyle(): ColumnPassThroughOptions {\r\n\r\n return {\r\n sort: {\r\n className: \"table-sort\"\r\n },\r\n headerCell: (options) => {\r\n return {\r\n className: classNames([\r\n options?.context.sorted ? \"table-sort-active\" : \"\",\r\n ])\r\n };\r\n },\r\n bodyCell: {\r\n className: \"table-resizable\"\r\n },\r\n };\r\n}","import React, { useState } from \"react\";\r\nimport { Box } from \"../box\";\r\nimport { TableProps } from \"./types\";\r\nimport { tableCore } from \"./core/core\";\r\nimport { tableSort } from \"./core/sort\";\r\nimport { tableGroup } from \"./core/group\";\r\nimport { Column } from \"primereact/column\";\r\nimport { DataTable } from \"primereact/datatable\";\r\nimport { tableSelection } from \"./core/selection\";\r\nimport { tablePagination } from \"./core/pagination\";\r\nimport { bootstrapColumnStyle, bootstrapTableStyle } from \"./styled\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Um componente versátil que pode ser utilizado para criar tabela de dados.\r\n * Permite personalizar o estilo e o conteúdo através de propriedades.\r\n */\r\nexport function Table<T = any>(props: TableProps<T>) {\r\n const [expandedRows, setExpandedRows] = useState([]);\r\n\r\n /*\r\n |------------------------------------------\r\n | render() - Renderização do componente\r\n |------------------------------------------\r\n */\r\n return (\r\n <Box className=\"p-0\"\r\n size={props.size ?? \"100\"}>\r\n {/*@ts-ignore*/}\r\n <DataTable<any>\r\n pt={{ ...bootstrapTableStyle(props) }}\r\n tableClassName={props.className}\r\n {...tableCore(props)}\r\n {...tableSort(props)}\r\n {...tableSelection(props)}\r\n {...tablePagination(props)}\r\n {...tableGroup(props, expandedRows, setExpandedRows)}>\r\n {props.selectionMode === \"checkbox\"\r\n && <Column align=\"center\"\r\n headerStyle={{ width: \"2.5rem\" }}\r\n pt={{ ...bootstrapColumnStyle() }}\r\n selectionMode=\"multiple\"/>}\r\n {props.column.map(obj => {\r\n return (\r\n <Column\r\n unstyled\r\n align={obj.align}\r\n alignFrozen={obj.frozen ? \"right\" : undefined}\r\n alignHeader={obj.alignHeader}\r\n body={obj.body}\r\n field={obj.id}\r\n frozen={obj.frozen !== undefined}\r\n header={obj.header}\r\n key={obj.id}\r\n pt={{ ...bootstrapColumnStyle() }}\r\n sortable={obj.sort ?? false}\r\n style={obj.style}/>\r\n );\r\n })}\r\n </DataTable>\r\n </Box>\r\n );\r\n}"],"names":["Box","children","props","css","size","direction","justify","undefined","Array","isArray","join","align","attr","className","classNames","style","React","createElement","tableCore","value","data","dataKey","lazy","resizableColumns","styleResizable","columnResizeMode","emptyMessage","header","templeteHeader","footer","templateFooter","tableSort","sortField","sortOrder","onSort","event","tableGroup","expandedRows","setExpandedRows","groupRowsBy","rowGroup","rowGroupMode","rowGroupHeaderTemplate","rowGroupFooterTemplate","expandableRowGroups","rowExpandable","onRowToggle","tableSelection","metaKeySelection","onSelection","selection","selectionMode","onSelectionChange","e","tablePagination","paginator","paginatorClassName","totalRecords","paginationTotal","first","paginationPage","paginatorRow","rows","rowsPerPageOptions","paginatorTemplate","layout","CurrentPageReport","options","fontSize","RowsPerPageDropdown","maxWidth","onChange","target","map","obj","key","label","paginatorRight","templatePaginationRight","paginatorLeft","templatePaginationLeft","onPage","onPaginator","bootstrapTableStyle","root","table","styleHover","styleStriped","styleSize","styleType","paginatorAlign","borderTop","firstPageButton","borderTopLeftRadius","borderBottomLeftRadius","lastPageButton","borderTopRightRadius","borderBottomRightRadius","bootstrapColumnStyle","sort","headerCell","context","sorted","bodyCell","Table","useState","DataTable","pt","tableClassName","Column","headerStyle","width","column","unstyled","alignFrozen","frozen","alignHeader","body","field","id","sortable"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("jquery"),t=require("axios"),a=require("node-snackbar"),s=require("sweetalert2");function n(e){let t=window.self===window.top?window:window.parent;const{message:a,library:s,type:n,options:r}=e;t.postMessage({type:"message",params:{message:a,options:r,type:n??"message",library:s??"snackbar"}},"*")}function r(e){let{message:t,library:n,type:r,options:i}=e;switch(n=n??"snackbar",n){case"sweetAlert":let e={icon:t.type,title:t.title,text:t.text};if("toast"===r){let t=i??{toast:!0,position:"top-end",showConfirmButton:!1,timer:3e3,timerProgressBar:!0,didOpen:e=>{e.onmouseenter=s.stopTimer,e.onmouseleave=s.resumeTimer}};s.mixin(t).fire(e)}else s.fire({...e,...i});break;case"snackbar":let n=i,o=t.message??t.text??t.title??"Não foi possível carregar a mensagem.";a.show(void 0===n?{pos:"top-right",showAction:!1,customClass:t.type,text:"<p class='d-flex m-0 align-items-center'><i class='me-2 "+t.icon+"'></i>"+o+"</p>"}:n)}}function i(e){let t=document.getElementById(e),a=null===t?null:t.content.replace(".br/",".br");return null===a?null:"/"===a.substr(-1)?a.slice(0,a.length-1):a}function o(t,a){return new Promise((s=>{let n=window.self===window.top?e("body"):e(window.frameElement).parents("body");t&&0!==t.length||s(n),"#"!==t&&"."!==t||s(null);let r=n.find(t);r.length>0?s(r):setTimeout((()=>{let e=n.find("iframe").contents();0===e.length&&s(null),r=e.find(t),r.length>0&&s(r),s(null)}),a??300)}))}const l=i("auth"),d=i("react-base"),c=i("csrf-token");function m(e,t=""){let a=e;a&&(a.redirect&&(window.location.href=a.redirect),a.errors&&p(a.errors,0===t.length?"":t),a.accept&&p(a.accept,0===t.length?"":t,"is-valid"),a.message&&void 0===a?.errors&&n({message:{...a.message},type:"message",library:"snackbar"}))}function p(t,a="",s="is-invalid"){u(a,t),o("#"+a).then((a=>{if(null===a)return;let n="is-invalid"===s?"invalid-feedback":"valid-feedback",r="is-invalid"===s?"is-valid":"is-invalid";e.each(t,((e,t)=>{let i="";t.forEach((e=>i+=e+"<br>")),a.find("input[name='"+e+"']").addClass(s).parent().find("#j_feedback[data-name='"+e+"']").addClass(n).removeClass(r).html(i),a.find("input[name='"+e+"']").addClass(s).parent().parent().find("#j_feedback[data-name='"+e+"']").addClass(n).removeClass(r).html(i),a.find("input[name='"+e+"']").addClass(s).parent().parent().parent().find("#j_feedback[data-name='"+e+"']").addClass(n).removeClass(r).html(i),a.find("select[name='"+e+"']").addClass(s).parent().find("#j_feedback[data-name='"+e+"']").addClass(n).removeClass(r).html(i),a.find("textarea[name='"+e+"']").addClass(s).parent().find("#j_feedback[data-name='"+e+"']").addClass(n).removeClass(r).html(i),a.find("#j_feedback[data-name='"+e+"']").addClass(s).html(i)}))}))}function f(t=""){o("#"+t).then((t=>{if(null===t)return;let a=["is-invalid","is-valid","p-invalid"],s=["invalid-feedback","valid-feedback"];e.each(t.find("input"),(function(){e(this).removeClass(a).parent().find("#j_feedback").removeClass(s).html(""),e(this).removeClass(a).parent().parent().find("#j_feedback").removeClass(s).html(""),e(this).removeClass(a).parent().parent().parent().find("#j_feedback").removeClass(s).html("")})),e.each(t.find("select"),(function(){e(this).removeClass(a).parent().find("#j_feedback").removeClass(s).html("")})),e.each(t.find("textarea"),(function(){e(this).removeClass(a).parent().find("#j_feedback").removeClass(s).html("")})),e.each(t.find("#j_feedback"),(function(){e(this).removeClass(a).html("")}))}))}function u(t="",a){o("#"+t).then((t=>{if(null===t)return;let s=Object.keys(a)[0],n=t.find("*[id='"+s+"']").closest(".tab-pane"),r=n.attr("id"),i=n.parent().parent().find(".nav");n.parent(".tab-content").children(".tab-pane").each((function(t,a){void 0!==a&&(e(a).attr("id")===r?(e(a).addClass("show active"),i.find("button[data-bs-target='#"+r+"']").addClass("active show")):(e(a).removeClass("show active"),i.find("button[data-bs-target='#"+e(a).attr("id")+"']").removeClass("active")))}))}))}exports.BASE=d,exports.TOKEN=c,exports.USER=l,exports.getCep=async function(e){let a=0===e.length?"00000000":e.replace("-","");return await t.get("https://viacep.com.br/ws/"+a+"/json/").then((e=>e.data))},exports.getElementDOM=o,exports.getMetaContent=i,exports.message=r,exports.messageField=p,exports.messageFieldClear=f,exports.post=function(e,a,s,n){return new Promise(((r,i)=>{let o=d+(e.startsWith("/")?"":"/")+e;f(s),function(e,a){let s=0;t.interceptors.request.use((n=>(s+=1,s>1&&t.getUri(n)===e&&a?Promise.reject(new Error("Requisições bloqueadas!")):n))),a||t.interceptors.request.clear();t.interceptors.response.use((e=>(s-=1,e)),(function(e){return s-=1,Promise.reject(e)}))}(n?.url??o,n?.blockedToManyRequest??!1),t({method:"post",url:n?.url??o,headers:{"X-CSRF-TOKEN":c},data:a||{}}).then((e=>{void 0!==e?.data&&r(e.data),"boolean"==typeof n?.blockedResponse&&!1!==n?.blockedResponse||m(e?.data,s)})).catch((e=>{m(e.response?.data,s),i(e)}))}))},exports.response=m,exports.sendMessage=n,exports.tabViewActiveError=u,exports.windowMessageEvent=function(){window.addEventListener("message",(function(e){if("message"===e.data?.type){r({...e.data.params})}}))};
|
|
2
|
+
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../../src/utils/message.ts","../../src/utils/helper.ts","../../src/utils/const.ts","../../src/utils/response.ts","../../src/utils/request.ts"],"sourcesContent":["import Snackbar from \"node-snackbar\";\r\nimport SweetAlert, { SweetAlertOptions } from \"sweetalert2\";\r\nimport { IUtilsMessage, IUtilsMessageOptions } from \"./types\";\r\n\r\n/**\r\n * Envia a mensagem para o evento da janela\r\n */\r\nexport function sendMessage<T extends keyof IUtilsMessageOptions>(params: IUtilsMessage<T>) {\r\n let Window: Window = window.self === window.top ? window : window.parent;\r\n const { message, library, type, options } = params;\r\n Window.postMessage({\r\n type: \"message\",\r\n params: {\r\n message,\r\n options,\r\n type: type ?? \"message\",\r\n library: library ?? \"snackbar\"\r\n }\r\n }, \"*\");\r\n}\r\n\r\n/**\r\n * Retorna o objeto mensagem de acordo com os parâmetros\r\n */\r\nexport function message<T extends keyof IUtilsMessageOptions>(params: IUtilsMessage<T>) {\r\n let { message, library, type, options } = params;\r\n\r\n library = library ?? \"snackbar\";\r\n switch (library) {\r\n case \"sweetAlert\":\r\n let swal: any = {\r\n icon: message.type,\r\n title: message.title,\r\n text: message.text\r\n };\r\n if (type === \"toast\") {\r\n let config: SweetAlertOptions = options as SweetAlertOptions ?? {\r\n toast: true,\r\n position: \"top-end\",\r\n showConfirmButton: false,\r\n timer: 3000,\r\n timerProgressBar: true,\r\n didOpen: (toast) => {\r\n toast.onmouseenter = SweetAlert.stopTimer;\r\n toast.onmouseleave = SweetAlert.resumeTimer;\r\n }\r\n };\r\n const Toast = SweetAlert.mixin(config);\r\n Toast.fire(swal);\r\n } else {\r\n SweetAlert.fire({ ...swal, ...options });\r\n }\r\n break;\r\n case \"snackbar\":\r\n let config: any = options;\r\n let text: string = message.message ?? message.text ?? message.title ?? \"Não foi possível carregar a mensagem.\";\r\n Snackbar.show(config === undefined ? {\r\n pos: \"top-right\",\r\n showAction: false,\r\n customClass: message.type,\r\n text: \"<p class='d-flex m-0 align-items-center'><i class='me-2 \" + message.icon + \"'></i>\" + text + \"</p>\",\r\n } : config);\r\n break;\r\n }\r\n}","import $ from \"jquery\";\r\nimport axios from \"axios\";\r\nimport { message } from \"./message\";\r\nimport { IUtilsHelperResponse } from \"./types\";\r\n\r\n/**\r\n * Realiza a pesquisa do elemento html na DOM<br>\r\n * <meta id=\"???\" name=\"???\" content=\"your-url\">\r\n */\r\nexport function getMetaContent(id: string): string | null {\r\n let element: any = document.getElementById(id);\r\n let url: null | string = element === null ? null : (element.content).replace(\".br/\", \".br\");\r\n return url === null ? null : url.substr(-1) === \"/\" ? url.slice(0, url.length - 1) : url;\r\n}\r\n\r\n/**\r\n * Realiza a pesquisa do CEP na API pública \"https://viacep.com.br/ws/\"\r\n */\r\nexport async function getCep(value: string): Promise<IUtilsHelperResponse[\"gep_cep\"]> {\r\n let cep = value.length === 0 ? \"00000000\" : value.replace(\"-\", \"\");\r\n return await axios.get<IUtilsHelperResponse[\"gep_cep\"]>(\"https://viacep.com.br/ws/\" + cep + \"/json/\")\r\n .then(data => data.data);\r\n}\r\n\r\n/**\r\n * Realiza a pesquisa do elemento na árvore DOM\r\n */\r\nexport function getElementDOM(element?: string, preloadTimeOut?: number): Promise<null | JQuery<HTMLElement>> {\r\n return new Promise((resolve) => {\r\n // @ts-ignore\r\n let body = window.self === window.top ? $(\"body\") : $(window.frameElement).parents(\"body\");\r\n if (!element || element.length === 0) {\r\n resolve(body);\r\n }\r\n\r\n if (element === \"#\" || element === \".\") {\r\n resolve(null);\r\n }\r\n\r\n let elementFound = body.find(element);\r\n if (elementFound.length > 0) {\r\n resolve(elementFound);\r\n } else {\r\n setTimeout(() => {\r\n let iframe = body.find(\"iframe\").contents();\r\n if (iframe.length === 0) {\r\n resolve(null);\r\n }\r\n elementFound = iframe.find(element);\r\n if (elementFound.length > 0) {\r\n resolve(elementFound);\r\n }\r\n resolve(null);\r\n }, preloadTimeOut ?? 300);\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Permite à comunicação de origem cruzada entre objetos do Windows.<br>\r\n * Exemplo: Comunicação entre iframe e corpo principal\r\n */\r\nexport function windowMessageEvent(): void {\r\n window.addEventListener(\"message\", function (event: MessageEvent) {\r\n if (event.data?.type === \"message\") {\r\n let data = event.data;\r\n message<any>({ ...data.params });\r\n }\r\n });\r\n}","import { getMetaContent } from \"./helper\";\r\n\r\nexport const USER: string | null = getMetaContent(\"auth\");\r\nexport const BASE: string | null = getMetaContent(\"react-base\");\r\nexport const TOKEN: string | null = getMetaContent(\"csrf-token\");\r\n","import $ from \"jquery\";\r\nimport { sendMessage } from \"./message\";\r\nimport { getElementDOM } from \"./helper\";\r\nimport { IUtilsResponseType, IUtilsResponseError } from \"./types\";\r\n\r\n/**\r\n * Realizei o gerenciamento do objeto de resposta\r\n */\r\nexport function response<Type>(\r\n response: IUtilsResponseType<Type>,\r\n form: string = \"\"\r\n): void {\r\n let data: IUtilsResponseType<Type> = response;\r\n if (!data) {\r\n return;\r\n }\r\n\r\n if (data.redirect) {\r\n window.location.href = data.redirect;\r\n }\r\n\r\n if (data.errors) {\r\n messageField(data.errors, form.length === 0 ? \"\" : form);\r\n }\r\n\r\n if (data.accept) {\r\n messageField(data.accept, form.length === 0 ? \"\" : form, \"is-valid\");\r\n }\r\n\r\n if (data.message && data?.errors === undefined) {\r\n sendMessage<\"snackbar\">({\r\n message: { ...data.message },\r\n type: \"message\",\r\n library: \"snackbar\"\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Exibe a mensagem no campo do formulário\r\n */\r\nexport function messageField(\r\n data: IUtilsResponseError,\r\n form: string = \"\",\r\n type: string = \"is-invalid\"\r\n): void {\r\n tabViewActiveError(form, data);\r\n getElementDOM(\"#\" + form)\r\n .then(formulario => {\r\n if (formulario === null) {\r\n return;\r\n }\r\n\r\n let validationFeedbackClass: string = type === \"is-invalid\" ? \"invalid-feedback\" : \"valid-feedback\";\r\n let removeValidationFeedbackClass: string = type === \"is-invalid\" ? \"is-valid\" : \"is-invalid\";\r\n\r\n $.each(data, (key: string, value) => {\r\n let text = \"\";\r\n value.forEach(value => text += value + \"<br>\");\r\n\r\n formulario.find(\"input[name='\" + key + \"']\")\r\n .addClass(type)\r\n .parent()\r\n .find(\"#j_feedback[data-name='\" + key + \"']\")\r\n .addClass(validationFeedbackClass)\r\n .removeClass(removeValidationFeedbackClass)\r\n .html(text);\r\n\r\n formulario.find(\"input[name='\" + key + \"']\")\r\n .addClass(type)\r\n .parent()\r\n .parent()\r\n .find(\"#j_feedback[data-name='\" + key + \"']\")\r\n .addClass(validationFeedbackClass)\r\n .removeClass(removeValidationFeedbackClass)\r\n .html(text);\r\n\r\n formulario.find(\"input[name='\" + key + \"']\")\r\n .addClass(type)\r\n .parent()\r\n .parent()\r\n .parent()\r\n .find(\"#j_feedback[data-name='\" + key + \"']\")\r\n .addClass(validationFeedbackClass)\r\n .removeClass(removeValidationFeedbackClass)\r\n .html(text);\r\n\r\n formulario.find(\"select[name='\" + key + \"']\")\r\n .addClass(type)\r\n .parent()\r\n .find(\"#j_feedback[data-name='\" + key + \"']\")\r\n .addClass(validationFeedbackClass)\r\n .removeClass(removeValidationFeedbackClass)\r\n .html(text);\r\n\r\n formulario.find(\"textarea[name='\" + key + \"']\")\r\n .addClass(type)\r\n .parent()\r\n .find(\"#j_feedback[data-name='\" + key + \"']\")\r\n .addClass(validationFeedbackClass)\r\n .removeClass(removeValidationFeedbackClass)\r\n .html(text);\r\n\r\n formulario.find(\"#j_feedback[data-name='\" + key + \"']\")\r\n .addClass(type)\r\n .html(text);\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * Limpar as mensagens de feedback do formulário\r\n */\r\nexport function messageFieldClear(\r\n form: string = \"\"\r\n): void {\r\n getElementDOM(\"#\" + form)\r\n .then(formulario => {\r\n if (formulario === null) {\r\n return;\r\n }\r\n\r\n let validationClass: string[] = [\"is-invalid\", \"is-valid\", \"p-invalid\"];\r\n let validationFeedbackClass: string[] = [\"invalid-feedback\", \"valid-feedback\"];\r\n\r\n $.each(formulario.find(\"input\"), function () {\r\n $(this)\r\n .removeClass(validationClass)\r\n .parent()\r\n .find(\"#j_feedback\")\r\n .removeClass(validationFeedbackClass)\r\n .html(\"\");\r\n\r\n $(this)\r\n .removeClass(validationClass)\r\n .parent()\r\n .parent()\r\n .find(\"#j_feedback\")\r\n .removeClass(validationFeedbackClass)\r\n .html(\"\");\r\n\r\n $(this)\r\n .removeClass(validationClass)\r\n .parent()\r\n .parent()\r\n .parent()\r\n .find(\"#j_feedback\")\r\n .removeClass(validationFeedbackClass)\r\n .html(\"\");\r\n });\r\n\r\n $.each(formulario.find(\"select\"), function () {\r\n $(this)\r\n .removeClass(validationClass)\r\n .parent()\r\n .find(\"#j_feedback\")\r\n .removeClass(validationFeedbackClass)\r\n .html(\"\");\r\n });\r\n\r\n $.each(formulario.find(\"textarea\"), function () {\r\n $(this)\r\n .removeClass(validationClass)\r\n .parent()\r\n .find(\"#j_feedback\")\r\n .removeClass(validationFeedbackClass)\r\n .html(\"\");\r\n });\r\n\r\n $.each(formulario.find(\"#j_feedback\"), function () {\r\n $(this).removeClass(validationClass).html(\"\");\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * Ativa o TabView quando o campo apresenta erro\r\n */\r\nexport function tabViewActiveError(\r\n form: string = \"\",\r\n errors: IUtilsResponseError\r\n): void {\r\n getElementDOM(\"#\" + form)\r\n .then(TabView => {\r\n if (TabView === null) {\r\n return;\r\n }\r\n\r\n let fieldError = Object.keys(errors)[0];\r\n\r\n let TabViewSelected = TabView.find(\"*[id='\" + fieldError + \"']\").closest(\".tab-pane\");\r\n let TabViewSelectedId = TabViewSelected.attr(\"id\");\r\n let TabViewNav = TabViewSelected.parent().parent().find(\".nav\");\r\n\r\n TabViewSelected.parent(\".tab-content\").children(\".tab-pane\").each(function (_, value) {\r\n if (typeof value !== \"undefined\") {\r\n if ($(value).attr(\"id\") === TabViewSelectedId) {\r\n $(value).addClass(\"show active\");\r\n TabViewNav.find(\"button[data-bs-target='#\" + TabViewSelectedId + \"']\").addClass(\"active show\");\r\n } else {\r\n $(value).removeClass(\"show active\");\r\n TabViewNav.find(\"button[data-bs-target='#\" + $(value).attr(\"id\") + \"']\").removeClass(\"active\");\r\n }\r\n }\r\n });\r\n });\r\n}","import axios from \"axios\";\r\nimport { BASE, TOKEN } from \"./const\";\r\nimport { messageFieldClear, response } from \"./response\";\r\nimport { IUtilsRequestPostOptions, IUtilsResponseType } from \"./types\";\r\n\r\n/**\r\n * Simplifica a solicitação POST HTTP usando a biblioteca axios\r\n */\r\nexport function post<TypeDataResponse = IUtilsResponseType<any>>(\r\n route: string,\r\n body: any,\r\n form?: string,\r\n options?: IUtilsRequestPostOptions\r\n): Promise<TypeDataResponse> {\r\n return new Promise((resolve, reject) => {\r\n let url = BASE + (route.startsWith(\"/\") ? \"\" : \"/\") + route;\r\n messageFieldClear(form);\r\n handleToManyRequest(options?.url ?? url, options?.blockedToManyRequest ?? false);\r\n axios<TypeDataResponse>({\r\n method: \"post\",\r\n url: options?.url ?? url,\r\n headers: { \"X-CSRF-TOKEN\": TOKEN },\r\n data: !body ? {} : body,\r\n }).then(data => {\r\n if (data?.data !== undefined) {\r\n resolve(data.data);\r\n }\r\n if (typeof options?.blockedResponse !== \"boolean\" || options?.blockedResponse === false) {\r\n response<TypeDataResponse>((data?.data as IUtilsResponseType<TypeDataResponse>), form);\r\n }\r\n }).catch(error => {\r\n response<TypeDataResponse>(error.response?.data, form);\r\n reject(error);\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * Bloqueia várias solicitações simultâneas\r\n */\r\nfunction handleToManyRequest(url: string, blocked: boolean): void {\r\n let requestCount = 0;\r\n axios.interceptors.request.use(config => {\r\n requestCount = requestCount + 1;\r\n if (requestCount > 1 && axios.getUri(config) === url && blocked) {\r\n return Promise.reject(new Error(\"Requisições bloqueadas!\"));\r\n }\r\n return config;\r\n });\r\n if (!blocked) {\r\n axios.interceptors.request.clear();\r\n }\r\n\r\n axios.interceptors.response.use(response => {\r\n requestCount = requestCount - 1;\r\n return response;\r\n }, function (error) {\r\n requestCount = requestCount - 1;\r\n return Promise.reject(error);\r\n });\r\n}"],"names":["sendMessage","params","Window","window","self","top","parent","message","library","type","options","postMessage","swal","icon","title","text","config","toast","position","showConfirmButton","timer","timerProgressBar","didOpen","onmouseenter","SweetAlert","stopTimer","onmouseleave","resumeTimer","mixin","fire","Snackbar","show","undefined","pos","showAction","customClass","getMetaContent","id","element","document","getElementById","url","replace","substr","slice","length","getElementDOM","preloadTimeOut","Promise","resolve","body","$","frameElement","parents","elementFound","find","setTimeout","iframe","contents","USER","BASE","TOKEN","response","form","data","redirect","location","href","errors","messageField","accept","tabViewActiveError","then","formulario","validationFeedbackClass","removeValidationFeedbackClass","each","key","value","forEach","addClass","removeClass","html","messageFieldClear","validationClass","this","TabView","fieldError","Object","keys","TabViewSelected","closest","TabViewSelectedId","attr","TabViewNav","children","_","async","cep","axios","get","route","reject","startsWith","blocked","requestCount","interceptors","request","use","getUri","Error","clear","error","handleToManyRequest","blockedToManyRequest","method","headers","blockedResponse","catch","addEventListener","event"],"mappings":"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"}
|