@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.
Files changed (159) hide show
  1. package/biome.json +178 -0
  2. package/dist/components/BaseInputLabel.vue.d.ts.map +1 -1
  3. package/dist/components/BaseSelectClearButton.vue.d.ts.map +1 -1
  4. package/dist/components/CpAccordion.vue.d.ts.map +1 -1
  5. package/dist/components/CpAlert.vue.d.ts.map +1 -1
  6. package/dist/components/CpBadge.vue.d.ts.map +1 -1
  7. package/dist/components/CpButton.vue.d.ts.map +1 -1
  8. package/dist/components/CpButtonToggle.vue.d.ts +1 -1
  9. package/dist/components/CpButtonToggle.vue.d.ts.map +1 -1
  10. package/dist/components/CpCalendar.vue.d.ts.map +1 -1
  11. package/dist/components/CpCheckbox.vue.d.ts.map +1 -1
  12. package/dist/components/CpContextualMenu.vue.d.ts.map +1 -1
  13. package/dist/components/CpDate.vue.d.ts.map +1 -1
  14. package/dist/components/CpDatepicker.vue.d.ts.map +1 -1
  15. package/dist/components/CpInput.vue.d.ts.map +1 -1
  16. package/dist/components/CpItemActions.vue.d.ts +2 -0
  17. package/dist/components/CpItemActions.vue.d.ts.map +1 -1
  18. package/dist/components/CpMenu.vue.d.ts.map +1 -1
  19. package/dist/components/CpMenuItem.vue.d.ts.map +1 -1
  20. package/dist/components/CpMultiselect.vue.d.ts.map +1 -1
  21. package/dist/components/CpRadio.vue.d.ts.map +1 -1
  22. package/dist/components/CpRadioGroup.vue.d.ts.map +1 -1
  23. package/dist/components/CpRadioNew.vue.d.ts.map +1 -1
  24. package/dist/components/CpSelect.vue.d.ts.map +1 -1
  25. package/dist/components/CpSelectMenu.vue.d.ts.map +1 -1
  26. package/dist/components/CpSelectableButton.vue.d.ts +1 -1
  27. package/dist/components/CpSelectableButton.vue.d.ts.map +1 -1
  28. package/dist/components/CpSwitch.vue.d.ts.map +1 -1
  29. package/dist/components/CpTable.vue.d.ts.map +1 -1
  30. package/dist/components/CpTelInput.vue.d.ts.map +1 -1
  31. package/dist/components/CpTooltip.vue.d.ts +2 -0
  32. package/dist/components/CpTooltip.vue.d.ts.map +1 -1
  33. package/dist/components/CpTrip.vue.d.ts +48 -0
  34. package/dist/components/CpTrip.vue.d.ts.map +1 -0
  35. package/dist/components/CpTripTimeline.vue.d.ts +24 -0
  36. package/dist/components/CpTripTimeline.vue.d.ts.map +1 -0
  37. package/dist/components/index.d.ts +2 -1
  38. package/dist/components/index.d.ts.map +1 -1
  39. package/dist/composables/useDynamicSize.d.ts +9 -0
  40. package/dist/composables/useDynamicSize.d.ts.map +1 -0
  41. package/dist/constants/index.d.ts +2 -2
  42. package/dist/constants/index.d.ts.map +1 -1
  43. package/dist/constants/layout/Breakpoints.d.ts +9 -0
  44. package/dist/constants/layout/Breakpoints.d.ts.map +1 -0
  45. package/dist/constants/layout/Sizes.d.ts +2 -0
  46. package/dist/constants/layout/Sizes.d.ts.map +1 -0
  47. package/dist/constants/layout/index.d.ts +3 -0
  48. package/dist/constants/layout/index.d.ts.map +1 -0
  49. package/dist/helpers/functions.d.ts +1 -0
  50. package/dist/helpers/functions.d.ts.map +1 -1
  51. package/dist/libs/CoreDatepicker.vue.d.ts.map +1 -1
  52. package/dist/pimp.es.js +6797 -6461
  53. package/dist/pimp.umd.js +54 -54
  54. package/dist/style.css +1 -1
  55. package/package.json +14 -24
  56. package/src/assets/css/base.css +17 -11
  57. package/src/assets/css/colors.css +12 -22
  58. package/src/assets/css/dimensions.css +4 -0
  59. package/src/assets/css/shadows.css +0 -3
  60. package/src/assets/css/tokens.css +21 -65
  61. package/src/assets/css/typography.css +0 -17
  62. package/src/assets/main.css +7 -7
  63. package/src/assets/styles/helpers/_functions.scss +2 -2
  64. package/src/assets/styles/utilities/_index.scss +2 -3
  65. package/src/components/BaseInputLabel.vue +7 -11
  66. package/src/components/BaseSelectClearButton.vue +6 -7
  67. package/src/components/CpAccordion.vue +27 -28
  68. package/src/components/CpAccordionGroup.vue +2 -2
  69. package/src/components/CpAlert.vue +12 -11
  70. package/src/components/CpBadge.vue +4 -19
  71. package/src/components/CpButton.vue +23 -25
  72. package/src/components/CpButtonGroup.vue +2 -2
  73. package/src/components/CpButtonToggle.vue +22 -22
  74. package/src/components/CpCalendar.vue +30 -26
  75. package/src/components/CpCheckbox.vue +29 -33
  76. package/src/components/CpContextualMenu.vue +1 -2
  77. package/src/components/CpDate.vue +72 -76
  78. package/src/components/CpDatepicker.vue +2 -3
  79. package/src/components/CpDialog.vue +8 -8
  80. package/src/components/CpHeading.vue +6 -6
  81. package/src/components/CpIcon.vue +2 -2
  82. package/src/components/CpInput.vue +46 -48
  83. package/src/components/CpItemActions.vue +17 -16
  84. package/src/components/CpMenu.vue +8 -9
  85. package/src/components/CpMenuItem.vue +7 -7
  86. package/src/components/CpMenuList.vue +3 -3
  87. package/src/components/CpMultiselect.vue +29 -30
  88. package/src/components/CpRadio.vue +53 -59
  89. package/src/components/CpRadioGroup.vue +11 -12
  90. package/src/components/CpRadioNew.vue +56 -58
  91. package/src/components/CpSelect.vue +42 -42
  92. package/src/components/CpSelectMenu.vue +32 -32
  93. package/src/components/CpSelectableButton.vue +50 -51
  94. package/src/components/CpSwitch.vue +43 -44
  95. package/src/components/CpTable.vue +69 -81
  96. package/src/components/CpTableColumnEditor.vue +16 -16
  97. package/src/components/CpTableEmptyState.vue +4 -4
  98. package/src/components/CpTableFooter.vue +2 -2
  99. package/src/components/CpTableFooterDesktop.vue +2 -2
  100. package/src/components/CpTableFooterDetails.vue +2 -2
  101. package/src/components/CpTableFooterMobile.vue +4 -4
  102. package/src/components/CpTabs.vue +1 -1
  103. package/src/components/CpTelInput.vue +31 -32
  104. package/src/components/CpTextarea.vue +13 -13
  105. package/src/components/CpToast.vue +25 -24
  106. package/src/components/CpTooltip.vue +15 -13
  107. package/src/components/CpTransitionCounter.vue +1 -1
  108. package/src/components/CpTransitionExpand.vue +5 -5
  109. package/src/components/CpTransitionSize.vue +1 -1
  110. package/src/components/CpTrip.vue +190 -0
  111. package/src/components/CpTripTimeline.vue +272 -0
  112. package/src/components/index.ts +36 -34
  113. package/src/composables/useDynamicSize.ts +60 -0
  114. package/src/constants/index.ts +2 -2
  115. package/src/constants/layout/Breakpoints.ts +8 -0
  116. package/src/constants/layout/Sizes.ts +1 -0
  117. package/src/constants/layout/index.ts +3 -0
  118. package/src/directives/ClickOutside.ts +1 -1
  119. package/src/directives/ResizeSelect.ts +1 -1
  120. package/src/helpers/functions.ts +1 -1
  121. package/src/helpers/index.ts +1 -1
  122. package/src/libs/CoreDatepicker.vue +115 -134
  123. package/src/stories/Colors.stories.ts +2 -1
  124. package/src/stories/CpAccordion.stories.ts +2 -2
  125. package/src/stories/CpAccordionGroup.stories.ts +1 -2
  126. package/src/stories/CpButtonToggle.stories.ts +1 -2
  127. package/src/stories/CpCheckbox.stories.ts +1 -2
  128. package/src/stories/CpContextualMenu.stories.ts +1 -2
  129. package/src/stories/CpDate.stories.ts +1 -2
  130. package/src/stories/CpDatepicker.stories.ts +1 -2
  131. package/src/stories/CpDialog.stories.ts +1 -2
  132. package/src/stories/CpInput.stories.ts +1 -2
  133. package/src/stories/CpItemActions.stories.ts +10 -5
  134. package/src/stories/CpMenu.stories.ts +1 -2
  135. package/src/stories/CpMenuItem.stories.ts +1 -2
  136. package/src/stories/CpMultiselect.stories.ts +1 -2
  137. package/src/stories/CpRadio.stories.ts +1 -2
  138. package/src/stories/CpRadioGroup.stories.ts +1 -2
  139. package/src/stories/CpSelect.stories.ts +1 -2
  140. package/src/stories/CpSelectMenu.stories.ts +1 -2
  141. package/src/stories/CpSwitch.stories.ts +1 -2
  142. package/src/stories/CpTable.stories.ts +2 -3
  143. package/src/stories/CpTabs.stories.ts +1 -2
  144. package/src/stories/CpText.stories.ts +2 -1
  145. package/src/stories/CpTextarea.stories.ts +1 -2
  146. package/src/stories/CpToast.stories.ts +2 -3
  147. package/src/stories/CpTransitionCounter.stories.ts +1 -2
  148. package/src/stories/CpTransitionExpand.stories.ts +1 -2
  149. package/src/stories/CpTransitionListItems.stories.ts +1 -2
  150. package/src/stories/CpTransitionSize.stories.ts +1 -2
  151. package/src/stories/CpTransitionSlide.stories.ts +1 -2
  152. package/src/stories/CpTransitionTabContent.stories.ts +1 -2
  153. package/src/stories/CpTrip.stories.ts +323 -0
  154. package/src/stories/Dimensions.stories.ts +1 -0
  155. package/src/stories/Shadows.stories.ts +1 -0
  156. package/src/stories/Typography.stories.ts +1 -0
  157. package/src/vendors/ff-polyfill.ts +1 -1
  158. package/vitest.workspace.js +1 -1
  159. package/src/components/Pimp.vue +0 -10
