@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
|
@@ -29,15 +29,13 @@
|
|
|
29
29
|
</template>
|
|
30
30
|
|
|
31
31
|
<script setup lang="ts">
|
|
32
|
+
import type { Slots } from 'vue'
|
|
32
33
|
import { computed, useSlots } from 'vue'
|
|
33
34
|
import { useWebHaptics } from 'web-haptics/vue'
|
|
34
35
|
|
|
35
|
-
import type { Slots } from 'vue'
|
|
36
|
-
|
|
37
|
-
import { Haptics } from '@/constants/Hapitcs'
|
|
38
|
-
|
|
39
36
|
import CpLoader from '@/components/CpLoader.vue'
|
|
40
37
|
|
|
38
|
+
import { Haptics } from '@/constants/Hapitcs'
|
|
41
39
|
import { capitalizeFirstLetter } from '@/helpers'
|
|
42
40
|
|
|
43
41
|
export interface Props {
|
|
@@ -110,8 +108,8 @@ const handleClick = (event: MouseEvent) => {
|
|
|
110
108
|
&--isPrimary#{&}--is#{$className} {
|
|
111
109
|
&:not(:disabled) {
|
|
112
110
|
background-color: $backgroundColor;
|
|
113
|
-
color: $color;
|
|
114
111
|
box-shadow: var(--cp-shadows-3xs);
|
|
112
|
+
color: $color;
|
|
115
113
|
|
|
116
114
|
&:hover {
|
|
117
115
|
background-color: $hoverBackgroundColor;
|
|
@@ -131,10 +129,10 @@ const handleClick = (event: MouseEvent) => {
|
|
|
131
129
|
&--isSecondary#{&}--is#{$className} {
|
|
132
130
|
&:not(:disabled) {
|
|
133
131
|
background-color: var(--cp-background-primary);
|
|
134
|
-
color: $color;
|
|
135
132
|
box-shadow:
|
|
136
133
|
var(--cp-shadows-3xs-inset),
|
|
137
134
|
0 0 0 var(--cp-dimensions-0_25) var(--cp-border-soft);
|
|
135
|
+
color: $color;
|
|
138
136
|
|
|
139
137
|
&:hover {
|
|
140
138
|
background-color: var(--cp-background-primary-hover);
|
|
@@ -175,27 +173,27 @@ const handleClick = (event: MouseEvent) => {
|
|
|
175
173
|
}
|
|
176
174
|
|
|
177
175
|
.cpButton {
|
|
178
|
-
border-radius: var(--cp-radius-full);
|
|
179
176
|
padding: var(--cp-spacing-md) var(--cp-spacing-lg);
|
|
177
|
+
border-radius: var(--cp-radius-full);
|
|
178
|
+
cursor: pointer;
|
|
179
|
+
font-weight: 500;
|
|
180
180
|
line-height: var(--cp-line-height-md);
|
|
181
|
+
outline-offset: fn.px-to-rem(2);
|
|
181
182
|
text-decoration: none;
|
|
182
|
-
font-weight: 500;
|
|
183
|
-
transition-property: box-shadow, background-color, transform, width;
|
|
184
183
|
transition-duration: 150ms;
|
|
184
|
+
transition-property: box-shadow, background-color, transform, width;
|
|
185
185
|
transition-timing-function: ease;
|
|
186
|
-
outline-offset: fn.px-to-rem(2);
|
|
187
|
-
cursor: pointer;
|
|
188
|
-
|
|
189
|
-
&,
|
|
190
|
-
&:visited {
|
|
191
|
-
color: var(--cp-text-primary);
|
|
192
|
-
}
|
|
193
186
|
|
|
194
187
|
&,
|
|
195
188
|
&__body {
|
|
196
189
|
display: inline-flex;
|
|
197
|
-
justify-content: center;
|
|
198
190
|
align-items: center;
|
|
191
|
+
justify-content: center;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
&,
|
|
195
|
+
&:visited {
|
|
196
|
+
color: var(--cp-text-primary);
|
|
199
197
|
}
|
|
200
198
|
|
|
201
199
|
&:hover {
|
|
@@ -278,8 +276,8 @@ const handleClick = (event: MouseEvent) => {
|
|
|
278
276
|
);
|
|
279
277
|
|
|
280
278
|
&--isDisabled {
|
|
281
|
-
box-shadow: none;
|
|
282
279
|
background-color: var(--cp-background-disabled);
|
|
280
|
+
box-shadow: none;
|
|
283
281
|
color: var(--cp-text-disabled);
|
|
284
282
|
user-select: none;
|
|
285
283
|
|
|
@@ -291,10 +289,10 @@ const handleClick = (event: MouseEvent) => {
|
|
|
291
289
|
}
|
|
292
290
|
|
|
293
291
|
&__body {
|
|
292
|
+
position: relative;
|
|
294
293
|
display: flex;
|
|
295
294
|
align-items: center;
|
|
296
295
|
gap: var(--cp-spacing-sm-md);
|
|
297
|
-
position: relative;
|
|
298
296
|
text-align: center;
|
|
299
297
|
transition: padding-left 250ms var(--cp-easing-elastic);
|
|
300
298
|
}
|
|
@@ -329,8 +327,8 @@ const handleClick = (event: MouseEvent) => {
|
|
|
329
327
|
@include mx.square-sizing(24);
|
|
330
328
|
|
|
331
329
|
position: absolute;
|
|
332
|
-
left: 0;
|
|
333
330
|
top: 50%;
|
|
331
|
+
left: 0;
|
|
334
332
|
transform: translateY(-50%);
|
|
335
333
|
}
|
|
336
334
|
|
|
@@ -368,8 +366,8 @@ const handleClick = (event: MouseEvent) => {
|
|
|
368
366
|
}
|
|
369
367
|
|
|
370
368
|
&--2xs {
|
|
371
|
-
font-size: var(--cp-text-size-xs);
|
|
372
369
|
padding: var(--cp-spacing-sm) var(--cp-spacing-md);
|
|
370
|
+
font-size: var(--cp-text-size-xs);
|
|
373
371
|
line-height: var(--cp-line-height-xs);
|
|
374
372
|
|
|
375
373
|
&.cpButton--isIcon {
|
|
@@ -378,8 +376,8 @@ const handleClick = (event: MouseEvent) => {
|
|
|
378
376
|
}
|
|
379
377
|
|
|
380
378
|
&--xs {
|
|
381
|
-
font-size: var(--cp-text-size-sm);
|
|
382
379
|
padding: var(--cp-spacing-sm) var(--cp-spacing-md);
|
|
380
|
+
font-size: var(--cp-text-size-sm);
|
|
383
381
|
line-height: var(--cp-line-height-sm);
|
|
384
382
|
|
|
385
383
|
&.cpButton--isIcon {
|
|
@@ -388,8 +386,8 @@ const handleClick = (event: MouseEvent) => {
|
|
|
388
386
|
}
|
|
389
387
|
|
|
390
388
|
&--sm {
|
|
391
|
-
font-size: var(--cp-text-size-sm);
|
|
392
389
|
padding: var(--cp-spacing-sm-md) var(--cp-spacing-md);
|
|
390
|
+
font-size: var(--cp-text-size-sm);
|
|
393
391
|
line-height: var(--cp-line-height-sm);
|
|
394
392
|
|
|
395
393
|
&.cpButton--isIcon {
|
|
@@ -398,8 +396,8 @@ const handleClick = (event: MouseEvent) => {
|
|
|
398
396
|
}
|
|
399
397
|
|
|
400
398
|
&--md {
|
|
401
|
-
font-size: var(--cp-text-size-md);
|
|
402
399
|
padding: var(--cp-spacing-md) var(--cp-spacing-lg);
|
|
400
|
+
font-size: var(--cp-text-size-md);
|
|
403
401
|
line-height: var(--cp-line-height-md);
|
|
404
402
|
|
|
405
403
|
&.cpButton--isIcon {
|
|
@@ -408,8 +406,8 @@ const handleClick = (event: MouseEvent) => {
|
|
|
408
406
|
}
|
|
409
407
|
|
|
410
408
|
&--lg {
|
|
411
|
-
font-size: var(--cp-text-size-md);
|
|
412
409
|
padding: var(--cp-spacing-lg) var(--cp-spacing-xl);
|
|
410
|
+
font-size: var(--cp-text-size-md);
|
|
413
411
|
line-height: var(--cp-line-height-md);
|
|
414
412
|
|
|
415
413
|
&.cpButton--isIcon {
|
|
@@ -43,13 +43,13 @@ const dynamicClasses = computed(() => `cpButtonGroup--${props.size}`)
|
|
|
43
43
|
position: relative;
|
|
44
44
|
|
|
45
45
|
&:not(:first-child, :only-child)::before {
|
|
46
|
-
content: '';
|
|
47
46
|
position: absolute;
|
|
47
|
+
top: fn.px-to-rem(-1);
|
|
48
48
|
left: fn.px-to-rem(-1);
|
|
49
49
|
width: fn.px-to-rem(1);
|
|
50
50
|
height: calc(100% + fn.px-to-rem(2));
|
|
51
|
-
top: fn.px-to-rem(-1);
|
|
52
51
|
background-color: var(--cp-border-soft);
|
|
52
|
+
content: '';
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
}
|
|
@@ -60,39 +60,48 @@ const handleClick = (event: MouseEvent) => {
|
|
|
60
60
|
display: inline-flex;
|
|
61
61
|
align-items: center;
|
|
62
62
|
justify-content: center;
|
|
63
|
-
gap: var(--cp-spacing-md);
|
|
64
63
|
padding: var(--cp-spacing-lg);
|
|
65
64
|
border-radius: var(--cp-radius-md);
|
|
65
|
+
background-color: var(--cp-background-primary);
|
|
66
66
|
box-shadow:
|
|
67
67
|
var(--cp-shadows-3xs-inset),
|
|
68
68
|
0 0 0 var(--cp-dimensions-0_25) var(--cp-border-soft);
|
|
69
|
-
background-color: var(--cp-background-primary);
|
|
70
69
|
color: var(--cp-text-secondary);
|
|
70
|
+
gap: var(--cp-spacing-md);
|
|
71
71
|
transition:
|
|
72
72
|
background-color 100ms ease-out,
|
|
73
73
|
box-shadow 100ms ease-out,
|
|
74
74
|
color 100ms ease-out,
|
|
75
75
|
transform 100ms ease;
|
|
76
76
|
|
|
77
|
+
&:focus-visible {
|
|
78
|
+
box-shadow:
|
|
79
|
+
0 0 0 var(--cp-dimensions-0_25) var(--cp-border-soft-hover),
|
|
80
|
+
var(--cp-shadow-focus-ring-accent);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
&:disabled {
|
|
84
|
+
background-color: var(--cp-background-disabled);
|
|
85
|
+
box-shadow:
|
|
86
|
+
var(--cp-shadows-3xs-inset),
|
|
87
|
+
0 0 0 var(--cp-dimensions-0_25) var(--cp-border-disabled);
|
|
88
|
+
color: var(--cp-text-disabled);
|
|
89
|
+
cursor: not-allowed;
|
|
90
|
+
}
|
|
91
|
+
|
|
77
92
|
&:hover:not(:disabled) {
|
|
78
|
-
transform: translateY(fn.px-to-rem(-1));
|
|
79
93
|
background-color: var(--cp-background-primary-hover);
|
|
80
|
-
color: var(--cp-text-secondary-hover);
|
|
81
94
|
box-shadow:
|
|
82
95
|
var(--cp-shadows-3xs-inset),
|
|
83
96
|
0 0 0 var(--cp-dimensions-0_25) var(--cp-border-soft-hover);
|
|
97
|
+
color: var(--cp-text-secondary-hover);
|
|
98
|
+
transform: translateY(fn.px-to-rem(-1));
|
|
84
99
|
}
|
|
85
100
|
|
|
86
101
|
&:active:not(:disabled) {
|
|
87
102
|
transform: translateY(fn.px-to-rem(1));
|
|
88
103
|
}
|
|
89
104
|
|
|
90
|
-
&:focus-visible {
|
|
91
|
-
box-shadow:
|
|
92
|
-
0 0 0 var(--cp-dimensions-0_25) var(--cp-border-soft-hover),
|
|
93
|
-
var(--cp-shadow-focus-ring-accent);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
105
|
&__leading {
|
|
97
106
|
display: flex;
|
|
98
107
|
align-items: center;
|
|
@@ -100,8 +109,8 @@ const handleClick = (event: MouseEvent) => {
|
|
|
100
109
|
|
|
101
110
|
&__label {
|
|
102
111
|
font-size: var(--cp-text-size-sm);
|
|
103
|
-
line-height: var(--cp-line-height-sm);
|
|
104
112
|
font-weight: 500;
|
|
113
|
+
line-height: var(--cp-line-height-sm);
|
|
105
114
|
}
|
|
106
115
|
|
|
107
116
|
&__defaultLeading,
|
|
@@ -109,28 +118,19 @@ const handleClick = (event: MouseEvent) => {
|
|
|
109
118
|
pointer-events: none;
|
|
110
119
|
}
|
|
111
120
|
|
|
112
|
-
&:disabled {
|
|
113
|
-
cursor: not-allowed;
|
|
114
|
-
background-color: var(--cp-background-disabled);
|
|
115
|
-
color: var(--cp-text-disabled);
|
|
116
|
-
box-shadow:
|
|
117
|
-
var(--cp-shadows-3xs-inset),
|
|
118
|
-
0 0 0 var(--cp-dimensions-0_25) var(--cp-border-disabled);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
121
|
&--isSelected:not(:disabled) {
|
|
122
122
|
background-color: var(--cp-background-accent-secondary);
|
|
123
|
-
color: var(--cp-text-accent-primary);
|
|
124
123
|
box-shadow:
|
|
125
124
|
var(--cp-shadows-3xs-inset),
|
|
126
125
|
0 0 0 var(--cp-dimensions-0_25) var(--cp-border-accent-solid);
|
|
126
|
+
color: var(--cp-text-accent-primary);
|
|
127
127
|
|
|
128
128
|
&:hover {
|
|
129
129
|
background-color: var(--cp-background-accent-secondary-hover);
|
|
130
|
-
color: var(--cp-text-accent-primary-hover);
|
|
131
130
|
box-shadow:
|
|
132
131
|
var(--cp-shadows-3xs-inset),
|
|
133
132
|
0 0 0 var(--cp-dimensions-0_25) var(--cp-border-accent-solid);
|
|
133
|
+
color: var(--cp-text-accent-primary-hover);
|
|
134
134
|
}
|
|
135
135
|
|
|
136
136
|
&:focus-visible {
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
|
|
84
84
|
<script setup lang="ts">
|
|
85
85
|
import { DateTime, Info, Interval } from 'luxon'
|
|
86
|
-
import { ref,
|
|
86
|
+
import { computed, ref, useId, watch } from 'vue'
|
|
87
87
|
|
|
88
88
|
import CpButton from '@/components/CpButton.vue'
|
|
89
89
|
import CpIcon from '@/components/CpIcon.vue'
|
|
@@ -200,10 +200,12 @@ const removeRecurency = (): void => {
|
|
|
200
200
|
|
|
201
201
|
const emitToParent = (): void => {
|
|
202
202
|
let dates = [dateOne.value]
|
|
203
|
+
|
|
203
204
|
if (isDaysDisplayed.value) {
|
|
204
205
|
dates = recurenceDates.value.length ? datesToStringArray(recurenceDates.value) : []
|
|
205
206
|
}
|
|
206
|
-
|
|
207
|
+
|
|
208
|
+
emit('dates', dates)
|
|
207
209
|
}
|
|
208
210
|
|
|
209
211
|
const generateDates = (startDate: string, endDate: string, selectedWeekDaysIndex: number[]): string[] => {
|
|
@@ -238,7 +240,7 @@ const selectDate = (key: 'dateOne' | 'dateTwo', value: string): void => {
|
|
|
238
240
|
recurenceDates.value = generateDates(dateOne.value, dateTwo.value, selectedDays.value)
|
|
239
241
|
}
|
|
240
242
|
|
|
241
|
-
|
|
243
|
+
emitToParent()
|
|
242
244
|
}
|
|
243
245
|
|
|
244
246
|
const datesToStringArray = (dates: string[]): string[] => {
|
|
@@ -256,10 +258,12 @@ watch(isInline, (value) => {
|
|
|
256
258
|
.fade-leave-active {
|
|
257
259
|
transition: opacity 100ms;
|
|
258
260
|
}
|
|
261
|
+
|
|
259
262
|
.fade-enter-from,
|
|
260
263
|
.fade-leave-to {
|
|
261
264
|
opacity: 0;
|
|
262
265
|
}
|
|
266
|
+
|
|
263
267
|
.cpCalendar {
|
|
264
268
|
// Opening transition layout adaptation
|
|
265
269
|
.asd__fade-enter-from {
|
|
@@ -286,8 +290,8 @@ watch(isInline, (value) => {
|
|
|
286
290
|
|
|
287
291
|
@media (max-width: 767px) and (min-width: 350px) {
|
|
288
292
|
&__datepicker {
|
|
289
|
-
left: 0;
|
|
290
293
|
right: 0;
|
|
294
|
+
left: 0;
|
|
291
295
|
transform: initial;
|
|
292
296
|
}
|
|
293
297
|
|
|
@@ -310,18 +314,18 @@ watch(isInline, (value) => {
|
|
|
310
314
|
}
|
|
311
315
|
|
|
312
316
|
.footer-container {
|
|
313
|
-
background: var(--cp-background-white);
|
|
314
317
|
border-top: 1px solid var(--cp-border-soft);
|
|
318
|
+
background: var(--cp-background-white);
|
|
315
319
|
|
|
316
320
|
.asd__recurency--action {
|
|
317
|
-
padding: var(--cp-spacing-xl);
|
|
318
321
|
display: flex;
|
|
319
322
|
align-items: center;
|
|
320
323
|
justify-content: space-between;
|
|
324
|
+
padding: var(--cp-spacing-xl);
|
|
321
325
|
|
|
322
326
|
button {
|
|
323
|
-
font-size: var(--cp-text-size-md);
|
|
324
327
|
color: var(--cp-text-primary);
|
|
328
|
+
font-size: var(--cp-text-size-md);
|
|
325
329
|
}
|
|
326
330
|
}
|
|
327
331
|
|
|
@@ -329,19 +333,19 @@ watch(isInline, (value) => {
|
|
|
329
333
|
border: #b5b5b5;
|
|
330
334
|
|
|
331
335
|
&:not([disabled]) {
|
|
336
|
+
border: var(--cp-background-accent-solid);
|
|
332
337
|
background-color: var(--cp-background-accent-solid);
|
|
333
338
|
color: var(--cp-text-white) !important;
|
|
334
|
-
border: var(--cp-background-accent-solid);
|
|
335
339
|
}
|
|
336
340
|
}
|
|
337
341
|
|
|
338
342
|
.asd__recurency--ul {
|
|
339
|
-
margin: 0;
|
|
340
|
-
margin-top: -1px;
|
|
341
343
|
display: flex;
|
|
342
|
-
-webkit-padding-start: 0;
|
|
343
344
|
height: inherit;
|
|
345
|
+
margin: 0;
|
|
346
|
+
margin-top: -1px;
|
|
344
347
|
cursor: pointer;
|
|
348
|
+
-webkit-padding-start: 0;
|
|
345
349
|
|
|
346
350
|
@media (min-width: 768px) {
|
|
347
351
|
height: var(--cp-dimensions-16);
|
|
@@ -355,14 +359,14 @@ watch(isInline, (value) => {
|
|
|
355
359
|
|
|
356
360
|
.asd__recurency--li {
|
|
357
361
|
display: flex;
|
|
358
|
-
|
|
362
|
+
height: var(--cp-dimensions-16);
|
|
359
363
|
flex: 1;
|
|
360
|
-
|
|
364
|
+
flex-direction: column;
|
|
361
365
|
align-items: center;
|
|
366
|
+
justify-content: center;
|
|
362
367
|
border-top: 1px solid var(--cp-border-soft);
|
|
363
|
-
font-size: var(--cp-text-size-md);
|
|
364
368
|
color: var(--cp-text-primary);
|
|
365
|
-
|
|
369
|
+
font-size: var(--cp-text-size-md);
|
|
366
370
|
transition: background 200ms linear;
|
|
367
371
|
|
|
368
372
|
@media (max-width: 768px) {
|
|
@@ -375,21 +379,21 @@ watch(isInline, (value) => {
|
|
|
375
379
|
}
|
|
376
380
|
|
|
377
381
|
.checkbox--border {
|
|
378
|
-
height: 100%;
|
|
379
382
|
width: 100%;
|
|
383
|
+
height: 100%;
|
|
380
384
|
border: 1px solid var(--cp-border-soft);
|
|
381
385
|
}
|
|
382
386
|
|
|
383
387
|
.feather-check {
|
|
384
|
-
height: 100%;
|
|
385
388
|
width: 100%;
|
|
389
|
+
height: 100%;
|
|
386
390
|
color: var(--cp-text-accent-primary);
|
|
387
391
|
}
|
|
388
392
|
|
|
389
393
|
span {
|
|
394
|
+
padding-top: calc(var(--cp-dimensions-0_5) * 1.5);
|
|
390
395
|
font-size: var(--cp-text-size-sm);
|
|
391
396
|
line-height: var(--cp-line-height-sm);
|
|
392
|
-
padding-top: calc(var(--cp-dimensions-0_5) * 1.5);
|
|
393
397
|
user-select: none;
|
|
394
398
|
}
|
|
395
399
|
}
|
|
@@ -399,16 +403,16 @@ watch(isInline, (value) => {
|
|
|
399
403
|
}
|
|
400
404
|
|
|
401
405
|
.asd__recurency--summary {
|
|
402
|
-
padding-left: var(--cp-spacing-xl);
|
|
403
406
|
padding-right: var(--cp-spacing-xl);
|
|
407
|
+
padding-left: var(--cp-spacing-xl);
|
|
404
408
|
}
|
|
405
409
|
|
|
406
410
|
.asd__recurency--text {
|
|
407
|
-
background: var(--cp-text-primary);
|
|
408
|
-
border-radius: var(--cp-radius-md-lg);
|
|
409
411
|
display: flex;
|
|
410
|
-
justify-content: center;
|
|
411
412
|
align-items: center;
|
|
413
|
+
justify-content: center;
|
|
414
|
+
border-radius: var(--cp-radius-md-lg);
|
|
415
|
+
background: var(--cp-text-primary);
|
|
412
416
|
color: #d8d8ff;
|
|
413
417
|
|
|
414
418
|
svg {
|
|
@@ -416,14 +420,14 @@ watch(isInline, (value) => {
|
|
|
416
420
|
}
|
|
417
421
|
|
|
418
422
|
span {
|
|
419
|
-
white-space: normal;
|
|
420
423
|
padding: var(--cp-dimensions-2_5);
|
|
421
424
|
padding-left: var(--cp-dimensions-0_5);
|
|
422
425
|
font-size: var(--cp-text-size-sm);
|
|
426
|
+
white-space: normal;
|
|
427
|
+
}
|
|
423
428
|
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
}
|
|
429
|
+
span strong {
|
|
430
|
+
color: var(--cp-text-white);
|
|
427
431
|
}
|
|
428
432
|
}
|
|
429
433
|
}
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
</template>
|
|
29
29
|
|
|
30
30
|
<script setup lang="ts">
|
|
31
|
-
import { computed,
|
|
31
|
+
import { computed, nextTick, ref, useId, useSlots, watch } from 'vue'
|
|
32
32
|
|
|
33
33
|
import { ToggleColors } from '@/constants'
|
|
34
34
|
import { capitalizeFirstLetter } from '@/helpers'
|
|
@@ -135,19 +135,19 @@ const onChange = () => {
|
|
|
135
135
|
@mixin cp-checkbox-style($color, $bgHoverColor, $className) {
|
|
136
136
|
&--is#{$className} input:checked,
|
|
137
137
|
&--is#{$className} input:indeterminate {
|
|
138
|
-
background-color: $color;
|
|
139
138
|
border-color: $color;
|
|
139
|
+
background-color: $color;
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
&--is#{$className}:hover input {
|
|
143
|
-
background-color: var(--cp-background-primary-hover);
|
|
144
143
|
border-color: var(--cp-border-soft-hover);
|
|
144
|
+
background-color: var(--cp-background-primary-hover);
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
&--is#{$className}:hover input:checked,
|
|
148
148
|
&--is#{$className}:hover input:indeterminate {
|
|
149
|
-
background-color: $bgHoverColor;
|
|
150
149
|
border-color: $bgHoverColor;
|
|
150
|
+
background-color: $bgHoverColor;
|
|
151
151
|
}
|
|
152
152
|
|
|
153
153
|
&--is#{$className} input:focus-visible {
|
|
@@ -165,9 +165,7 @@ const onChange = () => {
|
|
|
165
165
|
cursor: pointer;
|
|
166
166
|
|
|
167
167
|
@include cp-checkbox-style(var(--cp-background-accent-solid), var(--cp-background-accent-solid-hover), 'Accent');
|
|
168
|
-
|
|
169
168
|
@include cp-checkbox-style(var(--cp-background-blue-solid), var(--cp-background-blue-solid-hover), 'Blue');
|
|
170
|
-
|
|
171
169
|
@include cp-checkbox-style(
|
|
172
170
|
var(--cp-background-accent-solid),
|
|
173
171
|
var(--cp-background-accent-solid-hover),
|
|
@@ -180,27 +178,25 @@ const onChange = () => {
|
|
|
180
178
|
|
|
181
179
|
&__wrapper {
|
|
182
180
|
display: flex;
|
|
181
|
+
flex-shrink: 0;
|
|
183
182
|
align-items: center;
|
|
184
183
|
justify-content: center;
|
|
185
184
|
padding: var(--cp-spacing-sm);
|
|
186
|
-
flex-shrink: 0;
|
|
187
185
|
}
|
|
188
186
|
|
|
189
187
|
input {
|
|
190
|
-
-webkit-appearance: none;
|
|
191
|
-
-moz-appearance: none;
|
|
192
|
-
appearance: none;
|
|
193
|
-
border: var(--cp-dimensions-0_25) solid var(--cp-border-soft);
|
|
194
|
-
border-radius: var(--cp-radius-sm);
|
|
195
188
|
width: var(--cp-dimensions-4);
|
|
196
189
|
height: var(--cp-dimensions-4);
|
|
197
190
|
flex-shrink: 0;
|
|
198
|
-
|
|
191
|
+
border: var(--cp-dimensions-0_25) solid var(--cp-border-soft);
|
|
192
|
+
border-radius: var(--cp-radius-sm);
|
|
193
|
+
appearance: none;
|
|
194
|
+
background-color: var(--cp-background-primary);
|
|
199
195
|
box-shadow: var(--cp-shadows-3xs);
|
|
196
|
+
cursor: pointer;
|
|
200
197
|
transition:
|
|
201
198
|
background-color 0.1s ease-out,
|
|
202
199
|
transform 0.1s linear;
|
|
203
|
-
background-color: var(--cp-background-primary);
|
|
204
200
|
|
|
205
201
|
& + i {
|
|
206
202
|
position: absolute;
|
|
@@ -218,14 +214,14 @@ const onChange = () => {
|
|
|
218
214
|
|
|
219
215
|
&:checked + i,
|
|
220
216
|
&:indeterminate + i {
|
|
221
|
-
visibility: visible;
|
|
222
217
|
opacity: 1;
|
|
218
|
+
visibility: visible;
|
|
223
219
|
}
|
|
224
220
|
|
|
225
221
|
&:disabled {
|
|
226
222
|
background-color: var(--cp-background-disabled);
|
|
227
|
-
cursor: not-allowed;
|
|
228
223
|
box-shadow: none;
|
|
224
|
+
cursor: not-allowed;
|
|
229
225
|
}
|
|
230
226
|
|
|
231
227
|
&:checked:disabled,
|
|
@@ -243,23 +239,6 @@ const onChange = () => {
|
|
|
243
239
|
}
|
|
244
240
|
}
|
|
245
241
|
|
|
246
|
-
&--isDisabled {
|
|
247
|
-
cursor: not-allowed;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
&--isDisabled &__label,
|
|
251
|
-
&--isDisabled &__helper {
|
|
252
|
-
color: var(--cp-text-disabled);
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
&--isReversed {
|
|
256
|
-
flex-direction: row-reverse;
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
&__content {
|
|
260
|
-
flex: 1;
|
|
261
|
-
}
|
|
262
|
-
|
|
263
242
|
&__label,
|
|
264
243
|
&__helper {
|
|
265
244
|
display: block;
|
|
@@ -277,5 +256,22 @@ const onChange = () => {
|
|
|
277
256
|
&__helper {
|
|
278
257
|
color: var(--cp-text-secondary);
|
|
279
258
|
}
|
|
259
|
+
|
|
260
|
+
&--isDisabled {
|
|
261
|
+
cursor: not-allowed;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
&--isDisabled &__label,
|
|
265
|
+
&--isDisabled &__helper {
|
|
266
|
+
color: var(--cp-text-disabled);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
&--isReversed {
|
|
270
|
+
flex-direction: row-reverse;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
&__content {
|
|
274
|
+
flex: 1;
|
|
275
|
+
}
|
|
280
276
|
}
|
|
281
277
|
</style>
|
|
@@ -13,9 +13,8 @@
|
|
|
13
13
|
|
|
14
14
|
<script setup lang="ts">
|
|
15
15
|
import ContextMenu from 'primevue/contextmenu'
|
|
16
|
-
import { ref } from 'vue'
|
|
17
|
-
|
|
18
16
|
import type { MenuItem } from 'primevue/menuitem'
|
|
17
|
+
import { ref } from 'vue'
|
|
19
18
|
|
|
20
19
|
import CpMenuItem from '@/components/CpMenuItem.vue'
|
|
21
20
|
|