@3t-transform/threeteeui 0.1.5 → 0.1.7

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 (167) hide show
  1. package/dist/cjs/app-globals-3a1e7e63.js +5 -0
  2. package/dist/cjs/css-shim-211819bc.js +6 -0
  3. package/dist/cjs/dom-9deb26c8.js +75 -0
  4. package/dist/cjs/index-11cfdabe.js +3297 -0
  5. package/dist/cjs/{index-906c2757.js → index-451f61dd.js} +3 -102
  6. package/dist/cjs/loader.cjs.js +19 -4
  7. package/dist/cjs/shadow-css-bf3843d2.js +389 -0
  8. package/dist/cjs/{tttx-button_2.cjs.entry.js → tttx-button.cjs.entry.js} +24 -50
  9. package/dist/cjs/tttx-form.cjs.entry.js +364 -364
  10. package/dist/cjs/tttx-icon.cjs.entry.js +21 -0
  11. package/dist/cjs/tttx-keyvalue-block.cjs.entry.js +57 -57
  12. package/dist/cjs/tttx-list.cjs.entry.js +76 -46
  13. package/dist/cjs/tttx-loading-spinner.cjs.entry.js +16 -16
  14. package/dist/cjs/tttx-standalone-input.cjs.entry.js +61 -58
  15. package/dist/cjs/tttx-toolbar.cjs.entry.js +20 -0
  16. package/dist/cjs/tttx.cjs.js +117 -9
  17. package/dist/collection/collection-manifest.json +4 -3
  18. package/dist/collection/components/atoms/tttx-button/test/tttx-button.e2e.js +9 -0
  19. package/dist/collection/components/atoms/tttx-button/test/tttx-button.spec.js +83 -0
  20. package/dist/collection/components/atoms/tttx-button/tttx-button.js +110 -116
  21. package/dist/collection/components/atoms/tttx-button/tttx-button.stories.js +14 -14
  22. package/dist/collection/components/atoms/tttx-icon/test/tttx-icon.e2e.js +9 -0
  23. package/dist/collection/components/atoms/tttx-icon/test/tttx-icon.spec.js +16 -0
  24. package/dist/collection/components/atoms/tttx-icon/tttx-icon.css +4 -0
  25. package/dist/collection/components/atoms/tttx-icon/tttx-icon.js +62 -62
  26. package/dist/collection/components/atoms/tttx-icon/tttx-icon.stories.js +22 -22
  27. package/dist/collection/components/atoms/tttx-keyvalue-block/test/tttx-keyvalue-block.spec.js +216 -0
  28. package/dist/collection/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.js +107 -107
  29. package/dist/collection/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.stories.js +38 -38
  30. package/dist/collection/components/atoms/tttx-loading-spinner/Test/tttx-loading-spinner.spec.js +64 -0
  31. package/dist/collection/components/atoms/tttx-loading-spinner/tttx-loading-spinner.js +67 -67
  32. package/dist/collection/components/atoms/tttx-loading-spinner/tttx-loading-spinner.stories.js +17 -17
  33. package/dist/collection/components/molecules/tttx-form/lib/setErrorState.js +35 -35
  34. package/dist/collection/components/molecules/tttx-form/lib/setErrorState.spec.js +38 -0
  35. package/dist/collection/components/molecules/tttx-form/lib/validityCheck.js +58 -58
  36. package/dist/collection/components/molecules/tttx-form/lib/validityCheck.spec.js +214 -0
  37. package/dist/collection/components/molecules/tttx-form/test/tttx-form.e2e.js +9 -0
  38. package/dist/collection/components/molecules/tttx-form/test/tttx-form.spec.js +232 -0
  39. package/dist/collection/components/molecules/tttx-form/tttx-form.css +32 -3
  40. package/dist/collection/components/molecules/tttx-form/tttx-form.js +364 -364
  41. package/dist/collection/components/molecules/tttx-form/tttx-form.stories.js +127 -127
  42. package/dist/collection/components/molecules/tttx-list/test/ttttx-list.spec.e2e.js +26 -0
  43. package/dist/collection/components/molecules/tttx-list/test/tttx-list.spec.js +183 -0
  44. package/dist/collection/components/molecules/tttx-list/tttx-list.js +105 -105
  45. package/dist/collection/components/molecules/tttx-list/tttx-list.stories.js +43 -43
  46. package/dist/collection/components/molecules/tttx-standalone-input/test/tttx-standalone-input.e2e.js +9 -0
  47. package/dist/collection/components/molecules/tttx-standalone-input/test/tttx-standalone-input.spec.js +219 -0
  48. package/dist/collection/components/molecules/tttx-standalone-input/tttx-standalone-input.css +32 -3
  49. package/dist/collection/components/molecules/tttx-standalone-input/tttx-standalone-input.js +627 -572
  50. package/dist/collection/components/molecules/tttx-standalone-input/tttx-standalone-input.stories.js +148 -135
  51. package/dist/collection/components/molecules/tttx-toolbar/test/tttx-toolbar.test.js +0 -0
  52. package/dist/collection/components/molecules/tttx-toolbar/tttx-toolbar.css +30 -0
  53. package/dist/collection/components/molecules/tttx-toolbar/tttx-toolbar.js +44 -0
  54. package/dist/collection/components/molecules/tttx-toolbar/tttx-toolbar.stories.js +20 -0
  55. package/dist/collection/components/palette.stories.js +7 -7
  56. package/dist/collection/docs/gettingstarted-developer.stories.js +5 -5
  57. package/dist/collection/icons.js +2838 -2838
  58. package/dist/collection/index.js +1 -1
  59. package/dist/collection/shared/domsanitiser.options.js +14 -14
  60. package/dist/collection/shared/test/domsanitiser.options.spec.js +23 -0
  61. package/dist/components/index.d.ts +1 -9
  62. package/dist/components/index.js +6 -1
  63. package/dist/components/tttx-button.js +48 -59
  64. package/dist/components/tttx-form.js +381 -381
  65. package/dist/components/tttx-icon2.js +29 -29
  66. package/dist/components/tttx-keyvalue-block.js +74 -74
  67. package/dist/components/tttx-list.js +98 -68
  68. package/dist/components/tttx-loading-spinner.js +33 -33
  69. package/dist/components/tttx-standalone-input.js +108 -102
  70. package/dist/components/tttx-toolbar.d.ts +11 -0
  71. package/dist/components/tttx-toolbar.js +36 -0
  72. package/dist/esm/app-globals-0f993ce5.js +3 -0
  73. package/dist/esm/css-shim-9d54a2f2.js +4 -0
  74. package/dist/esm/dom-6be6f662.js +73 -0
  75. package/dist/esm/{index-4010ad69.js → index-0350f122.js} +4 -101
  76. package/dist/esm/index-dbe25028.js +3262 -0
  77. package/dist/esm/loader.js +19 -4
  78. package/dist/esm/polyfills/core-js.js +0 -0
  79. package/dist/esm/polyfills/css-shim.js +1 -1
  80. package/dist/esm/polyfills/dom.js +0 -0
  81. package/dist/esm/polyfills/es5-html-element.js +0 -0
  82. package/dist/esm/polyfills/index.js +0 -0
  83. package/dist/esm/polyfills/system.js +0 -0
  84. package/dist/esm/shadow-css-ed4599f8.js +387 -0
  85. package/dist/esm/{tttx-button_2.entry.js → tttx-button.entry.js} +25 -50
  86. package/dist/esm/tttx-form.entry.js +364 -364
  87. package/dist/esm/tttx-icon.entry.js +17 -0
  88. package/dist/esm/tttx-keyvalue-block.entry.js +57 -57
  89. package/dist/esm/tttx-list.entry.js +76 -46
  90. package/dist/esm/tttx-loading-spinner.entry.js +16 -16
  91. package/dist/esm/tttx-standalone-input.entry.js +61 -58
  92. package/dist/esm/tttx-toolbar.entry.js +16 -0
  93. package/dist/esm/tttx.js +117 -6
  94. package/dist/tttx/app-globals-0f993ce5.js +3 -0
  95. package/dist/tttx/css-shim-9d54a2f2.js +4 -0
  96. package/dist/tttx/dom-6be6f662.js +73 -0
  97. package/dist/tttx/index-dbe25028.js +3262 -0
  98. package/dist/tttx/index.esm.js +1 -0
  99. package/dist/tttx/p-0a85dda4.entry.js +1 -0
  100. package/dist/tttx/{p-3281444a.entry.js → p-1b015a9d.entry.js} +1 -1
  101. package/dist/tttx/p-4f3958fa.entry.js +1 -0
  102. package/dist/tttx/p-5cae1beb.entry.js +1 -0
  103. package/dist/tttx/p-62869344.js +2 -0
  104. package/dist/tttx/p-92465671.entry.js +1 -0
  105. package/dist/tttx/{p-dab7ee1b.entry.js → p-a0179cb1.entry.js} +1 -1
  106. package/dist/tttx/p-cc6644c9.entry.js +1 -0
  107. package/dist/tttx/p-cd1565e0.entry.js +3 -0
  108. package/dist/tttx/shadow-css-ed4599f8.js +387 -0
  109. package/dist/tttx/tttx-button.entry.js +30 -0
  110. package/dist/tttx/tttx-form.entry.js +373 -0
  111. package/dist/tttx/tttx-icon.entry.js +17 -0
  112. package/dist/tttx/tttx-keyvalue-block.entry.js +63 -0
  113. package/dist/tttx/tttx-list.entry.js +1730 -0
  114. package/dist/tttx/tttx-loading-spinner.entry.js +22 -0
  115. package/dist/tttx/tttx-standalone-input.entry.js +66 -0
  116. package/dist/tttx/tttx-toolbar.entry.js +16 -0
  117. package/dist/tttx/tttx.esm.js +129 -1
  118. package/dist/types/components/atoms/tttx-button/test/tttx-button.e2e.d.ts +1 -0
  119. package/dist/types/components/atoms/tttx-button/test/tttx-button.spec.d.ts +1 -0
  120. package/dist/types/components/atoms/tttx-button/tttx-button.d.ts +10 -13
  121. package/dist/types/components/atoms/tttx-button/tttx-button.stories.d.ts +10 -10
  122. package/dist/types/components/atoms/tttx-icon/test/tttx-icon.e2e.d.ts +1 -0
  123. package/dist/types/components/atoms/tttx-icon/test/tttx-icon.spec.d.ts +1 -0
  124. package/dist/types/components/atoms/tttx-icon/tttx-icon.d.ts +5 -5
  125. package/dist/types/components/atoms/tttx-icon/tttx-icon.stories.d.ts +20 -20
  126. package/dist/types/components/atoms/tttx-keyvalue-block/test/tttx-keyvalue-block.spec.d.ts +1 -0
  127. package/dist/types/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.d.ts +7 -7
  128. package/dist/types/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.stories.d.ts +9 -9
  129. package/dist/types/components/atoms/tttx-loading-spinner/Test/tttx-loading-spinner.spec.d.ts +1 -0
  130. package/dist/types/components/atoms/tttx-loading-spinner/tttx-loading-spinner.d.ts +6 -6
  131. package/dist/types/components/atoms/tttx-loading-spinner/tttx-loading-spinner.stories.d.ts +17 -17
  132. package/dist/types/components/molecules/tttx-form/lib/setErrorState.d.ts +13 -13
  133. package/dist/types/components/molecules/tttx-form/lib/setErrorState.spec.d.ts +1 -0
  134. package/dist/types/components/molecules/tttx-form/lib/validityCheck.d.ts +17 -17
  135. package/dist/types/components/molecules/tttx-form/lib/validityCheck.spec.d.ts +1 -0
  136. package/dist/types/components/molecules/tttx-form/test/tttx-form.e2e.d.ts +1 -0
  137. package/dist/types/components/molecules/tttx-form/test/tttx-form.spec.d.ts +1 -0
  138. package/dist/types/components/molecules/tttx-form/tttx-form.d.ts +114 -114
  139. package/dist/types/components/molecules/tttx-form/tttx-form.stories.d.ts +13 -13
  140. package/dist/types/components/molecules/tttx-list/test/ttttx-list.spec.e2e.d.ts +1 -0
  141. package/dist/types/components/molecules/tttx-list/test/tttx-list.spec.d.ts +1 -0
  142. package/dist/types/components/molecules/tttx-list/tttx-list.d.ts +11 -11
  143. package/dist/types/components/molecules/tttx-list/tttx-list.stories.d.ts +14 -14
  144. package/dist/types/components/molecules/tttx-standalone-input/test/tttx-standalone-input.e2e.d.ts +1 -0
  145. package/dist/types/components/molecules/tttx-standalone-input/test/tttx-standalone-input.spec.d.ts +1 -0
  146. package/dist/types/components/molecules/tttx-standalone-input/tttx-standalone-input.d.ts +56 -53
  147. package/dist/types/components/molecules/tttx-standalone-input/tttx-standalone-input.stories.d.ts +122 -106
  148. package/dist/types/components/molecules/tttx-toolbar/test/tttx-toolbar.test.d.ts +0 -0
  149. package/dist/types/components/molecules/tttx-toolbar/tttx-toolbar.d.ts +4 -0
  150. package/dist/types/components/molecules/tttx-toolbar/tttx-toolbar.stories.d.ts +13 -0
  151. package/dist/types/components/palette.stories.d.ts +6 -6
  152. package/dist/types/components.d.ts +21 -0
  153. package/dist/types/docs/gettingstarted-developer.stories.d.ts +5 -5
  154. package/dist/types/icons.d.ts +2 -2
  155. package/dist/types/index.d.ts +1 -1
  156. package/dist/types/shared/domsanitiser.options.d.ts +10 -10
  157. package/dist/types/shared/test/domsanitiser.options.spec.d.ts +1 -0
  158. package/dist/types/stencil-public-runtime.d.ts +3 -59
  159. package/loader/index.d.ts +0 -9
  160. package/package.json +1 -1
  161. package/dist/collection/transform-tag-name.js +0 -5
  162. package/dist/tttx/p-083eeedc.entry.js +0 -1
  163. package/dist/tttx/p-5687f4ad.js +0 -2
  164. package/dist/tttx/p-5c9a1626.entry.js +0 -3
  165. package/dist/tttx/p-931e42c9.entry.js +0 -1
  166. package/dist/tttx/p-b5c1dd86.entry.js +0 -1
  167. package/dist/types/transform-tag-name.d.ts +0 -1
