@tacc/core-styles 0.11.0 → 2.0.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 (427) hide show
  1. package/README.md +107 -85
  2. package/dist/branding_logos.css +1 -1
  3. package/dist/components/README.css +1 -1
  4. package/dist/components/admonition/demo.css +1 -0
  5. package/dist/components/admonition.css +1 -0
  6. package/dist/components/align/demo.css +1 -0
  7. package/dist/components/align.css +1 -0
  8. package/dist/components/bootstrap/bootstrap--form.demo.css +1 -0
  9. package/dist/components/bootstrap/bootstrap--modal.demo.css +1 -0
  10. package/dist/components/bootstrap/demo.css +1 -0
  11. package/dist/components/bootstrap.container.css +1 -1
  12. package/dist/components/bootstrap.css +1 -1
  13. package/dist/components/bootstrap.figure.css +1 -1
  14. package/dist/components/bootstrap.form.css +1 -1
  15. package/dist/components/bootstrap.modal.css +1 -1
  16. package/dist/components/bootstrap.pagination.css +1 -1
  17. package/dist/components/c-button/demo.css +1 -0
  18. package/dist/components/c-button.css +1 -1
  19. package/dist/components/c-callout.css +1 -1
  20. package/dist/components/c-card/c-card--frontera.demo.css +1 -0
  21. package/dist/components/c-card/c-card.demo.css +1 -0
  22. package/dist/components/c-card--frontera-about-page.css +1 -0
  23. package/dist/components/c-card.css +1 -1
  24. package/dist/components/c-card.selectors.css +1 -0
  25. package/dist/components/c-data-list.css +1 -1
  26. package/dist/components/c-footer.css +1 -1
  27. package/dist/components/c-form.css +1 -0
  28. package/dist/components/c-image-map.css +1 -1
  29. package/dist/components/c-image-map.skin.css +1 -1
  30. package/dist/components/c-image-map.structure.css +1 -1
  31. package/dist/components/c-message/demo.css +1 -0
  32. package/dist/components/c-message.css +1 -1
  33. package/dist/components/c-message.portal.css +1 -0
  34. package/dist/components/c-nav.css +1 -1
  35. package/dist/components/c-page.css +1 -1
  36. package/dist/components/c-recognition.css +1 -1
  37. package/dist/components/c-see-all-link.css +1 -1
  38. package/dist/components/c-show-more.css +1 -1
  39. package/dist/components/cortal.icon.css +1 -1
  40. package/dist/components/cortal.icon.font.css +1 -1
  41. package/dist/components/demo.css +1 -0
  42. package/dist/components/django-cms-forms.css +1 -0
  43. package/dist/components/django-cms-forms.hacks.css +1 -0
  44. package/dist/components/mui.tabs.css +1 -0
  45. package/dist/components/tacc-docs.css +1 -0
  46. package/dist/core-styles.base.css +4 -0
  47. package/dist/core-styles.cms.css +2 -0
  48. package/dist/core-styles.demo.css +2 -0
  49. package/dist/core-styles.docs.css +2 -0
  50. package/dist/core-styles.header.css +2 -0
  51. package/dist/core-styles.portal.css +2 -0
  52. package/dist/core-styles.settings.css +3 -0
  53. package/dist/elements/README.css +1 -1
  54. package/dist/elements/bootstrap.css +1 -1
  55. package/dist/elements/c-card.selectors.css +1 -0
  56. package/dist/elements/demo.css +1 -0
  57. package/dist/elements/form.cms.css +1 -1
  58. package/dist/elements/headings/demo.css +1 -0
  59. package/dist/elements/headings--cms.css +1 -0
  60. package/dist/elements/html-elements/demo.css +1 -0
  61. package/dist/elements/html-elements.cms.css +1 -1
  62. package/dist/elements/html-elements.css +1 -0
  63. package/dist/elements/html-elements.docs.css +1 -0
  64. package/dist/elements/links.css +1 -1
  65. package/dist/elements/monospace.css +1 -0
  66. package/dist/elements/root.css +1 -0
  67. package/dist/elements/sticky-footer.css +1 -0
  68. package/dist/elements/table--basic.css +1 -1
  69. package/dist/elements/table--nested.css +1 -1
  70. package/dist/elements/table.cms.css +1 -0
  71. package/dist/elements/table.css +1 -1
  72. package/dist/elements/table.selectors.css +1 -0
  73. package/dist/elements/tacc-search-bar.css +1 -1
  74. package/dist/fonts/BentonSans-Black.otf +0 -0
  75. package/dist/fonts/BentonSans-RegularItalic.otf +0 -0
  76. package/dist/fractal.server.refresh.css +1 -1
  77. package/dist/generics/README.css +1 -1
  78. package/dist/generics/fonts.css +1 -1
  79. package/dist/objects/README.css +1 -1
  80. package/dist/objects/o-fixed-header-table/demo.css +1 -0
  81. package/dist/objects/o-fixed-header-table.css +1 -1
  82. package/dist/objects/o-flex-item-table-wrap/demo.css +1 -0
  83. package/dist/objects/o-flex-item-table-wrap.css +1 -1
  84. package/dist/objects/o-float-content.css +1 -1
  85. package/dist/objects/o-grid.css +1 -1
  86. package/dist/objects/o-offset-content.css +1 -1
  87. package/dist/objects/o-section/demo.css +1 -0
  88. package/dist/objects/o-section.css +1 -1
  89. package/dist/objects/o-section.selectors.css +1 -0
  90. package/dist/objects/o-site.css +1 -1
  91. package/dist/objects/o-table-wrap/demo.basic.css +1 -0
  92. package/dist/objects/o-table-wrap/demo.extra.css +1 -0
  93. package/dist/objects/o-table-wrap/example.flexible-horz.css +1 -0
  94. package/dist/objects/o-table-wrap/example.overflow-hidden.css +1 -0
  95. package/dist/objects/o-table-wrap/example.overflow-scroll.css +1 -0
  96. package/dist/objects/o-table-wrap/o-table-wrap--flexible-horz.css +1 -0
  97. package/dist/objects/o-table-wrap/o-table-wrap--flexible-vert.css +1 -0
  98. package/dist/objects/o-table-wrap/o-table-wrap--overflow-hidden.css +1 -0
  99. package/dist/objects/o-table-wrap/o-table-wrap--overflow-scroll-extra.css +1 -0
  100. package/dist/objects/o-table-wrap/o-table-wrap--overflow-scroll.css +1 -0
  101. package/dist/objects/o-table-wrap.css +1 -0
  102. package/dist/settings/README.css +1 -1
  103. package/dist/settings/border.css +1 -1
  104. package/dist/settings/color.css +1 -1
  105. package/dist/settings/demo.css +1 -0
  106. package/dist/settings/font/demo-family.css +1 -0
  107. package/dist/settings/font/demo-size.css +1 -0
  108. package/dist/settings/font/demo-style.css +1 -0
  109. package/dist/settings/font/demo-weight.css +1 -0
  110. package/dist/settings/font--cms.css +1 -0
  111. package/dist/settings/font--docs.css +1 -0
  112. package/dist/settings/font--portal.css +1 -0
  113. package/dist/settings/font.css +1 -1
  114. package/dist/settings/max-width.css +1 -1
  115. package/dist/settings/space.css +1 -1
  116. package/dist/tools/README.css +1 -1
  117. package/dist/tools/media-queries.css +1 -1
  118. package/dist/tools/selectors.common.css +1 -0
  119. package/dist/tools/selectors.css +1 -0
  120. package/dist/tools/selectors.monospace.css +1 -0
  121. package/dist/tools/x-article-link.css +1 -1
  122. package/dist/tools/x-center.css +1 -1
  123. package/dist/tools/x-fake-border.css +1 -1
  124. package/dist/tools/x-grid.css +1 -1
  125. package/dist/tools/x-layout.css +1 -1
  126. package/dist/tools/x-link.css +1 -1
  127. package/dist/tools/x-mailto-text-replace.css +1 -1
  128. package/dist/tools/x-overlay.css +1 -1
  129. package/dist/tools/x-truncate.css +1 -1
  130. package/dist/trumps/README.css +1 -1
  131. package/dist/trumps/demo.css +1 -0
  132. package/dist/trumps/s-affixed-input-wrapper.css +1 -1
  133. package/dist/trumps/s-article-list.css +1 -1
  134. package/dist/trumps/s-article-preview.css +1 -1
  135. package/dist/trumps/s-blockquote.css +1 -1
  136. package/dist/trumps/s-breadcrumbs.css +1 -1
  137. package/dist/trumps/s-cms-nav.css +1 -1
  138. package/dist/trumps/s-document.css +1 -1
  139. package/dist/trumps/s-footer.css +1 -1
  140. package/dist/trumps/s-guide-doc.css +1 -1
  141. package/dist/trumps/s-header.bootstrap.css +1 -0
  142. package/dist/trumps/s-header.css +1 -1
  143. package/dist/trumps/s-inline-dl.css +1 -1
  144. package/dist/trumps/s-irregular-links.css +1 -1
  145. package/dist/trumps/s-paragraph-table.css +1 -0
  146. package/dist/trumps/s-portal-nav.css +1 -1
  147. package/dist/trumps/s-style-guide.css +1 -1
  148. package/dist/trumps/s-system-specs.css +1 -1
  149. package/dist/trumps/tacc-search-bar.css +1 -1
  150. package/dist/trumps/u-empty.css +1 -1
  151. package/dist/trumps/u-hide.css +1 -1
  152. package/dist/trumps/u-mailto-text-replace.css +1 -1
  153. package/dist/trumps/u-nested-text-content.css +1 -1
  154. package/docs/index.md +13 -5
  155. package/docs/shortcuts/tables.md +7 -0
  156. package/fractal.config.js +56 -17
  157. package/package.json +12 -9
  158. package/src/.postcssrc.base.yml +12 -2
  159. package/src/bin/build.js +0 -1
  160. package/src/lib/_imports/_partials/blockquote.hbs +5 -0
  161. package/src/lib/_imports/_partials/figure.hbs +15 -0
  162. package/src/lib/_imports/_partials/img.hbs +5 -0
  163. package/src/lib/_imports/_partials/loremipsum-paragraphs.hbs +15 -0
  164. package/src/lib/_imports/_partials/text-and-link-no-href.hbs +1 -0
  165. package/src/lib/_imports/_partials/text-of-one-paragraph-long.hbs +1 -0
  166. package/src/lib/_imports/_partials/text-of-one-paragraph-medium.hbs +1 -0
  167. package/src/lib/_imports/_partials/text-of-one-paragraph-short.hbs +1 -0
  168. package/src/lib/_imports/_partials/text-of-one-paragraph-with-tags.hbs +1 -0
  169. package/src/lib/_imports/_partials/text-of-one-sentence.hbs +1 -0
  170. package/src/lib/_imports/_preview.hbs +111 -40
  171. package/src/lib/_imports/branding_logos.css +0 -2
  172. package/src/lib/_imports/components/admonition/admonition.hbs +39 -0
  173. package/src/lib/_imports/components/admonition/config.yml +2 -0
  174. package/src/lib/_imports/components/admonition/demo.css +5 -0
  175. package/src/lib/_imports/components/admonition/readme.md +14 -0
  176. package/src/lib/_imports/components/admonition.css +35 -0
  177. package/src/lib/_imports/components/align/align.hbs +51 -0
  178. package/src/lib/_imports/components/align/config.yml +3 -0
  179. package/src/lib/_imports/components/align/demo.css +7 -0
  180. package/src/lib/_imports/components/align/readme.md +31 -0
  181. package/src/lib/_imports/components/align.css +33 -0
  182. package/src/lib/_imports/components/bootstrap/bootstrap--container.hbs +1 -1
  183. package/src/lib/_imports/components/bootstrap/bootstrap--modal.hbs +1 -1
  184. package/src/lib/_imports/components/bootstrap/bootstrap--modal.readme.md +4 -0
  185. package/src/lib/_imports/components/bootstrap/config.yml +3 -7
  186. package/src/lib/_imports/components/bootstrap/{docs.css → demo.css} +2 -2
  187. package/src/lib/_imports/components/bootstrap.container.css +0 -1
  188. package/src/lib/_imports/components/bootstrap.form.css +0 -1
  189. package/src/lib/_imports/components/bootstrap.modal.css +3 -0
  190. package/src/lib/_imports/components/c-button/{docs.css → demo.css} +0 -5
  191. package/src/lib/_imports/components/c-button.css +9 -1
  192. package/src/lib/_imports/components/c-card/_c-card--many-variable.hbs +107 -0
  193. package/src/lib/_imports/components/c-card/_c-card--one-image.hbs +6 -0
  194. package/src/lib/_imports/components/c-card/_c-card--one-plain.hbs +4 -0
  195. package/src/lib/_imports/components/c-card/_c-card--one-standard.hbs +15 -0
  196. package/src/lib/_imports/components/c-card/_c-card--one-transparent.hbs +4 -0
  197. package/src/lib/_imports/components/c-card/_c-card--one-with-grid.hbs +26 -0
  198. package/src/lib/_imports/components/c-card/c-card--frontera.demo.css +5 -0
  199. package/src/lib/_imports/components/{c-card.html → c-card/c-card--frontera.hbs} +7 -6
  200. package/src/lib/_imports/components/c-card/c-card--frontera.readme.md +5 -0
  201. package/src/lib/_imports/components/c-card/c-card.demo.css +11 -0
  202. package/src/lib/_imports/components/c-card/c-card.hbs +36 -0
  203. package/src/lib/_imports/components/c-card/c-card.readme.md +33 -0
  204. package/src/lib/_imports/components/c-card/config.yml +23 -0
  205. package/src/lib/_imports/components/c-card--frontera-about-page.css +48 -0
  206. package/src/lib/_imports/components/c-card.css +165 -34
  207. package/src/lib/_imports/components/c-card.selectors.css +38 -0
  208. package/src/lib/_imports/components/c-data-list/config.yml +9 -0
  209. package/src/lib/_imports/components/c-data-list/description-list/config.yml +68 -0
  210. package/src/lib/_imports/components/c-data-list/description-list/description-list.hbs +4 -0
  211. package/src/lib/_imports/components/c-data-list/description-list/readme.md +8 -0
  212. package/src/lib/_imports/components/c-data-list/readme.md +8 -0
  213. package/src/lib/_imports/components/c-data-list/table/config.yml +68 -0
  214. package/src/lib/_imports/components/c-data-list/table/readme.md +12 -0
  215. package/src/lib/_imports/components/c-data-list/table/table.hbs +4 -0
  216. package/src/lib/_imports/components/c-data-list.css +125 -46
  217. package/src/lib/_imports/components/c-footer.css +3 -50
  218. package/src/lib/_imports/components/c-form/c-form.hbs +365 -0
  219. package/src/lib/_imports/components/c-form/config.yml +3 -0
  220. package/src/lib/_imports/components/c-form/readme.md +14 -0
  221. package/src/lib/_imports/components/c-form/toggle-field-errors.js +101 -0
  222. package/src/lib/_imports/components/c-form/toggle-required-fields.js +85 -0
  223. package/src/lib/_imports/components/c-form.css +176 -0
  224. package/src/lib/_imports/components/c-message/_c-message--classes.hbs +5 -0
  225. package/src/lib/_imports/components/c-message/_c-message--intro.hbs +1 -0
  226. package/src/lib/_imports/components/c-message/_c-message--single.hbs +3 -0
  227. package/src/lib/_imports/components/c-message/c-message--scope.hbs +15 -0
  228. package/src/lib/_imports/components/c-message/c-message--scope.readme.md +14 -0
  229. package/src/lib/_imports/components/c-message/c-message--type.hbs +15 -0
  230. package/src/lib/_imports/components/c-message/c-message--type.readme.md +12 -0
  231. package/src/lib/_imports/components/c-message/c-message.hbs +1 -0
  232. package/src/lib/_imports/components/c-message/config.yml +35 -0
  233. package/src/lib/_imports/components/c-message/demo.css +12 -0
  234. package/src/lib/_imports/components/c-message/readme.md +1 -0
  235. package/src/lib/_imports/components/c-message.css +97 -31
  236. package/src/lib/_imports/components/c-message.portal.css +5 -0
  237. package/src/lib/_imports/components/cortal.icon.css +54 -6
  238. package/src/lib/_imports/components/demo.css +40 -0
  239. package/src/lib/_imports/components/django-cms-forms/config.yml +6 -0
  240. package/src/lib/_imports/components/django-cms-forms/django-cms-forms.hbs +407 -0
  241. package/src/lib/_imports/components/django-cms-forms/readme.md +20 -0
  242. package/src/lib/_imports/components/django-cms-forms.css +187 -0
  243. package/src/lib/_imports/components/django-cms-forms.hacks.css +59 -0
  244. package/src/lib/_imports/components/mui.tabs.css +30 -0
  245. package/src/lib/_imports/components/tacc-docs/config.yml +3 -0
  246. package/src/lib/_imports/components/tacc-docs/readme.md +23 -0
  247. package/src/lib/_imports/components/tacc-docs/tacc-docs.hbs +43 -0
  248. package/src/lib/_imports/components/tacc-docs.css +11 -0
  249. package/src/lib/_imports/core-styles.base.css +49 -0
  250. package/src/lib/_imports/core-styles.cms.css +46 -0
  251. package/src/lib/_imports/core-styles.demo.css +23 -0
  252. package/src/lib/_imports/core-styles.docs.css +36 -0
  253. package/src/lib/_imports/core-styles.header.css +37 -0
  254. package/src/lib/_imports/core-styles.portal.css +28 -0
  255. package/src/lib/_imports/core-styles.settings.css +9 -0
  256. package/src/lib/_imports/elements/demo.css +92 -0
  257. package/src/lib/_imports/elements/dl/dl.hbs +6 -0
  258. package/src/lib/_imports/elements/form.cms/readme.md +16 -0
  259. package/src/lib/_imports/elements/form.cms.css +5 -23
  260. package/src/lib/_imports/elements/headings/config.yml +15 -0
  261. package/src/lib/_imports/elements/headings/demo.css +10 -0
  262. package/src/lib/_imports/elements/headings/headings--cms.hbs +18 -0
  263. package/src/lib/_imports/elements/headings/headings.hbs +12 -0
  264. package/src/lib/_imports/elements/headings/readme.md +12 -0
  265. package/src/lib/_imports/elements/headings--cms.css +70 -0
  266. package/src/lib/_imports/elements/html-elements/config.yml +12 -0
  267. package/src/lib/_imports/elements/html-elements/demo.css +5 -0
  268. package/src/lib/_imports/elements/html-elements/html-elements.hbs +83 -0
  269. package/src/lib/_imports/elements/html-elements/readme.md +1 -0
  270. package/src/lib/_imports/elements/html-elements.cms.css +44 -165
  271. package/src/lib/_imports/elements/html-elements.css +97 -0
  272. package/src/lib/_imports/elements/html-elements.docs.css +6 -0
  273. package/src/lib/_imports/elements/links/links.hbs +7 -1
  274. package/src/lib/_imports/elements/links.css +7 -3
  275. package/src/lib/_imports/elements/monospace/config.yml +12 -0
  276. package/src/lib/_imports/elements/monospace/monospace.hbs +60 -0
  277. package/src/lib/_imports/elements/monospace.css +95 -0
  278. package/src/lib/_imports/elements/root.css +41 -0
  279. package/src/lib/_imports/elements/sticky-footer.css +6 -0
  280. package/src/lib/_imports/elements/table/config.yml +123 -6
  281. package/src/lib/_imports/elements/table/table--via-paragraphs.hbs +22 -0
  282. package/src/lib/_imports/elements/table/table--via-paragraphs.readme.md +17 -0
  283. package/src/lib/_imports/elements/table/table.hbs +19 -3
  284. package/src/lib/_imports/elements/table--basic.css +49 -22
  285. package/src/lib/_imports/elements/table--nested.css +16 -5
  286. package/src/lib/_imports/elements/table.cms.css +22 -0
  287. package/src/lib/_imports/elements/table.selectors.css +3 -0
  288. package/src/lib/_imports/generics/fonts.css +21 -7
  289. package/src/lib/_imports/objects/o-fixed-header-table/config.yml +62 -0
  290. package/src/lib/_imports/objects/o-fixed-header-table/demo.css +17 -0
  291. package/src/lib/_imports/objects/o-fixed-header-table/o-fixed-header-table.hbs +16 -0
  292. package/src/lib/_imports/objects/o-fixed-header-table/readme.md +22 -0
  293. package/src/lib/_imports/objects/o-fixed-header-table.css +1 -27
  294. package/src/lib/_imports/objects/o-flex-item-table-wrap/config.yml +27 -0
  295. package/src/lib/_imports/objects/o-flex-item-table-wrap/demo.css +7 -0
  296. package/src/lib/_imports/objects/o-flex-item-table-wrap/o-flex-item-table-wrap.hbs +7 -0
  297. package/src/lib/_imports/objects/o-flex-item-table-wrap/readme.md +22 -0
  298. package/src/lib/_imports/objects/o-flex-item-table-wrap.css +0 -34
  299. package/src/lib/_imports/objects/o-float-content.css +0 -1
  300. package/src/lib/_imports/objects/o-grid.css +7 -0
  301. package/src/lib/_imports/objects/o-offset-content.css +16 -17
  302. package/src/lib/_imports/objects/o-section/_o-section--usage.hbs +1 -0
  303. package/src/lib/_imports/objects/o-section/config.yml +18 -0
  304. package/src/lib/_imports/objects/o-section/demo.css +8 -0
  305. package/src/lib/_imports/objects/o-section/o-section.hbs +57 -0
  306. package/src/lib/_imports/objects/o-section/readme.md +32 -0
  307. package/src/lib/_imports/objects/o-section.css +59 -104
  308. package/src/lib/_imports/objects/o-section.selectors.css +20 -0
  309. package/src/lib/_imports/objects/o-site.css +1 -0
  310. package/src/lib/_imports/objects/o-table-wrap/config.yml +84 -0
  311. package/src/lib/_imports/objects/o-table-wrap/demo.basic.css +18 -0
  312. package/src/lib/_imports/objects/o-table-wrap/demo.extra.css +31 -0
  313. package/src/lib/_imports/objects/o-table-wrap/example.flexible-horz.css +23 -0
  314. package/src/lib/_imports/objects/o-table-wrap/example.overflow-hidden.css +7 -0
  315. package/src/lib/_imports/objects/o-table-wrap/example.overflow-scroll.css +7 -0
  316. package/src/lib/_imports/objects/o-table-wrap/o-table-wrap--flexible-horz.css +4 -0
  317. package/src/lib/_imports/objects/o-table-wrap/o-table-wrap--flexible-horz.hbs +5 -0
  318. package/src/lib/_imports/objects/o-table-wrap/o-table-wrap--flexible-horz.readme.md +20 -0
  319. package/src/lib/_imports/objects/o-table-wrap/o-table-wrap--flexible-vert.css +3 -0
  320. package/src/lib/_imports/objects/o-table-wrap/o-table-wrap--flexible-vert.hbs +5 -0
  321. package/src/lib/_imports/objects/o-table-wrap/o-table-wrap--flexible-vert.readme.md +18 -0
  322. package/src/lib/_imports/objects/o-table-wrap/o-table-wrap--overflow-hidden.css +3 -0
  323. package/src/lib/_imports/objects/o-table-wrap/o-table-wrap--overflow-hidden.hbs +5 -0
  324. package/src/lib/_imports/objects/o-table-wrap/o-table-wrap--overflow-hidden.readme.md +14 -0
  325. package/src/lib/_imports/objects/o-table-wrap/o-table-wrap--overflow-scroll-extra.css +2 -0
  326. package/src/lib/_imports/objects/o-table-wrap/o-table-wrap--overflow-scroll-extra.hbs +18 -0
  327. package/src/lib/_imports/objects/o-table-wrap/o-table-wrap--overflow-scroll-extra.readme.md +18 -0
  328. package/src/lib/_imports/objects/o-table-wrap/o-table-wrap--overflow-scroll.css +5 -0
  329. package/src/lib/_imports/objects/o-table-wrap/o-table-wrap--overflow-scroll.hbs +5 -0
  330. package/src/lib/_imports/objects/o-table-wrap/o-table-wrap--overflow-scroll.readme.md +20 -0
  331. package/src/lib/_imports/objects/o-table-wrap/o-table-wrap.hbs +11 -0
  332. package/src/lib/_imports/objects/o-table-wrap/readme.md +24 -0
  333. package/src/lib/_imports/objects/o-table-wrap.css +5 -0
  334. package/src/lib/_imports/settings/_settings.config.yml +2 -0
  335. package/src/lib/_imports/settings/color.css +51 -11
  336. package/src/lib/_imports/settings/demo.css +5 -0
  337. package/src/lib/_imports/settings/font/_font--family.hbs +13 -0
  338. package/src/lib/_imports/settings/font/_font--size.hbs +5 -0
  339. package/src/lib/_imports/settings/font/_font--weight.hbs +33 -0
  340. package/src/lib/_imports/settings/font/config.yml +16 -0
  341. package/src/lib/_imports/settings/font/demo-family.css +10 -0
  342. package/src/lib/_imports/settings/font/demo-size.css +11 -0
  343. package/src/lib/_imports/settings/font/demo-style.css +2 -0
  344. package/src/lib/_imports/settings/font/demo-weight.css +20 -0
  345. package/src/lib/_imports/settings/font/font.hbs +39 -0
  346. package/src/lib/_imports/settings/font/readme.md +8 -0
  347. package/src/lib/_imports/settings/font--cms.css +17 -0
  348. package/src/lib/_imports/settings/font--docs.css +18 -0
  349. package/src/lib/_imports/settings/font--portal.css +17 -0
  350. package/src/lib/_imports/settings/font.css +11 -20
  351. package/src/lib/_imports/settings/space.css +6 -2
  352. package/src/lib/_imports/tools/selectors.common.css +13 -0
  353. package/src/lib/_imports/tools/selectors.css +20 -0
  354. package/src/lib/_imports/tools/selectors.monospace.css +64 -0
  355. package/src/lib/_imports/tools/x-link/readme.md +1 -0
  356. package/src/lib/_imports/tools/x-link/x-link.hbs +2 -0
  357. package/src/lib/_imports/tools/x-link.css +7 -3
  358. package/src/lib/_imports/{elements/links/docs.css → trumps/demo.css} +3 -2
  359. package/src/lib/_imports/trumps/s-affixed-input-wrapper/config.yml +3 -4
  360. package/src/lib/_imports/trumps/s-affixed-input-wrapper/s-affixed-input-wrapper.hbs +26 -24
  361. package/src/lib/_imports/trumps/s-affixed-input-wrapper.css +9 -11
  362. package/src/lib/_imports/trumps/s-blockquote/readme.md +12 -0
  363. package/src/lib/_imports/trumps/s-blockquote/s-blockquote.hbs +4 -0
  364. package/src/lib/_imports/trumps/s-blockquote.css +3 -25
  365. package/src/lib/_imports/trumps/s-breadcrumbs.css +18 -10
  366. package/src/lib/_imports/trumps/s-cms-nav.css +11 -0
  367. package/src/lib/_imports/trumps/s-guide-doc.css +0 -39
  368. package/src/lib/_imports/trumps/s-header.bootstrap.css +30 -0
  369. package/src/lib/_imports/trumps/s-header.css +2 -1
  370. package/src/lib/_imports/trumps/s-inline-dl.css +1 -0
  371. package/src/lib/_imports/trumps/s-irregular-links/config.yml +0 -7
  372. package/src/lib/_imports/trumps/s-irregular-links/s-irregular-links.hbs +15 -3
  373. package/src/lib/_imports/trumps/s-paragraph-table/config.yml +7 -0
  374. package/src/lib/_imports/trumps/s-paragraph-table/readme.md +17 -0
  375. package/src/lib/_imports/trumps/s-paragraph-table/s-paragraph-table.hbs +7 -0
  376. package/src/lib/_imports/trumps/s-paragraph-table.css +3 -0
  377. package/src/lib/_imports/trumps/s-portal-nav.css +11 -1
  378. package/src/lib/_imports/trumps/u-empty.css +4 -0
  379. package/src/lib/_imports/trumps/u-mailto-text-replace/config.yml +0 -3
  380. package/src/lib/_imports/trumps/u-mailto-text-replace/readme.md +1 -1
  381. package/src/lib/fonts/BentonSans-Black.otf +0 -0
  382. package/src/lib/fonts/BentonSans-RegularItalic.otf +0 -0
  383. package/dist/components/bootstrap/bootstrap--form.docs.css +0 -1
  384. package/dist/components/bootstrap/bootstrap--modal.docs.css +0 -1
  385. package/dist/components/bootstrap/bootstrap.modal/docs.css +0 -1
  386. package/dist/components/bootstrap/docs.css +0 -1
  387. package/dist/components/bootstrap/portal/bootstrap.form/docs.css +0 -1
  388. package/dist/components/bootstrap--container.css +0 -1
  389. package/dist/components/bootstrap--form/docs.css +0 -1
  390. package/dist/components/bootstrap--form.css +0 -1
  391. package/dist/components/bootstrap--modal/docs.css +0 -1
  392. package/dist/components/bootstrap--modal.css +0 -1
  393. package/dist/components/bootstrap.form/docs.css +0 -1
  394. package/dist/components/bootstrap.modal/docs.css +0 -1
  395. package/dist/components/c-button/docs.css +0 -1
  396. package/dist/elements/links/docs.css +0 -1
  397. package/dist/elements/table/docs.css +0 -1
  398. package/dist/elements/table/table.docs.css +0 -1
  399. package/dist/elements/table copy.css +0 -1
  400. package/dist/fonts/fonts/BentonSans-Bold.otf +0 -0
  401. package/dist/fonts/fonts/BentonSans-Medium.otf +0 -0
  402. package/dist/fonts/fonts/BentonSans-MediumItalic.otf +0 -0
  403. package/dist/fonts/fonts/BentonSans-Regular.otf +0 -0
  404. package/dist/fractal.server.css +0 -1
  405. package/dist/fractal.server.reload.css +0 -1
  406. package/dist/tools/x-link/docs.css +0 -1
  407. package/dist/trumps/icon.css +0 -1
  408. package/dist/trumps/icon.fonts.css +0 -1
  409. package/src/lib/_imports/_partials/bootstrap.css.hbs +0 -1
  410. package/src/lib/_imports/_partials/bootstrap.js.hbs +0 -2
  411. package/src/lib/_imports/_partials/cms.css.hbs +0 -3
  412. package/src/lib/_imports/_partials/css.hbs +0 -27
  413. package/src/lib/_imports/_partials/loremipsum.hbs +0 -18
  414. package/src/lib/_imports/_partials/text-of-one-paragraph.hbs +0 -1
  415. package/src/lib/_imports/_preview.bootstrap-cms.hbs +0 -5
  416. package/src/lib/_imports/_preview.bootstrap.hbs +0 -5
  417. package/src/lib/_imports/_preview.cms.hbs +0 -3
  418. package/src/lib/_imports/components/c-data-list.html +0 -131
  419. package/src/lib/_imports/elements/links/config.yml +0 -3
  420. package/src/lib/_imports/objects/o-section.html +0 -134
  421. package/src/lib/_imports/tools/x-link/docs.css +0 -6
  422. package/src/lib/_imports/trumps/icon.css +0 -31
  423. package/src/lib/_imports/trumps/icon.fonts.css +0 -316
  424. /package/src/lib/_imports/components/bootstrap/{bootstrap--form.docs.css → bootstrap--form.demo.css} +0 -0
  425. /package/src/lib/_imports/components/bootstrap/{bootstrap--modal.docs.css → bootstrap--modal.demo.css} +0 -0
  426. /package/src/lib/_imports/elements/table/{table--paragraph.readme.md → table--with-paragraphs.readme.md} +0 -0
  427. /package/src/lib/_imports/trumps/s-affixed-input-wrapper/{readme.md → README.md} +0 -0
