@citizenplane/pimp 18.6.2 → 18.8.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/biome.json +178 -0
- package/dist/components/BaseInputLabel.vue.d.ts.map +1 -1
- package/dist/components/BaseSelectClearButton.vue.d.ts.map +1 -1
- package/dist/components/CpAccordion.vue.d.ts.map +1 -1
- package/dist/components/CpAlert.vue.d.ts.map +1 -1
- package/dist/components/CpBadge.vue.d.ts.map +1 -1
- package/dist/components/CpButton.vue.d.ts.map +1 -1
- package/dist/components/CpButtonToggle.vue.d.ts +1 -1
- package/dist/components/CpButtonToggle.vue.d.ts.map +1 -1
- package/dist/components/CpCalendar.vue.d.ts.map +1 -1
- package/dist/components/CpCheckbox.vue.d.ts.map +1 -1
- package/dist/components/CpContextualMenu.vue.d.ts.map +1 -1
- package/dist/components/CpDate.vue.d.ts.map +1 -1
- package/dist/components/CpDatepicker.vue.d.ts.map +1 -1
- package/dist/components/CpInput.vue.d.ts.map +1 -1
- package/dist/components/CpItemActions.vue.d.ts +2 -0
- package/dist/components/CpItemActions.vue.d.ts.map +1 -1
- package/dist/components/CpMenu.vue.d.ts.map +1 -1
- package/dist/components/CpMenuItem.vue.d.ts.map +1 -1
- package/dist/components/CpMultiselect.vue.d.ts.map +1 -1
- package/dist/components/CpRadio.vue.d.ts.map +1 -1
- package/dist/components/CpRadioGroup.vue.d.ts.map +1 -1
- package/dist/components/CpRadioNew.vue.d.ts.map +1 -1
- package/dist/components/CpSelect.vue.d.ts.map +1 -1
- package/dist/components/CpSelectMenu.vue.d.ts.map +1 -1
- package/dist/components/CpSelectableButton.vue.d.ts +1 -1
- package/dist/components/CpSelectableButton.vue.d.ts.map +1 -1
- package/dist/components/CpSwitch.vue.d.ts.map +1 -1
- package/dist/components/CpTable.vue.d.ts.map +1 -1
- package/dist/components/CpTelInput.vue.d.ts.map +1 -1
- package/dist/components/CpTooltip.vue.d.ts +2 -0
- package/dist/components/CpTooltip.vue.d.ts.map +1 -1
- package/dist/components/CpTrip.vue.d.ts +48 -0
- package/dist/components/CpTrip.vue.d.ts.map +1 -0
- package/dist/components/CpTripTimeline.vue.d.ts +24 -0
- package/dist/components/CpTripTimeline.vue.d.ts.map +1 -0
- package/dist/components/index.d.ts +2 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/composables/useDynamicSize.d.ts +9 -0
- package/dist/composables/useDynamicSize.d.ts.map +1 -0
- package/dist/constants/index.d.ts +2 -2
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/layout/Breakpoints.d.ts +9 -0
- package/dist/constants/layout/Breakpoints.d.ts.map +1 -0
- package/dist/constants/layout/Sizes.d.ts +2 -0
- package/dist/constants/layout/Sizes.d.ts.map +1 -0
- package/dist/constants/layout/index.d.ts +3 -0
- package/dist/constants/layout/index.d.ts.map +1 -0
- package/dist/helpers/functions.d.ts +1 -0
- package/dist/helpers/functions.d.ts.map +1 -1
- package/dist/libs/CoreDatepicker.vue.d.ts.map +1 -1
- package/dist/pimp.es.js +6797 -6461
- package/dist/pimp.umd.js +54 -54
- package/dist/style.css +1 -1
- package/package.json +14 -24
- package/src/assets/css/base.css +17 -11
- package/src/assets/css/colors.css +12 -22
- package/src/assets/css/dimensions.css +4 -0
- package/src/assets/css/shadows.css +0 -3
- package/src/assets/css/tokens.css +21 -65
- package/src/assets/css/typography.css +0 -17
- package/src/assets/main.css +7 -7
- package/src/assets/styles/helpers/_functions.scss +2 -2
- package/src/assets/styles/utilities/_index.scss +2 -3
- package/src/components/BaseInputLabel.vue +7 -11
- package/src/components/BaseSelectClearButton.vue +6 -7
- package/src/components/CpAccordion.vue +27 -28
- package/src/components/CpAccordionGroup.vue +2 -2
- package/src/components/CpAlert.vue +12 -11
- package/src/components/CpBadge.vue +4 -19
- package/src/components/CpButton.vue +23 -25
- package/src/components/CpButtonGroup.vue +2 -2
- package/src/components/CpButtonToggle.vue +22 -22
- package/src/components/CpCalendar.vue +30 -26
- package/src/components/CpCheckbox.vue +29 -33
- package/src/components/CpContextualMenu.vue +1 -2
- package/src/components/CpDate.vue +72 -76
- package/src/components/CpDatepicker.vue +2 -3
- package/src/components/CpDialog.vue +8 -8
- package/src/components/CpHeading.vue +6 -6
- package/src/components/CpIcon.vue +2 -2
- package/src/components/CpInput.vue +46 -48
- package/src/components/CpItemActions.vue +17 -16
- package/src/components/CpMenu.vue +8 -9
- package/src/components/CpMenuItem.vue +7 -7
- package/src/components/CpMenuList.vue +3 -3
- package/src/components/CpMultiselect.vue +29 -30
- package/src/components/CpRadio.vue +53 -59
- package/src/components/CpRadioGroup.vue +11 -12
- package/src/components/CpRadioNew.vue +56 -58
- package/src/components/CpSelect.vue +42 -42
- package/src/components/CpSelectMenu.vue +32 -32
- package/src/components/CpSelectableButton.vue +50 -51
- package/src/components/CpSwitch.vue +43 -44
- package/src/components/CpTable.vue +69 -81
- package/src/components/CpTableColumnEditor.vue +16 -16
- package/src/components/CpTableEmptyState.vue +4 -4
- package/src/components/CpTableFooter.vue +2 -2
- package/src/components/CpTableFooterDesktop.vue +2 -2
- package/src/components/CpTableFooterDetails.vue +2 -2
- package/src/components/CpTableFooterMobile.vue +4 -4
- package/src/components/CpTabs.vue +1 -1
- package/src/components/CpTelInput.vue +31 -32
- package/src/components/CpTextarea.vue +13 -13
- package/src/components/CpToast.vue +25 -24
- package/src/components/CpTooltip.vue +15 -13
- package/src/components/CpTransitionCounter.vue +1 -1
- package/src/components/CpTransitionExpand.vue +5 -5
- package/src/components/CpTransitionSize.vue +1 -1
- package/src/components/CpTrip.vue +190 -0
- package/src/components/CpTripTimeline.vue +272 -0
- package/src/components/index.ts +36 -34
- package/src/composables/useDynamicSize.ts +60 -0
- package/src/constants/index.ts +2 -2
- package/src/constants/layout/Breakpoints.ts +8 -0
- package/src/constants/layout/Sizes.ts +1 -0
- package/src/constants/layout/index.ts +3 -0
- package/src/directives/ClickOutside.ts +1 -1
- package/src/directives/ResizeSelect.ts +1 -1
- package/src/helpers/functions.ts +1 -1
- package/src/helpers/index.ts +1 -1
- package/src/libs/CoreDatepicker.vue +115 -134
- package/src/stories/Colors.stories.ts +2 -1
- package/src/stories/CpAccordion.stories.ts +2 -2
- package/src/stories/CpAccordionGroup.stories.ts +1 -2
- package/src/stories/CpButtonToggle.stories.ts +1 -2
- package/src/stories/CpCheckbox.stories.ts +1 -2
- package/src/stories/CpContextualMenu.stories.ts +1 -2
- package/src/stories/CpDate.stories.ts +1 -2
- package/src/stories/CpDatepicker.stories.ts +1 -2
- package/src/stories/CpDialog.stories.ts +1 -2
- package/src/stories/CpInput.stories.ts +1 -2
- package/src/stories/CpItemActions.stories.ts +10 -5
- package/src/stories/CpMenu.stories.ts +1 -2
- package/src/stories/CpMenuItem.stories.ts +1 -2
- package/src/stories/CpMultiselect.stories.ts +1 -2
- package/src/stories/CpRadio.stories.ts +1 -2
- package/src/stories/CpRadioGroup.stories.ts +1 -2
- package/src/stories/CpSelect.stories.ts +1 -2
- package/src/stories/CpSelectMenu.stories.ts +1 -2
- package/src/stories/CpSwitch.stories.ts +1 -2
- package/src/stories/CpTable.stories.ts +2 -3
- package/src/stories/CpTabs.stories.ts +1 -2
- package/src/stories/CpText.stories.ts +2 -1
- package/src/stories/CpTextarea.stories.ts +1 -2
- package/src/stories/CpToast.stories.ts +2 -3
- package/src/stories/CpTransitionCounter.stories.ts +1 -2
- package/src/stories/CpTransitionExpand.stories.ts +1 -2
- package/src/stories/CpTransitionListItems.stories.ts +1 -2
- package/src/stories/CpTransitionSize.stories.ts +1 -2
- package/src/stories/CpTransitionSlide.stories.ts +1 -2
- package/src/stories/CpTransitionTabContent.stories.ts +1 -2
- package/src/stories/CpTrip.stories.ts +323 -0
- package/src/stories/Dimensions.stories.ts +1 -0
- package/src/stories/Shadows.stories.ts +1 -0
- package/src/stories/Typography.stories.ts +1 -0
- package/src/vendors/ff-polyfill.ts +1 -1
- package/vitest.workspace.js +1 -1
- package/src/components/Pimp.vue +0 -10
|
@@ -55,13 +55,14 @@
|
|
|
55
55
|
</template>
|
|
56
56
|
|
|
57
57
|
<script setup lang="ts">
|
|
58
|
-
import {
|
|
59
|
-
import { ref,
|
|
58
|
+
import { DateTime, Info } from 'luxon'
|
|
59
|
+
import { computed, ref, useId, watch } from 'vue'
|
|
60
|
+
|
|
61
|
+
import type { Sizes } from '@/constants'
|
|
60
62
|
|
|
61
63
|
import BaseInputLabel from '@/components/BaseInputLabel.vue'
|
|
62
64
|
|
|
63
65
|
import { HUMAN_MAX_AGE } from '@/constants'
|
|
64
|
-
import type { Sizes } from '@/constants'
|
|
65
66
|
import { capitalizeFirstLetter } from '@/helpers'
|
|
66
67
|
|
|
67
68
|
interface Emits {
|
|
@@ -101,7 +102,6 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
101
102
|
disabled: false,
|
|
102
103
|
isInvalid: false,
|
|
103
104
|
errorMessage: '',
|
|
104
|
-
// eslint-disable-next-line vue/no-boolean-default
|
|
105
105
|
displayErrorMessage: true,
|
|
106
106
|
autocompleteBirthday: false,
|
|
107
107
|
locale: () => navigator.language,
|
|
@@ -317,24 +317,21 @@ watch(year, handleUpdate)
|
|
|
317
317
|
// Hide arrows from number input
|
|
318
318
|
input::-webkit-outer-spin-button,
|
|
319
319
|
input::-webkit-inner-spin-button {
|
|
320
|
-
-webkit-appearance: none;
|
|
321
320
|
margin: 0;
|
|
321
|
+
appearance: none;
|
|
322
322
|
}
|
|
323
323
|
|
|
324
324
|
input[type='number'] {
|
|
325
325
|
appearance: textfield;
|
|
326
|
-
-moz-appearance: textfield;
|
|
327
326
|
}
|
|
328
327
|
|
|
329
328
|
// Remove select style
|
|
330
329
|
select {
|
|
330
|
+
border: none;
|
|
331
331
|
appearance: none;
|
|
332
332
|
outline: none;
|
|
333
|
-
border: none;
|
|
334
333
|
}
|
|
335
|
-
}
|
|
336
334
|
|
|
337
|
-
.cpDate {
|
|
338
335
|
input::placeholder,
|
|
339
336
|
&__month--isEmpty {
|
|
340
337
|
color: var(--cp-text-placeholder);
|
|
@@ -342,12 +339,12 @@ watch(year, handleUpdate)
|
|
|
342
339
|
|
|
343
340
|
&__inputs {
|
|
344
341
|
display: flex;
|
|
342
|
+
overflow: hidden;
|
|
343
|
+
border-radius: var(--cp-radius-md-lg);
|
|
344
|
+
background-color: var(--cp-background-primary);
|
|
345
345
|
box-shadow:
|
|
346
346
|
var(--cp-shadows-3xs),
|
|
347
347
|
0 0 0 var(--cp-dimensions-0_25) var(--cp-border-soft);
|
|
348
|
-
border-radius: var(--cp-radius-md-lg);
|
|
349
|
-
overflow: hidden;
|
|
350
|
-
background-color: var(--cp-background-primary);
|
|
351
348
|
|
|
352
349
|
&:hover {
|
|
353
350
|
border-color: var(--cp-border-soft-hover);
|
|
@@ -362,51 +359,6 @@ watch(year, handleUpdate)
|
|
|
362
359
|
line-height: var(--cp-line-height-md);
|
|
363
360
|
}
|
|
364
361
|
|
|
365
|
-
&--lg {
|
|
366
|
-
.cpDate__day,
|
|
367
|
-
.cpDate__year {
|
|
368
|
-
padding: var(--cp-spacing-lg) var(--cp-spacing-xl);
|
|
369
|
-
font-size: var(--cp-text-size-md);
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
.cpDate__month select {
|
|
373
|
-
padding: var(--cp-spacing-lg) var(--cp-dimensions-8) var(--cp-spacing-lg) var(--cp-spacing-xl);
|
|
374
|
-
font-size: var(--cp-text-size-md);
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
&--md {
|
|
379
|
-
.cpDate__day,
|
|
380
|
-
.cpDate__year {
|
|
381
|
-
padding: var(--cp-spacing-md) var(--cp-spacing-xl);
|
|
382
|
-
font-size: var(--cp-text-size-sm);
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
.cpDate__month select {
|
|
386
|
-
padding: var(--cp-spacing-md) calc(var(--cp-dimensions-1) * 7) var(--cp-spacing-md) var(--cp-spacing-lg);
|
|
387
|
-
font-size: var(--cp-text-size-sm);
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
&--sm {
|
|
392
|
-
.cpDate__day,
|
|
393
|
-
.cpDate__year {
|
|
394
|
-
padding: var(--cp-spacing-sm) var(--cp-spacing-lg);
|
|
395
|
-
font-size: var(--cp-text-size-sm);
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
.cpDate__month select {
|
|
399
|
-
padding: var(--cp-spacing-sm) var(--cp-dimensions-8) var(--cp-spacing-sm) var(--cp-spacing-lg);
|
|
400
|
-
font-size: var(--cp-text-size-sm);
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
&__divider {
|
|
405
|
-
flex-shrink: 0;
|
|
406
|
-
width: var(--cp-dimensions-0_25);
|
|
407
|
-
background-color: var(--cp-border-soft);
|
|
408
|
-
}
|
|
409
|
-
|
|
410
362
|
&__month,
|
|
411
363
|
&__day,
|
|
412
364
|
&__year {
|
|
@@ -424,19 +376,17 @@ watch(year, handleUpdate)
|
|
|
424
376
|
width: var(--cp-dimensions-5);
|
|
425
377
|
height: var(--cp-dimensions-5);
|
|
426
378
|
background-color: var(--cp-text-secondary);
|
|
379
|
+
content: '';
|
|
427
380
|
mask-image: url('@/assets/images/icons/chevron-down-icon.svg');
|
|
428
|
-
mask-size: cover;
|
|
429
381
|
mask-repeat: no-repeat;
|
|
430
|
-
|
|
431
|
-
-webkit-mask-size: cover;
|
|
432
|
-
-webkit-mask-repeat: no-repeat;
|
|
433
|
-
transform: translateY(-50%);
|
|
434
|
-
content: '';
|
|
382
|
+
mask-size: cover;
|
|
435
383
|
pointer-events: none;
|
|
384
|
+
transform: translateY(-50%);
|
|
436
385
|
}
|
|
437
386
|
|
|
438
387
|
select {
|
|
439
388
|
@extend %u-text-ellipsis;
|
|
389
|
+
|
|
440
390
|
width: 100%;
|
|
441
391
|
color: inherit;
|
|
442
392
|
cursor: pointer;
|
|
@@ -454,30 +404,60 @@ watch(year, handleUpdate)
|
|
|
454
404
|
|
|
455
405
|
&__day,
|
|
456
406
|
&__year {
|
|
457
|
-
flex: 0 0 30%;
|
|
458
407
|
width: 100%;
|
|
408
|
+
flex: 0 0 30%;
|
|
459
409
|
}
|
|
460
410
|
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
.
|
|
464
|
-
|
|
411
|
+
|
|
412
|
+
&--lg {
|
|
413
|
+
.cpDate__day,
|
|
414
|
+
.cpDate__year {
|
|
415
|
+
padding: var(--cp-spacing-lg) var(--cp-spacing-xl);
|
|
416
|
+
font-size: var(--cp-text-size-md);
|
|
465
417
|
}
|
|
466
418
|
|
|
467
|
-
.
|
|
468
|
-
|
|
469
|
-
|
|
419
|
+
.cpDate__month select {
|
|
420
|
+
padding: var(--cp-spacing-lg) var(--cp-dimensions-8) var(--cp-spacing-lg) var(--cp-spacing-xl);
|
|
421
|
+
font-size: var(--cp-text-size-md);
|
|
470
422
|
}
|
|
423
|
+
}
|
|
471
424
|
|
|
472
|
-
|
|
473
|
-
|
|
425
|
+
&--md {
|
|
426
|
+
.cpDate__day,
|
|
427
|
+
.cpDate__year {
|
|
428
|
+
padding: var(--cp-spacing-md) var(--cp-spacing-xl);
|
|
429
|
+
font-size: var(--cp-text-size-sm);
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
.cpDate__month select {
|
|
433
|
+
padding: var(--cp-spacing-md) calc(var(--cp-dimensions-1) * 7) var(--cp-spacing-md) var(--cp-spacing-lg);
|
|
434
|
+
font-size: var(--cp-text-size-sm);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
&--sm {
|
|
439
|
+
.cpDate__day,
|
|
440
|
+
.cpDate__year {
|
|
441
|
+
padding: var(--cp-spacing-sm) var(--cp-spacing-lg);
|
|
442
|
+
font-size: var(--cp-text-size-sm);
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
.cpDate__month select {
|
|
446
|
+
padding: var(--cp-spacing-sm) var(--cp-dimensions-8) var(--cp-spacing-sm) var(--cp-spacing-lg);
|
|
447
|
+
font-size: var(--cp-text-size-sm);
|
|
474
448
|
}
|
|
475
449
|
}
|
|
476
450
|
|
|
451
|
+
&__divider {
|
|
452
|
+
width: var(--cp-dimensions-0_25);
|
|
453
|
+
flex-shrink: 0;
|
|
454
|
+
background-color: var(--cp-border-soft);
|
|
455
|
+
}
|
|
456
|
+
|
|
477
457
|
&--isDisabled {
|
|
478
458
|
.cpDate__inputs {
|
|
479
|
-
background: var(--cp-background-disabled);
|
|
480
459
|
border-color: var(--cp-border-disabled);
|
|
460
|
+
background: var(--cp-background-disabled);
|
|
481
461
|
}
|
|
482
462
|
|
|
483
463
|
.cpDate__inputs *,
|
|
@@ -488,20 +468,36 @@ watch(year, handleUpdate)
|
|
|
488
468
|
|
|
489
469
|
.cpDate__month select:disabled {
|
|
490
470
|
color: var(--cp-text-disabled) !important;
|
|
491
|
-
-webkit-text-fill-color: var(--cp-text-disabled) !important;
|
|
492
471
|
opacity: 1;
|
|
472
|
+
-webkit-text-fill-color: var(--cp-text-disabled) !important;
|
|
493
473
|
}
|
|
494
474
|
|
|
495
475
|
.cpDate__month::after {
|
|
496
476
|
opacity: 0.4;
|
|
497
477
|
}
|
|
498
478
|
}
|
|
479
|
+
|
|
480
|
+
&--isInvalid {
|
|
481
|
+
.cpDate__inputs,
|
|
482
|
+
.cpDate__inputs:hover {
|
|
483
|
+
box-shadow: 0 0 0 var(--cp-dimensions-0_25) var(--cp-border-error-solid);
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
.cpDate__inputs:focus-within {
|
|
487
|
+
box-shadow: 0 0 0 var(--cp-dimensions-0_25) color-mix(in srgb, #{var(--cp-border-error-solid)} 40%, transparent);
|
|
488
|
+
outline: var(--cp-dimensions-0_5) solid var(--cp-border-error-solid);
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
.cpDate__divider {
|
|
492
|
+
background-color: var(--cp-border-error-solid);
|
|
493
|
+
}
|
|
494
|
+
}
|
|
499
495
|
|
|
500
496
|
&__errorMessage {
|
|
501
497
|
margin-top: var(--cp-spacing-md);
|
|
498
|
+
color: var(--cp-text-error-primary);
|
|
502
499
|
font-size: var(--cp-text-size-sm);
|
|
503
500
|
line-height: var(--cp-line-height-md);
|
|
504
|
-
color: var(--cp-text-error-primary);
|
|
505
501
|
}
|
|
506
502
|
}
|
|
507
503
|
</style>
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
|
|
36
36
|
<script setup lang="ts">
|
|
37
37
|
import { DateTime } from 'luxon'
|
|
38
|
-
import { ref,
|
|
38
|
+
import { computed, ref, useId, watch } from 'vue'
|
|
39
39
|
|
|
40
40
|
import CpInput from '@/components/CpInput.vue'
|
|
41
41
|
|
|
@@ -70,7 +70,6 @@ interface Emits {
|
|
|
70
70
|
const props = withDefaults(defineProps<Props>(), {
|
|
71
71
|
triggerElementId: '',
|
|
72
72
|
mode: 'single',
|
|
73
|
-
// eslint-disable-next-line vue/no-boolean-default
|
|
74
73
|
closeAfterSelect: true,
|
|
75
74
|
label: '',
|
|
76
75
|
placeholder: 'Select a date',
|
|
@@ -182,8 +181,8 @@ watch(
|
|
|
182
181
|
|
|
183
182
|
@media (max-width: 767px) and (min-width: 350px) {
|
|
184
183
|
&__datepicker {
|
|
185
|
-
left: 0;
|
|
186
184
|
right: 0;
|
|
185
|
+
left: 0;
|
|
187
186
|
transform: initial;
|
|
188
187
|
}
|
|
189
188
|
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
</template>
|
|
46
46
|
|
|
47
47
|
<script setup lang="ts">
|
|
48
|
-
import { computed,
|
|
48
|
+
import { computed, nextTick, onBeforeUnmount, onMounted, ref, useId, useSlots } from 'vue'
|
|
49
49
|
|
|
50
50
|
import { getKeyboardFocusableElements, handleTrapFocus } from '@/helpers/dom'
|
|
51
51
|
|
|
@@ -135,12 +135,12 @@ $dialog-breakpoint: 550px;
|
|
|
135
135
|
|
|
136
136
|
.cpDialog {
|
|
137
137
|
position: fixed;
|
|
138
|
+
z-index: 3;
|
|
138
139
|
width: 100%;
|
|
139
140
|
max-width: 100%;
|
|
140
141
|
height: 100%;
|
|
141
142
|
max-height: 100%;
|
|
142
143
|
inset: 0;
|
|
143
|
-
z-index: 3;
|
|
144
144
|
transition-duration: 300ms;
|
|
145
145
|
|
|
146
146
|
@media screen and (min-width: calc(#{$dialog-breakpoint} + 1px)) {
|
|
@@ -170,16 +170,16 @@ $dialog-breakpoint: 550px;
|
|
|
170
170
|
transition: opacity 250ms ease;
|
|
171
171
|
|
|
172
172
|
&--isClosableOnClickOutside {
|
|
173
|
-
pointer-events: auto;
|
|
174
173
|
z-index: 0;
|
|
175
174
|
cursor: pointer;
|
|
175
|
+
pointer-events: auto;
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
178
|
|
|
179
179
|
&__container {
|
|
180
180
|
position: relative;
|
|
181
|
-
display: flex;
|
|
182
181
|
z-index: 2;
|
|
182
|
+
display: flex;
|
|
183
183
|
overflow: hidden;
|
|
184
184
|
width: 100%;
|
|
185
185
|
max-height: 100%;
|
|
@@ -228,8 +228,8 @@ $dialog-breakpoint: 550px;
|
|
|
228
228
|
|
|
229
229
|
&__headerText {
|
|
230
230
|
display: flex;
|
|
231
|
-
flex-direction: column;
|
|
232
231
|
min-width: 0;
|
|
232
|
+
flex-direction: column;
|
|
233
233
|
}
|
|
234
234
|
|
|
235
235
|
&__title > * {
|
|
@@ -245,26 +245,26 @@ $dialog-breakpoint: 550px;
|
|
|
245
245
|
|
|
246
246
|
&__subtitle,
|
|
247
247
|
&__subtitle > p {
|
|
248
|
+
color: var(--cp-text-secondary);
|
|
248
249
|
font-size: var(--cp-text-size-sm);
|
|
249
250
|
font-weight: 400;
|
|
250
251
|
line-height: var(--cp-line-height-md);
|
|
251
|
-
color: var(--cp-text-secondary);
|
|
252
252
|
}
|
|
253
253
|
|
|
254
254
|
&__close {
|
|
255
255
|
display: flex;
|
|
256
|
-
margin-left: auto;
|
|
257
256
|
align-items: center;
|
|
258
257
|
justify-content: center;
|
|
259
258
|
padding: var(--cp-spacing-sm);
|
|
260
259
|
border-radius: var(--cp-radius-md);
|
|
260
|
+
margin-left: auto;
|
|
261
261
|
color: var(--cp-foreground-secondary);
|
|
262
262
|
transition: 200ms ease-in-out;
|
|
263
263
|
transition-property: color, background-color;
|
|
264
264
|
|
|
265
265
|
&:hover {
|
|
266
|
-
color: var(--cp-foreground-primary);
|
|
267
266
|
background-color: var(--cp-background-secondary);
|
|
267
|
+
color: var(--cp-foreground-primary);
|
|
268
268
|
}
|
|
269
269
|
|
|
270
270
|
&:focus-visible {
|
|
@@ -25,15 +25,15 @@ defineOptions({
|
|
|
25
25
|
|
|
26
26
|
<style lang="scss">
|
|
27
27
|
.cpHeading {
|
|
28
|
-
|
|
28
|
+
&::first-letter {
|
|
29
29
|
text-transform: capitalize;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
&--100 {
|
|
33
33
|
font-size: var(--cp-text-size-xs);
|
|
34
34
|
font-weight: 400;
|
|
35
|
-
line-height: var(--cp-line-height-xs);
|
|
36
35
|
letter-spacing: var(--cp-letter-spacing-sm);
|
|
36
|
+
line-height: var(--cp-line-height-xs);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
&--200 {
|
|
@@ -63,29 +63,29 @@ defineOptions({
|
|
|
63
63
|
&--600 {
|
|
64
64
|
font-size: var(--cp-text-size-lg);
|
|
65
65
|
font-weight: 500;
|
|
66
|
-
line-height: var(--cp-line-height-md);
|
|
67
66
|
letter-spacing: var(--cp-letter-spacing-md);
|
|
67
|
+
line-height: var(--cp-line-height-md);
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
&--700 {
|
|
71
71
|
font-size: var(--cp-text-size-xl);
|
|
72
72
|
font-weight: 500;
|
|
73
|
-
line-height: var(--cp-line-height-md);
|
|
74
73
|
letter-spacing: var(--cp-letter-spacing-md);
|
|
74
|
+
line-height: var(--cp-line-height-md);
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
&--800 {
|
|
78
78
|
font-size: var(--cp-text-size-3xl);
|
|
79
79
|
font-weight: 500;
|
|
80
|
-
line-height: var(--cp-line-height-2xl);
|
|
81
80
|
letter-spacing: var(--cp-letter-spacing-md);
|
|
81
|
+
line-height: var(--cp-line-height-2xl);
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
&--900 {
|
|
85
85
|
font-size: var(--cp-text-size-4xl);
|
|
86
86
|
font-weight: 500;
|
|
87
|
-
line-height: var(--cp-line-height-4xl);
|
|
88
87
|
letter-spacing: var(--cp-letter-spacing-md);
|
|
88
|
+
line-height: var(--cp-line-height-4xl);
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
</style>
|
|
@@ -77,7 +77,7 @@ const iconAttrs = computed(() => {
|
|
|
77
77
|
} else {
|
|
78
78
|
// Default to square icon if type is not found
|
|
79
79
|
// @ts-expect-error cannot use string as index type for feather.icons
|
|
80
|
-
const featherIcon = feather.icons[type.value] || feather.icons
|
|
80
|
+
const featherIcon = feather.icons[type.value] || feather.icons.square
|
|
81
81
|
return {
|
|
82
82
|
...featherIcon.attrs,
|
|
83
83
|
...attrs,
|
|
@@ -99,8 +99,8 @@ const iconAttrs = computed(() => {
|
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
&__content {
|
|
102
|
-
height: inherit;
|
|
103
102
|
width: inherit;
|
|
103
|
+
height: inherit;
|
|
104
104
|
vertical-align: top;
|
|
105
105
|
}
|
|
106
106
|
}
|
|
@@ -51,11 +51,12 @@
|
|
|
51
51
|
</template>
|
|
52
52
|
|
|
53
53
|
<script setup lang="ts">
|
|
54
|
-
import {
|
|
54
|
+
import { computed, nextTick, onMounted, ref, useAttrs, useId, useSlots } from 'vue'
|
|
55
|
+
|
|
56
|
+
import type { Sizes } from '@/constants'
|
|
55
57
|
|
|
56
58
|
import BaseInputLabel from '@/components/BaseInputLabel.vue'
|
|
57
59
|
|
|
58
|
-
import type { Sizes } from '@/constants'
|
|
59
60
|
import { capitalizeFirstLetter } from '@/helpers'
|
|
60
61
|
|
|
61
62
|
interface Emits {
|
|
@@ -94,8 +95,7 @@ defineOptions({ inheritAttrs: false })
|
|
|
94
95
|
const attrs = useAttrs()
|
|
95
96
|
|
|
96
97
|
// class is a reserved word, we can't remove 'class' property from attrs
|
|
97
|
-
|
|
98
|
-
const { ['class']: value, id, ...restAttributes } = attrs
|
|
98
|
+
const { class: _class, id, ...restAttributes } = attrs
|
|
99
99
|
|
|
100
100
|
const inputIdentifier = ref<string>((id as string | undefined) || useId())
|
|
101
101
|
|
|
@@ -123,7 +123,7 @@ const cpInputContainer = ref<HTMLDivElement | null>(null)
|
|
|
123
123
|
const isDisabled = computed(() => checkAttribute('disabled'))
|
|
124
124
|
const isRequired = computed(() => checkAttribute('required'))
|
|
125
125
|
|
|
126
|
-
const isEmail = computed(() => attrs
|
|
126
|
+
const isEmail = computed(() => attrs.type === 'email')
|
|
127
127
|
|
|
128
128
|
const dynamicClasses = computed(() => {
|
|
129
129
|
return [
|
|
@@ -191,17 +191,9 @@ onMounted(async () => {
|
|
|
191
191
|
display: flex;
|
|
192
192
|
flex-direction: column;
|
|
193
193
|
|
|
194
|
-
&:has(.cpInput__help, .cpInput__error) .cpInput__container {
|
|
195
|
-
margin-bottom: var(--cp-spacing-md);
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
&:has(.v-popper__popper--shown) {
|
|
199
|
-
z-index: 3;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
194
|
&__container {
|
|
203
|
-
z-index: 1;
|
|
204
195
|
position: relative;
|
|
196
|
+
z-index: 1;
|
|
205
197
|
display: flex;
|
|
206
198
|
|
|
207
199
|
* {
|
|
@@ -209,17 +201,25 @@ onMounted(async () => {
|
|
|
209
201
|
}
|
|
210
202
|
}
|
|
211
203
|
|
|
204
|
+
&:has(.cpInput__help, .cpInput__error) .cpInput__container {
|
|
205
|
+
margin-bottom: var(--cp-spacing-md);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
&:has(.v-popper__popper--shown) {
|
|
209
|
+
z-index: 3;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
212
|
&__inner {
|
|
213
|
+
width: 100%;
|
|
214
|
+
padding: var(--cp-spacing-md) var(--cp-spacing-xl);
|
|
215
|
+
border-radius: var(--cp-radius-md);
|
|
216
|
+
appearance: none;
|
|
213
217
|
box-shadow:
|
|
214
218
|
var(--cp-shadows-3xs-inset),
|
|
215
219
|
0 0 0 var(--cp-dimensions-0_25) var(--cp-border-soft);
|
|
216
|
-
appearance: none;
|
|
217
|
-
border-radius: var(--cp-radius-md);
|
|
218
|
-
width: 100%;
|
|
219
220
|
color: inherit;
|
|
220
|
-
padding: var(--cp-spacing-md) var(--cp-spacing-xl);
|
|
221
|
-
line-height: var(--cp-line-height-md);
|
|
222
221
|
font-size: var(--cp-text-size-sm);
|
|
222
|
+
line-height: var(--cp-line-height-md);
|
|
223
223
|
|
|
224
224
|
&:hover {
|
|
225
225
|
box-shadow:
|
|
@@ -228,8 +228,8 @@ onMounted(async () => {
|
|
|
228
228
|
}
|
|
229
229
|
|
|
230
230
|
&:focus {
|
|
231
|
-
outline: var(--cp-dimensions-0_5) solid var(--cp-focus);
|
|
232
231
|
background-color: var(--cp-background-primary);
|
|
232
|
+
outline: var(--cp-dimensions-0_5) solid var(--cp-focus);
|
|
233
233
|
}
|
|
234
234
|
|
|
235
235
|
&::placeholder {
|
|
@@ -237,6 +237,14 @@ onMounted(async () => {
|
|
|
237
237
|
}
|
|
238
238
|
}
|
|
239
239
|
|
|
240
|
+
&--hasNoBorder .cpInput__inner,
|
|
241
|
+
&--hasNoBorder .cpInput__inner:hover,
|
|
242
|
+
&--hasNoBorder .cpInput__inner:focus,
|
|
243
|
+
&--hasNoBorder .cpInput__icon:hover ~ .cpInput__inner {
|
|
244
|
+
box-shadow: none;
|
|
245
|
+
outline: transparent;
|
|
246
|
+
}
|
|
247
|
+
|
|
240
248
|
&--isInvalid {
|
|
241
249
|
.cpInput__inner,
|
|
242
250
|
.cpInput__inner:hover,
|
|
@@ -277,28 +285,19 @@ onMounted(async () => {
|
|
|
277
285
|
}
|
|
278
286
|
}
|
|
279
287
|
|
|
280
|
-
&--hasNoBorder .cpInput__inner,
|
|
281
|
-
&--hasNoBorder .cpInput__inner:hover,
|
|
282
|
-
&--hasNoBorder .cpInput__inner:focus,
|
|
283
|
-
&--hasNoBorder .cpInput__icon:hover ~ .cpInput__inner {
|
|
284
|
-
outline: transparent;
|
|
285
|
-
box-shadow: none;
|
|
286
|
-
}
|
|
287
|
-
|
|
288
288
|
&__icon {
|
|
289
|
+
position: absolute;
|
|
290
|
+
z-index: 1;
|
|
291
|
+
top: 50%;
|
|
292
|
+
left: var(--cp-dimensions-3_5);
|
|
293
|
+
display: flex;
|
|
294
|
+
overflow: hidden;
|
|
289
295
|
width: var(--cp-dimensions-4);
|
|
290
296
|
height: var(--cp-dimensions-4);
|
|
291
|
-
|
|
292
|
-
color: var(--cp-foreground-primary);
|
|
293
|
-
display: flex;
|
|
294
|
-
align-items: center;
|
|
295
297
|
flex-shrink: 0;
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
position: absolute;
|
|
299
|
-
top: 50%;
|
|
298
|
+
align-items: center;
|
|
299
|
+
color: var(--cp-foreground-primary);
|
|
300
300
|
transform: translateY(-50%);
|
|
301
|
-
overflow: hidden;
|
|
302
301
|
|
|
303
302
|
&:hover ~ .cpInput__inner {
|
|
304
303
|
box-shadow: 0 0 0 var(--cp-dimensions-0_25) var(--cp-foreground-accent-primary);
|
|
@@ -316,8 +315,8 @@ onMounted(async () => {
|
|
|
316
315
|
}
|
|
317
316
|
|
|
318
317
|
&--isAfter {
|
|
319
|
-
left: auto;
|
|
320
318
|
right: var(--cp-dimensions-3_5);
|
|
319
|
+
left: auto;
|
|
321
320
|
}
|
|
322
321
|
|
|
323
322
|
&--isBefore ~ input {
|
|
@@ -331,15 +330,15 @@ onMounted(async () => {
|
|
|
331
330
|
|
|
332
331
|
&--lg {
|
|
333
332
|
.cpInput__inner {
|
|
334
|
-
border-radius: var(--cp-radius-lg);
|
|
335
333
|
padding: var(--cp-spacing-lg) var(--cp-spacing-xl);
|
|
334
|
+
border-radius: var(--cp-radius-lg);
|
|
336
335
|
font-size: var(--cp-text-size-md);
|
|
337
336
|
}
|
|
338
337
|
|
|
339
338
|
.cpInput__icon {
|
|
339
|
+
left: var(--cp-spacing-lg);
|
|
340
340
|
width: var(--cp-dimensions-5);
|
|
341
341
|
height: var(--cp-dimensions-5);
|
|
342
|
-
left: var(--cp-spacing-lg);
|
|
343
342
|
}
|
|
344
343
|
|
|
345
344
|
.cpInput__icon--isBefore,
|
|
@@ -348,8 +347,8 @@ onMounted(async () => {
|
|
|
348
347
|
}
|
|
349
348
|
|
|
350
349
|
.cpInput__icon--isAfter {
|
|
351
|
-
left: auto;
|
|
352
350
|
right: var(--cp-spacing-lg);
|
|
351
|
+
left: auto;
|
|
353
352
|
}
|
|
354
353
|
|
|
355
354
|
.cpInput__icon--isAfter ~ input {
|
|
@@ -363,8 +362,8 @@ onMounted(async () => {
|
|
|
363
362
|
|
|
364
363
|
&--sm {
|
|
365
364
|
.cpInput__inner {
|
|
366
|
-
border-radius: var(--cp-radius-md);
|
|
367
365
|
padding: var(--cp-spacing-sm) var(--cp-spacing-lg);
|
|
366
|
+
border-radius: var(--cp-radius-md);
|
|
368
367
|
font-size: var(--cp-text-size-sm);
|
|
369
368
|
}
|
|
370
369
|
|
|
@@ -378,8 +377,8 @@ onMounted(async () => {
|
|
|
378
377
|
}
|
|
379
378
|
|
|
380
379
|
.cpInput__icon--isAfter {
|
|
381
|
-
left: auto;
|
|
382
380
|
right: var(--cp-dimensions-2_5);
|
|
381
|
+
left: auto;
|
|
383
382
|
}
|
|
384
383
|
|
|
385
384
|
.cpInput__icon--isBefore ~ input {
|
|
@@ -400,23 +399,23 @@ onMounted(async () => {
|
|
|
400
399
|
|
|
401
400
|
&--isSearch {
|
|
402
401
|
.cpInput__icon--isAfter {
|
|
402
|
+
overflow: visible;
|
|
403
403
|
width: auto;
|
|
404
404
|
height: auto;
|
|
405
|
-
overflow: visible;
|
|
406
405
|
}
|
|
407
406
|
|
|
408
407
|
.cpInput__clear {
|
|
409
408
|
display: flex;
|
|
410
|
-
color: var(--cp-foreground-secondary);
|
|
411
|
-
padding: var(--cp-spacing-sm);
|
|
412
409
|
width: var(--cp-dimensions-6);
|
|
413
410
|
height: var(--cp-dimensions-6);
|
|
411
|
+
padding: var(--cp-spacing-sm);
|
|
414
412
|
border-radius: var(--cp-radius-full);
|
|
415
413
|
background-color: transparent;
|
|
414
|
+
color: var(--cp-foreground-secondary);
|
|
416
415
|
|
|
417
416
|
&:hover {
|
|
418
|
-
color: var(--cp-foreground-secondary-hover);
|
|
419
417
|
background-color: var(--cp-background-primary-hover);
|
|
418
|
+
color: var(--cp-foreground-secondary-hover);
|
|
420
419
|
}
|
|
421
420
|
|
|
422
421
|
&:focus-visible {
|
|
@@ -428,7 +427,6 @@ onMounted(async () => {
|
|
|
428
427
|
.cpInput__clearIcon {
|
|
429
428
|
width: var(--cp-dimensions-4);
|
|
430
429
|
height: var(--cp-dimensions-4);
|
|
431
|
-
|
|
432
430
|
pointer-events: none;
|
|
433
431
|
}
|
|
434
432
|
|