@1doc/1ds-react 2.9.0 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/CHANGELOG.md +653 -0
  2. package/dist/components/Accordion/Accordion.css +13 -0
  3. package/dist/components/Accordion/Accordion.d.ts +9 -0
  4. package/dist/components/Accordion/Accordion.js +18 -5
  5. package/dist/components/AppSubheader/AppSubheader.css +10 -1
  6. package/dist/components/AttachmentCard/AttachmentCard.css +10 -8
  7. package/dist/components/AttachmentCard/AttachmentCard.d.ts +3 -0
  8. package/dist/components/AttachmentCard/AttachmentCard.js +8 -1
  9. package/dist/components/Badge/Badge.css +27 -5
  10. package/dist/components/Badge/Badge.d.ts +20 -4
  11. package/dist/components/Badge/Badge.js +6 -0
  12. package/dist/components/Button/Button.css +5 -0
  13. package/dist/components/Button/Button.d.ts +3 -0
  14. package/dist/components/Button/Button.js +1 -0
  15. package/dist/components/Calendar/Calendar.css +10 -0
  16. package/dist/components/Calendar/Calendar.d.ts +10 -6
  17. package/dist/components/Calendar/Calendar.js +6 -1
  18. package/dist/components/Coachmark/Coachmark.css +10 -0
  19. package/dist/components/Coachmark/Coachmark.d.ts +14 -1
  20. package/dist/components/Coachmark/Coachmark.js +51 -5
  21. package/dist/components/ColorPicker/ColorPicker.css +8 -1
  22. package/dist/components/ColorPicker/ColorPicker.d.ts +2 -2
  23. package/dist/components/DataTable/DataTable.css +216 -0
  24. package/dist/components/DataTable/DataTable.d.ts +70 -2
  25. package/dist/components/DataTable/DataTable.js +293 -6
  26. package/dist/components/DescriptionList/DescriptionList.css +14 -0
  27. package/dist/components/DescriptionList/DescriptionList.d.ts +3 -0
  28. package/dist/components/DescriptionList/DescriptionList.js +1 -0
  29. package/dist/components/EmptyState/EmptyState.d.ts +4 -2
  30. package/dist/components/EmptyState/EmptyState.js +2 -2
  31. package/dist/components/Input/Input.css +30 -0
  32. package/dist/components/Input/Input.d.ts +10 -0
  33. package/dist/components/Input/Input.js +3 -1
  34. package/dist/components/List/ListItem.d.ts +14 -2
  35. package/dist/components/List/ListItem.js +3 -2
  36. package/dist/components/Modal/Modal.css +19 -0
  37. package/dist/components/Modal/Modal.d.ts +7 -0
  38. package/dist/components/Modal/Modal.js +1 -0
  39. package/dist/components/RichTextEditor/RichTextEditor.css +47 -0
  40. package/dist/components/RichTextEditor/RichTextEditor.d.ts +22 -8
  41. package/dist/components/RichTextEditor/RichTextEditor.js +460 -3
  42. package/dist/components/SegmentedControl/SegmentedControl.css +70 -0
  43. package/dist/components/SegmentedControl/SegmentedControl.d.ts +5 -0
  44. package/dist/components/SegmentedControl/SegmentedControl.js +5 -1
  45. package/dist/components/Select/Select.css +122 -2
  46. package/dist/components/Select/Select.d.ts +33 -4
  47. package/dist/components/Select/Select.js +256 -35
  48. package/dist/components/StatCard/StatCard.css +73 -0
  49. package/dist/components/StatCard/StatCard.d.ts +12 -0
  50. package/dist/components/StatCard/StatCard.js +11 -1
  51. package/dist/components/Tabs/Tabs.css +11 -0
  52. package/dist/components/Tabs/Tabs.d.ts +7 -0
  53. package/dist/components/Tabs/Tabs.js +7 -1
  54. package/dist/components/Tag/Tag.css +3 -1
  55. package/dist/components/Toast/Toast.css +32 -0
  56. package/dist/components/Toast/Toast.d.ts +18 -0
  57. package/dist/components/Toast/Toast.js +14 -1
  58. package/dist/components/Toast/ToastStack.js +8 -1
  59. package/dist/teste/AccordionControlado.test.d.ts +1 -0
  60. package/dist/teste/AccordionControlado.test.js +73 -0
  61. package/dist/teste/AccordionTituloNeutro.test.d.ts +1 -0
  62. package/dist/teste/AccordionTituloNeutro.test.js +23 -0
  63. package/dist/teste/AppSubheaderRegiao.test.d.ts +1 -0
  64. package/dist/teste/AppSubheaderRegiao.test.js +13 -0
  65. package/dist/teste/AttachmentCardLista.test.d.ts +1 -0
  66. package/dist/teste/AttachmentCardLista.test.js +49 -0
  67. package/dist/teste/AttachmentCardSm.test.d.ts +1 -0
  68. package/dist/teste/AttachmentCardSm.test.js +26 -0
  69. package/dist/teste/BadgeAttachedTomEPadding.test.d.ts +1 -0
  70. package/dist/teste/BadgeAttachedTomEPadding.test.js +43 -0
  71. package/dist/teste/BadgeNeutroColado.test.d.ts +1 -0
  72. package/dist/teste/BadgeNeutroColado.test.js +11 -0
  73. package/dist/teste/BadgeTag.test.js +13 -0
  74. package/dist/teste/ButtonDensidade.test.d.ts +1 -0
  75. package/dist/teste/ButtonDensidade.test.js +28 -0
  76. package/dist/teste/CalendarCabecalho.test.d.ts +1 -0
  77. package/dist/teste/CalendarCabecalho.test.js +11 -0
  78. package/dist/teste/CalendarCompacto.test.d.ts +1 -0
  79. package/dist/teste/CalendarCompacto.test.js +29 -0
  80. package/dist/teste/CoachmarkSemVeu.test.d.ts +1 -0
  81. package/dist/teste/CoachmarkSemVeu.test.js +85 -0
  82. package/dist/teste/CoachmarkUmPasso.test.d.ts +1 -0
  83. package/dist/teste/CoachmarkUmPasso.test.js +34 -0
  84. package/dist/teste/ColorPickerXs.test.d.ts +1 -0
  85. package/dist/teste/ColorPickerXs.test.js +21 -0
  86. package/dist/teste/DataTableArvoreEVariantes.test.d.ts +1 -0
  87. package/dist/teste/DataTableArvoreEVariantes.test.js +190 -0
  88. package/dist/teste/DataTableCompactaETom.test.d.ts +1 -0
  89. package/dist/teste/DataTableCompactaETom.test.js +69 -0
  90. package/dist/teste/DescriptionListCompacta.test.d.ts +1 -0
  91. package/dist/teste/DescriptionListCompacta.test.js +22 -0
  92. package/dist/teste/EmptyStateTituloRico.test.d.ts +1 -0
  93. package/dist/teste/EmptyStateTituloRico.test.js +23 -0
  94. package/dist/teste/InputAgrupado.test.d.ts +1 -0
  95. package/dist/teste/InputAgrupado.test.js +24 -0
  96. package/dist/teste/InputGhost.test.d.ts +1 -0
  97. package/dist/teste/InputGhost.test.js +32 -0
  98. package/dist/teste/ListItemTooltipStandalone.test.d.ts +1 -0
  99. package/dist/teste/ListItemTooltipStandalone.test.js +39 -0
  100. package/dist/teste/ModalProporcoes1Doc.test.d.ts +1 -0
  101. package/dist/teste/ModalProporcoes1Doc.test.js +32 -0
  102. package/dist/teste/RichTextEditorAlinhaImagemTabela.test.d.ts +1 -0
  103. package/dist/teste/RichTextEditorAlinhaImagemTabela.test.js +212 -0
  104. package/dist/teste/RichTextEditorEstiloDeTexto.test.d.ts +1 -0
  105. package/dist/teste/RichTextEditorEstiloDeTexto.test.js +120 -0
  106. package/dist/teste/SegmentedControlContador.test.d.ts +1 -0
  107. package/dist/teste/SegmentedControlContador.test.js +39 -0
  108. package/dist/teste/SegmentedControlSuperficie.test.d.ts +1 -0
  109. package/dist/teste/SegmentedControlSuperficie.test.js +39 -0
  110. package/dist/teste/SelectAbertoControladoEFlutuante.test.d.ts +1 -0
  111. package/dist/teste/SelectAbertoControladoEFlutuante.test.js +145 -0
  112. package/dist/teste/SelectFiltroCorETamanho.test.d.ts +1 -0
  113. package/dist/teste/SelectFiltroCorETamanho.test.js +77 -0
  114. package/dist/teste/SelectItemComEscopo.test.d.ts +1 -0
  115. package/dist/teste/SelectItemComEscopo.test.js +54 -0
  116. package/dist/teste/SelectListaFiltro.test.d.ts +1 -0
  117. package/dist/teste/SelectListaFiltro.test.js +102 -0
  118. package/dist/teste/StatCardSecundariaETom.test.d.ts +1 -0
  119. package/dist/teste/StatCardSecundariaETom.test.js +45 -0
  120. package/dist/teste/StatCardTamanhoSm.test.d.ts +1 -0
  121. package/dist/teste/StatCardTamanhoSm.test.js +32 -0
  122. package/dist/teste/TabsCompacta.test.d.ts +1 -0
  123. package/dist/teste/TabsCompacta.test.js +35 -0
  124. package/dist/teste/TagPositivoTingido.test.d.ts +1 -0
  125. package/dist/teste/TagPositivoTingido.test.js +54 -0
  126. package/dist/teste/ToastAcaoEDetalhes.test.d.ts +1 -0
  127. package/dist/teste/ToastAcaoEDetalhes.test.js +94 -0
  128. package/dist/teste/lerArquivo.d.ts +1 -0
  129. package/dist/teste/lerArquivo.js +12 -0
  130. package/dist/utils/html-seguro.d.ts +19 -1
  131. package/dist/utils/html-seguro.js +113 -2
  132. package/dist/utils/toast.d.ts +10 -1
  133. package/dist/utils/toast.js +2 -1
  134. package/package.json +3 -3
  135. package/src/teste/AccordionControlado.test.tsx +87 -0
  136. package/src/teste/AccordionTituloNeutro.test.tsx +25 -0
  137. package/src/teste/AppSubheaderRegiao.test.tsx +17 -0
  138. package/src/teste/AttachmentCardLista.test.tsx +53 -0
  139. package/src/teste/AttachmentCardSm.test.tsx +29 -0
  140. package/src/teste/BadgeAttachedTomEPadding.test.tsx +60 -0
  141. package/src/teste/BadgeNeutroColado.test.tsx +15 -0
  142. package/src/teste/BadgeTag.test.tsx +21 -0
  143. package/src/teste/ButtonDensidade.test.tsx +40 -0
  144. package/src/teste/CalendarCabecalho.test.tsx +11 -0
  145. package/src/teste/CalendarCompacto.test.tsx +37 -0
  146. package/src/teste/CoachmarkSemVeu.test.tsx +101 -0
  147. package/src/teste/CoachmarkUmPasso.test.tsx +45 -0
  148. package/src/teste/ColorPickerXs.test.tsx +22 -0
  149. package/src/teste/DataTableArvoreEVariantes.test.tsx +240 -0
  150. package/src/teste/DataTableCompactaETom.test.tsx +85 -0
  151. package/src/teste/DescriptionListCompacta.test.tsx +24 -0
  152. package/src/teste/EmptyStateTituloRico.test.tsx +34 -0
  153. package/src/teste/InputAgrupado.test.tsx +26 -0
  154. package/src/teste/InputGhost.test.tsx +42 -0
  155. package/src/teste/ListItemTooltipStandalone.test.tsx +64 -0
  156. package/src/teste/ModalProporcoes1Doc.test.tsx +36 -0
  157. package/src/teste/RichTextEditorAlinhaImagemTabela.test.tsx +238 -0
  158. package/src/teste/RichTextEditorEstiloDeTexto.test.tsx +137 -0
  159. package/src/teste/SegmentedControlContador.test.tsx +43 -0
  160. package/src/teste/SegmentedControlSuperficie.test.tsx +52 -0
  161. package/src/teste/SelectAbertoControladoEFlutuante.test.tsx +180 -0
  162. package/src/teste/SelectFiltroCorETamanho.test.tsx +90 -0
  163. package/src/teste/SelectItemComEscopo.test.tsx +69 -0
  164. package/src/teste/SelectListaFiltro.test.tsx +120 -0
  165. package/src/teste/StatCardSecundariaETom.test.tsx +51 -0
  166. package/src/teste/StatCardTamanhoSm.test.tsx +42 -0
  167. package/src/teste/TabsCompacta.test.tsx +45 -0
  168. package/src/teste/TagPositivoTingido.test.tsx +60 -0
  169. package/src/teste/ToastAcaoEDetalhes.test.tsx +109 -0
  170. package/src/teste/lerArquivo.ts +13 -0
  171. package/src/utils/html-seguro.ts +105 -2
  172. package/src/utils/toast.ts +12 -2
