@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.
- package/README.md +7 -0
- package/dist/branding_logos.css +1 -1
- package/dist/components/README.css +1 -1
- package/dist/components/admonition/demo.css +1 -1
- package/dist/components/admonition.css +1 -1
- package/dist/components/align/demo.css +1 -1
- package/dist/components/align.css +1 -1
- package/dist/components/bootstrap/bootstrap--form.demo.css +1 -1
- package/dist/components/bootstrap/bootstrap--modal.demo.css +1 -1
- package/dist/components/bootstrap/demo.css +1 -1
- package/dist/components/bootstrap.col.css +1 -1
- package/dist/components/bootstrap.container.css +1 -1
- package/dist/components/bootstrap.css +1 -1
- package/dist/components/bootstrap.figure.css +1 -1
- package/dist/components/bootstrap.form.css +1 -1
- package/dist/components/bootstrap.modal--cms.css +1 -1
- package/dist/components/bootstrap.modal--portal.css +1 -1
- package/dist/components/bootstrap.modal.css +1 -1
- package/dist/components/bootstrap.nav-tabs.css +1 -1
- package/dist/components/bootstrap.pagination.css +1 -1
- package/dist/components/bootstrap.row.css +1 -1
- package/dist/components/c-button/demo.css +1 -1
- package/dist/components/c-button.css +1 -1
- package/dist/components/c-button.selectors.css +1 -1
- package/dist/components/c-callout.css +1 -1
- package/dist/components/c-card/c-card--frontera.demo.css +1 -1
- package/dist/components/c-card/c-card.demo.css +1 -1
- package/dist/components/c-card--docs.css +1 -1
- package/dist/components/c-card--from-tup-cms.css +1 -1
- package/dist/components/c-card--frontera-about-page.css +1 -1
- package/dist/components/c-card.css +1 -1
- package/dist/components/c-card.selectors.css +1 -1
- package/dist/components/c-data-list.css +1 -1
- package/dist/components/c-footer.css +1 -1
- package/dist/components/c-form--cms.css +1 -1
- package/dist/components/c-form--portal.css +1 -1
- package/dist/components/c-form.css +1 -1
- package/dist/components/c-form.selectors.css +1 -0
- package/dist/components/c-image-map.css +1 -1
- package/dist/components/c-image-map.skin.css +1 -1
- package/dist/components/c-image-map.structure.css +1 -1
- package/dist/components/c-island/demo.css +1 -1
- package/dist/components/c-island.css +1 -1
- package/dist/components/c-message/demo.css +1 -1
- package/dist/components/c-message--compact.css +1 -1
- package/dist/components/c-message--expanded.css +1 -1
- package/dist/components/c-message.css +1 -1
- package/dist/components/c-message.selectors.css +1 -1
- package/dist/components/c-nav/demo.css +1 -1
- package/dist/components/c-nav.css +1 -1
- package/dist/components/c-page.css +1 -1
- package/dist/components/c-recognition.css +1 -1
- package/dist/components/c-see-all-link.css +1 -1
- package/dist/components/c-show-more.css +1 -1
- package/dist/components/c-tag/demo.css +1 -1
- package/dist/components/c-tag.css +1 -1
- package/dist/components/c-tag.selectors.css +1 -1
- package/dist/components/cortal.icon.css +1 -1
- package/dist/components/cortal.icon.font.css +1 -1
- package/dist/components/demo.css +1 -1
- package/dist/components/django-cms-forms.css +1 -1
- package/dist/components/django-cms-forms.hacks.css +1 -1
- package/dist/components/django-cms-forms.selectors.css +1 -0
- package/dist/components/mui.tabs.css +1 -1
- package/dist/components/pymdownx--tabbed.css +1 -1
- package/dist/components/pymdownx.css +1 -1
- package/dist/components/tacc-docs.css +1 -1
- package/dist/core-styles.base.css +2 -2
- package/dist/core-styles.cms.css +2 -2
- package/dist/core-styles.demo.css +1 -1
- package/dist/core-styles.docs.css +2 -2
- package/dist/core-styles.header.css +1 -1
- package/dist/core-styles.portal.css +2 -2
- package/dist/core-styles.settings.css +1 -1
- package/dist/core-styles.theme.default.css +1 -1
- package/dist/core-styles.theme.has-dark-logo.css +1 -1
- package/dist/core-styles.wysiwyg.css +1 -1
- package/dist/elements/README.css +1 -1
- package/dist/elements/bootstrap.css +1 -1
- package/dist/elements/demo.css +1 -1
- package/dist/elements/form.css +1 -0
- package/dist/elements/headings/demo.css +1 -1
- package/dist/elements/headings--cms.css +1 -1
- package/dist/elements/headings--docs.css +1 -1
- package/dist/elements/html-elements/demo.css +1 -1
- package/dist/elements/html-elements.cms.css +1 -1
- package/dist/elements/html-elements.css +1 -1
- package/dist/elements/html-elements.docs.css +1 -1
- package/dist/elements/links.css +1 -1
- package/dist/elements/monospace.css +1 -1
- package/dist/elements/root--cms.css +1 -1
- package/dist/elements/root--demo.css +1 -1
- package/dist/elements/root--docs.css +1 -1
- package/dist/elements/root--portal.css +1 -1
- package/dist/elements/root.css +1 -1
- package/dist/elements/sticky-footer.css +1 -1
- package/dist/elements/table--basic.css +1 -1
- package/dist/elements/table--nested.css +1 -1
- package/dist/elements/table.cms.css +1 -1
- package/dist/elements/table.css +1 -1
- package/dist/elements/table.docs.css +1 -1
- package/dist/elements/table.selectors.css +1 -1
- package/dist/elements/tacc-search-bar.css +1 -1
- package/dist/fractal.server.refresh.css +1 -1
- package/dist/generics/README.css +1 -1
- package/dist/generics/fonts.css +1 -1
- package/dist/generics/pseudo-elements.css +1 -1
- package/dist/objects/README.css +1 -1
- package/dist/objects/o-fixed-header-table/demo.css +1 -1
- package/dist/objects/o-fixed-header-table.css +1 -1
- package/dist/objects/o-flex-item-table-wrap/demo.css +1 -1
- package/dist/objects/o-flex-item-table-wrap.css +1 -1
- package/dist/objects/o-float-content.css +1 -1
- package/dist/objects/o-grid.css +1 -1
- package/dist/objects/o-offset-content.css +1 -1
- package/dist/objects/o-section/demo.css +1 -1
- package/dist/objects/o-section--docs.css +1 -1
- package/dist/objects/o-section.css +1 -1
- package/dist/objects/o-section.selectors.css +1 -1
- package/dist/objects/o-site.css +1 -1
- package/dist/objects/o-table-wrap/demo.basic.css +1 -1
- package/dist/objects/o-table-wrap/demo.extra.css +1 -1
- package/dist/objects/o-table-wrap/example.flexible-horz.css +1 -1
- package/dist/objects/o-table-wrap/example.overflow-hidden.css +1 -1
- package/dist/objects/o-table-wrap/example.overflow-scroll.css +1 -1
- package/dist/objects/o-table-wrap/o-table-wrap--flexible-horz.css +1 -1
- package/dist/objects/o-table-wrap/o-table-wrap--flexible-vert.css +1 -1
- package/dist/objects/o-table-wrap/o-table-wrap--overflow-hidden.css +1 -1
- package/dist/objects/o-table-wrap/o-table-wrap--overflow-scroll-extra.css +1 -1
- package/dist/objects/o-table-wrap/o-table-wrap--overflow-scroll.css +1 -1
- package/dist/objects/o-table-wrap.css +1 -1
- package/dist/settings/README.css +1 -1
- package/dist/settings/border.css +1 -1
- package/dist/settings/color/demo.css +1 -1
- package/dist/settings/color--cms.css +1 -1
- package/dist/settings/color--demo.css +1 -1
- package/dist/settings/color--docs.css +1 -1
- package/dist/settings/color--portal.css +1 -1
- package/dist/settings/color.accent--blue.css +1 -1
- package/dist/settings/color.accent--purple.css +1 -1
- package/dist/settings/color.css +1 -1
- package/dist/settings/demo.css +1 -1
- package/dist/settings/font/demo-family.css +1 -1
- package/dist/settings/font/demo-size.css +1 -1
- package/dist/settings/font/demo-style.css +1 -1
- package/dist/settings/font/demo-weight.css +1 -1
- package/dist/settings/font--cms.css +1 -1
- package/dist/settings/font--docs.css +1 -1
- package/dist/settings/font--portal.css +1 -1
- package/dist/settings/font.css +1 -1
- package/dist/settings/max-width.css +1 -1
- package/dist/settings/space.css +1 -1
- package/dist/tools/README.css +1 -1
- package/dist/tools/c-form.selectors.css +1 -0
- package/dist/tools/media-queries.css +1 -1
- package/dist/tools/s-form.css +1 -0
- package/dist/tools/selectors.common.css +1 -1
- package/dist/tools/selectors.css +1 -1
- package/dist/tools/selectors.form.css +1 -0
- package/dist/tools/selectors.monospace.css +1 -1
- package/dist/tools/x-article-link.css +1 -1
- package/dist/tools/x-blockquote.css +1 -1
- package/dist/tools/x-center.css +1 -1
- package/dist/tools/x-fake-border.css +1 -1
- package/dist/tools/x-figure.css +1 -1
- package/dist/tools/x-grid.css +1 -1
- package/dist/tools/x-layout.css +1 -1
- package/dist/tools/x-link.css +1 -1
- package/dist/tools/x-mailto-text-replace.css +1 -1
- package/dist/tools/x-overlay.css +1 -1
- package/dist/tools/x-tabs/demo.css +1 -1
- package/dist/tools/x-tabs.css +1 -1
- package/dist/tools/x-tabs.skin.css +1 -1
- package/dist/tools/x-tabs.structure.css +1 -1
- package/dist/tools/x-truncate.css +1 -1
- package/dist/trumps/README.css +1 -1
- package/dist/trumps/demo.css +1 -1
- package/dist/trumps/s-affixed-input-wrapper/demo.css +1 -0
- package/dist/trumps/s-affixed-input-wrapper.css +1 -1
- package/dist/trumps/s-article-list.css +1 -1
- package/dist/trumps/s-article-preview.css +1 -1
- package/dist/trumps/s-blockquote.css +1 -1
- package/dist/trumps/s-breadcrumbs.css +1 -1
- package/dist/trumps/s-cms-nav.css +1 -1
- package/dist/trumps/s-document.css +1 -1
- package/dist/trumps/s-footer.css +1 -1
- package/dist/trumps/s-form--cms.css +1 -0
- package/dist/trumps/s-form--portal.css +1 -0
- package/dist/trumps/s-form.css +1 -0
- package/dist/trumps/s-form.selectors.css +1 -0
- package/dist/trumps/s-guide-doc.css +1 -1
- package/dist/trumps/s-header.bootstrap.css +1 -1
- package/dist/trumps/s-header.css +1 -1
- package/dist/trumps/s-image-grid.css +1 -1
- package/dist/trumps/s-inline-dl.css +1 -1
- package/dist/trumps/s-irregular-links.css +1 -1
- package/dist/trumps/s-paragraph-table.css +1 -1
- package/dist/trumps/s-portal-nav.css +1 -1
- package/dist/trumps/s-style-guide.css +1 -1
- package/dist/trumps/s-system-specs.css +1 -1
- package/dist/trumps/tacc-search-bar.css +1 -1
- package/dist/trumps/u-empty.css +1 -1
- package/dist/trumps/u-hide.css +1 -1
- package/dist/trumps/u-mailto-text-replace.css +1 -1
- package/dist/trumps/u-nested-text-content.css +1 -1
- package/docs/bootstrap.md +52 -0
- package/docs/contributing.config.yml +1 -0
- package/docs/contributing.md +4 -2
- package/docs/shortcuts/forms.md +11 -0
- package/docs/shortcuts/tables.md +5 -3
- package/package.json +1 -1
- package/src/lib/_imports/_partials/field-errors.hbs +1 -0
- package/src/lib/_imports/_partials/form-errors.hbs +12 -0
- package/src/lib/_imports/_partials/form.hbs +431 -0
- package/src/lib/_imports/_partials/link-list.hbs +19 -9
- package/src/lib/_imports/components/c-button.css +4 -4
- package/src/lib/_imports/components/c-form/c-form.hbs +1 -366
- package/src/lib/_imports/components/c-form/config.yml +19 -5
- package/src/lib/_imports/components/c-form/readme.md +1 -7
- package/src/lib/_imports/components/c-form/toggle-required-fields.js +35 -19
- package/src/lib/_imports/components/c-form--cms.css +3 -2
- package/src/lib/_imports/components/c-form--portal.css +3 -2
- package/src/lib/_imports/components/c-form.css +53 -57
- package/src/lib/_imports/components/c-form.selectors.css +37 -0
- package/src/lib/_imports/components/c-nav/config.yml +3 -0
- package/src/lib/_imports/components/django-cms-forms/config.yml +35 -3
- package/src/lib/_imports/components/django-cms-forms/django-cms-forms.hbs +1 -408
- package/src/lib/_imports/components/django-cms-forms.css +12 -168
- package/src/lib/_imports/components/django-cms-forms.selectors.css +37 -0
- package/src/lib/_imports/components/pymdownx--tabbed.css +1 -1
- package/src/lib/_imports/core-styles.base.css +3 -0
- package/src/lib/_imports/core-styles.cms.css +0 -2
- package/src/lib/_imports/core-styles.docs.css +0 -1
- package/src/lib/_imports/elements/{form.cms.css → form.css} +11 -3
- package/src/lib/_imports/elements/html-elements.cms.css +3 -0
- package/src/lib/_imports/elements/html-elements.css +1 -1
- package/src/lib/_imports/tools/selectors.form.css +71 -0
- package/src/lib/_imports/trumps/s-affixed-input-wrapper/README.md +4 -2
- package/src/lib/_imports/trumps/s-affixed-input-wrapper/_s-affixed-input-wrapper--affix.hbs +15 -0
- package/src/lib/_imports/trumps/s-affixed-input-wrapper/_s-affixed-input-wrapper--end.hbs +13 -0
- package/src/lib/_imports/trumps/s-affixed-input-wrapper/config.yml +9 -1
- package/src/lib/_imports/trumps/s-affixed-input-wrapper/demo.css +5 -0
- package/src/lib/_imports/trumps/s-affixed-input-wrapper/s-affixed-input-wrapper--prefix-and-suffix.hbs +32 -0
- package/src/lib/_imports/trumps/s-affixed-input-wrapper/s-affixed-input-wrapper--prepend-and-append.hbs +43 -0
- package/src/lib/_imports/trumps/s-affixed-input-wrapper/s-affixed-input-wrapper.hbs +1 -32
- package/src/lib/_imports/trumps/s-affixed-input-wrapper.css +108 -47
- package/src/lib/_imports/trumps/s-form/config.yml +23 -0
- package/src/lib/_imports/trumps/s-form/readme.md +8 -0
- package/src/lib/_imports/trumps/s-form/s-form.hbs +1 -0
- package/src/lib/_imports/trumps/s-form--cms.css +1 -0
- package/src/lib/_imports/trumps/s-form--portal.css +1 -0
- package/src/lib/_imports/trumps/s-form.css +2 -0
- package/src/lib/_imports/trumps/s-form.selectors.css +38 -0
- package/dist/components/django-cms-forms--errors-via-c-message.css +0 -1
- package/dist/elements/form.cms.css +0 -1
- package/src/lib/_imports/components/django-cms-forms--errors-via-c-message.css +0 -23
- /package/docs/{index.md → 01-index.md} +0 -0
|
@@ -1,366 +1 @@
|
|
|
1
|
-
{{
|
|
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
|
|
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
|
-
|
|
9
|
+
/* The class added when required state has been changed and is active */
|
|
10
10
|
jsIs: 'js-is-required',
|
|
11
|
-
|
|
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
|
|
20
|
+
* @type {object.<*,*>}
|
|
18
21
|
*/
|
|
19
22
|
const DEFAULT_OPTIONS = {
|
|
20
|
-
|
|
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 {
|
|
42
|
+
* @param {DEFAULT_CLASS_NAMES} classNames
|
|
43
|
+
* @param {DEFAULT_SELECTORS} selectors
|
|
27
44
|
*/
|
|
28
|
-
function unRequireField( field, classNames ) {
|
|
29
|
-
const wrap = field.closest(
|
|
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 {
|
|
59
|
+
* @param {DEFAULT_CLASS_NAMES} classNames
|
|
60
|
+
* @param {DEFAULT_SELECTORS} selectors
|
|
43
61
|
*/
|
|
44
|
-
function requireField( field, classNames ) {
|
|
45
|
-
const wrap = field.closest(
|
|
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,
|
|
64
|
-
const classNames = Object.assign( DEFAULT_CLASS_NAMES,
|
|
65
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
17
|
+
:--form__errors--field li {
|
|
17
18
|
@extend :--c-message;
|
|
18
19
|
@extend :--c-message--type;
|
|
19
20
|
@extend :--c-message--type-error;
|