@@ -0,0 +1,9 @@
1
+ import { newE2EPage } from '@stencil/core/testing';
2
+ describe('tttx-form', () => {
3
+ it('renders', async () => {
4
+ const page = await newE2EPage();
5
+ await page.setContent('<tttx-form></tttx-form>');
6
+ const element = await page.find('tttx-form');
7
+ expect(element).toHaveClass('hydrated');
8
+ });
9
+ });
@@ -0,0 +1,232 @@
1
+ import { h } from '@stencil/core';
2
+ import { newSpecPage } from '@stencil/core/testing';
3
+ import { TttxForm } from '../tttx-form';
4
+ describe('tttx-form', () => {
5
+ it('renders', async () => {
6
+ const page = await newSpecPage({
7
+ components: [TttxForm],
8
+ html: '<tttx-form></tttx-form>',
9
+ });
10
+ expect(page.root).toEqualHtml(`
11
+ <tttx-form>
12
+ <mock:shadow-root>
13
+ <form>
14
+ <fieldset></fieldset>
15
+ </form>
16
+ </mock:shadow-root>
17
+ </tttx-form>
18
+ `);
19
+ });
20
+ it('renders a single form item', async () => {
21
+ const singleFormItemSchema = {
22
+ properties: {
23
+ input: {
24
+ type: 'string',
25
+ format: 'string',
26
+ form: {
27
+ type: 'text',
28
+ label: 'Input Field',
29
+ validation: {
30
+ required: {
31
+ message: 'Please enter something'
32
+ }
33
+ }
34
+ }
35
+ }
36
+ }
37
+ };
38
+ const page = await newSpecPage({
39
+ components: [TttxForm],
40
+ html: `<tttx-form formschema='${JSON.stringify(singleFormItemSchema)}'></tttx-form>`,
41
+ });
42
+ expect(page.root).toEqualHtml(`
43
+ <tttx-form formschema='${JSON.stringify(singleFormItemSchema)}'>
44
+ <mock:shadow-root>
45
+ <form>
46
+ <fieldset>
47
+ <label class="inputBlock">
48
+ Input Field
49
+ <input autocomplete="off" data-required="Please enter something" name="input" placeholder="" required="" type="text" />
50
+ <div class="errorBubble"></div>
51
+ </label>
52
+ <input class="button primary-blue" type="submit" value="Save">
53
+ </fieldset>
54
+ </form>
55
+ </mock:shadow-root>
56
+ </tttx-form>
57
+ `);
58
+ });
59
+ it('renders without validation', async () => {
60
+ const singleFormItemSchema = {
61
+ properties: {
62
+ input: {
63
+ type: 'string',
64
+ format: 'string',
65
+ form: {
66
+ type: 'text',
67
+ label: 'Input Field'
68
+ }
69
+ }
70
+ }
71
+ };
72
+ const page = await newSpecPage({
73
+ components: [TttxForm],
74
+ html: `<tttx-form formschema='${JSON.stringify(singleFormItemSchema)}'></tttx-form>`,
75
+ });
76
+ expect(page.root).toEqualHtml(`
77
+ <tttx-form formschema='${JSON.stringify(singleFormItemSchema)}'>
78
+ <mock:shadow-root>
79
+ <form>
80
+ <fieldset>
81
+ <label class="inputBlock">
82
+ Input Field
83
+ <span class="optional">
84
+ (optional)
85
+ </span>
86
+ <input autocomplete="off" name="input" placeholder="" type="text" />
87
+ <div class="errorBubble"></div>
88
+ </label>
89
+ <input class="button primary-blue" type="submit" value="Save">
90
+ </fieldset>
91
+ </form>
92
+ </mock:shadow-root>
93
+ </tttx-form>
94
+ `);
95
+ });
96
+ it('renders a complex form', async () => {
97
+ const formSchema = {
98
+ properties: {
99
+ title: {
100
+ type: 'string',
101
+ format: 'string',
102
+ form: {
103
+ type: 'text',
104
+ placeholder: 'Mr, Mrs, Dr, Hon Rev',
105
+ label: 'Title',
106
+ },
107
+ },
108
+ forename: {
109
+ type: 'string',
110
+ format: 'string',
111
+ form: {
112
+ type: 'text',
113
+ placeholder: 'John',
114
+ label: 'Forename',
115
+ validation: {
116
+ required: {
117
+ message: 'Please enter your forename',
118
+ },
119
+ },
120
+ },
121
+ },
122
+ surname: {
123
+ type: 'string',
124
+ format: 'string',
125
+ form: {
126
+ type: 'text',
127
+ placeholder: 'Doe',
128
+ label: 'Surname',
129
+ validation: {
130
+ required: {
131
+ message: 'Please enter your surname',
132
+ },
133
+ },
134
+ },
135
+ },
136
+ postcode: {
137
+ type: 'string',
138
+ format: 'string',
139
+ form: {
140
+ type: 'text',
141
+ placeholder: 'AB10',
142
+ label: 'Start of postcode',
143
+ validation: {
144
+ required: {
145
+ message: 'Please enter the beginning of your postcode',
146
+ },
147
+ pattern: {
148
+ pattern: '^([A-Za-z][0-9])$|^([A-Za-z][0-9]{2})$|^([A-Za-z]{2}[0-9])$|^([A-Za-z]{2}[0-9]{2})$|^([A-Za-z][0-9][A-Za-z])$|^([A-Za-z]{2}[0-9][A-Za-z])$|^(GIR|BF|BX|XX)$',
149
+ message: 'Please enter the first half of your postcode. EG: ZZ99',
150
+ },
151
+ maxlength: 4,
152
+ },
153
+ },
154
+ },
155
+ age: {
156
+ type: 'number',
157
+ format: 'number',
158
+ form: {
159
+ type: 'number',
160
+ placeholder: '',
161
+ label: 'Age',
162
+ validation: {
163
+ required: {
164
+ message: 'Please enter your age',
165
+ },
166
+ badInput: {
167
+ message: 'Please enter a number',
168
+ },
169
+ },
170
+ },
171
+ },
172
+ dob: {
173
+ type: 'string',
174
+ format: 'date-time',
175
+ form: {
176
+ type: 'date',
177
+ placeholder: '',
178
+ label: 'Date of birth',
179
+ validation: {
180
+ required: {
181
+ message: 'Please enter your date of birth',
182
+ },
183
+ minmax: {
184
+ min: '1900-01-01',
185
+ max: '2100-12-31',
186
+ message: 'Please enter a date between 1900 and 2100',
187
+ },
188
+ },
189
+ },
190
+ },
191
+ },
192
+ };
193
+ const page = await newSpecPage({
194
+ components: [TttxForm],
195
+ template: () => (h("tttx-form", { formschema: formSchema })),
196
+ });
197
+ expect(page.root).toEqualHtml(`
198
+ <tttx-form>
199
+ <mock:shadow-root>
200
+ <form>
201
+ <fieldset>
202
+ <label class="inputBlock">Title<span class="optional">&nbsp;(optional)</span>
203
+ <input autocomplete="off" name="title" placeholder="Mr, Mrs, Dr, Hon Rev" type="text" />
204
+ <div class="errorBubble"></div>
205
+ </label>
206
+ <label class="inputBlock">Forename
207
+ <input autocomplete="off" data-required="Please enter your forename" name="forename" placeholder="John" required="" type="text"/>
208
+ <div class="errorBubble"></div>
209
+ </label>
210
+ <label class="inputBlock">Surname
211
+ <input autocomplete="off" data-required="Please enter your surname" name="surname" placeholder="Doe" required="" type="text">
212
+ <div class="errorBubble"></div>
213
+ </label>
214
+ <label class="inputBlock">Start of postcode
215
+ <input autocomplete="off" data-pattern="Please enter the first half of your postcode. EG: ZZ99" data-required="Please enter the beginning of your postcode" maxlength="4" name="postcode" pattern="^([A-Za-z][0-9])$|^([A-Za-z][0-9]{2})$|^([A-Za-z]{2}[0-9])$|^([A-Za-z]{2}[0-9]{2})$|^([A-Za-z][0-9][A-Za-z])$|^([A-Za-z]{2}[0-9][A-Za-z])$|^(GIR|BF|BX|XX)$" placeholder="AB10" required="" type="text">
216
+ <div class="errorBubble"></div>
217
+ </label>
218
+ <label class="inputBlock">Age
219
+ <input autocomplete="off" data-badinput="Please enter a number" data-required="Please enter your age" name="age" placeholder="" required="" type="number">
220
+ <div class="errorBubble"></div>
221
+ </label>
222
+ <label class="inputBlock">Date of birth
223
+ <input autocomplete="off" data-range="Please enter a date between 1900 and 2100" data-required="Please enter your date of birth" max="2100-12-31" min="1900-01-01" name="dob" placeholder="" required="" type="date">
224
+ <div class="errorBubble"></div>
225
+ </label>
226
+ <input type="submit" class="button primary-blue" value="Save"></fieldset>
227
+ </form>
228
+ </mock:shadow-root>
229
+ </tttx-form>
230
+ `);
231
+ });
232
+ });
@@ -45,7 +45,6 @@
45
45
 