@@ -407,6 +407,25 @@
407
407
  background: var(--umds-semantic-color-primary-medium);
408
408
  }
409
409
 
410
+ /* ── density="1doc": as proporções do modal do CrisDoc ──
411
+ Cabeçalho de 67px (o padrão dá 61), rodapé de 65px (o padrão dá 73) e raio de 12px (o DS usa 8). Sem token
412
+ para essas medidas: literais comentados, como o resto do modal base. As alturas são mínimas, então título
413
+ com subtítulo ou botão mais alto continua crescendo. Fora a tela cheia e o painel, que têm cantos próprios. */
414
+ .umds-modal--1doc:not(.umds-modal--fullscreen):not(.umds-modal--janela-fullscreen):not(.umds-modal--sheet) {
415
+ /* stylelint-disable-next-line 1ds/raio-canonico -- o 12px é a opção density="1doc" (o modal do CrisDoc); o padrão segue em 8px */
416
+ border-radius: 12px;
417
+ }
418
+
419
+ .umds-modal--1doc.umds-modal--base .umds-modal__header {
420
+ align-items: center;
421
+ min-height: 67px;
422
+ }
423
+
424
+ .umds-modal--1doc.umds-modal--base .umds-modal__footer {
425
+ min-height: 65px;
426
+ padding: var(--umds-primitive-spacing-mini) var(--umds-primitive-spacing-xxs); /* 12px 24px */
427
+ }
428
+
410
429
  /* ── responsive: abaixo do breakpoint vira painel que sobe pela borda de baixo ──
411
430
  Mesma anatomia do BottomSheet (largura total, cantos de cima arredondados,
412
431
  alça, entrada por baixo). Quem decide o breakpoint é o componente (media
@@ -95,6 +95,13 @@ export interface ModalProps {
95
95
  * @default 'dialog'
96
96
  */
