@startlibs/form 1.1.2 → 1.2.0-rc.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.
Files changed (112) hide show
  1. package/lib/AutoComplete.mjs +19 -10
  2. package/lib/AutoComplete.mjs.map +1 -1
  3. package/lib/Checkbox.mjs +4 -2
  4. package/lib/Checkbox.mjs.map +1 -1
  5. package/lib/Combobox.mjs +1 -1
  6. package/lib/Combobox.mjs.map +1 -1
  7. package/lib/DatePicker.mjs +25 -9
  8. package/lib/DatePicker.mjs.map +1 -1
  9. package/lib/Errors.mjs +20 -10
  10. package/lib/Errors.mjs.map +1 -1
  11. package/lib/ExpandableBox.mjs +1 -1
  12. package/lib/ExpandableBox.mjs.map +1 -1
  13. package/lib/Field.mjs +10 -5
  14. package/lib/Field.mjs.map +1 -1
  15. package/lib/FieldBox.mjs +3 -3
  16. package/lib/FieldBox.mjs.map +1 -1
  17. package/lib/InputboxGroup.mjs +1 -1
  18. package/lib/InputboxGroup.mjs.map +1 -1
  19. package/lib/RichText.mjs +11 -6
  20. package/lib/RichText.mjs.map +1 -1
  21. package/lib/TextInput.mjs +4 -4
  22. package/lib/TextInput.mjs.map +1 -1
  23. package/lib/alt/checkbox/SimpleCheckbox.mjs +1 -1
  24. package/lib/alt/checkbox/SimpleCheckbox.mjs.map +1 -1
  25. package/lib/alt/checkbox/ToggleCheckbox.mjs +4 -3
  26. package/lib/alt/checkbox/ToggleCheckbox.mjs.map +1 -1
  27. package/lib/alt/radiobox/CleanTabRadiobox.mjs +1 -1
  28. package/lib/alt/radiobox/CleanTabRadiobox.mjs.map +1 -1
  29. package/lib/alt/radiobox/SimpleRadiobox.mjs +2 -2
  30. package/lib/alt/radiobox/SimpleRadiobox.mjs.map +1 -1
  31. package/lib/alt/radiobox/TabRadiobox.mjs +1 -1
  32. package/lib/alt/radiobox/TabRadiobox.mjs.map +1 -1
  33. package/lib/index.cjs +106 -54
  34. package/lib/index.cjs.map +1 -1
  35. package/lib/index.mjs +2 -2
  36. package/lib/withFormImageInput.mjs +1 -1
  37. package/lib/withFormImageInput.mjs.map +1 -1
  38. package/lib-yak/AutoComplete.mjs +705 -0
  39. package/lib-yak/AutoComplete.mjs.map +1 -0
  40. package/lib-yak/Checkbox.mjs +80 -0
  41. package/lib-yak/Checkbox.mjs.map +1 -0
  42. package/lib-yak/Combobox.mjs +652 -0
  43. package/lib-yak/Combobox.mjs.map +1 -0
  44. package/lib-yak/ComboboxWithCustom.mjs +77 -0
  45. package/lib-yak/ComboboxWithCustom.mjs.map +1 -0
  46. package/lib-yak/DatePicker.mjs +774 -0
  47. package/lib-yak/DatePicker.mjs.map +1 -0
  48. package/lib-yak/EditableBox.mjs +495 -0
  49. package/lib-yak/EditableBox.mjs.map +1 -0
  50. package/lib-yak/Errors.mjs +226 -0
  51. package/lib-yak/Errors.mjs.map +1 -0
  52. package/lib-yak/ExpandableBox.mjs +247 -0
  53. package/lib-yak/ExpandableBox.mjs.map +1 -0
  54. package/lib-yak/Field.mjs +93 -0
  55. package/lib-yak/Field.mjs.map +1 -0
  56. package/lib-yak/FieldBox.mjs +173 -0
  57. package/lib-yak/FieldBox.mjs.map +1 -0
  58. package/lib-yak/Form.mjs +322 -0
  59. package/lib-yak/Form.mjs.map +1 -0
  60. package/lib-yak/FormValue.mjs +111 -0
  61. package/lib-yak/FormValue.mjs.map +1 -0
  62. package/lib-yak/InputboxGroup.mjs +146 -0
  63. package/lib-yak/InputboxGroup.mjs.map +1 -0
  64. package/lib-yak/Radiobox.mjs +69 -0
  65. package/lib-yak/Radiobox.mjs.map +1 -0
  66. package/lib-yak/RichText.mjs +776 -0
  67. package/lib-yak/RichText.mjs.map +1 -0
  68. package/lib-yak/TextInput.mjs +589 -0
  69. package/lib-yak/TextInput.mjs.map +1 -0
  70. package/lib-yak/alt/checkbox/SimpleCheckbox.mjs +225 -0
  71. package/lib-yak/alt/checkbox/SimpleCheckbox.mjs.map +1 -0
  72. package/lib-yak/alt/checkbox/ToggleCheckbox.mjs +173 -0
  73. package/lib-yak/alt/checkbox/ToggleCheckbox.mjs.map +1 -0
  74. package/lib-yak/alt/radiobox/CleanTabRadiobox.mjs +87 -0
  75. package/lib-yak/alt/radiobox/CleanTabRadiobox.mjs.map +1 -0
  76. package/lib-yak/alt/radiobox/IconRadioBox.mjs +138 -0
  77. package/lib-yak/alt/radiobox/IconRadioBox.mjs.map +1 -0
  78. package/lib-yak/alt/radiobox/SimpleRadiobox.mjs +203 -0
  79. package/lib-yak/alt/radiobox/SimpleRadiobox.mjs.map +1 -0
  80. package/lib-yak/alt/radiobox/TabRadiobox.mjs +117 -0
  81. package/lib-yak/alt/radiobox/TabRadiobox.mjs.map +1 -0
  82. package/lib-yak/enhanceInput.mjs +131 -0
  83. package/lib-yak/enhanceInput.mjs.map +1 -0
  84. package/lib-yak/index.mjs +28 -0
  85. package/lib-yak/index.mjs.map +1 -0
  86. package/lib-yak/useConfirmDialog.mjs +117 -0
  87. package/lib-yak/useConfirmDialog.mjs.map +1 -0
  88. package/lib-yak/useDraftConfirmation.mjs +56 -0
  89. package/lib-yak/useDraftConfirmation.mjs.map +1 -0
  90. package/lib-yak/validation.mjs +91 -0
  91. package/lib-yak/validation.mjs.map +1 -0
  92. package/lib-yak/withFormImageInput.mjs +298 -0
  93. package/lib-yak/withFormImageInput.mjs.map +1 -0
  94. package/package.json +13 -3
  95. package/src/AutoComplete.jsx +25 -15
  96. package/src/Checkbox.jsx +2 -2
  97. package/src/Combobox.jsx +1 -1
  98. package/src/DatePicker.jsx +25 -22
  99. package/src/Errors.jsx +18 -8
  100. package/src/ExpandableBox.jsx +3 -3
  101. package/src/Field.jsx +9 -4
  102. package/src/FieldBox.jsx +6 -6
  103. package/src/IconRadioBoxOldHubt.jsx +1 -1
  104. package/src/InputboxGroup.jsx +1 -1
  105. package/src/RichText.jsx +17 -13
  106. package/src/TextInput.jsx +37 -26
  107. package/src/alt/checkbox/SimpleCheckbox.jsx +5 -5
  108. package/src/alt/checkbox/ToggleCheckbox.jsx +9 -8
  109. package/src/alt/radiobox/CleanTabRadiobox.jsx +2 -2
  110. package/src/alt/radiobox/SimpleRadiobox.jsx +7 -7
  111. package/src/alt/radiobox/TabRadiobox.jsx +4 -4
  112. package/src/withFormImageInput.jsx +2 -2