@@ -0,0 +1,365 @@
1
+ <p class="c-message c-message--scope-global">
2
+ This component currently depends on CMS stylesheets. When this component is used on the Portal, the font size should not be this small. When this component is proven to work independent of CMS, its demo font will not match CMS and this message will be removed.
3
+ </p>
4
+ <form action="" method="POST" enctype="multipart/form-data" class="c-form">
5
+
6
+ <h3 class="c-form__title">Title of Form</h3>
7
+ <div class="c-form__desc">
8
+ I describe the form, but not very well.
9
+ </div>
10
+
11
+ <ul class="c-form__errors" style="display:none;">
12
+ <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
13
+ </ul>
14
+
15
+ <div class="c-form__field has-required">
16
+ <ul class="c-form__errors" style="display:none;">
17
+ <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
18
+ </ul>
19
+
20
+ <label for="name">
21
+ Name<span class="c-form__star">*</span>
22
+ </label>
23
+
24
+ <input
25
+ type="text"
26
+ name="name"
27
+ required=""
28
+ placeholder="Your name"
29
+ id="name"
30
+ />
31
+
32
+ <div class="c-form__help">
33
+ We use this to identify your submission.
34
+ </div>
35
+ </div>
36
+
37
+ <div class="c-form__field">
38
+ <ul class="c-form__errors" style="display:none;">
39
+ <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
40
+ </ul>
41
+
42
+ <label for="favorite-fruit">Favorite Fruit</label>
43
+
44
+ <select name="favorite-fruit" id="favorite-fruit">
45
+ <option value="" selected="">
46
+ Please select an option
47
+ </option>
48
+ <option value="Apple">Apple</option>
49
+ <option value="Banana">Banana</option>
50
+ <option value="Cherry">Cherry</option>
51
+ <option value="Durian">Durian</option>
52
+ <option value="Other">Other</option>
53
+ <option value="Whatever">Whatever</option>
54
+ </select>
55
+
56
+ <div class="c-form__help">
57
+ Choose your favorite fruit.
58
+ </div>
59
+ </div>
60
+
61
+ <div class="c-form__field">
62
+ <ul class="c-form__errors" style="display:none;">
63
+ <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
64
+ </ul>
65
+
66
+ <label for="wake-up-time">Wake Up Time</label>
67
+
68
+ <input
69
+ type="time"
70
+ name="wake-up-time"
71
+ id="wake-up-time"
72
+ />
73
+
74
+ <div class="c-form__help">
75
+ We use this to know when to wake you up.
76
+ </div>
77
+ </div>
78
+
79
+ <div class="c-form__field">
80
+ <ul class="c-form__errors" style="display:none;">
81
+ <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
82
+ </ul>
83
+
84
+ <label>Radio stations</label>
85
+
86
+ <ul id="radio-stations">
87
+ <li>
88
+ <label for="radio-stations-0">
89
+ <input
90
+ type="radio"
91
+ name="radio-stations"
92
+ value="LX 1234"
93
+ id="radio-stations-0"
94
+ />
95
+ LX 1234
96
+ </label>
97
+ </li>
98
+ <li>
99
+ <label for="radio-stations-1">
100
+ <input
101
+ type="radio"
102
+ name="radio-stations"
103
+ value="LOVE 45"
104
+ id="radio-stations-1"
105
+ />
106
+ LOVE 45
107
+ </label>
108
+ </li>
109
+ <li>
110
+ <label for="radio-stations-2">
111
+ <input
112
+ type="radio"
113
+ name="radio-stations"
114
+ value="OLD 555"
115
+ id="radio-stations-2"
116
+ />
117
+ OLD 555
118
+ </label>
119
+ </li>
120
+ </ul>
121
+
122
+ <div class="c-form__help">
123
+ Which radio stations do you prefer?
124
+ </div>
125
+ </div>
126
+
127
+ <div class="c-form__field has-type-check">
128
+ <ul class="c-form__errors" style="display:none;">
129
+ <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
130
+ </ul>
131
+
132
+ <input
133
+ type="checkbox"
134
+ name="checking-out"
135
+ id="checking-out"
136
+ />
137
+
138
+ <label for="checking-out">Checking Out?</label>
139
+
140
+ <div class="c-form__help">
141
+ Are you checking out today?
142
+ </div>
143
+ </div>
144
+
145
+ <div class="c-form__field">
146
+ <ul class="c-form__errors" style="display:none;">
147
+ <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
148
+ </ul>
149
+
150
+ <label for="">
151
+ Which fish do you want?
152
+ </label>
153
+
154
+ <ul id="which-fish-do-you-want">
155
+ <li>
156
+ <label for="which-fish-do-you-want-0">
157
+ <input
158
+ type="checkbox"
159
+ name="which-fish-do-you-want"
160
+ value="one fish"
161
+ id="which-fish-do-you-want-0"
162
+ />
163
+ one fish
164
+ </label>
165
+ </li>
166
+ <li>
167
+ <label for="which-fish-do-you-want-1">
168
+ <input
169
+ type="checkbox"
170
+ name="which-fish-do-you-want"
171
+ value="two fish"
172
+ id="which-fish-do-you-want-1"
173
+ />
174
+ two fish
175
+ </label>
176
+ </li>
177
+ <li>
178
+ <label for="which-fish-do-you-want-2">
179
+ <input
180
+ type="checkbox"
181
+ name="which-fish-do-you-want"
182
+ value="red fish"
183
+ id="which-fish-do-you-want-2"
184
+ />
185
+ red fish
186
+ </label>
187
+ </li>
188
+ <li>
189
+ <label for="which-fish-do-you-want-3">
190
+ <input
191
+ type="checkbox"
192
+ name="which-fish-do-you-want"
193
+ value="blue fish"
194
+ id="which-fish-do-you-want-3"
195
+ />
196
+ blue fish
197
+ </label>
198
+ </li>
199
+ <li>
200
+ <label for="which-fish-do-you-want-4">
201
+ <input
202
+ type="checkbox"
203
+ name="which-fish-do-you-want"
204
+ value="all the fish"
205
+ id="which-fish-do-you-want-4"
206
+ />
207
+ all the fish
208
+ </label>
209
+ </li>
210
+ </ul>
211
+ </div>
212
+
213
+ <div class="c-form__field">
214
+ <ul class="c-form__errors" style="display:none;">
215
+ <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
216
+ </ul>
217
+
218
+ <label for="hangry-time">Hangry Time</label>
219
+
220
+ <select name="hangry-time" id="hangry-time">
221
+ <option value="" selected="">
222
+ Please select an option
223
+ </option>
224
+ <option value="Morning">Morning</option>
225
+ <option value="Noon">Noon</option>
226
+ <option value="Afternoon">Afternoon</option>
227
+ <option value="Evening">Evening</option>
228
+ <option value="Night">Night</option>
229
+ <option value="Midnight">Midnight</option>
230
+ </select>
231
+
232
+ <div class="c-form__help">
233
+ At which time of day do you get hangry?
234
+ </div>
235
+ </div>
236
+
237
+ <div class="c-form__field">
238
+ <ul class="c-form__errors" style="display:none;">
239
+ <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
240
+ </ul>
241
+
242
+ <label for="life-story">Life Story</label>
243
+
244
+ <textarea
245
+ name="life-story"
246
+ cols="40"
247
+ rows="10"
248
+ id="life-story"
249
+ ></textarea>
250
+
251
+ <div class="c-form__help">
252
+ Go on, tell me everything.
253
+ </div>
254
+ </div>
255
+
256
+ <div class="c-form__field">
257
+ <ul class="c-form__errors" style="display:none;">
258
+ <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
259
+ </ul>
260
+
261
+ <label for="what-day-is-it">What day is it?</label>
262
+
263
+ <input
264
+ type="date"
265
+ name="what-day-is-it"
266
+ id="what-day-is-it"
267
+ />
268
+
269
+ <div class="c-form__help">
270
+ Please enter today's date.
271
+ </div>
272
+ </div>
273
+
274
+ <div class="c-form__field">
275
+ <ul class="c-form__errors" style="display:none;">
276
+ <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
277
+ </ul>
278
+
279
+ <label for="your-favorite-picture">Your favorite picture</label>
280
+
281
+ <input
282
+ type="file"
283
+ name="your-favorite-picture"
284
+ id="your-favorite-picture"
285
+ />
286
+
287
+ <div class="c-form__help">
288
+ Upload your favorite image.
289
+ <small>
290
+ Supported types:
291
+ <code>.jpeg</code>,<code>.jpg</code>,<code>.gif</code>,<code>.png</code>
292
+ </small>
293
+ </div>
294
+ </div>
295
+
296
+ <div class="c-form__field has-spam-check has-required">
297
+ <ul class="c-form__errors" style="display:none;">
298
+ <li>Sample <strong>form</strong> error. <a href="#">Link.</a></li>
299
+ </ul>
300
+
301
+ <label for="recaptcha_g9y93gP8">
302
+ Are you a robot?<span class="c-form__star">*</span>
303
+ </label>
304
+
305
+ <script src="https://www.google.com/recaptcha/api.js"></script>
306
+ <script type="text/javascript">
307
+ // Submit function to be called, after reCAPTCHA was successful. var
308
+ onSubmit_9e32f28ccb9545109ff6ae891f9af324 = function(token){" "}
309
+ {console.log("reCAPTCHA validated for 'data-widget-uuid=\"9e32f28ccb9545109ff6ae891f9af324\"'")};
310
+ </script>
311
+ <div class="g-recaptcha" data-sitekey="6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI" required="" id="recaptcha_g9y93gP8" data-widget-uuid="9e32f28ccb9545109ff6ae891f9af324" data-callback="onSubmit_9e32f28ccb9545109ff6ae891f9af324" data-size="normal"></div>
312
+ </div>
313
+
314
+ <div class="c-form__buttons">
315
+ <button class="c-form__button" type="submit">
316
+ Submit
317
+ </button>
318
+ <button id="toggle-field-errors" class="c-form__button" type="button">
319
+ Toggle Field Errors
320
+ </button>
321
+ <button id="toggle-required-fields" class="c-form__button" type="button">
322
+ Toggle Required Fields
323
+ </button>
324
+ </div>
325
+
326
+ </form>
327
+
328
+ <script type="module">
329
+ import toggleFieldErrors from '{{ path "/components/raw/c-form/toggle-field-errors.js" }}';
330
+
331
+ document.addEventListener('DOMContentLoaded', () => {
332
+ const toggle = document.getElementById('toggle-field-errors');
333
+ const form = document.querySelector('form');
334
+
335
+ toggle.addEventListener('click', () => {
336
+ toggleFieldErrors( form, '.c-form__errors');
337
+ });
338
+ });
339
+ </script>
340
+ <script type="module">
341
+ import toggleRequiredFields from '{{ path "/components/raw/c-form/toggle-required-fields.js" }}';
342
+
343
+ document.addEventListener('DOMContentLoaded', () => {
344
+ const toggle = document.getElementById('toggle-required-fields');
345
+ const form = toggle.closest('form');
346
+
347
+ toggle.addEventListener('click', () => {
348
+ toggleRequiredFields( form, 'c-form__field', 'has-required', {
349
+ shouldScrollToFirst: true
350
+ });
351
+ });
352
+ });
353
+ </script>
354
+ <script type="module">
355
+ document.addEventListener('DOMContentLoaded', () => {
356
+ const form = document.querySelector('form');
357
+
358
+ form.addEventListener('submit', event => {
359
+ event.preventDefault();
360
+
361
+ /* TODO: Show success message on form */
362
+ alert('Form was not submitted, because this is an incomplete demo.');
363
+ });
364
+ });
365
+ </script>
@@ -0,0 +1,3 @@
1
+ context:
2
+ shouldLoadCMS: true
3
+ 📝 shouldLoadCMS: temporary dependence, until proven to work on Portal
@@ -0,0 +1,14 @@
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>
8
+
9
+ <script>
10
+ /* To open external links in new window */
11
+ Array.from(document.links)
12
+ .filter(link => link.hostname != window.location.hostname)
13
+ .forEach(link => link.target = '_blank');
14
+ </script>
@@ -0,0 +1,101 @@
1
+ /** To toggle error list visibility */
2
+
3
+ /**
4
+ * @constant
5
+ * @default
6
+ * @type {object.<string,*>}
7
+ */
8
+ const DEFAULT_CLASS_NAMES = {
9
+ jsShow: 'js-show-errors',
10
+ jsHide: 'js-hide-errors'
11
+ };
12
+
13
+ /**
14
+ * @constant
15
+ * @default
16
+ * @type {object.<string,*>}
17
+ */
18
+ const DEFAULT_CALLBACKS = {
19
+ hideEach: function ( list ) {
20
+ list.style.display = 'none';
21
+ },
22
+ showEach: function ( list ) {
23
+ list.style.display = '';
24
+ },
25
+ showAll: ( lists ) => {
26
+ lists[0].scrollIntoView( false );
27
+ }
28
+ };
29
+
30
+ /**
31
+ * On each error list hide/show
32
+ * @callback onEach
33
+ * @param {HTMLElement} list
34
+ */
35
+ /**
36
+ * After all error lists are hidden/shown
37
+ * @callback afterAll
38
+ * @param {array.<HTMLElement>} lists
39
+ */
40
+
41
+ /**
42
+ * HIDE an error list
43
+ * @param {HTMLInputElement|HTMLSelectElement|HTMLTextAreaElement} field
44
+ * @param {string} errorListClass - class on field's wrapper
45
+ */
46
+ function hideErrorList( list, classNames, callback ) {
47
+ list.classList.add( classNames.jsHide );
48
+ list.classList.remove( classNames.jsShow );
49
+ if ( typeof callback === 'function' ) {
50
+ callback( list );
51
+ }
52
+ }
53
+
54
+ /**
55
+ * SHOW an error list
56
+ * @param {HTMLInputElement|HTMLSelectElement|HTMLTextAreaElement} field
57
+ * @param {string} errorListClass - class on field's wrapper
58
+ */
59
+ function showErrorList( list, classNames, callback ) {
60
+ list.classList.add( classNames.jsShow );
61
+ list.classList.remove( classNames.jsHide );
62
+ if ( typeof callback === 'function' ) {
63
+ callback( list );
64
+ }
65
+ }
66
+
67
+ /**
68
+ * Toggle error lists' visibility
69
+ * @param {Document|HTMLElement} [scope=document] - where to search for lists
70
+ * @param {string} [selector] - selector to find error lists
71
+ * @param {object.<string,function>} [optCallbacks]
72
+ * @param {onEach} [optCallbacks.showEach] - on each list show
73
+ * @param {onEach} [optCallbacks.hideEach] - on each list hide
74
+ * @param {afterAll} [optCallbacks.showAll] - on all lists shown
75
+ * @param {afterAll} [optCallbacks.hideAll] - on all lists hidden
76
+ */
77
+ export default function toggleErrorLists( scope, selector, optCallbacks ) {
78
+ const classNames = DEFAULT_CLASS_NAMES;
79
+ const callbacks = Object.assign( DEFAULT_CALLBACKS, optCallbacks );
80
+ const lists = scope.querySelectorAll( selector );
81
+
82
+ let didHide = false;
83
+ let didShow = false;
84
+
85
+ [ ...lists ].forEach( list => {
86
+ if ( list.classList.contains( classNames.jsShow ) ) {
87
+ hideErrorList( list, classNames, callbacks.hideEach );
88
+ didHide = true;
89
+ } else {
90
+ showErrorList( list, classNames, callbacks.showEach );
91
+ didShow = true;
92
+ }
93
+ });
94
+
95
+ if ( didHide && typeof callbacks.hideAll === 'function' ) {
96
+ callbacks.hideAll( lists );
97
+ }
98
+ if ( didShow && typeof callbacks.showAll === 'function' ) {
99
+ callbacks.showAll( lists );
100
+ }
101
+ }
@@ -0,0 +1,85 @@
1
+ /** To toggle required attribute (and classes) of fields (and field wrappers) */
2
+
3
+ /**
4
+ * @constant
5
+ * @default
6
+ * @type {object.<string,*>}
7
+ */
8
+ const DEFAULT_CLASS_NAMES = {
9
+ errorList: null,
10
+ jsIs: 'js-is-required',
11
+ jsNot: 'js-not-required'
12
+ };
13
+
14
+ /**
15
+ * @constant
16
+ * @default
17
+ * @type {object.<string,*>}
18
+ */
19
+ const DEFAULT_OPTIONS = {
20
+ shouldScrollToFirst: false
21
+ };
22
+
23
+ /**
24
+ * Make a field NOT required (and update field wrapper accordingly)
25
+ * @param {HTMLInputElement|HTMLSelectElement|HTMLTextAreaElement} field
26
+ * @param {string} wrapClassRequired - class on field's wrapper
27
+ */
28
+ function unRequireField( field, classNames ) {
29
+ const wrap = field.closest('.' + classNames.wrap );
30
+
31
+ field.required = false;
32
+ field.classList.add( classNames.jsNot );
33
+ field.classList.remove( classNames.jsIs );
34
+ if ( wrap && classNames.wrapRequired ) {
35
+ wrap.classList.remove( classNames.wrapRequired );
36
+ }
37
+ }
38
+
39
+ /**
40
+ * Make a field REQUIRED (and update field wrapper accordingly)
41
+ * @param {HTMLInputElement|HTMLSelectElement|HTMLTextAreaElement} field
42
+ * @param {string} wrapClassRequired - class on field's wrapper
43
+ */
44
+ function requireField( field, classNames ) {
45
+ const wrap = field.closest('.' + classNames.wrap );
46
+
47
+ field.required = true;
48
+ field.classList.add( classNames.jsIs );
49
+ field.classList.remove( classNames.jsNot );
50
+ if ( wrap && classNames.wrapRequired ) {
51
+ wrap.classList.add( classNames.wrapRequired );
52
+ }
53
+ }
54
+
55
+ /**
56
+ * Toggle required attribute (and classes) of fields (and field wrappers)
57
+ * @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
+ * @param {object.<string,*>} [opts]
61
+ * @param {boolean} [opts.shouldScrollToFirst] - to scroll to first such field
62
+ */
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
+ });
68
+ const options = Object.assign( DEFAULT_OPTIONS, opts );
69
+ const requiredFields = scope.querySelectorAll(`
70
+ [required]:is(input, select, textarea),
71
+ .` + classNames.jsNot + `
72
+ `);
73
+
74
+ [ ...requiredFields ].forEach( field => {
75
+ if ( field.hasAttribute('required') ) {
76
+ unRequireField( field, classNames );
77
+ } else {
78
+ requireField( field, classNames );
79
+ }
80
+ });
81
+
82
+ if ( options.shouldScrollToFirst ) {
83
+ requiredFields[0].scrollIntoView( false );
84
+ }
85
+ }