97
97
  layout?: "dialog" | "content";
98
+ /**
99
+ * Proporções do modal. `1doc` leva o cabeçalho a 67px, o rodapé a 65px e o raio a 12px, as medidas do
100
+ * modal do CrisDoc; o padrão (`default`) segue com 61px, 73px e 8px. Só o modal base (com título), e
101
+ * combina com `variant="primary"`. Tela cheia e painel (`responsive`) mantêm os cantos deles.
102
+ * @default 'default'
103
+ */
104
+ density?: "default" | "1doc";
98
105
  /** Classes CSS adicionais para o container do modal */
99
106
  className?: string;
100
107
  /** Se verdadeiro, renderiza o modal inline (sem fixed/overlay), útil para documentação */
@@ -149,6 +149,7 @@ function Modal(props) {
149
149
  `umds-modal--${props.variant || "default"}`,
150
150
  props.size && props.size !== "md" ? `umds-modal--${props.size}` : "",
151
151
  ehFeedback() ? "umds-modal--feedback" : "umds-modal--base",
152
+ props.density === "1doc" ? "umds-modal--1doc" : "",
152
153
  classeDaJanela(),
153
154
  props.responsive && isCompact ? "umds-modal--sheet" : "",
154
155
  props.className,
@@ -142,6 +142,27 @@
142
142
  gap: var(--umds-primitive-spacing-nano); /* 8px */
143
143
  }