package/src/TextInput.jsx CHANGED
@@ -1,5 +1,5 @@
1
1
  import React, {useState, forwardRef, useEffect} from 'react'
2
- import {Field} from './Field'
2
+ import {Field, FieldLabel} from './Field'
3
3
  import {useInput} from './enhanceInput'
4
4
  import styled, {css} from 'styled-components'
5
5
  import {Loading} from '@startlibs/components'
@@ -84,28 +84,20 @@ const Input = styled.input`
84
84
  height: 3rem;
85
85
  padding: 0 0.7rem;
86
86
  overflow: auto;
87
- ${media.mobile`
88
- height: 42px;
89
- padding: 0 1rem;
90
- @supports (-webkit-touch-callout: none) {
91
- font-size: 16px;
92
- }
93
- `}
94
87
 
95
- ::-webkit-input-placeholder {
88
+ &::-webkit-input-placeholder {
96
89
  color: rgba(0,0,0,0.3);
97
90
  }
98
- ::-moz-placeholder {
99
- color: rgba(0,0,0,0.3);
100
- }
101
- :-moz-placeholder {
102
- color: rgba(0,0,0,0.3);
103
- }
104
- :-ms-input-placeholder {
91
+ &::-moz-placeholder {
105
92
  color: rgba(0,0,0,0.3);
106
93
  }
94
+ /* :-moz-placeholder (Firefox <19) e :-ms-input-placeholder (Edge antigo) saíram: o browserslist
95
+ do pacote já não cobre esses motores (firefox >= 60, edge >= 79, Chromium), e a versão
96
+ single-colon confundia o lightningcss do yak, que compilava pra uma pseudo-classe diferente
97
+ (placeholder-shown, do próprio input, em vez do texto do placeholder) — o color vazava pro
98
+ input inteiro. Sem efeito em nenhum browser hoje suportado; nada muda no golden. */
107
99
  ${props => !props.hasTextBox && !props.noFocus && css`
