@tacc/core-styles 2.13.0 → 2.15.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 (257) hide show
  1. package/README.md +7 -0
  2. package/dist/branding_logos.css +1 -1
  3. package/dist/components/README.css +1 -1
  4. package/dist/components/admonition/demo.css +1 -1
  5. package/dist/components/admonition.css +1 -1
  6. package/dist/components/align/demo.css +1 -1
  7. package/dist/components/align.css +1 -1
  8. package/dist/components/bootstrap/bootstrap--form.demo.css +1 -1
  9. package/dist/components/bootstrap/bootstrap--modal.demo.css +1 -1
  10. package/dist/components/bootstrap/demo.css +1 -1
  11. package/dist/components/bootstrap.col.css +1 -1
  12. package/dist/components/bootstrap.container.css +1 -1
  13. package/dist/components/bootstrap.css +1 -1
  14. package/dist/components/bootstrap.figure.css +1 -1
  15. package/dist/components/bootstrap.form.css +1 -1
  16. package/dist/components/bootstrap.modal--cms.css +1 -1
  17. package/dist/components/bootstrap.modal--portal.css +1 -1
  18. package/dist/components/bootstrap.modal.css +1 -1
  19. package/dist/components/bootstrap.nav-tabs.css +1 -1
  20. package/dist/components/bootstrap.pagination.css +1 -1
  21. package/dist/components/bootstrap.row.css +1 -1
  22. package/dist/components/c-button/demo.css +1 -1
  23. package/dist/components/c-button.css +1 -1
  24. package/dist/components/c-button.selectors.css +1 -1
  25. package/dist/components/c-callout.css +1 -1
  26. package/dist/components/c-card/c-card--frontera.demo.css +1 -1
  27. package/dist/components/c-card/c-card.demo.css +1 -1
  28. package/dist/components/c-card--docs.css +1 -1
  29. package/dist/components/c-card--from-tup-cms.css +1 -1
  30. package/dist/components/c-card--frontera-about-page.css +1 -1
  31. package/dist/components/c-card.css +1 -1
  32. package/dist/components/c-card.selectors.css +1 -1
  33. package/dist/components/c-data-list.css +1 -1
  34. package/dist/components/c-footer.css +1 -1
  35. package/dist/components/c-form--cms.css +1 -1
  36. package/dist/components/c-form--portal.css +1 -1
  37. package/dist/components/c-form.css +1 -1
  38. package/dist/components/c-form.selectors.css +1 -0
  39. package/dist/components/c-image-map.css +1 -1
  40. package/dist/components/c-image-map.skin.css +1 -1
  41. package/dist/components/c-image-map.structure.css +1 -1
  42. package/dist/components/c-island/demo.css +1 -1
  43. package/dist/components/c-island.css +1 -1
  44. package/dist/components/c-message/demo.css +1 -1
  45. package/dist/components/c-message--compact.css +1 -1
  46. package/dist/components/c-message--expanded.css +1 -1
  47. package/dist/components/c-message.css +1 -1
  48. package/dist/components/c-message.selectors.css +1 -1
  49. package/dist/components/c-nav/demo.css +1 -1
  50. package/dist/components/c-nav.css +1 -1
  51. package/dist/components/c-page.css +1 -1
  52. package/dist/components/c-recognition.css +1 -1
  53. package/dist/components/c-see-all-link.css +1 -1
  54. package/dist/components/c-show-more.css +1 -1
  55. package/dist/components/c-tag/demo.css +1 -1
  56. package/dist/components/c-tag.css +1 -1
  57. package/dist/components/c-tag.selectors.css +1 -1
  58. package/dist/components/cortal.icon.css +1 -1
  59. package/dist/components/cortal.icon.font.css +1 -1
  60. package/dist/components/demo.css +1 -1
  61. package/dist/components/django-cms-forms.css +1 -1
  62. package/dist/components/django-cms-forms.hacks.css +1 -1
  63. package/dist/components/django-cms-forms.selectors.css +1 -0
  64. package/dist/components/mui.tabs.css +1 -1
  65. package/dist/components/pymdownx--tabbed.css +1 -1
  66. package/dist/components/pymdownx.css +1 -1
  67. package/dist/components/tacc-docs.css +1 -1
  68. package/dist/core-styles.base.css +2 -2
  69. package/dist/core-styles.cms.css +2 -2
  70. package/dist/core-styles.demo.css +1 -1
  71. package/dist/core-styles.docs.css +2 -2
  72. package/dist/core-styles.header.css +1 -1
  73. package/dist/core-styles.portal.css +2 -2
  74. package/dist/core-styles.settings.css +1 -1
  75. package/dist/core-styles.theme.default.css +1 -1
  76. package/dist/core-styles.theme.has-dark-logo.css +1 -1
  77. package/dist/core-styles.wysiwyg.css +1 -1
  78. package/dist/elements/README.css +1 -1
  79. package/dist/elements/bootstrap.css +1 -1
  80. package/dist/elements/demo.css +1 -1
  81. package/dist/elements/form.css +1 -0
  82. package/dist/elements/headings/demo.css +1 -1
  83. package/dist/elements/headings--cms.css +1 -1
  84. package/dist/elements/headings--docs.css +1 -1
  85. package/dist/elements/html-elements/demo.css +1 -1
  86. package/dist/elements/html-elements.cms.css +1 -1
  87. package/dist/elements/html-elements.css +1 -1
  88. package/dist/elements/html-elements.docs.css +1 -1
  89. package/dist/elements/links.css +1 -1
  90. package/dist/elements/monospace.css +1 -1
  91. package/dist/elements/root--cms.css +1 -1
  92. package/dist/elements/root--demo.css +1 -1
  93. package/dist/elements/root--docs.css +1 -1
  94. package/dist/elements/root--portal.css +1 -1
  95. package/dist/elements/root.css +1 -1
  96. package/dist/elements/sticky-footer.css +1 -1
  97. package/dist/elements/table--basic.css +1 -1
  98. package/dist/elements/table--nested.css +1 -1
  99. package/dist/elements/table.cms.css +1 -1
  100. package/dist/elements/table.css +1 -1
  101. package/dist/elements/table.docs.css +1 -1
  102. package/dist/elements/table.selectors.css +1 -1
  103. package/dist/elements/tacc-search-bar.css +1 -1
  104. package/dist/fractal.server.refresh.css +1 -1
  105. package/dist/generics/README.css +1 -1
  106. package/dist/generics/fonts.css +1 -1
  107. package/dist/generics/pseudo-elements.css +1 -1
  108. package/dist/objects/README.css +1 -1
  109. package/dist/objects/o-fixed-header-table/demo.css +1 -1
  110. package/dist/objects/o-fixed-header-table.css +1 -1
  111. package/dist/objects/o-flex-item-table-wrap/demo.css +1 -1
  112. package/dist/objects/o-flex-item-table-wrap.css +1 -1
  113. package/dist/objects/o-float-content.css +1 -1
  114. package/dist/objects/o-grid.css +1 -1
  115. package/dist/objects/o-offset-content.css +1 -1
  116. package/dist/objects/o-section/demo.css +1 -1
  117. package/dist/objects/o-section--docs.css +1 -1
  118. package/dist/objects/o-section.css +1 -1
  119. package/dist/objects/o-section.selectors.css +1 -1
  120. package/dist/objects/o-site.css +1 -1
  121. package/dist/objects/o-table-wrap/demo.basic.css +1 -1
  122. package/dist/objects/o-table-wrap/demo.extra.css +1 -1
  123. package/dist/objects/o-table-wrap/example.flexible-horz.css +1 -1
  124. package/dist/objects/o-table-wrap/example.overflow-hidden.css +1 -1
  125. package/dist/objects/o-table-wrap/example.overflow-scroll.css +1 -1
  126. package/dist/objects/o-table-wrap/o-table-wrap--flexible-horz.css +1 -1
  127. package/dist/objects/o-table-wrap/o-table-wrap--flexible-vert.css +1 -1
  128. package/dist/objects/o-table-wrap/o-table-wrap--overflow-hidden.css +1 -1
  129. package/dist/objects/o-table-wrap/o-table-wrap--overflow-scroll-extra.css +1 -1
  130. package/dist/objects/o-table-wrap/o-table-wrap--overflow-scroll.css +1 -1
  131. package/dist/objects/o-table-wrap.css +1 -1
  132. package/dist/settings/README.css +1 -1
  133. package/dist/settings/border.css +1 -1
  134. package/dist/settings/color/demo.css +1 -1
  135. package/dist/settings/color--cms.css +1 -1
  136. package/dist/settings/color--demo.css +1 -1
  137. package/dist/settings/color--docs.css +1 -1
  138. package/dist/settings/color--portal.css +1 -1
  139. package/dist/settings/color.accent--blue.css +1 -1
  140. package/dist/settings/color.accent--purple.css +1 -1
  141. package/dist/settings/color.css +1 -1
  142. package/dist/settings/demo.css +1 -1
  143. package/dist/settings/font/demo-family.css +1 -1
  144. package/dist/settings/font/demo-size.css +1 -1
  145. package/dist/settings/font/demo-style.css +1 -1
  146. package/dist/settings/font/demo-weight.css +1 -1
  147. package/dist/settings/font--cms.css +1 -1
  148. package/dist/settings/font--docs.css +1 -1
  149. package/dist/settings/font--portal.css +1 -1
  150. package/dist/settings/font.css +1 -1
  151. package/dist/settings/max-width.css +1 -1
  152. package/dist/settings/space.css +1 -1
  153. package/dist/tools/README.css +1 -1
  154. package/dist/tools/c-form.selectors.css +1 -0
  155. package/dist/tools/media-queries.css +1 -1
  156. package/dist/tools/s-form.css +1 -0
  157. package/dist/tools/selectors.common.css +1 -1
  158. package/dist/tools/selectors.css +1 -1
  159. package/dist/tools/selectors.form.css +1 -0
  160. package/dist/tools/selectors.monospace.css +1 -1
  161. package/dist/tools/x-article-link.css +1 -1
  162. package/dist/tools/x-blockquote.css +1 -1
  163. package/dist/tools/x-center.css +1 -1
  164. package/dist/tools/x-fake-border.css +1 -1
  165. package/dist/tools/x-figure.css +1 -1
  166. package/dist/tools/x-grid.css +1 -1
  167. package/dist/tools/x-layout.css +1 -1
  168. package/dist/tools/x-link.css +1 -1
  169. package/dist/tools/x-mailto-text-replace.css +1 -1
  170. package/dist/tools/x-overlay.css +1 -1
  171. package/dist/tools/x-tabs/demo.css +1 -1
  172. package/dist/tools/x-tabs.css +1 -1
  173. package/dist/tools/x-tabs.skin.css +1 -1
  174. package/dist/tools/x-tabs.structure.css +1 -1
  175. package/dist/tools/x-truncate.css +1 -1
  176. package/dist/trumps/README.css +1 -1
  177. package/dist/trumps/demo.css +1 -1
  178. package/dist/trumps/s-affixed-input-wrapper/demo.css +1 -0
  179. package/dist/trumps/s-affixed-input-wrapper.css +1 -1
  180. package/dist/trumps/s-article-list.css +1 -1
  181. package/dist/trumps/s-article-preview.css +1 -1
  182. package/dist/trumps/s-blockquote.css +1 -1
  183. package/dist/trumps/s-breadcrumbs.css +1 -1
  184. package/dist/trumps/s-cms-nav.css +1 -1
  185. package/dist/trumps/s-document.css +1 -1
  186. package/dist/trumps/s-footer.css +1 -1
  187. package/dist/trumps/s-form--cms.css +1 -0
  188. package/dist/trumps/s-form--portal.css +1 -0
  189. package/dist/trumps/s-form.css +1 -0
  190. package/dist/trumps/s-form.selectors.css +1 -0
  191. package/dist/trumps/s-guide-doc.css +1 -1
  192. package/dist/trumps/s-header.bootstrap.css +1 -1
  193. package/dist/trumps/s-header.css +1 -1
  194. package/dist/trumps/s-image-grid.css +1 -1
  195. package/dist/trumps/s-inline-dl.css +1 -1
  196. package/dist/trumps/s-irregular-links.css +1 -1
  197. package/dist/trumps/s-paragraph-table.css +1 -1
  198. package/dist/trumps/s-portal-nav.css +1 -1
  199. package/dist/trumps/s-style-guide.css +1 -1
  200. package/dist/trumps/s-system-specs.css +1 -1
  201. package/dist/trumps/tacc-search-bar.css +1 -1
  202. package/dist/trumps/u-empty.css +1 -1
  203. package/dist/trumps/u-hide.css +1 -1
  204. package/dist/trumps/u-mailto-text-replace.css +1 -1
  205. package/dist/trumps/u-nested-text-content.css +1 -1
  206. package/docs/bootstrap.md +52 -0
  207. package/docs/contributing.config.yml +1 -0
  208. package/docs/contributing.md +4 -2
  209. package/docs/shortcuts/forms.md +11 -0
  210. package/docs/shortcuts/tables.md +5 -3
  211. package/package.json +1 -1
  212. package/src/lib/_imports/_partials/field-errors.hbs +1 -0
  213. package/src/lib/_imports/_partials/form-errors.hbs +12 -0
  214. package/src/lib/_imports/_partials/form.hbs +431 -0
  215. package/src/lib/_imports/_partials/link-list.hbs +19 -9
  216. package/src/lib/_imports/components/c-button.css +4 -4
  217. package/src/lib/_imports/components/c-form/c-form.hbs +1 -366
  218. package/src/lib/_imports/components/c-form/config.yml +19 -5
  219. package/src/lib/_imports/components/c-form/readme.md +1 -7
  220. package/src/lib/_imports/components/c-form/toggle-required-fields.js +35 -19
  221. package/src/lib/_imports/components/c-form--cms.css +3 -2
  222. package/src/lib/_imports/components/c-form--portal.css +3 -2
  223. package/src/lib/_imports/components/c-form.css +53 -57
  224. package/src/lib/_imports/components/c-form.selectors.css +37 -0
  225. package/src/lib/_imports/components/c-nav/config.yml +3 -0
  226. package/src/lib/_imports/components/django-cms-forms/config.yml +35 -3
  227. package/src/lib/_imports/components/django-cms-forms/django-cms-forms.hbs +1 -408
  228. package/src/lib/_imports/components/django-cms-forms.css +12 -168
  229. package/src/lib/_imports/components/django-cms-forms.selectors.css +37 -0
  230. package/src/lib/_imports/components/pymdownx--tabbed.css +1 -1
  231. package/src/lib/_imports/core-styles.base.css +3 -0
  232. package/src/lib/_imports/core-styles.cms.css +0 -2
  233. package/src/lib/_imports/core-styles.docs.css +0 -1
  234. package/src/lib/_imports/elements/{form.cms.css → form.css} +11 -3
  235. package/src/lib/_imports/elements/html-elements.cms.css +3 -0
  236. package/src/lib/_imports/elements/html-elements.css +1 -1
  237. package/src/lib/_imports/tools/selectors.form.css +71 -0
  238. package/src/lib/_imports/trumps/s-affixed-input-wrapper/README.md +4 -2
  239. package/src/lib/_imports/trumps/s-affixed-input-wrapper/_s-affixed-input-wrapper--affix.hbs +15 -0
  240. package/src/lib/_imports/trumps/s-affixed-input-wrapper/_s-affixed-input-wrapper--end.hbs +13 -0
  241. package/src/lib/_imports/trumps/s-affixed-input-wrapper/config.yml +9 -1
  242. package/src/lib/_imports/trumps/s-affixed-input-wrapper/demo.css +5 -0
  243. package/src/lib/_imports/trumps/s-affixed-input-wrapper/s-affixed-input-wrapper--prefix-and-suffix.hbs +32 -0
  244. package/src/lib/_imports/trumps/s-affixed-input-wrapper/s-affixed-input-wrapper--prepend-and-append.hbs +43 -0
  245. package/src/lib/_imports/trumps/s-affixed-input-wrapper/s-affixed-input-wrapper.hbs +1 -32
  246. package/src/lib/_imports/trumps/s-affixed-input-wrapper.css +108 -47
  247. package/src/lib/_imports/trumps/s-form/config.yml +23 -0
  248. package/src/lib/_imports/trumps/s-form/readme.md +8 -0
  249. package/src/lib/_imports/trumps/s-form/s-form.hbs +1 -0
  250. package/src/lib/_imports/trumps/s-form--cms.css +1 -0
  251. package/src/lib/_imports/trumps/s-form--portal.css +1 -0
  252. package/src/lib/_imports/trumps/s-form.css +2 -0
  253. package/src/lib/_imports/trumps/s-form.selectors.css +38 -0
  254. package/dist/components/django-cms-forms--errors-via-c-message.css +0 -1
  255. package/dist/elements/form.cms.css +0 -1
  256. package/src/lib/_imports/components/django-cms-forms--errors-via-c-message.css +0 -23
  257. /package/docs/{index.md → 01-index.md} +0 -0
