@gitlab/ui 114.0.1 → 114.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/package.json +9 -28
  2. package/CHANGELOG.md +0 -13132
  3. package/src/vendor/bootstrap/LICENSE +0 -11
  4. package/src/vendor/bootstrap-vue/LICENSE +0 -11
  5. package/src/vendor/bootstrap-vue/package.json +0 -144
  6. package/src/vendor/bootstrap-vue/src/components/button/MODIFICATIONS.md +0 -16
  7. package/src/vendor/bootstrap-vue/src/components/button/README.md +0 -240
  8. package/src/vendor/bootstrap-vue/src/components/button/button-close.spec.js +0 -210
  9. package/src/vendor/bootstrap-vue/src/components/button/button.spec.js +0 -349
  10. package/src/vendor/bootstrap-vue/src/components/button/package.json +0 -105
  11. package/src/vendor/bootstrap-vue/src/components/dropdown/README.md +0 -730
  12. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.spec.js +0 -58
  13. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.spec.js +0 -110
  14. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.spec.js +0 -94
  15. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.spec.js +0 -73
  16. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.spec.js +0 -117
  17. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item.spec.js +0 -147
  18. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.spec.js +0 -59
  19. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown.spec.js +0 -1121
  20. package/src/vendor/bootstrap-vue/src/components/dropdown/package.json +0 -368
  21. package/src/vendor/bootstrap-vue/src/components/form/README.md +0 -365
  22. package/src/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.spec.js +0 -170
  23. package/src/vendor/bootstrap-vue/src/components/form/form-text.spec.js +0 -93
  24. package/src/vendor/bootstrap-vue/src/components/form/form-valid-feedback.spec.js +0 -157
  25. package/src/vendor/bootstrap-vue/src/components/form/form.spec.js +0 -97
  26. package/src/vendor/bootstrap-vue/src/components/form/package.json +0 -112
  27. package/src/vendor/bootstrap-vue/src/components/form-checkbox/README.md +0 -691
  28. package/src/vendor/bootstrap-vue/src/components/form-checkbox/form-checkbox-group.spec.js +0 -525
  29. package/src/vendor/bootstrap-vue/src/components/form-checkbox/form-checkbox.spec.js +0 -922
  30. package/src/vendor/bootstrap-vue/src/components/form-checkbox/package.json +0 -172
  31. package/src/vendor/bootstrap-vue/src/components/form-group/README.md +0 -339
  32. package/src/vendor/bootstrap-vue/src/components/form-group/form-group.spec.js +0 -477
  33. package/src/vendor/bootstrap-vue/src/components/form-group/package.json +0 -183
  34. package/src/vendor/bootstrap-vue/src/components/form-radio/README.md +0 -437
  35. package/src/vendor/bootstrap-vue/src/components/form-radio/form-radio-group.spec.js +0 -357
  36. package/src/vendor/bootstrap-vue/src/components/form-radio/form-radio.spec.js +0 -587
  37. package/src/vendor/bootstrap-vue/src/components/form-radio/package.json +0 -162
  38. package/src/vendor/bootstrap-vue/src/components/form-select/README.md +0 -504
  39. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.spec.js +0 -138
  40. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option.spec.js +0 -75
  41. package/src/vendor/bootstrap-vue/src/components/form-select/form-select.spec.js +0 -723
  42. package/src/vendor/bootstrap-vue/src/components/form-select/package.json +0 -132
  43. package/src/vendor/bootstrap-vue/src/components/form-textarea/README.md +0 -453
  44. package/src/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.spec.js +0 -1000
  45. package/src/vendor/bootstrap-vue/src/components/form-textarea/package.json +0 -122
  46. package/src/vendor/bootstrap-vue/src/components/layout/README.md +0 -791
  47. package/src/vendor/bootstrap-vue/src/components/layout/col.spec.js +0 -192
  48. package/src/vendor/bootstrap-vue/src/components/layout/form-row.spec.js +0 -45
  49. package/src/vendor/bootstrap-vue/src/components/layout/package.json +0 -99
  50. package/src/vendor/bootstrap-vue/src/components/link/README.md +0 -76
  51. package/src/vendor/bootstrap-vue/src/components/link/link.spec.js +0 -434
  52. package/src/vendor/bootstrap-vue/src/components/link/package.json +0 -57
  53. package/src/vendor/bootstrap-vue/src/components/modal/MODIFICATIONS.md +0 -30
  54. package/src/vendor/bootstrap-vue/src/components/modal/README.md +0 -1067
  55. package/src/vendor/bootstrap-vue/src/components/modal/helpers/bv-modal-event.class.spec.js +0 -82
  56. package/src/vendor/bootstrap-vue/src/components/modal/modal.spec.js +0 -1418
  57. package/src/vendor/bootstrap-vue/src/components/modal/package.json +0 -544
  58. package/src/vendor/bootstrap-vue/src/components/nav/README.md +0 -362
  59. package/src/vendor/bootstrap-vue/src/components/nav/nav-item.spec.js +0 -127
  60. package/src/vendor/bootstrap-vue/src/components/nav/nav.spec.js +0 -177
  61. package/src/vendor/bootstrap-vue/src/components/nav/package.json +0 -73
  62. package/src/vendor/bootstrap-vue/src/components/popover/README.md +0 -919
  63. package/src/vendor/bootstrap-vue/src/components/popover/package.json +0 -261
  64. package/src/vendor/bootstrap-vue/src/components/popover/popover.spec.js +0 -198
  65. package/src/vendor/bootstrap-vue/src/components/table/README.md +0 -3157
  66. package/src/vendor/bootstrap-vue/src/components/table/helpers/default-sort-compare.spec.js +0 -112
  67. package/src/vendor/bootstrap-vue/src/components/table/helpers/normalize-fields.spec.js +0 -93
  68. package/src/vendor/bootstrap-vue/src/components/table/package.json +0 -1763
  69. package/src/vendor/bootstrap-vue/src/components/table/table-busy.spec.js +0 -150
  70. package/src/vendor/bootstrap-vue/src/components/table/table-caption.spec.js +0 -176
  71. package/src/vendor/bootstrap-vue/src/components/table/table-colgroup.spec.js +0 -81
  72. package/src/vendor/bootstrap-vue/src/components/table/table-filtering.spec.js +0 -409
  73. package/src/vendor/bootstrap-vue/src/components/table/table-item-formatter.spec.js +0 -56
  74. package/src/vendor/bootstrap-vue/src/components/table/table-lite.spec.js +0 -682
  75. package/src/vendor/bootstrap-vue/src/components/table/table-pagination.spec.js +0 -133
  76. package/src/vendor/bootstrap-vue/src/components/table/table-primarykey.spec.js +0 -83
  77. package/src/vendor/bootstrap-vue/src/components/table/table-provider.spec.js +0 -411
  78. package/src/vendor/bootstrap-vue/src/components/table/table-row-details.spec.js +0 -459
  79. package/src/vendor/bootstrap-vue/src/components/table/table-selectable.spec.js +0 -1182
  80. package/src/vendor/bootstrap-vue/src/components/table/table-simple.spec.js +0 -206
  81. package/src/vendor/bootstrap-vue/src/components/table/table-sorting.spec.js +0 -858
  82. package/src/vendor/bootstrap-vue/src/components/table/table-sticky-column.spec.js +0 -377
  83. package/src/vendor/bootstrap-vue/src/components/table/table-tbody-bottom-row.spec.js +0 -94
  84. package/src/vendor/bootstrap-vue/src/components/table/table-tbody-row-events.spec.js +0 -529
  85. package/src/vendor/bootstrap-vue/src/components/table/table-tbody-top-row.spec.js +0 -88
  86. package/src/vendor/bootstrap-vue/src/components/table/table-tbody-transition.spec.js +0 -83
  87. package/src/vendor/bootstrap-vue/src/components/table/table-tfoot-custom.spec.js +0 -91
  88. package/src/vendor/bootstrap-vue/src/components/table/table-tfoot-events.spec.js +0 -137
  89. package/src/vendor/bootstrap-vue/src/components/table/table-thead-events.spec.js +0 -155
  90. package/src/vendor/bootstrap-vue/src/components/table/table-thead-top.spec.js +0 -96
  91. package/src/vendor/bootstrap-vue/src/components/table/table.spec.js +0 -692
  92. package/src/vendor/bootstrap-vue/src/components/tabs/README.md +0 -433
  93. package/src/vendor/bootstrap-vue/src/components/tabs/package.json +0 -205
  94. package/src/vendor/bootstrap-vue/src/components/tabs/tab.spec.js +0 -330
  95. package/src/vendor/bootstrap-vue/src/components/tabs/tabs.spec.js +0 -778
  96. package/src/vendor/bootstrap-vue/src/components/toast/README.md +0 -655
  97. package/src/vendor/bootstrap-vue/src/components/toast/helpers/bv-toast.spec.js +0 -117
  98. package/src/vendor/bootstrap-vue/src/components/toast/package.json +0 -184
  99. package/src/vendor/bootstrap-vue/src/components/toast/toast.spec.js +0 -294
  100. package/src/vendor/bootstrap-vue/src/components/toast/toaster.spec.js +0 -77
  101. package/src/vendor/bootstrap-vue/src/components/tooltip/README.md +0 -559
  102. package/src/vendor/bootstrap-vue/src/components/tooltip/package.json +0 -258
  103. package/src/vendor/bootstrap-vue/src/components/tooltip/tooltip.spec.js +0 -1240
  104. package/src/vendor/bootstrap-vue/src/components/transition/package.json +0 -5
  105. package/src/vendor/bootstrap-vue/src/components/transporter/package.json +0 -5
  106. package/src/vendor/bootstrap-vue/src/components/transporter/transporter.spec.js +0 -85
  107. package/src/vendor/bootstrap-vue/src/directives/modal/modal.spec.js +0 -191
  108. package/src/vendor/bootstrap-vue/src/directives/tooltip/README.md +0 -521
  109. package/src/vendor/bootstrap-vue/src/directives/tooltip/package.json +0 -131
  110. package/src/vendor/bootstrap-vue/src/directives/tooltip/tooltip.spec.js +0 -190
  111. package/src/vendor/bootstrap-vue/src/directives/visible/README.md +0 -244
  112. package/src/vendor/bootstrap-vue/src/directives/visible/package.json +0 -24
  113. package/src/vendor/bootstrap-vue/src/mixins/attrs.spec.js +0 -194
  114. package/src/vendor/bootstrap-vue/src/mixins/click-out.spec.js +0 -52
  115. package/src/vendor/bootstrap-vue/src/mixins/focus-in.spec.js +0 -53
  116. package/src/vendor/bootstrap-vue/src/mixins/listen-on-document.spec.js +0 -117
  117. package/src/vendor/bootstrap-vue/src/mixins/listen-on-root.spec.js +0 -77
  118. package/src/vendor/bootstrap-vue/src/mixins/listen-on-window.spec.js +0 -115
  119. package/src/vendor/bootstrap-vue/src/mixins/listeners.spec.js +0 -245
  120. package/src/vendor/bootstrap-vue/src/utils/bv-event.class.spec.js +0 -66
  121. package/src/vendor/bootstrap-vue/src/utils/clone-deep.spec.js +0 -70
  122. package/src/vendor/bootstrap-vue/src/utils/config.spec.js +0 -169
  123. package/src/vendor/bootstrap-vue/src/utils/css-escape.spec.js +0 -82
  124. package/src/vendor/bootstrap-vue/src/utils/dom.spec.js +0 -291
  125. package/src/vendor/bootstrap-vue/src/utils/events.spec.js +0 -41
  126. package/src/vendor/bootstrap-vue/src/utils/get.spec.js +0 -109
  127. package/src/vendor/bootstrap-vue/src/utils/inspect.spec.js +0 -251
  128. package/src/vendor/bootstrap-vue/src/utils/loose-equal.spec.js +0 -203
  129. package/src/vendor/bootstrap-vue/src/utils/normalize-slot.spec.js +0 -63
  130. package/src/vendor/bootstrap-vue/src/utils/number.spec.js +0 -72
  131. package/src/vendor/bootstrap-vue/src/utils/object.spec.js +0 -61
  132. package/src/vendor/bootstrap-vue/src/utils/props.spec.js +0 -112
  133. package/src/vendor/bootstrap-vue/src/utils/router.spec.js +0 -248
  134. package/src/vendor/bootstrap-vue/src/utils/string.spec.js +0 -65
  135. package/src/vendor/bootstrap-vue/src/utils/stringify-object-values.spec.js +0 -47
  136. package/src/vendor/bootstrap-vue/src/utils/warn.spec.js +0 -54