108
- :focus {
100
+ &:focus {
109
101
  border-color: ${getColor('gray180')};
110
102
  box-shadow: 0px 0px 0px 2px rgba(0,0,0,0.1);
111
103
  }
@@ -113,7 +105,7 @@ const Input = styled.input`
113
105
  border-color: ${getColor('alert')} !important;
114
106
  `}
115
107
  `}
116
- ::-ms-clear { //Clear IE pseudo-buttons
108
+ &::-ms-clear { /* Clear IE pseudo-buttons */
117
109
  display: none;
118
110
  }
119
111
  ${props => props.locked && css`
@@ -127,10 +119,6 @@ const Input = styled.input`
127
119
  padding: .7rem;
128
120
  display: block;
129
121
  ${props => props.autoResize ? 'overflow:hidden;' : 'overflow:auto;'}
130
- ${media.mobile`
131
- padding: 1rem;
132
- ${props => props.regularInputHeight && 'min-height: 42px;'}
133
- `}
134
122
  `}
135
123
  ${props => props.rounded && css`
136
124
  border-radius: 100px;
@@ -139,6 +127,29 @@ const Input = styled.input`
139
127
  `}
140
128
  ${props => props.hasIcon && css`
141
129
  padding-left: ${props.rounded ? '3rem' : '2.5rem'};
130
+ `}
131
+ /* stylis (sc) emite @media depois das declarações planas, não na ordem do fonte; o yak
132
+ preserva a ordem do fonte. Os blocos de media abaixo (fallback/isTextArea/hasIcon, nessa
133
+ ordem) ficam DEPOIS de todas as declarações planas acima (locked/isTextArea/rounded/hasIcon,
134
+ na mesma ordem do fonte original) pros dois modos baterem — lição do grupo 12: fallback
135
+ antes do bloco de media. As partes de media de isTextArea e hasIcon saíram de dentro dos
136
+ blocos acima (que continuam só com a parte plana, na posição original) e viraram
137
+ interpolações próprias aqui, na mesma ordem relativa de antes (media geral, depois
138
+ isTextArea, depois hasIcon), pra não mudar o resultado em nenhum dos dois modos. */
139
+ ${media.mobile`
140
+ height: 42px;
141
+ padding: 0 1rem;
142
+ @supports (-webkit-touch-callout: none) {
143
+ font-size: 16px;
144
+ }
145
+ `}
146
+ ${props => props.isTextArea && css`
147
+ ${media.mobile`
148
+ padding: 1rem;
149
+ ${props => props.regularInputHeight && 'min-height: 42px;'}
150
+ `}
151
+ `}
152
+ ${props => props.hasIcon && css`
142
153
  ${media.mobile`
143
154
  padding-left: ${props.rounded ? '3.25rem' : '2.75rem'};
144
155
  `}
@@ -150,7 +161,7 @@ const InputWithTextBox = styled.div`
150
161
  display: flex;
151
162
  border-radius: ${props => props.rounded ? '100px' : '8px'};
152
163
  position: relative;
153
- :before {
164
+ &:before {
154
165
  position: absolute;
155
166
  border-radius: ${props => props.rounded ? '100px' : '8px'};
156
167
  top: 0;
@@ -162,13 +173,13 @@ const InputWithTextBox = styled.div`
162
173
  }
