@bethinkpl/design-system 41.1.5 → 43.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.
- package/dist/design-system.css +1 -1
- package/dist/design-system.js +16800 -13061
- package/dist/design-system.js.map +1 -1
- package/dist/lib/js/components/Buttons/IconButton/IconButton.vue.d.ts +2 -0
- package/dist/lib/js/components/Cards/Card/Card.consts.d.ts +14 -0
- package/dist/lib/js/components/Cards/Card/Card.vue.d.ts +10 -5
- package/dist/lib/js/components/Cards/CardExpandable/CardExpandable.vue.d.ts +35 -15
- package/dist/lib/js/components/DatePickers/DateBox/DateBox.vue.d.ts +2 -0
- package/dist/lib/js/components/DatePickers/DatePicker/DatePicker.vue.d.ts +2 -0
- package/dist/lib/js/components/DatePickers/DateRangePicker/DateRangePicker.vue.d.ts +2 -0
- package/dist/lib/js/components/Drawer/DrawerSection/DrawerSection.vue.d.ts +6 -0
- package/dist/lib/js/components/Form/InputField/useInputFieldWithinForm.d.ts +1 -1
- package/dist/lib/js/components/Form/RadioButton/RadioButton.vue.d.ts +2 -0
- package/dist/lib/js/components/Form/SelectField/SelectField.types.d.ts +26 -0
- package/dist/lib/js/components/Form/SelectField/SelectField.utils.d.ts +7 -0
- package/dist/lib/js/components/Form/SelectField/SelectField.vue.d.ts +107 -0
- package/dist/lib/js/components/Form/SelectField/SelectFieldOption.vue.d.ts +19 -0
- package/dist/lib/js/components/Form/SelectField/index.d.ts +4 -0
- package/dist/lib/js/components/Form/SelectField/useSelectFieldWithinForm.d.ts +8 -0
- package/dist/lib/js/components/Headers/OverlayHeader/OverlayHeader.vue.d.ts +4 -0
- package/dist/lib/js/components/Headers/SectionHeader/SectionHeader.vue.d.ts +4 -0
- package/dist/lib/js/components/Icons/Icon/Icon.consts.d.ts +2 -0
- package/dist/lib/js/components/Modals/Modal/Modal.vue.d.ts +4 -0
- package/dist/lib/js/components/Modals/ModalDialog/ModalDialog.vue.d.ts +4 -0
- package/dist/lib/js/components/Pagination/Pagination.vue.d.ts +6 -0
- package/dist/lib/js/components/ProgressBar/ProgressBar.vue.d.ts +2 -0
- package/dist/lib/js/components/ProgressDonutChart/ProgressDonutChart.vue.d.ts +2 -0
- package/dist/lib/js/components/RichList/BasicRichListItem/BasicRichListItem.vue.d.ts +2 -0
- package/dist/lib/js/components/RichList/RichListItem/RichListItem.vue.d.ts +2 -0
- package/dist/lib/js/components/SelectList/SelectListItem/SelectListItem.vue.d.ts +2 -0
- package/dist/lib/js/components/SelectList/SelectListItemToggle/SelectListItemToggle.vue.d.ts +2 -0
- package/dist/lib/js/components/Statuses/AccessStatus/AccessStatus.vue.d.ts +2 -0
- package/dist/lib/js/components/Statuses/BlockadeStatus/BlockadeStatus.vue.d.ts +2 -0
- package/dist/lib/js/components/SurveyQuestions/SurveyQuestionOpenEnded/SurveyQuestionOpenEnded.vue.d.ts +1009 -169
- package/dist/lib/js/components/SurveyQuestions/SurveyQuestionScale/SurveyQuestionScale.vue.d.ts +1000 -160
- package/dist/lib/js/components/Switch/Switch.vue.d.ts +2 -0
- package/dist/lib/js/components/Tile/Tile.sb.shared.d.ts +2 -0
- package/dist/lib/js/components/Toast/Toast.vue.d.ts +33 -15
- package/dist/lib/js/components/Toggles/ToggleButton/ToggleButton.vue.d.ts +2 -0
- package/dist/lib/js/composables/useFormFieldWithinForm.d.ts +3 -3
- package/dist/lib/js/icons/fontawesome.d.ts +2 -0
- package/dist/lib/js/index.d.ts +2 -1
- package/lib/js/components/Cards/Card/Card.consts.ts +18 -0
- package/lib/js/components/Cards/Card/Card.spec.ts +159 -33
- package/lib/js/components/Cards/Card/Card.stories.ts +21 -2
- package/lib/js/components/Cards/Card/Card.vue +90 -23
- package/lib/js/components/Dropdown/Dropdown.vue +6 -10
- package/lib/js/components/Form/Form.stories.ts +15 -1
- package/lib/js/components/Form/SelectField/SelectField.spec.ts +495 -0
- package/lib/js/components/Form/SelectField/SelectField.stories.ts +287 -0
- package/lib/js/components/Form/SelectField/SelectField.types.ts +65 -0
- package/lib/js/components/Form/SelectField/SelectField.utils.ts +83 -0
- package/lib/js/components/Form/SelectField/SelectField.vue +342 -0
- package/lib/js/components/Form/SelectField/SelectFieldOption.vue +51 -0
- package/lib/js/components/Form/SelectField/index.ts +5 -0
- package/lib/js/components/Form/SelectField/useSelectFieldWithinForm.ts +27 -0
- package/lib/js/components/SelectList/SelectListItem/SelectListItem.spec.ts +77 -0
- package/lib/js/components/SelectList/SelectListItem/SelectListItem.vue +4 -1
- package/lib/js/components/SurveyQuestions/SurveyQuestionOpenEnded/SurveyQuestionOpenEnded.vue +7 -12
- package/lib/js/components/SurveyQuestions/SurveyQuestionScale/SurveyQuestionScale.vue +7 -12
- package/lib/js/composables/useFormFieldWithinForm.ts +4 -4
- package/lib/js/icons/fontawesome.ts +4 -0
- package/lib/js/index.ts +2 -1
- package/lib/js/styles/Shadows/Shadows.stories.scss +16 -0
- package/lib/js/styles/Shadows/Shadows.stories.ts +4 -0
- package/lib/styles/mixins/_dropdown-surface.scss +24 -0
- package/lib/styles/settings/_shadows.scss +18 -0
- package/package.json +1 -1
- package/dist/lib/js/components/Modal/Modal.vue.d.ts +0 -395
- package/dist/lib/js/components/Modal/index.d.ts +0 -3
- package/lib/js/components/Modal/Modal.spec.ts +0 -58
- package/lib/js/components/Modal/Modal.vue +0 -137
- package/lib/js/components/Modal/index.ts +0 -3
|
@@ -3,12 +3,17 @@
|
|
|
3
3
|
:class="[
|
|
4
4
|
'ds-card',
|
|
5
5
|
{
|
|
6
|
+
'-ds-paddingMedium': paddingSize === CARD_PADDING_SIZES.MEDIUM,
|
|
6
7
|
'-ds-paddingLarge': paddingSize === CARD_PADDING_SIZES.LARGE,
|
|
7
8
|
'-ds-leftRibbon':
|
|
8
9
|
hasRibbon && !hasLoadingBar && ribbonPosition === CARD_RIBBON_POSITIONS.LEFT,
|
|
9
|
-
'-ds-
|
|
10
|
-
'-ds-
|
|
11
|
-
'-ds-
|
|
10
|
+
'-ds-elevationTop': effectiveElevation === CARD_ELEVATIONS.TOP,
|
|
11
|
+
'-ds-elevationNone': effectiveElevation === CARD_ELEVATIONS.NONE,
|
|
12
|
+
'-ds-radiusTop': effectiveRadius === CARD_RADIUSES.TOP,
|
|
13
|
+
'-ds-radiusNone': effectiveRadius === CARD_RADIUSES.NONE,
|
|
14
|
+
'-ds-backgroundNeutral':
|
|
15
|
+
effectiveBackgroundColor === CARD_BACKGROUND_COLORS.NEUTRAL,
|
|
16
|
+
'-ds-backgroundNone': effectiveBackgroundColor === CARD_BACKGROUND_COLORS.NONE,
|
|
12
17
|
},
|
|
13
18
|
]"
|
|
14
19
|
>
|
|
@@ -80,23 +85,36 @@
|
|
|
80
85
|
$root: &;
|
|
81
86
|
$card-border-radius: $radius-m;
|
|
82
87
|
|
|
88
|
+
background-color: $color-default-background;
|
|
89
|
+
border-radius: $card-border-radius;
|
|
90
|
+
box-shadow: $shadow-s;
|
|
83
91
|
display: flex;
|
|
84
92
|
flex-direction: column;
|
|
85
93
|
position: relative;
|
|
86
94
|
width: inherit;
|
|
87
95
|
|
|
88
|
-
|
|
89
|
-
background-color: $color-
|
|
90
|
-
|
|
91
|
-
box-shadow: $shadow-s;
|
|
96
|
+
&.-ds-backgroundNeutral {
|
|
97
|
+
background-color: $color-neutral-background;
|
|
98
|
+
}
|
|
92
99
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
100
|
+
&.-ds-backgroundNone {
|
|
101
|
+
background-color: transparent;
|
|
102
|
+
}
|
|
96
103
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
104
|
+
&.-ds-elevationTop {
|
|
105
|
+
box-shadow: $shadow-top-s;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
&.-ds-elevationNone {
|
|
109
|
+
box-shadow: none;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
&.-ds-radiusTop {
|
|
113
|
+
border-radius: $card-border-radius $card-border-radius 0 0;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
&.-ds-radiusNone {
|
|
117
|
+
border-radius: 0;
|
|
100
118
|
}
|
|
101
119
|
|
|
102
120
|
&.-ds-leftRibbon {
|
|
@@ -127,6 +145,10 @@
|
|
|
127
145
|
&.-ds-withPadding {
|
|
128
146
|
padding: $space-8;
|
|
129
147
|
|
|
148
|
+
#{$root}.-ds-paddingMedium & {
|
|
149
|
+
padding: $space-12 $space-12 $space-8;
|
|
150
|
+
}
|
|
151
|
+
|
|
130
152
|
#{$root}.-ds-paddingLarge & {
|
|
131
153
|
padding: $space-16 $space-16 $space-8;
|
|
132
154
|
}
|
|
@@ -137,6 +159,10 @@
|
|
|
137
159
|
&.-ds-withHorizontalMargin {
|
|
138
160
|
margin: 0 $space-8;
|
|
139
161
|
|
|
162
|
+
#{$root}.-ds-paddingMedium & {
|
|
163
|
+
margin: 0 $space-12;
|
|
164
|
+
}
|
|
165
|
+
|
|
140
166
|
#{$root}.-ds-paddingLarge & {
|
|
141
167
|
margin: 0 $space-16;
|
|
142
168
|
}
|
|
@@ -149,6 +175,10 @@
|
|
|
149
175
|
&.-ds-withPadding {
|
|
150
176
|
padding: $space-8;
|
|
151
177
|
|
|
178
|
+
#{$root}.-ds-paddingMedium & {
|
|
179
|
+
padding: $space-8 $space-12;
|
|
180
|
+
}
|
|
181
|
+
|
|
152
182
|
#{$root}.-ds-paddingLarge & {
|
|
153
183
|
padding: $space-8 $space-16;
|
|
154
184
|
}
|
|
@@ -164,6 +194,10 @@
|
|
|
164
194
|
&.-ds-withPadding {
|
|
165
195
|
padding: 0 $space-8 $space-8;
|
|
166
196
|
|
|
197
|
+
#{$root}.-ds-paddingMedium & {
|
|
198
|
+
padding: 0 $space-12 $space-12;
|
|
199
|
+
}
|
|
200
|
+
|
|
167
201
|
#{$root}.-ds-paddingLarge & {
|
|
168
202
|
padding: 0 $space-16 $space-16;
|
|
169
203
|
}
|
|
@@ -176,20 +210,21 @@
|
|
|
176
210
|
display: flex;
|
|
177
211
|
flex-shrink: 0;
|
|
178
212
|
|
|
179
|
-
#{$root}:not(.-ds-
|
|
213
|
+
#{$root}:not(.-ds-radiusNone) & {
|
|
180
214
|
border-top-left-radius: $card-border-radius;
|
|
181
215
|
border-top-right-radius: $card-border-radius;
|
|
182
216
|
overflow: hidden;
|
|
183
217
|
}
|
|
184
218
|
|
|
185
|
-
#{$root}:not(.-ds-
|
|
186
|
-
border-bottom-left-radius: $card-border-radius;
|
|
219
|
+
#{$root}:not(.-ds-radiusNone).-ds-leftRibbon & {
|
|
187
220
|
border-top-left-radius: $card-border-radius;
|
|
188
221
|
border-top-right-radius: 0;
|
|
189
222
|
}
|
|
190
223
|
|
|
191
|
-
|
|
192
|
-
|
|
224
|
+
// a left ribbon spans the full height of the card, so its bottom corner is
|
|
225
|
+
// only rounded when the card itself is rounded at the bottom
|
|
226
|
+
#{$root}:not(.-ds-radiusNone):not(.-ds-radiusTop).-ds-leftRibbon & {
|
|
227
|
+
border-bottom-left-radius: $card-border-radius;
|
|
193
228
|
}
|
|
194
229
|
|
|
195
230
|
.-ds-leftRibbon & {
|
|
@@ -213,13 +248,18 @@ import DsDivider from '../../Divider/Divider.vue';
|
|
|
213
248
|
import DsLoadingBar, { LOADING_BAR_COLORS, LoadingBarColors } from '../../LoadingBar';
|
|
214
249
|
import DsContainerRibbon from '../../ContainerRibbon/ContainerRibbon.vue';
|
|
215
250
|
import { CONTAINER_RIBBON_LAYOUTS, CONTAINER_RIBBON_RADIUSES } from '../../ContainerRibbon';
|
|
251
|
+
import { RemovedProp } from '../../../utils/type.utils';
|
|
216
252
|
import {
|
|
217
253
|
CARD_BACKGROUND_COLORS,
|
|
254
|
+
CARD_ELEVATIONS,
|
|
255
|
+
CARD_RADIUSES,
|
|
218
256
|
CARD_RIBBON_COLORS,
|
|
219
257
|
CARD_RIBBON_POSITIONS,
|
|
220
258
|
CARD_RIBBON_SIZES,
|
|
221
259
|
CARD_PADDING_SIZES,
|
|
222
260
|
CardBackgroundColor,
|
|
261
|
+
CardElevation,
|
|
262
|
+
CardRadius,
|
|
223
263
|
CardRibbonColors,
|
|
224
264
|
CardRibbonPositions,
|
|
225
265
|
CardRibbonSizes,
|
|
@@ -234,8 +274,10 @@ const {
|
|
|
234
274
|
paddingSize = CARD_PADDING_SIZES.SMALL,
|
|
235
275
|
dividerUnderHeader = false,
|
|
236
276
|
hasRibbon = false,
|
|
237
|
-
|
|
277
|
+
elevation = CARD_ELEVATIONS.DEFAULT,
|
|
278
|
+
radius = CARD_RADIUSES.ALL,
|
|
238
279
|
backgroundColor = CARD_BACKGROUND_COLORS.DEFAULT,
|
|
280
|
+
isFlat = false,
|
|
239
281
|
ribbonPosition = CARD_RIBBON_POSITIONS.TOP,
|
|
240
282
|
ribbonSize = CARD_RIBBON_SIZES.MEDIUM,
|
|
241
283
|
ribbonColor = CARD_RIBBON_COLORS.NEUTRAL_HEAVY,
|
|
@@ -243,7 +285,6 @@ const {
|
|
|
243
285
|
hasLoadingBar = false,
|
|
244
286
|
loadingBarColor = LOADING_BAR_COLORS.NEUTRAL_HEAVY,
|
|
245
287
|
loadingBarTime = '0',
|
|
246
|
-
isFlat = false,
|
|
247
288
|
isContentScrollable = false,
|
|
248
289
|
} = defineProps<{
|
|
249
290
|
contentHasPadding?: boolean;
|
|
@@ -252,8 +293,15 @@ const {
|
|
|
252
293
|
paddingSize?: CardPaddingSize;
|
|
253
294
|
dividerUnderHeader?: boolean;
|
|
254
295
|
hasRibbon?: boolean;
|
|
255
|
-
|
|
296
|
+
elevation?: CardElevation;
|
|
297
|
+
radius?: CardRadius;
|
|
256
298
|
backgroundColor?: CardBackgroundColor;
|
|
299
|
+
/**
|
|
300
|
+
* Shorthand for `elevation="none"`, `radius="none"` and `background-color="none"`.
|
|
301
|
+
* An axis explicitly set to a non-default value still wins over `isFlat`,
|
|
302
|
+
* so `is-flat radius="top"` keeps the top corners rounded.
|
|
303
|
+
*/
|
|
304
|
+
isFlat?: boolean;
|
|
257
305
|
ribbonPosition?: CardRibbonPositions;
|
|
258
306
|
ribbonSize?: CardRibbonSizes;
|
|
259
307
|
ribbonColor?: CardRibbonColors;
|
|
@@ -261,8 +309,10 @@ const {
|
|
|
261
309
|
hasLoadingBar?: boolean;
|
|
262
310
|
loadingBarColor?: LoadingBarColors;
|
|
263
311
|
loadingBarTime?: string;
|
|
264
|
-
isFlat?: boolean;
|
|
265
312
|
isContentScrollable?: boolean;
|
|
313
|
+
// Removed props kept as removal markers so existing usages fail type-checking.
|
|
314
|
+
/** @deprecated renamed to `radius` (all | top | none) */
|
|
315
|
+
hasRadius?: RemovedProp<'renamed to radius'>;
|
|
266
316
|
}>();
|
|
267
317
|
|
|
268
318
|
defineSlots<{
|
|
@@ -280,12 +330,29 @@ const ribbonLayout = computed(() => {
|
|
|
280
330
|
return layoutMap[ribbonPosition] || CONTAINER_RIBBON_LAYOUTS.HORIZONTAL;
|
|
281
331
|
});
|
|
282
332
|
|
|
333
|
+
// `isFlat` is a shorthand that lowers the defaults of the three visual axes to `none`.
|
|
334
|
+
// An axis explicitly set to a non-default value still wins, so `isFlat` combines with
|
|
335
|
+
// e.g. `radius="top"`.
|
|
336
|
+
const effectiveElevation = computed(() =>
|
|
337
|
+
isFlat && elevation === CARD_ELEVATIONS.DEFAULT ? CARD_ELEVATIONS.NONE : elevation,
|
|
338
|
+
);
|
|
339
|
+
|
|
340
|
+
const effectiveRadius = computed(() =>
|
|
341
|
+
isFlat && radius === CARD_RADIUSES.ALL ? CARD_RADIUSES.NONE : radius,
|
|
342
|
+
);
|
|
343
|
+
|
|
344
|
+
const effectiveBackgroundColor = computed(() =>
|
|
345
|
+
isFlat && backgroundColor === CARD_BACKGROUND_COLORS.DEFAULT
|
|
346
|
+
? CARD_BACKGROUND_COLORS.NONE
|
|
347
|
+
: backgroundColor,
|
|
348
|
+
);
|
|
349
|
+
|
|
283
350
|
const ribbonRadius = computed(() => {
|
|
284
351
|
const ribbonPositionToRibbonRadiusMap = {
|
|
285
352
|
[CARD_RIBBON_POSITIONS.TOP]: CONTAINER_RIBBON_RADIUSES.BOTTOM,
|
|
286
353
|
[CARD_RIBBON_POSITIONS.LEFT]: CONTAINER_RIBBON_RADIUSES.RIGHT,
|
|
287
354
|
};
|
|
288
|
-
return hasRibbonRadius &&
|
|
355
|
+
return hasRibbonRadius && effectiveRadius.value === CARD_RADIUSES.NONE
|
|
289
356
|
? ribbonPositionToRibbonRadiusMap[ribbonPosition]
|
|
290
357
|
: CONTAINER_RIBBON_RADIUSES.NONE;
|
|
291
358
|
});
|
|
@@ -36,30 +36,26 @@
|
|
|
36
36
|
</template>
|
|
37
37
|
|
|
38
38
|
<style lang="scss" scoped>
|
|
39
|
-
@import '../../../../lib/styles/settings/colors/tokens';
|
|
40
|
-
@import '../../../../lib/styles/settings/radiuses';
|
|
41
39
|
@import '../../../../lib/styles/settings/spacings';
|
|
42
|
-
@import '../../../../lib/styles/
|
|
40
|
+
@import '../../../../lib/styles/mixins/dropdown-surface';
|
|
43
41
|
|
|
44
42
|
.ds-dropdown {
|
|
45
|
-
|
|
43
|
+
@include dropdownSurface;
|
|
44
|
+
|
|
45
|
+
// Resets for the styles vue-popperjs ships in vue-popper.css.
|
|
46
46
|
border: 0;
|
|
47
47
|
border-radius: 0;
|
|
48
|
-
box-shadow: $shadow-m;
|
|
49
48
|
max-width: 100%;
|
|
50
49
|
min-width: 128px;
|
|
51
|
-
overflow: hidden;
|
|
52
50
|
padding: 0;
|
|
53
51
|
text-align: left;
|
|
54
52
|
|
|
55
53
|
&.-ds-radiusBottom {
|
|
56
|
-
|
|
57
|
-
border-bottom-right-radius: $radius-s;
|
|
54
|
+
@include dropdownSurfaceRadiusBottom;
|
|
58
55
|
}
|
|
59
56
|
|
|
60
57
|
&.-ds-radiusTop {
|
|
61
|
-
|
|
62
|
-
border-top-right-radius: $radius-s;
|
|
58
|
+
@include dropdownSurfaceRadiusTop;
|
|
63
59
|
}
|
|
64
60
|
|
|
65
61
|
&[x-placement^='bottom'] {
|
|
@@ -6,6 +6,7 @@ import { useForm } from 'vee-validate';
|
|
|
6
6
|
import { toTypedSchema } from '@vee-validate/zod';
|
|
7
7
|
import { array, object, string } from 'zod';
|
|
8
8
|
import CheckboxGroupField from './CheckboxGroupField/CheckboxGroupField.vue';
|
|
9
|
+
import SelectField from './SelectField';
|
|
9
10
|
import Button from '../Buttons/Button';
|
|
10
11
|
|
|
11
12
|
export default {
|
|
@@ -14,16 +15,18 @@ export default {
|
|
|
14
15
|
} as Meta<any>;
|
|
15
16
|
|
|
16
17
|
export const SimpleForm = () => ({
|
|
17
|
-
components: { InputField, CheckboxGroupField, Checkbox, Button },
|
|
18
|
+
components: { InputField, CheckboxGroupField, Checkbox, SelectField, Button },
|
|
18
19
|
setup: () => {
|
|
19
20
|
const { handleSubmit } = useForm({
|
|
20
21
|
initialValues: {
|
|
21
22
|
fullName: '',
|
|
23
|
+
country: '',
|
|
22
24
|
newsletterTopics: [],
|
|
23
25
|
},
|
|
24
26
|
validationSchema: toTypedSchema(
|
|
25
27
|
object({
|
|
26
28
|
fullName: string().min(1, 'Imię i nazwisko jest wymagane'),
|
|
29
|
+
country: string().min(1, 'Kraj jest wymagany'),
|
|
27
30
|
newsletterTopics: array(string()).min(
|
|
28
31
|
1,
|
|
29
32
|
'Wybierz przynajmniej jeden temat newslettera',
|
|
@@ -43,11 +46,22 @@ export const SimpleForm = () => ({
|
|
|
43
46
|
|
|
44
47
|
return {
|
|
45
48
|
onSubmit,
|
|
49
|
+
countryOptions: [
|
|
50
|
+
{ value: 'pl', label: 'Polska' },
|
|
51
|
+
{ value: 'de', label: 'Niemcy' },
|
|
52
|
+
{ value: 'cz', label: 'Czechy' },
|
|
53
|
+
],
|
|
46
54
|
};
|
|
47
55
|
},
|
|
48
56
|
template: `
|
|
49
57
|
<form @submit.prevent="onSubmit" style="display: flex; flex-direction: column; gap: 16px; max-width: 400px;">
|
|
50
58
|
<InputField label="Imię i nazwisko" name="fullName" />
|
|
59
|
+
<SelectField
|
|
60
|
+
label="Kraj"
|
|
61
|
+
name="country"
|
|
62
|
+
placeholder="Wybierz kraj"
|
|
63
|
+
:options="countryOptions"
|
|
64
|
+
/>
|
|
51
65
|
<CheckboxGroupField label="Jakie tematy newslettera Cię interesują?" name="newsletterTopics">
|
|
52
66
|
<template #field>
|
|
53
67
|
<Checkbox value="technology">Technologia</Checkbox>
|