46
46
  .icon-right {
47
47
  margin-top: 5px;
48
- margin-right: 4px;
49
48
  }
50
49
 
51
50
  .icon-left {
@@ -61,8 +60,10 @@
61
60
  padding-right: 4px;
62
61
  }
63
62
 
64
- .focused {
65
- border-color: #1479c6;
63
+ .input-icon {
64
+ position: absolute;
65
+ margin-top: 9px;
66
+ margin-left: 4px;
66
67
  }
67
68
 
68
69
  .errormsg {
@@ -104,6 +105,20 @@ label.inputBlock {
104
105
  line-height: 21px;
105
106
  }
106
107
 
108
+ label.inputInline {
109
+ display: flex;
110
+ white-space: nowrap;
111
+ align-items: center;
112
+ }
113
+ label.inputInline .input-container {
114
+ margin: 0 4px;
115
+ width: 100%;
116
+ display: flex;
117
+ align-items: center;
118
+ gap: 4px;
119
+ position: relative;
120
+ }
121
+
107
122
  label {
108
123
  font-weight: 500;
109
124
  font-size: 16px;
@@ -129,10 +144,20 @@ input[type=date] {
129
144
  line-height: 37px;
130
145
  }
131
146
 
147
+ /* Android device date alignment fix */
148
+ @media (max-width: 600px) {
149
+ input[type=date] {
150
+ padding-top: 6px;
151
+ }
152
+ }
132
153
  input.invalid:invalid, input.standalone.invalid {
133
154
  border: 1px solid #dc0000;
134
155
  }
135
156
 
157
+ .input-icon ~ input {
158
+ padding: 0 32px;
159
+ }
160
+
136
161
  input ~ .errorBubble {
137
162
  min-height: 27px;
138
163
  position: relative;
@@ -172,6 +197,10 @@ input:focus {
172
197
  border-color: #1479c6;
173
198
  }
174
199
 
200
+ input:focus-visible {
201
+ outline: none;
202
+ }
203
+
175
204
  .button {
176
205
  font-family: Roboto, serif;
177
206
  box-sizing: border-box;