@@ -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
- CpToast,
153
- CpButtonToggle,
153
+ CpAirlineLogo,
154
+ CpAlert,
154
155
  CpBadge,
155
- CpTabs,
156
- CpHeading,
157
156
  CpButton,
158
157
  CpButtonGroup,
159
- CpDialog,
160
- CpDate,
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
- CpRadioNew,
169
- CpCalendar,
170
- CpAlert,
171
- CpLoader,
165
+ CpDialog,
166
+ CpHeading,
167
+ CpIcon,
172
168
  CpInput,
173
- CpText,
174
- CpTextarea,
175
- CpSelect,
176
- CpSelectMenu,
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
- CpIcon,
184
+ CpTabs,
186
185
  CpTelInput,
186
+ CpText,
187
+ CpTextarea,
188
+ CpToast,
187
189
  CpTooltip,
188
- CpAirlineLogo,
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
+ }
@@ -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,8 @@
1
+ export enum Breakpoints {
2
+ SMALL_MOBILE = 370,
3
+ MOBILE = 552,
4
+ TABLET = 768,
5
+ LARGE_TABLET = 968,
6
+ DESKTOP = 1024,
7
+ LARGE = 1440,
8
+ }
@@ -0,0 +1 @@
1
+ export type Sizes = 'xs' | 'sm' | 'md' | 'lg' | 'xl'
@@ -0,0 +1,3 @@
1
+ export type { Sizes } from './Sizes'
2
+
3
+ export { Breakpoints } from './Breakpoints'
@@ -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 = function (event: MouseEvent) {
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 + 'px'
13
+ el.style.width = `${select.offsetWidth}px`
14
14
  select.parentNode?.removeChild(select)
15
15
  }
@@ -1,4 +1,4 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
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,
@@ -17,7 +17,7 @@ export const formatDates = ({
17
17
  formattedDates = DateTime.fromISO(dateOne).toFormat(format, { locale })
18
18
  }
19
19
  if (dateTwo) {
20
- formattedDates += ' - ' + DateTime.fromISO(dateTwo).toFormat(format, { locale })
20
+ formattedDates += ` - ${DateTime.fromISO(dateTwo).toFormat(format, { locale })}`
21
21
  }
22
22
 
23
23
  return formattedDates