163
174
  ${props => props.focused && css`
164
175
  box-shadow: 0px 0px 0px 2px rgba(0,0,0,0.1);
165
- :before {
176
+ &:before {
166
177
  content: '';
167
178
  border: 1px solid ${getColor('gray180')};
168
179
  }
169
180
  `}
170
181
  ${props => props.hasErrors && css`
171
- :before {
182
+ &:before {
172
183
  content: '';
173
184
  border: 1px solid ${getColor('alert')};
174
185
  }
@@ -499,7 +510,7 @@ const FloatingFieldType = styled(Field)`
499
510
  font-weight: 400;
500
511
  padding: 16px 1rem 0;
501
512
  }
502
- ${Field.Label} {
513
+ ${FieldLabel} {
503
514
  position: absolute;
504
515
  top: 1.5rem;
505
516
  left: 1rem;
@@ -68,10 +68,10 @@ const CheckboxContent = styled.div `
68
68
  width: 100%;
69
69
  align-items: center;
70
70
  display: flex;
71
- :hover {
71
+ &:hover {
72
72
  background: rgb(245,245,245);
73
73
  }
74
- :active {
74
+ &:active {
75
75
  background: rgb(235,235,235);
76
76
  transition: none;
77
77
  }
@@ -85,7 +85,7 @@ const CheckboxContent = styled.div `
85
85
  ${props => props.checked && props.highlightSelected && css`
86
86
  border-color: ${getColor('main')};
87
87
  background: ${props => desaturate(0.3, lighten(0.52, getColor("main")(props)))};
88
- :hover {
88
+ &:hover {
89
89
  background: ${props => desaturate(0.3, lighten(0.52, getColor("main")(props)))};
90
90
  }
91
91
  ${CheckboxPseudoInput} {
@@ -101,7 +101,7 @@ const CheckboxContent = styled.div `
101
101
  a, a.link {
102
102
  color: white;
103
103
  }
104
- :hover {
104
+ &:hover {
105
105
  background: ${getColor('main')};
106
106
  }
107
107
  ${CheckboxPseudoInput} {
@@ -118,7 +118,7 @@ const CheckboxContent = styled.div `
118
118
  `}
119
119
  ${props => props.disabled && css`
120
120
  background-color: rgba(0,0,0,0.075) !important;
121
- color: rgba(0,0,0,0.6); !important;
121
+ color: rgba(0,0,0,0.6);
122
122
  &[disabled] {
123
123
  opacity: 0.75 !important;
124
124
  }
@@ -21,7 +21,7 @@ const Toggle = styled.div `
21
21
  display: inline-block;
22
22
  position: relative;
23
23
  font-weight: 600;
24
- :after {
24
+ &:after {
25
25
  content: '';
26
26
  transition: 0.25s ease;
27
27
  border-radius: 50%;
@@ -79,27 +79,27 @@ const ToggleCheckboxStyled = styled(Checkbox)`
79
79
  `}
80
80
  ${props => props.gray ? `
81
81
  background-color: rgba(0,0,0,0.06);
82
- :hover {
82
+ &:hover {
83
83
  background-color: rgba(0,0,0,0.08);
84
84
  }
85
- :active {
85
+ &:active {
86
86
  background-color: rgba(0,0,0,0.1);
87
87
  transition: none;
88
88
  }
89
89
  `:css`
90
90
  background-color: ${getColor('lightBluishGray')};
91
- :hover {
91
+ &:hover {
92
92
  background: ${props => darken(0.035, getColor('lightBluishGray')(props))};
93
93
  }
94
- :active {
94
+ &:active {
95
95
  background: ${props => darken(0.05, getColor('lightBluishGray')(props))};
96
96
  transition: none;
97
97
  }
98
98
  `}
99
99
  ${props => !props.noFocus && css`
100
- :focus-within {
100
+ &:focus-within {
101
101
  background-color: rgba(0,0,0,0.09);
102
- :after{
102
+ &:after{
103
103
  content: '';
104
104
  pointer-events: none;
105
105
  position: absolute;
@@ -135,7 +135,8 @@ export const ToggleCheckbox = styled(({path, disabled, rightInfo, label, descTex
135
135
  <TransitionDiv block>{descText && <DescText>{descText}</DescText>}</TransitionDiv>
136
136
  </ToggleLabel>
137
137
  {rightInfo}
138
- <Toggle checked={checked}/>
138
+ {/* variante como classe: no yak, o override de theme.startlibs.ToggleCheckbox não lê props */}
139
+ <Toggle checked={checked} className={checked ? 'styled-toggle-checkbox-checked' : undefined}/>
139
140
  </>
140
141
  }
141
142
  </ToggleCheckboxStyled>
@@ -16,7 +16,7 @@ export const Tab = styled.div`
16
16
  position: relative;
17
17
  ${props => props.checked ? css`
18
18
  color: ${getColor("main")};
19
- :after {
19
+ &:after {
20
20
  content: '';
21
21
  position: absolute;
22
22
  bottom: -2px;
@@ -28,7 +28,7 @@ export const Tab = styled.div`
28
28
  }
29
29
  `: css`
30
30
  cursor: pointer;
31
- :hover {
31
+ &:hover {
32
32
  color: ${getColor("gray90")};
33
33
  }
34
34
  `}
@@ -24,7 +24,7 @@ const CssCircle = styled.div`
24
24
  `)}
25
25
 
26
26
  ${ifProp('checked', css`
27
- :before {
27
+ &:before {
28
28
  content: '';
29
29
  width: 8px;
30
30
  height: 8px;
@@ -70,10 +70,10 @@ const RadioboxContent = styled.div `
70
70
  width: 100%;
71
71
  align-items: center;
72
72
  display: flex;
73
- :hover {
73
+ &:hover {
74
74
  background: rgb(245,245,245);
75
75
  }
76
- :active {
76
+ &:active {
77
77
  background: rgb(235,235,235);
78
78
  transition: none;
79
79
  }
@@ -87,11 +87,11 @@ const RadioboxContent = styled.div `
87
87
  ${props => props.checked && props.highlightSelected && css`
88
88
  border-color: ${getColor('main')};
89
89
  background: ${props => desaturate(0.3, lighten(0.52, getColor("main")(props)))};
90
- :hover {
90
+ &:hover {
91
91
  background: ${props => desaturate(0.3, lighten(0.52, getColor("main")(props)))};
92
92
  }
93
93
  ${CssCircle} {
94
- :before {
94
+ &:before {
95
95
  background-color: ${getColor('main')};
96
96
  }
97
97
  }
@@ -100,11 +100,11 @@ const RadioboxContent = styled.div `
100
100
  border-color: ${getColor('main')};
101
101
  background: ${getColor('main')};
102
102
  color: white;
103
- :hover {
103
+ &:hover {
104
104
  background: ${getColor('main')};
105
105
  }
106
106
  ${CssCircle} {
107
- :before {
107
+ &:before {
108
108
  background-color: ${getColor('main')};
109
109
  }
110
110
  }
@@ -16,7 +16,7 @@ export const TabButton = styled(Button)`
16
16
  border: 1px solid ${getColor('gray210')};
17
17
  border-left-width: 0;
18
18
  height: 100%;
19
- :hover {
19
+ &:hover {
20
20
  background: ${props => desaturate(0.6, lighten(0.5, getColor("main")(props)))};
21
21
  }
22
22
  ${ifProp('checked', css`
@@ -35,7 +35,7 @@ export const TabButton = styled(Button)`
35
35
  ${props => props.isFirst!==undefined && !props.isFirst && `
36
36
  border-bottom-left-radius: 0;
37
37
  border-top-left-radius: 0;
38
- :focus:after{
38
+ &:focus:after{
39
39
  border-bottom-left-radius: 2px;
40
40
  border-top-left-radius: 2px;
41
41
  }
@@ -43,12 +43,12 @@ export const TabButton = styled(Button)`
43
43
  ${props => props.isLast!==undefined && !props.isLast && `
44
44
  border-bottom-right-radius: 0;
45
45
  border-top-right-radius: 0;
46
- :focus:after{
46
+ &:focus:after{
47
47
  border-bottom-right-radius: 2px;
48
48
  border-top-right-radius: 2px;
49
49
  z-index: 2;
50
50
  }
51
- `}
51
+ `}
52
52
  ${media.mobile`
53
53
  min-width: 0;
54
54
  ${props => props.icon ? `
@@ -17,10 +17,10 @@ export const FileInput = styled.input.attrs({type: 'file'})`
17
17
  width: 100%;
18
18
  height: 100%;
19
19
  overflow: hidden;
20
- ::-webkit-file-upload-button {
20
+ &::-webkit-file-upload-button {
21
21
  visibility: hidden;
22
22
  }
23
- ::file-upload-button {
23
+ &::file-upload-button {
24
24
  visibility: hidden;
25
25
  }
26
26
  `