@@ -1,365 +0,0 @@
1
- # Form
2
-
3
- > BootstrapVue form component and helper components that optionally support inline form styles and
4
- > validation states. Pair them up with other BootstrapVue form control components for an easy
5
- > customized, and responsive, layout with a consistent look and feel.
6
-
7
- ## Introduction to forms and controls
8
-
9
- Be sure to use an appropriate `type` on all inputs (e.g., `email` for email address or `number` for
10
- numerical information) to take advantage of newer input controls like email verification, number
11
- selection, and more.
12
-
13
- Here's a quick example to demonstrate BootstrapVue's form styles. Keep reading for documentation on
14
- supported components, form layout, and more.
15
-
16
- ```html
17
- <template>
18
- <div>
19
- <b-form @submit="onSubmit" @reset="onReset" v-if="show">
20
- <b-form-group
21
- id="input-group-1"
22
- label="Email address:"
23
- label-for="input-1"
24
- description="We'll never share your email with anyone else."
25
- >
26
- <b-form-input
27
- id="input-1"
28
- v-model="form.email"
29
- type="email"
30
- placeholder="Enter email"
31
- required
32
- ></b-form-input>
33
- </b-form-group>
34
-
35
- <b-form-group id="input-group-2" label="Your Name:" label-for="input-2">
36
- <b-form-input
37
- id="input-2"
38
- v-model="form.name"
39
- placeholder="Enter name"
40
- required
41
- ></b-form-input>
42
- </b-form-group>
43
-
44
- <b-form-group id="input-group-3" label="Food:" label-for="input-3">
45
- <b-form-select
46
- id="input-3"
47
- v-model="form.food"
48
- :options="foods"
49
- required
50
- ></b-form-select>
51
- </b-form-group>
52
-
53
- <b-form-group id="input-group-4" v-slot="{ ariaDescribedby }">
54
- <b-form-checkbox-group
55
- v-model="form.checked"
56
- id="checkboxes-4"
57
- :aria-describedby="ariaDescribedby"
58
- >
59
- <b-form-checkbox value="me">Check me out</b-form-checkbox>
60
- <b-form-checkbox value="that">Check that out</b-form-checkbox>
61
- </b-form-checkbox-group>
62
- </b-form-group>
63
-
64
- <b-button type="submit" variant="primary">Submit</b-button>
65
- <b-button type="reset" variant="danger">Reset</b-button>
66
- </b-form>
67
- <b-card class="mt-3" header="Form Data Result">
68
- <pre class="m-0">{{ form }}</pre>
69
- </b-card>
70
- </div>
71
- </template>
72
-
73
- <script>
74
- export default {
75
- data() {
76
- return {
77
- form: {
78
- email: '',
79
- name: '',
80
- food: null,
81
- checked: []
82
- },
83
- foods: [{ text: 'Select One', value: null }, 'Carrots', 'Beans', 'Tomatoes', 'Corn'],
84
- show: true
85
- }
86
- },
87
- methods: {
88
- onSubmit(event) {
89
- event.preventDefault()
90
- alert(JSON.stringify(this.form))
91
- },
92
- onReset(event) {
93
- event.preventDefault()
94
- // Reset our form values
95
- this.form.email = ''
96
- this.form.name = ''
97
- this.form.food = null
98
- this.form.checked = []
99
- // Trick to reset/clear native browser form validation state
100
- this.show = false
101
- this.$nextTick(() => {
102
- this.show = true
103
- })
104
- }
105
- }
106
- }
107
- </script>
108
-
109
- <!-- b-form.vue -->
110
- ```
111
-
112
- ## Inline form
113
-
114
- Use the `inline` prop on `<b-form>` to display a series of labels, form controls, and buttons on a
115
- single horizontal row. Form controls within inline forms vary slightly from their default states.
116
-
117
- - Controls are `display: flex`, collapsing any HTML white space and allowing you to provide
118
- alignment control with spacing and flexbox utilities.
119
- - Controls and input groups receive `width: auto` to override the Bootstrap default width: 100%.
120
- - Controls **only appear inline in viewports that are at least 576px wide** to account for narrow
121
- viewports on mobile devices.
122
-
123
- You may need to manually address the width and alignment of individual form controls with
124
- [spacing utilities](/docs/reference/spacing-classes) (as shown below). Lastly, be sure to always
125
- include a `<label>` with each form control, even if you need to hide it from non-screenreader
126
- visitors with class `.sr-only`.
127
-
128
- ```html
129
- <div>
130
- <b-form inline>
131
- <label class="sr-only" for="inline-form-input-name">Name</label>
132
- <b-form-input
133
- id="inline-form-input-name"
134
- class="mb-2 mr-sm-2 mb-sm-0"
135
- placeholder="Jane Doe"
136
- ></b-form-input>
137
-
138
- <label class="sr-only" for="inline-form-input-username">Username</label>
139
- <b-input-group prepend="@" class="mb-2 mr-sm-2 mb-sm-0">
140
- <b-form-input id="inline-form-input-username" placeholder="Username"></b-form-input>
141
- </b-input-group>
142
-
143
- <b-form-checkbox class="mb-2 mr-sm-2 mb-sm-0">Remember me</b-form-checkbox>
144
-
145
- <b-button variant="primary">Save</b-button>
146
- </b-form>
147
- </div>
148
-
149
- <!-- b-form-inline.vue -->
150
- ```
151
-
152
- Custom form controls and selects are also supported.
153
-
154
- ```html
155
- <div>
156
- <b-form inline>
157
- <label class="mr-sm-2" for="inline-form-custom-select-pref">Preference</label>
158
- <b-form-select
159
- id="inline-form-custom-select-pref"
160
- class="mb-2 mr-sm-2 mb-sm-0"
161
- :options="[{ text: 'Choose...', value: null }, 'One', 'Two', 'Three']"
162
- :value="null"
163
- ></b-form-select>
164
-
165
- <b-form-checkbox class="mb-2 mr-sm-2 mb-sm-0">Remember my preference</b-form-checkbox>
166
-
167
- <b-button variant="primary">Save</b-button>
168
- </b-form>
169
- </div>
170
-
171
- <!-- b-form-inline-custom.vue -->
172
- ```
173
-
174
- **Note:** _`<b-form-group>` is not supported in `inline` forms due to layout conflicts._
175
-
176
- ### Alternatives to hidden labels
177
-
178
- Assistive technologies such as screen readers will have trouble with your forms if you don't include
179
- a label for every input. For these inline forms, you can hide the labels using the `.sr-only` class.
180
- There are further alternative methods of providing a label for assistive technologies, such as the
181
- `aria-label`, `aria-labelledby` or `title` attributes. If none of these are present, assistive
182
- technologies may resort to using the `placeholder` attribute, if present, but note that use of
183
- `placeholder` as a replacement for other labelling methods is not advised.
184
-
185
- ## Related form control and layout components
186
-
187
- See also:
188
-
189
- - [form-input](?path=/docs/base-form-form-input--docs) Textual and text-like inputs
190
- - [form-textarea](?path=/docs/base-form-form-textarea--docs) Text area inputs
191
- - [form-select](?path=/docs/base-form-form-select--docs) Select input
192
- - [form-radio](?path=/docs/base-form-form-radio--docs) Radio Inputs
193
- - [form-checkbox](?path=/docs/base-form-form-checkbox--docs) Checkbox Inputs
194
- - [form-date](?path=/docs/base-form-form-date--docs) Date input
195
- - [button](?path=/docs/base-button--docs) Buttons
196
- - [form-group](/?path=/docs/base-form-form-group--docs) Form Input wrapper to generate form-groups
197
- that support labels, help text and feedback
198
- - [form-input-group](/?path=/docs/base-form-form-input-group--docs) Form Inputs with add-ons
199
- - [form-row](?path=/docs/base-form-form-group--docs#rows-b-row-and-b-form-row) Create grid rows and
200
- columns with tighter margins (available via the
201
- [Layout and grid components](?path=/docs/base-form-form-group--docs#layout-and-grid-system))
202
-
203
- ## Form helper components
204
-
205
- The following helper components are available with the `Form` plugin:
206
-
207
- - `<b-form-text>` Help text blocks for inputs
208
- - `<b-form-invalid-feedback>` Invalid feedback text blocks for input `invalid` states
209
- - `<b-form-valid-feedback>` Valid feedback text blocks for input `valid` states
210
- - `<b-form-datalist>` Easily create a `<datalist>` for use with `<b-form-input>` or plain `<input>`
211
-
212
- ### Form text helper
213
-
214
- Display a block of help text below an input with the `<b-form-text>` helper component. text is
215
- displayed with a muted color and slightly smaller font-size.
216
-
217
- **Tip:** Help text should be explicitly associated with the form control it relates to using the
218
- `aria-describedby` attribute. This will ensure that assistive technologies, such as screen readers,
219
- will announce this help text when the user focuses or enters the control.
220
-
221
- ```html
222
- <div>
223
- <b-form @submit.stop.prevent>
224
- <label for="text-password">Password</label>
225
- <b-form-input type="password" id="text-password" aria-describedby="password-help-block"></b-form-input>
226
- <b-form-text id="password-help-block">
227
- Your password must be 8-20 characters long, contain letters and numbers, and must not
228
- contain spaces, special characters, or emoji.
229
- </b-form-text>
230
- </b-form>
231
- </div>
232
-
233
- <!-- b-form-help-text.vue -->
234
- ```
235
-
236
- ### Feedback helpers
237
-
238
- The `<b-form-valid-feedback>` and `<b-form-invalid-feedback>` helper components will display
239
- feedback (based on input state) as a block of colored text. They rely on being placed after an input
240
- (sibling) and will show based on the browser native validation state of the input. To force them to
241
- show, set the prop `force-show` to `true`, or bind the controls `state` to the `state` prop of the
242
- feedback helper, or set the `was-validated` class on a parent element (such as a form). See the
243
- **Validation** section below for additional details.
244
-
245
- Use the optional Boolean prop `tooltip` to change the display from a block to a static tooltip
246
- style. The feedback will typically appear below the form control. When this mode is enabled, it is
247
- important that the parent container have a `position: relative:` css style (or `position-relative`
248
- class). Note that tooltip style feedback may, since its positioning is static, obscure other inputs,
249
- labels, etc.
250
-
251
- **Note:** Some form controls, such as
252
- [`<gl-form-radio>`](?path=/docs/base-form-form-radio--docs#contextual-states) and
253
- [`<gl-form-checkbox>`](?path=/docs/base-form-form-checkbox--docs#contextual-states) have wrapper
254
- elements which will prevent the feedback text from automatically showing (as the feedback component
255
- is not a direct sibling of the form control's input). Use the feedback component's `state` prop
256
- (bound to the state of the form control) or the `force-show` prop to display the feedback.
257
-
258
- ```html
259
- <template>
260
- <div>
261
- <b-form @submit.stop.prevent>
262
- <label for="feedback-user">User ID</label>
263
- <b-form-input v-model="userId" :state="validation" id="feedback-user"></b-form-input>
264
- <b-form-invalid-feedback :state="validation">
265
- Your user ID must be 5-12 characters long.
266
- </b-form-invalid-feedback>
267
- <b-form-valid-feedback :state="validation">
268
- Looks Good.
269
- </b-form-valid-feedback>
270
- </b-form>
271
- </div>
272
- </template>
273
-
274
- <script>
275
- export default {
276
- data() {
277
- return {
278
- userId: ''
279
- }
280
- },
281
- computed: {
282
- validation() {
283
- return this.userId.length > 4 && this.userId.length < 13
284
- }
285
- }
286
- }
287
- </script>
288
-
289
- <!-- b-form-feedback-example.vue -->
290
- ```
291
-
292
- ### Datalist helper
293
-
294
- For browsers that support
295
- [`<datalist>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/datalist) elements, the
296
- `<b-form-datalist>` helper component will allow you to quickly create a `<datalist>` and child
297
- `<option>` elements via an array passed to the `options` prop.
298
-
299
- You may also manually provide `<option>` elements inside `<b-form-datalist>`. They will appear below
300
- any `<option>` elements generated from the `options` prop.
301
-
302
- ```html
303
- <template>
304
- <div>
305
- <label for="input-with-list">Input with datalist</label>
306
- <b-form-input list="input-list" id="input-with-list"></b-form-input>
307
- <b-form-datalist id="input-list" :options="options"></b-form-datalist>
308
- </div>
309
- </template>
310
-
311
- <script>
312
- export default {
313
- data() {
314
- return {
315
- options: ['Apple', 'Banana', 'Grape', 'Kiwi', 'Orange']
316
- }
317
- }
318
- }
319
- </script>
320
-
321
- <!-- b-form-datalist-example.vue -->
322
- ```
323
-
324
- `<b-form-datalist>` is also available via the shorter alias of `<b-datalist>`.
325
-
326
- See also:
327
-
328
- - [form-input datalist](?path=/docs/base-form-form-input--docs#datalist-support) for datalist usage.
329
- - [form-select `options` prop](?path=/docs/base-form-form-select--docs#options-property) docs for
330
- details on the formats and helper props associated with `options`.
331
-
332
- ## Validation
333
-
334
- Disable browser native HTML5 validation by setting the `novalidate` prop to true on `<b-form>`.
335
-
336
- Set the `validated` prop, on `<b-form>`, to `true` to add the Bootstrap v4 `.was-validated` class to
337
- the form to trigger validation states
338
-
339
- All of the form controls support a `state` prop, which can be used to set the form control into one
340
- of three contextual states:
341
-
342
- - `false` (denotes invalid state) is great for when there's a blocking or required field. A user
343
- must fill in this field properly to submit the form.
344
- - `true` (denotes valid state) is ideal for situations when you have per-field validation throughout
345
- a form and want to encourage a user through the rest of the fields.
346
- - `null` Displays no validation state (neither valid nor invalid)
347
-
348
- Refer to the
349
- [Bootstrap v4 Form Validation Documentation](https://getbootstrap.com/docs/4.5/components/forms/#validation)
350
- for details on the new Bootstrap v4 validation states.
351
-
352
- ### Validation mechanisms
353
-
354
- Using 3<sup>rd</sup> party Vue-based validation libraries with BootstrapVue:
355
-
356
- - BootstrapVue [Form validation reference section](/docs/reference/validation)
357
-
358
- Additional resources:
359
-
360
- - [Bootstrap v4: Form Validation Documentation](https://getbootstrap.com/docs/4.5/components/forms/#validation)
361
- - [MDN: Learn Form Validation - Using JavaScript API](https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Form_validation#Validating_forms_using_JavaScript)
362
- - [MDN: HTML5 Constraint Validation](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation)
363
- - [MDN: Validity State API](https://developer.mozilla.org/en-US/docs/Web/API/ValidityState)
364
-
365
- <!-- Component reference added automatically from component package.json -->
@@ -1,170 +0,0 @@
1
- import { mount } from '@vue/test-utils'
2
- import { BFormInvalidFeedback } from './form-invalid-feedback'
3
-
4
- describe('form-invalid-feedback', () => {
5
- it('default should have tag div', async () => {
6
- const wrapper = mount(BFormInvalidFeedback)
7
-
8
- expect(wrapper.element.tagName).toBe('DIV')
9
-
10
- wrapper.destroy()
11
- })
12
-
13
- it('default should contain base class', async () => {
14
- const wrapper = mount(BFormInvalidFeedback)
15
-
16
- expect(wrapper.classes()).toContain('invalid-feedback')
17
-
18
- wrapper.destroy()
19
- })
20
-
21
- it('default should not have class !gl-block', async () => {
22
- const wrapper = mount(BFormInvalidFeedback)
23
-
24
- expect(wrapper.classes()).not.toContain('!gl-block')
25
-
26
- wrapper.destroy()
27
- })
28
-
29
- it('default should not have class invalid-tooltip', async () => {
30
- const wrapper = mount(BFormInvalidFeedback)
31
-
32
- expect(wrapper.classes()).not.toContain('invalid-tooltip')
33
-
34
- wrapper.destroy()
35
- })
36
-
37
- it('default should not have id', async () => {
38
- const wrapper = mount(BFormInvalidFeedback)
39
-
40
- expect(wrapper.attributes('id')).toBeUndefined()
41
-
42
- wrapper.destroy()
43
- })
44
-
45
- it('default should have user supplied id', async () => {
46
- const wrapper = mount(BFormInvalidFeedback, {
47
- context: {
48
- props: {
49
- id: 'foobar'
50
- }
51
- }
52
- })
53
-
54
- expect(wrapper.attributes('id')).toBe('foobar')
55
-
56
- wrapper.destroy()
57
- })
58
-
59
- it('should have tag small when tag=small', async () => {
60
- const wrapper = mount(BFormInvalidFeedback, {
61
- context: {
62
- props: {
63
- tag: 'small'
64
- }
65
- }
66
- })
67
-
68
- expect(wrapper.element.tagName).toBe('SMALL')
69
-
70
- wrapper.destroy()
71
- })
72
-
73
- it('should contain class !gl-block when force-show is set', async () => {
74
- const wrapper = mount(BFormInvalidFeedback, {
75
- context: {
76
- props: {
77
- forceShow: true
78
- }
79
- }
80
- })
81
-
82
- expect(wrapper.classes()).toContain('!gl-block')
83
-
84
- wrapper.destroy()
85
- })
86
-
87
- it('should contain class !gl-block when state is false', async () => {
88
- const wrapper = mount(BFormInvalidFeedback, {
89
- context: {
90
- props: {
91
- state: false
92
- }
93
- }
94
- })
95
-
96
- expect(wrapper.classes()).toContain('!gl-block')
97
-
98
- wrapper.destroy()
99
- })
100
-
101
- it('should not contain class !gl-block when state is true', async () => {
102
- const wrapper = mount(BFormInvalidFeedback, {
103
- context: {
104
- props: {
105
- state: true
106
- }
107
- }
108
- })
109
-
110
- expect(wrapper.classes()).not.toContain('!gl-block')
111
-
112
- wrapper.destroy()
113
- })
114
-
115
- it('should contain class !gl-block when force-show is true and state is true', async () => {
116
- const wrapper = mount(BFormInvalidFeedback, {
117
- context: {
118
- props: {
119
- forceShow: true,
120
- state: true
121
- }
122
- }
123
- })
124
-
125
- expect(wrapper.classes()).toContain('!gl-block')
126
-
127
- wrapper.destroy()
128
- })
129
-
130
- it('should contain class invalid-tooltip when tooltip is set', async () => {
131
- const wrapper = mount(BFormInvalidFeedback, {
132
- context: {
133
- props: {
134
- tooltip: true
135
- }
136
- }
137
- })
138
-
139
- expect(wrapper.classes()).toContain('invalid-tooltip')
140
-
141
- wrapper.destroy()
142
- })
143
-
144
- it('should not contain class invalid-feedback when tooltip is set', async () => {
145
- const wrapper = mount(BFormInvalidFeedback, {
146
- context: {
147
- props: {
148
- tooltip: true
149
- }
150
- }
151
- })
152
-
153
- expect(wrapper.classes()).not.toContain('invalid-feedback')
154
-
155
- wrapper.destroy()
156
- })
157
-
158
- it('should have children in the default slot when supplied', async () => {
159
- const wrapper = mount(BFormInvalidFeedback, {
160
- context: {
161
- children: ['foo', '<span>bar</span>']
162
- }
163
- })
164
-
165
- expect(wrapper.text()).toContain('foo')
166
- expect(wrapper.text()).toContain('bar')
167
-
168
- wrapper.destroy()
169
- })
170
- })
@@ -1,93 +0,0 @@
1
- import { mount } from '@vue/test-utils'
2
- import { BFormText } from './form-text'
3
-
4
- describe('form > form-text', () => {
5
- it('has expected default structure', async () => {
6
- const wrapper = mount(BFormText)
7
-
8
- expect(wrapper.element.tagName).toBe('SMALL')
9
- expect(wrapper.classes()).toContain('form-text')
10
- expect(wrapper.classes()).toContain('text-muted')
11
- expect(wrapper.classes().length).toBe(2)
12
- expect(wrapper.text()).toEqual('')
13
-
14
- wrapper.destroy()
15
- })
16
-
17
- it('renders default slot content', async () => {
18
- const wrapper = mount(BFormText, {
19
- slots: {
20
- default: 'foobar'
21
- }
22
- })
23
-
24
- expect(wrapper.element.tagName).toBe('SMALL')
25
- expect(wrapper.classes()).toContain('form-text')
26
- expect(wrapper.classes()).toContain('text-muted')
27
- expect(wrapper.classes().length).toBe(2)
28
- expect(wrapper.text()).toEqual('foobar')
29
-
30
- wrapper.destroy()
31
- })
32
-
33
- it('renders custom root element when prop tag set', async () => {
34
- const wrapper = mount(BFormText, {
35
- propsData: {
36
- tag: 'p'
37
- }
38
- })
39
-
40
- expect(wrapper.element.tagName).toBe('P')
41
- expect(wrapper.classes()).toContain('form-text')
42
- expect(wrapper.classes()).toContain('text-muted')
43
- expect(wrapper.classes().length).toBe(2)
44
- expect(wrapper.text()).toEqual('')
45
-
46
- wrapper.destroy()
47
- })
48
-
49
- it('has user supplied ID', async () => {
50
- const wrapper = mount(BFormText, {
51
- propsData: {
52
- id: 'foo'
53
- }
54
- })
55
-
56
- expect(wrapper.element.tagName).toBe('SMALL')
57
- expect(wrapper.attributes('id')).toBeDefined()
58
- expect(wrapper.attributes('id')).toEqual('foo')
59
-
60
- wrapper.destroy()
61
- })
62
-
63
- it('does not have class form-text when prop inline set', async () => {
64
- const wrapper = mount(BFormText, {
65
- propsData: {
66
- inline: true
67
- }
68
- })
69
-
70
- expect(wrapper.element.tagName).toBe('SMALL')
71
- expect(wrapper.classes()).not.toContain('form-text')
72
- expect(wrapper.classes()).toContain('text-muted')
73
- expect(wrapper.classes().length).toBe(1)
74
-
75
- wrapper.destroy()
76
- })
77
-
78
- it('has variant class applied when prop text-variant is set', async () => {
79
- const wrapper = mount(BFormText, {
80
- propsData: {
81
- textVariant: 'info'
82
- }
83
- })
84
-
85
- expect(wrapper.element.tagName).toBe('SMALL')
86
- expect(wrapper.classes()).toContain('form-text')
87
- expect(wrapper.classes()).toContain('text-info')
88
- expect(wrapper.classes().length).toBe(2)
89
- expect(wrapper.text()).toEqual('')
90
-
91
- wrapper.destroy()
92
- })
93
- })