@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
package/src/components/index.ts
CHANGED
|
@@ -8,11 +8,10 @@ import { vTooltip } from 'floating-vue'
|
|
|
8
8
|
import { vMaska } from 'maska/vue'
|
|
9
9
|
import PrimeVue from 'primevue/config'
|
|
10
10
|
import ToastService from 'primevue/toastservice'
|
|
11
|
+
import type { App, Plugin } from 'vue'
|
|
11
12
|
import { BindOnceDirective } from 'vue-bind-once'
|
|
12
13
|
import VueTelInput from 'vue-tel-input'
|
|
13
14
|
|
|
14
|
-
import type { App, Plugin } from 'vue'
|
|
15
|
-
|
|
16
15
|
import ClickOutside from '../directives/ClickOutside'
|
|
17
16
|
import CpCoreDatepicker from '../libs/CoreDatepicker.vue'
|
|
18
17
|
import CpAccordion from './CpAccordion.vue'
|
|
@@ -60,6 +59,7 @@ import CpTransitionListItems from './CpTransitionListItems.vue'
|
|
|
60
59
|
import CpTransitionSize from './CpTransitionSize.vue'
|
|
61
60
|
import CpTransitionSlide from './CpTransitionSlide.vue'
|
|
62
61
|
import CpTransitionTabContent from './CpTransitionTabContent.vue'
|
|
62
|
+
import CpTrip from './CpTrip.vue'
|
|
63
63
|
import IconAirline from './icons/IconAirline.vue'
|
|
64
64
|
import IconCheckList from './icons/IconCheckList.vue'
|
|
65
65
|
import IconCollapse from './icons/IconCollapse.vue'
|
|
@@ -126,6 +126,7 @@ const Components = {
|
|
|
126
126
|
CpTransitionListItems,
|
|
127
127
|
CpTransitionSlide,
|
|
128
128
|
CpTransitionTabContent,
|
|
129
|
+
CpTrip,
|
|
129
130
|
}
|
|
130
131
|
|
|
131
132
|
const Pimp: Plugin = {
|
|
@@ -149,59 +150,60 @@ const Pimp: Plugin = {
|
|
|
149
150
|
export {
|
|
150
151
|
CpAccordion,
|
|
151
152
|
CpAccordionGroup,
|
|
152
|
-
|
|
153
|
-
|
|
153
|
+
CpAirlineLogo,
|
|
154
|
+
CpAlert,
|
|
154
155
|
CpBadge,
|
|
155
|
-
CpTabs,
|
|
156
|
-
CpHeading,
|
|
157
156
|
CpButton,
|
|
158
157
|
CpButtonGroup,
|
|
159
|
-
|
|
160
|
-
|
|
158
|
+
CpButtonToggle,
|
|
159
|
+
CpCalendar,
|
|
160
|
+
CpCheckbox,
|
|
161
161
|
CpContextualMenu,
|
|
162
|
-
CpMenu,
|
|
163
|
-
CpMenuItem,
|
|
164
|
-
CpMenuList,
|
|
165
|
-
CpItemActions,
|
|
166
162
|
CpCoreDatepicker,
|
|
163
|
+
CpDate,
|
|
167
164
|
CpDatepicker,
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
CpLoader,
|
|
165
|
+
CpDialog,
|
|
166
|
+
CpHeading,
|
|
167
|
+
CpIcon,
|
|
172
168
|
CpInput,
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
169
|
+
CpItemActions,
|
|
170
|
+
CpLoader,
|
|
171
|
+
CpMenu,
|
|
172
|
+
CpMenuItem,
|
|
173
|
+
CpMenuList,
|
|
177
174
|
CpMultiselect,
|
|
178
|
-
CpCheckbox,
|
|
179
175
|
CpRadio,
|
|
180
176
|
CpRadioGroup,
|
|
177
|
+
CpRadioNew,
|
|
178
|
+
CpSelect,
|
|
181
179
|
CpSelectableButton,
|
|
180
|
+
CpSelectMenu,
|
|
182
181
|
CpSwitch,
|
|
183
182
|
CpTable,
|
|
184
183
|
CpTableColumnEditor,
|
|
185
|
-
|
|
184
|
+
CpTabs,
|
|
186
185
|
CpTelInput,
|
|
186
|
+
CpText,
|
|
187
|
+
CpTextarea,
|
|
188
|
+
CpToast,
|
|
187
189
|
CpTooltip,
|
|
188
|
-
|
|
189
|
-
IconAirline,
|
|
190
|
-
IconOta,
|
|
191
|
-
IconSupplier,
|
|
192
|
-
IconThirdParty,
|
|
193
|
-
IconTooltip,
|
|
194
|
-
IconGroupBy,
|
|
195
|
-
IconCollapse,
|
|
196
|
-
IconExpand,
|
|
197
|
-
IconCheckList,
|
|
190
|
+
CpTransitionCounter,
|
|
198
191
|
CpTransitionDialog,
|
|
199
192
|
CpTransitionExpand,
|
|
200
|
-
CpTransitionSize,
|
|
201
|
-
CpTransitionCounter,
|
|
202
193
|
CpTransitionListItems,
|
|
194
|
+
CpTransitionSize,
|
|
203
195
|
CpTransitionSlide,
|
|
204
196
|
CpTransitionTabContent,
|
|
197
|
+
CpTrip,
|
|
198
|
+
IconAirline,
|
|
199
|
+
IconCheckList,
|
|
200
|
+
IconCollapse,
|
|
201
|
+
IconExpand,
|
|
202
|
+
IconGroupBy,
|
|
203
|
+
IconOta,
|
|
204
|
+
IconSupplier,
|
|
205
|
+
IconThirdParty,
|
|
206
|
+
IconTooltip,
|
|
205
207
|
}
|
|
206
208
|
|
|
207
209
|
export default Pimp
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { useWindowSize } from '@vueuse/core'
|
|
2
|
+
import { computed, onMounted, ref } from 'vue'
|
|
3
|
+
|
|
4
|
+
import type { Sizes } from '@/constants/layout'
|
|
5
|
+
|
|
6
|
+
import { Breakpoints } from '@/constants/layout'
|
|
7
|
+
|
|
8
|
+
type SizeValue = Sizes | number
|
|
9
|
+
|
|
10
|
+
type BreakpointName = 'mobile' | 'tablet' | 'largeTablet' | 'desktop' | 'large'
|
|
11
|
+
|
|
12
|
+
const NAMED_BREAKPOINTS: Record<BreakpointName, number> = {
|
|
13
|
+
mobile: Breakpoints.MOBILE,
|
|
14
|
+
tablet: Breakpoints.TABLET,
|
|
15
|
+
largeTablet: Breakpoints.LARGE_TABLET,
|
|
16
|
+
desktop: Breakpoints.DESKTOP,
|
|
17
|
+
large: Breakpoints.LARGE,
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export type DynamicSizeConfig = {
|
|
21
|
+
default: SizeValue
|
|
22
|
+
} & Partial<Record<number | BreakpointName, SizeValue>>
|
|
23
|
+
|
|
24
|
+
const resolveThreshold = (key: string): number => {
|
|
25
|
+
if (key in NAMED_BREAKPOINTS) {
|
|
26
|
+
return NAMED_BREAKPOINTS[key as BreakpointName]
|
|
27
|
+
}
|
|
28
|
+
return Number(key)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const resolveSize = (width: number, config: DynamicSizeConfig): SizeValue => {
|
|
32
|
+
const { default: defaultValue, ...breakpoints } = config
|
|
33
|
+
|
|
34
|
+
let match: SizeValue | undefined
|
|
35
|
+
let matchThreshold = -1
|
|
36
|
+
|
|
37
|
+
for (const [key, value] of Object.entries(breakpoints)) {
|
|
38
|
+
const threshold = resolveThreshold(key)
|
|
39
|
+
if (width <= threshold && threshold > matchThreshold) {
|
|
40
|
+
match = value
|
|
41
|
+
matchThreshold = threshold
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return match ?? defaultValue
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export const useDynamicSize = (config: DynamicSizeConfig) => {
|
|
49
|
+
if (import.meta.env.SSR) return config.default
|
|
50
|
+
|
|
51
|
+
const isMounted = ref(false)
|
|
52
|
+
onMounted(() => (isMounted.value = true))
|
|
53
|
+
|
|
54
|
+
const { width: windowWidth } = useWindowSize()
|
|
55
|
+
|
|
56
|
+
return computed(() => {
|
|
57
|
+
if (!isMounted.value) return config.default
|
|
58
|
+
return resolveSize(windowWidth.value, config)
|
|
59
|
+
})
|
|
60
|
+
}
|
package/src/constants/index.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export type { Colors } from './colors/Colors'
|
|
2
|
-
export { Position } from './Position'
|
|
3
2
|
export type { ToggleColors } from './colors/ToggleColors'
|
|
4
|
-
export { RESERVED_KEYS, VISIBLE_ROWS_MAX } from './CpTableConfig'
|
|
5
3
|
export type { Sizes } from './Sizes'
|
|
6
4
|
|
|
7
5
|
export { CustomCpIcons } from './CpCustomIcons'
|
|
6
|
+
export { RESERVED_KEYS, VISIBLE_ROWS_MAX } from './CpTableConfig'
|
|
8
7
|
export { Intent } from './Intent'
|
|
8
|
+
export { Position } from './Position'
|
|
9
9
|
|
|
10
10
|
export const HUMAN_MAX_AGE = 120
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type Sizes = 'xs' | 'sm' | 'md' | 'lg' | 'xl'
|
|
@@ -4,7 +4,7 @@ type ClickOutsideBinding = {
|
|
|
4
4
|
|
|
5
5
|
export default {
|
|
6
6
|
beforeMount(el: HTMLElement & { clickOutsideEvent?: (e: MouseEvent) => void }, binding: ClickOutsideBinding) {
|
|
7
|
-
el.clickOutsideEvent =
|
|
7
|
+
el.clickOutsideEvent = (event: MouseEvent) => {
|
|
8
8
|
if (!(el === event.target || el.contains(event.target as Node))) {
|
|
9
9
|
binding.value(event, el)
|
|
10
10
|
}
|
|
@@ -10,6 +10,6 @@ function resizeSelect(el: HTMLSelectElement) {
|
|
|
10
10
|
option.textContent = el.value
|
|
11
11
|
select.appendChild(option)
|
|
12
12
|
el.parentNode?.appendChild(select)
|
|
13
|
-
el.style.width = select.offsetWidth
|
|
13
|
+
el.style.width = `${select.offsetWidth}px`
|
|
14
14
|
select.parentNode?.removeChild(select)
|
|
15
15
|
}
|
package/src/helpers/functions.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
/** biome-ignore-all lint/suspicious/noExplicitAny: generic debounce helper */
|
|
2
2
|
// https://decipher.dev/30-seconds-of-typescript/docs/debounce/
|
|
3
3
|
export function debounce<T extends (...args: any[]) => any>(
|
|
4
4
|
fn: T,
|
package/src/helpers/index.ts
CHANGED
|
@@ -17,7 +17,7 @@ export const formatDates = ({
|
|
|
17
17
|
formattedDates = DateTime.fromISO(dateOne).toFormat(format, { locale })
|
|
18
18
|
}
|
|
19
19
|
if (dateTwo) {
|
|
20
|
-
formattedDates +=
|
|
20
|
+
formattedDates += ` - ${DateTime.fromISO(dateTwo).toFormat(format, { locale })}`
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
return formattedDates
|