@@ -1,366 +1 @@
1
- {{#warning}}
2
- {{> @message tag="p" content=this }}
3
- {{/warning}}
4
-
5
- <form action="" method="POST" enctype="multipart/form-data" class="c-form">
6
-
7
- <h3 class="c-form__title">Title of Form</h3>
8
- <div class="c-form__desc">
9
- I describe the form, but not very well.
10
- </div>
11
-
12
- <ul class="c-form__errors" style="display:none;">
13
- <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
14
- </ul>
15
-
16
- <div class="c-form__field has-required">
17
- <ul class="c-form__errors" style="display:none;">
18
- <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
19
- </ul>
20
-
21
- <label for="name">
22
- Name<span class="c-form__star">*</span>
23
- </label>
24
-
25
- <input
26
- type="text"
27
- name="name"
28
- required=""
29
- placeholder="Your name"
30
- id="name"
31
- />
32
-
33
- <div class="c-form__help">
34
- We use this to identify your submission.
35
- </div>
36
- </div>
37
-
38
- <div class="c-form__field">
39
- <ul class="c-form__errors" style="display:none;">
40
- <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
41
- </ul>
42
-
43
- <label for="favorite-fruit">Favorite Fruit</label>
44
-
45
- <select name="favorite-fruit" id="favorite-fruit">
46
- <option value="" selected="">
47
- Please select an option
48
- </option>
49
- <option value="Apple">Apple</option>
50
- <option value="Banana">Banana</option>
51
- <option value="Cherry">Cherry</option>
52
- <option value="Durian">Durian</option>
53
- <option value="Other">Other</option>
54
- <option value="Whatever">Whatever</option>
55
- </select>
56
-
57
- <div class="c-form__help">
58
- Choose your favorite fruit.
59
- </div>
60
- </div>
61
-
62
- <div class="c-form__field">
63
- <ul class="c-form__errors" style="display:none;">
64
- <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
65
- </ul>
66
-
67
- <label for="wake-up-time">Wake Up Time</label>
68
-
69
- <input
70
- type="time"
71
- name="wake-up-time"
72
- id="wake-up-time"
73
- />
74
-
75
- <div class="c-form__help">
76
- We use this to know when to wake you up.
77
- </div>
78
- </div>
79
-
80
- <div class="c-form__field">
81
- <ul class="c-form__errors" style="display:none;">
82
- <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
83
- </ul>
84
-
85
- <label>Radio stations</label>
86
-
87
- <ul id="radio-stations">
88
- <li>
89
- <label for="radio-stations-0">
90
- <input
91
- type="radio"
92
- name="radio-stations"
93
- value="LX 1234"
94
- id="radio-stations-0"
95
- />
96
- LX 1234
97
- </label>
98
- </li>
99
- <li>
100
- <label for="radio-stations-1">
101
- <input
102
- type="radio"
103
- name="radio-stations"
104
- value="LOVE 45"
105
- id="radio-stations-1"
106
- />
107
- LOVE 45
108
- </label>
109
- </li>
110
- <li>
111
- <label for="radio-stations-2">
112
- <input
113
- type="radio"
114
- name="radio-stations"
115
- value="OLD 555"
116
- id="radio-stations-2"
117
- />
118
- OLD 555
119
- </label>
120
- </li>
121
- </ul>
122
-
123
- <div class="c-form__help">
124
- Which radio stations do you prefer?
125
- </div>
126
- </div>
127
-
128
- <div class="c-form__field has-type-check">
129
- <ul class="c-form__errors" style="display:none;">
130
- <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
131
- </ul>
132
-
133
- <input
134
- type="checkbox"
135
- name="checking-out"
136
- id="checking-out"
137
- />
138
-
139
- <label for="checking-out">Checking Out?</label>
140
-
141
- <div class="c-form__help">
142
- Are you checking out today?
143
- </div>
144
- </div>
145
-
146
- <div class="c-form__field">
147
- <ul class="c-form__errors" style="display:none;">
148
- <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
149
- </ul>
150
-
151
- <label for="">
152
- Which fish do you want?
153
- </label>
154
-
155
- <ul id="which-fish-do-you-want">
156
- <li>
157
- <label for="which-fish-do-you-want-0">
158
- <input
159
- type="checkbox"
160
- name="which-fish-do-you-want"
161
- value="one fish"
162
- id="which-fish-do-you-want-0"
163
- />
164
- one fish
165
- </label>
166
- </li>
167
- <li>
168
- <label for="which-fish-do-you-want-1">
169
- <input
170
- type="checkbox"
171
- name="which-fish-do-you-want"
172
- value="two fish"
173
- id="which-fish-do-you-want-1"
174
- />
175
- two fish
176
- </label>
177
- </li>
178
- <li>
179
- <label for="which-fish-do-you-want-2">
180
- <input
181
- type="checkbox"
182
- name="which-fish-do-you-want"
183
- value="red fish"
184
- id="which-fish-do-you-want-2"
185
- />
186
- red fish
187
- </label>
188
- </li>
189
- <li>
190
- <label for="which-fish-do-you-want-3">
191
- <input
192
- type="checkbox"
193
- name="which-fish-do-you-want"
194
- value="blue fish"
195
- id="which-fish-do-you-want-3"
196
- />
197
- blue fish
198
- </label>
199
- </li>
200
- <li>
201
- <label for="which-fish-do-you-want-4">
202
- <input
203
- type="checkbox"
204
- name="which-fish-do-you-want"
205
- value="all the fish"
206
- id="which-fish-do-you-want-4"
207
- />
208
- all the fish
209
- </label>
210
- </li>
211
- </ul>
212
- </div>
213
-
214
- <div class="c-form__field">
215
- <ul class="c-form__errors" style="display:none;">
216
- <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
217
- </ul>
218
-
219
- <label for="hangry-time">Hangry Time</label>
220
-
221
- <select name="hangry-time" id="hangry-time">
222
- <option value="" selected="">
223
- Please select an option
224
- </option>
225
- <option value="Morning">Morning</option>
226
- <option value="Noon">Noon</option>
227
- <option value="Afternoon">Afternoon</option>
228
- <option value="Evening">Evening</option>
229
- <option value="Night">Night</option>
230
- <option value="Midnight">Midnight</option>
231
- </select>
232
-
233
- <div class="c-form__help">
234
- At which time of day do you get hangry?
235
- </div>
236
- </div>
237
-
238
- <div class="c-form__field">
239
- <ul class="c-form__errors" style="display:none;">
240
- <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
241
- </ul>
242
-
243
- <label for="life-story">Life Story</label>
244
-
245
- <textarea
246
- name="life-story"
247
- cols="40"
248
- rows="10"
249
- id="life-story"
250
- ></textarea>
251
-
252
- <div class="c-form__help">
253
- Go on, tell me everything.
254
- </div>
255
- </div>
256
-
257
- <div class="c-form__field">
258
- <ul class="c-form__errors" style="display:none;">
259
- <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
260
- </ul>
261
-
262
- <label for="what-day-is-it">What day is it?</label>
263
-
264
- <input
265
- type="date"
266
- name="what-day-is-it"
267
- id="what-day-is-it"
268
- />
269
-
270
- <div class="c-form__help">
271
- Please enter today's date.
272
- </div>
273
- </div>
274
-
275
- <div class="c-form__field">
276
- <ul class="c-form__errors" style="display:none;">
277
- <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
278
- </ul>
279
-
280
- <label for="your-favorite-picture">Your favorite picture</label>
281
-
282
- <input
283
- type="file"
284
- name="your-favorite-picture"
285
- id="your-favorite-picture"
286
- />
287
-
288
- <div class="c-form__help">
289
- Upload your favorite image.
290
- <small>
291
- Supported types:
292
- <code>.jpeg</code>,<code>.jpg</code>,<code>.gif</code>,<code>.png</code>
293
- </small>
294
- </div>
295
- </div>
296
-
297
- <div class="c-form__field has-spam-check has-required">
298
- <ul class="c-form__errors" style="display:none;">
299
- <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
300
- </ul>
301
-
302
- <label for="recaptcha_g9y93gP8">
303
- Are you a robot?<span class="c-form__star">*</span>
304
- </label>
305
-
306
- <script src="https://www.google.com/recaptcha/api.js"></script>
307
- <script type="text/javascript">
308
- // Submit function to be called, after reCAPTCHA was successful. var
309
- onSubmit_9e32f28ccb9545109ff6ae891f9af324 = function(token){" "}
310
- {console.log("reCAPTCHA validated for 'data-widget-uuid=\"9e32f28ccb9545109ff6ae891f9af324\"'")};
311
- </script>
312
- <div class="g-recaptcha" data-sitekey="6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI" required="" id="recaptcha_g9y93gP8" data-widget-uuid="9e32f28ccb9545109ff6ae891f9af324" data-callback="onSubmit_9e32f28ccb9545109ff6ae891f9af324" data-size="normal"></div>
313
- </div>
314
-
315
- <div class="c-form__buttons">
316
- <button class="c-form__button" type="submit">
317
- Submit
318
- </button>
319
- <button id="toggle-field-errors" class="c-form__button" type="button">
320
- Toggle Field Errors
321
- </button>
322
- <button id="toggle-required-fields" class="c-form__button" type="button">
323
- Toggle Required Fields
324
- </button>
325
- </div>
326
-
327
- </form>
328
-
329
- <script type="module">
330
- import toggleFieldErrors from '{{ path "/components/raw/c-form/toggle-field-errors.js" }}';
331
-
332
- document.addEventListener('DOMContentLoaded', () => {
333
- const toggle = document.getElementById('toggle-field-errors');
334
- const form = document.querySelector('form');
335
-
336
- toggle.addEventListener('click', () => {
337
- toggleFieldErrors( form, '.c-form__errors');
338
- });
339
- });
340
- </script>
341
- <script type="module">
342
- import toggleRequiredFields from '{{ path "/components/raw/c-form/toggle-required-fields.js" }}';
343
-
344
- document.addEventListener('DOMContentLoaded', () => {
345
- const toggle = document.getElementById('toggle-required-fields');
346
- const form = toggle.closest('form');
347
-
348
- toggle.addEventListener('click', () => {
349
- toggleRequiredFields( form, 'c-form__field', 'has-required', {
350
- shouldScrollToFirst: true
351
- });
352
- });
353
- });
354
- </script>
355
- <script type="module">
356
- document.addEventListener('DOMContentLoaded', () => {
357
- const form = document.querySelector('form');
358
-
359
- form.addEventListener('submit', event => {
360
- event.preventDefault();
361
-
362
- /* TODO: Show success message on form */
363
- alert('Form was not submitted, because this is an incomplete demo.');
364
- });
365
- });
366
- </script>
1
+ {{> @form class=classNames selectors=selectors message=message }}
@@ -1,14 +1,28 @@
1
+ context:
2
+ helpTextTag: div
3
+ inputListTag: ul
4
+ selectors:
5
+ errorList: .c-form__errors
6
+ wrap: .c-form__field
7
+ classNames:
8
+ root: c-form
9
+ title: c-form__title
10
+ desc: c-form__desc
11
+ errors: c-form__errors
12
+ field: c-form__field
13
+ badge: c-form__star
14
+ hint: c-form__help
15
+ has_required: has-required
16
+ has_checkbox: has-type-check
17
+ has_spam_filter: has-spam-check
18
+ buttons: c-form__buttons
19
+ button: c-form__button
1
20
  variants:
2
21
  - name: default
3
22
  status: prototype
4
- context:
5
- warning: This component looks better with <code>elements/form.cms.css</code>, but that styles is not loaded by default. To understand the problem, see "Portal" variant.
6
- supportStyles:
7
- - ../../assets/components/c-message.css
8
23
  - name: portal
9
24
  context:
10
25
  shouldLoadPortal: true
11
- warning: This component looks better with <code>elements/form.cms.css</code>, but that styles is not loaded for this variant. When this component is used on the Portal, those necessary CMS styles are loaded via <code>LoginComponent.module.css</code> specifically for Login page, but incidentally loaded for entire Portal (and thus depended on). When this component is styled accurately independent of CMS, this message should be removed. <small>The solution is likely to change <code>elements/form.cms.css</code> to be <code>elements/form.css</code>.</small>
12
26
  - name: cms
13
27
  label: CMS
14
28
  status: ready
@@ -1,10 +1,4 @@
1
- To style when raw [Form elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Element#table_content) are insufficient.
2
-
3
- > <details><summary><strong>✎ Inspiration</strong></summary>
4
- >
5
- > - [Django CMS Form Default Template](https://github.com/avryhof/djangocms-forms/blob/ab38b22/djangocms_forms/templates/djangocms_forms/form_template/default.html)
6
- >
7
- > </details>
1
+ To style when raw [Form elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Element#table_content) alone are **not** sufficient.
8
2
 
9
3
  <script>
10
4
  /* To open external links in new window */
@@ -6,27 +6,44 @@
6
6
  * @type {object.<string,*>}
7
7
  */
8
8
  const DEFAULT_CLASS_NAMES = {
9
- errorList: null,
9
+ /* The class added when required state has been changed and is active */
10
10
  jsIs: 'js-is-required',
11
- jsNot: 'js-not-required'
11
+ /* The class added when required state has been changed and is not active */
12
+ jsNot: 'js-not-required',
13
+ /* The class for the wrapper of a field that is required */
14
+ wrapRequired: undefined,
12
15
  };
13
16
 
14
17
  /**
15
18
  * @constant
16
19
  * @default
17
- * @type {object.<string,*>}
20
+ * @type {object.<*,*>}
18
21
  */
19
22
  const DEFAULT_OPTIONS = {
20
- shouldScrollToFirst: false
23
+ /* @type {boolean} - should scroll to the first required field */
24
+ shouldScrollToFirst: false,
25
+ /* @type {DEFAULT_CLASS_NAMES} */
26
+ classNames: {}
27
+ };
28
+
29
+ /**
30
+ * @constant
31
+ * @default
32
+ * @type {object.<string,*>}
33
+ */
34
+ const DEFAULT_SELECTORS = {
35
+ /* The wrapper of a field */
36
+ wrap: 'div'
21
37
  };
22
38
 
23
39
  /**
24
40
  * Make a field NOT required (and update field wrapper accordingly)
25
41
  * @param {HTMLInputElement|HTMLSelectElement|HTMLTextAreaElement} field
26
- * @param {string} wrapClassRequired - class on field's wrapper
42
+ * @param {DEFAULT_CLASS_NAMES} classNames
43
+ * @param {DEFAULT_SELECTORS} selectors
27
44
  */
28
- function unRequireField( field, classNames ) {
29
- const wrap = field.closest('.' + classNames.wrap );
45
+ function unRequireField( field, classNames, selectors ) {
46
+ const wrap = field.closest( selectors.wrap );
30
47
 
31
48
  field.required = false;
32
49
  field.classList.add( classNames.jsNot );
@@ -39,10 +56,11 @@ function unRequireField( field, classNames ) {
39
56
  /**
40
57
  * Make a field REQUIRED (and update field wrapper accordingly)
41
58
  * @param {HTMLInputElement|HTMLSelectElement|HTMLTextAreaElement} field
42
- * @param {string} wrapClassRequired - class on field's wrapper
59
+ * @param {DEFAULT_CLASS_NAMES} classNames
60
+ * @param {DEFAULT_SELECTORS} selectors
43
61
  */
44
- function requireField( field, classNames ) {
45
- const wrap = field.closest('.' + classNames.wrap );
62
+ function requireField( field, classNames, selectors ) {
63
+ const wrap = field.closest( selectors.wrap );
46
64
 
47
65
  field.required = true;
48
66
  field.classList.add( classNames.jsIs );
@@ -55,16 +73,14 @@ function requireField( field, classNames ) {
55
73
  /**
56
74
  * Toggle required attribute (and classes) of fields (and field wrappers)
57
75
  * @param {Document|HTMLElement} [scope=document] - where to search for fields
58
- * @param {string} [wrapClass] - class on all field wrappers
59
- * @param {string} [wrapRequiredClass] - class on required fields' wrappers
60
76
  * @param {object.<string,*>} [opts]
77
+ * @param {DEFAULT_CLASS_NAMES} [opts.classNames] - to scroll to first such field
78
+ * @param {DEFAULT_SELECTORS} [opts.selectors] - to scroll to first such field
61
79
  * @param {boolean} [opts.shouldScrollToFirst] - to scroll to first such field
62
80
  */
63
- export default function toggleRequiredFields( scope = document, wrapClass, wrapRequiredClass, opts ) {
64
- const classNames = Object.assign( DEFAULT_CLASS_NAMES, {
65
- wrap: wrapClass,
66
- wrapRequired: wrapRequiredClass
67
- });
81
+ export default function toggleRequiredFields( scope = document, opts ) {
82
+ const classNames = Object.assign( DEFAULT_CLASS_NAMES, opts.classNames );
83
+ const selectors = Object.assign( DEFAULT_SELECTORS, opts.selectors );
68
84
  const options = Object.assign( DEFAULT_OPTIONS, opts );
69
85
  const requiredFields = scope.querySelectorAll(`
70
86
  [required]:is(input, select, textarea),
@@ -73,9 +89,9 @@ export default function toggleRequiredFields( scope = document, wrapClass, wrapR
73
89
 
74
90
  [ ...requiredFields ].forEach( field => {
75
91
  if ( field.hasAttribute('required') ) {
76
- unRequireField( field, classNames );
92
+ unRequireField( field, classNames, selectors );
77
93
  } else {
78
- requireField( field, classNames );
94
+ requireField( field, classNames, selectors );
79
95
  }
80
96
  });
81
97
 
@@ -1,11 +1,12 @@
1
1
  @import url("../components/c-message.css");
2
2
  @import url("../components/c-message--expanded.css");
3
+ @import url("../tools/selectors.form.css");
3
4
 
4
5
 
5
6
 
6
7
  /* Errors */
7
8
 
8
- .c-form > .c-form__errors {
9
+ :--form__errors--form {
9
10
  @extend :--c-message;
10
11
  @extend :--c-message--type;
11
12
  @extend :--c-message--type-error;
@@ -13,7 +14,7 @@
13
14
  @extend :--c-message--scope-section;
14
15
  @extend :--c-message--type-error:--c-message--scope-section;
15
16
  }
16
- .c-form__field .c-form__errors li {
17
+ :--form__errors--field li {
17
18
  @extend :--c-message;
18
19
  @extend :--c-message--type;
19
20
  @extend :--c-message--type-error;
@@ -1,11 +1,12 @@
1
1
  @import url("../components/c-message.css");
2
2
  @import url("../components/c-message--compact.css");
3
+ @import url("../tools/selectors.form.css");
3
4
 
4
5
 
5
6
 
6
7
  /* Errors */
7
8
 
8
- .c-form > .c-form__errors {
9
+ :--form__errors--form {
9
10
  @extend :--c-message;
10
11
  @extend :--c-message--type;
11
12
  @extend :--c-message--type-error;
@@ -13,7 +14,7 @@
13
14
  @extend :--c-message--scope-section;
14
15
  @extend :--c-message--type-error:--c-message--scope-section;
15
16
  }
16
- .c-form__field .c-form__errors li {
17
+ :--form__errors--field li {
17
18
  @extend :--c-message;
18
19
  @extend :--c-message--type;
19
20
  @extend :--c-message--type-error;