144
144
 
145
+ .umds-rte__table-field {
146
+ flex: 0 1 var(--umds-primitive-spacing-xxxl); /* 120px */
147
+ min-width: 0;
148
+ }
149
+
150
+ .umds-rte__style-field {
151
+ flex: 0 1 auto;
152
+ min-width: 0;
153
+ }
154
+
155
+ /* Barra de linha e coluna: aparece com o cursor numa célula. */
156
+ .umds-rte__table-bar {
157
+ display: flex;
158
+ flex-wrap: wrap;
159
+ align-items: center;
160
+ gap: var(--umds-primitive-spacing-quarck); /* 4px */
161
+ padding: var(--umds-primitive-spacing-quarck) var(--umds-primitive-spacing-nano); /* 4px 8px */
162
+ background: var(--umds-semantic-color-background-light);
163
+ border-bottom: var(--umds-primitive-border-width-hairline) solid var(--umds-semantic-color-neutral-light-medium);
164
+ }
165
+
145
166
  /* ── Área de escrita ── */
146
167
  .umds-rte__editor {
147
168
  box-sizing: border-box;
@@ -183,6 +204,32 @@
183
204
  color: var(--umds-semantic-color-neutral-dark-down);
184
205
  }
185
206
 
207
+ .umds-rte__editor img {
208
+ max-width: 100%;
209
+ height: auto;
210
+ }
211
+
212
+ .umds-rte__editor table {
213
+ width: 100%;
214
+ margin: var(--umds-primitive-spacing-nano) 0;
215
+ border-collapse: collapse;
216
+ table-layout: fixed;
217
+ }
218
+
219
+ .umds-rte__editor th,
220
+ .umds-rte__editor td {
221
+ min-width: var(--umds-primitive-spacing-sm); /* 40px: a célula vazia continua alcançável */
222
+ padding: var(--umds-primitive-spacing-quarck) var(--umds-primitive-spacing-nano); /* 4px 8px */
223
+ border: var(--umds-primitive-border-width-hairline) solid var(--umds-semantic-color-neutral-light-down);
224
+ vertical-align: top;
225
+ text-align: left;
226
+ }
227
+
228
+ .umds-rte__editor th {
229
+ background: var(--umds-semantic-color-background-light);
230
+ font-weight: var(--umds-primitive-font-weight-semibold);
231
+ }
232
+
186
233
  .umds-rte__editor a {
187
234
  color: var(--umds-semantic-color-primary-pure);
188
235
  text-decoration: underline;
@@ -1,6 +1,6 @@
1
1
  import './RichTextEditor.css';
2
2
  /** Ferramentas da barra, na ordem em que aparecem em `toolbar`. `"|"` é um separador. */
3
- export type RichTextTool = "bold" | "italic" | "underline" | "strike" | "ul" | "ol" | "link" | "undo" | "redo" | "clear" | "|";
3
+ export type RichTextTool = "bold" | "italic" | "underline" | "strike" | "ul" | "ol" | "link" | "undo" | "redo" | "clear" | "alignLeft" | "alignCenter" | "alignRight" | "alignJustify" | "image" | "table" | "fontFamily" | "fontSize" | "textColor" | "|";
4
4
  /**
5
5
  * RichTextEditor — editor de texto rico leve, sobre `contenteditable`, sem
6
6
  * biblioteca: negrito, itálico, sublinhado, tachado, listas, link, desfazer e
@@ -27,19 +27,33 @@ export type RichTextTool = "bold" | "italic" | "underline" | "strike" | "ul" | "
27
27
  *
28
28
  * Todos os textos são props (`labels`, `toolbarLabel`, `placeholder`).
29
29
  *
30
- * Limites do primeiro corte: sem tabela, imagem, cor, fonte, tamanho nem
31
- * alinhamento; usa `document.execCommand`, que o navegador mantém mas está
32
- * marcado como obsoleto (o comportamento do desfazer varia um pouco entre
33
- * navegadores). Nada disso é preciso para o que as telas de despacho, resposta e
34
- * descrição pedem.
30
+ * Opcionais na `toolbar` (fora da barra padrão): alinhamento (`alignLeft`,
31
+ * `alignCenter`, `alignRight`, `alignJustify`), imagem (`image`: por endereço ou por
32
+ * arquivo, que entra como `data:` URL, com texto alternativo) e tabela simples
33
+ * (`table`: insere linhas × colunas; com o cursor numa célula aparece a barra de
34
+ * adicionar e remover linha e coluna). Imagem e tabela passam pela mesma
35
+ * higienização: só PNG, JPEG, GIF e WebP em `data:`, ou `http(s)`; sem SVG.
36
+ *
37
+ * Estilo de texto por TOKEN do DS, também opcional na `toolbar`: `fontFamily`
38
+ * (padrão ou monoespaçada), `fontSize` (12, 14, 16, 20 e 24px, da escala do DS) e
39
+ * `textColor` (a paleta do DS). Cada um abre um painel abaixo da barra e aplica ao
40
+ * texto selecionado (sem seleção, o painel pede que se selecione). O valor guarda
41
+ * `<span style="color: var(--umds-primitive-red-pure)">`: só token do DS passa na
42
+ * higienização, cor em hex, rgb ou nome sai. Para voltar ao padrão, use `clear`.
43
+ *
44
+ * Limites: usa `document.execCommand`, que o
45
+ * navegador mantém mas está marcado como obsoleto (o comportamento do desfazer
46
+ * varia um pouco entre navegadores; adicionar e remover linha ou coluna mexe no
47
+ * DOM e não entra no desfazer). Imagem de arquivo passa de 2 MB? Recusada: o HTML
48
+ * do valor guarda a imagem inteira.
35
49
  * @property {string} value - HTML (controlado)
36
50
  * @property {string} defaultValue - HTML inicial (não controlado)
37
51
  * @property {string} label - Rótulo visível do campo
38
52
  * @property {string} ariaLabel - Nome acessível quando não há `label` visível
39
53
  * @property {string} placeholder - Texto de apoio com o editor vazio
40
- * @property {string[]} toolbar - Ferramentas da barra, em ordem: 'bold' | 'italic' | 'underline' | 'strike' | 'ul' | 'ol' | 'link' | 'undo' | 'redo' | 'clear' | '|' (separador)
54
+ * @property {string[]} toolbar - Ferramentas da barra, em ordem: 'bold' | 'italic' | 'underline' | 'strike' | 'ul' | 'ol' | 'link' | 'undo' | 'redo' | 'clear' | 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify' | 'image' | 'table' | 'fontFamily' | 'fontSize' | 'textColor' | '|' (separador)
41
55
  * @property {string} toolbarLabel - Nome da barra (padrão "Formatação")
42
- * @property {object} labels - Nomes das ferramentas e do campo de link, parcial: `{ bold, italic, underline, strike, ul, ol, link, undo, redo, clear, linkAddress, linkApply, linkRemove, linkCancel, linkInvalid }`
56
+ * @property {object} labels - Nomes das ferramentas e dos campos, parcial: `{ bold, italic, underline, strike, ul, ol, link, undo, redo, clear, alignLeft, alignCenter, alignRight, alignJustify, image, table, linkAddress, linkApply, linkRemove, linkCancel, linkInvalid, imageUrl, imageAlt, imageFile, imageApply, imageCancel, imageInvalid, imageType, imageTooLarge, tableRows, tableCols, tableApply, tableCancel, tableInvalid, tableActions, tableAddRow, tableRemoveRow, tableAddCol, tableRemoveCol, tableRemove, fontFamily, fontSize, textColor, fontFamilyBase, fontFamilyMono, styleClose, styleNeedsSelection }`
43
57
  * @property {number} minHeight - Altura mínima da área de escrita, em px (padrão 120)
44
58
  * @property {boolean} resizable - Deixa redimensionar a altura pelo canto
45
59
  * @property {boolean} disabled - Desabilita barra e área