design-system-next 2.11.22 → 2.12.3

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.
@@ -12,7 +12,7 @@ export const useChips = (
12
12
  emit: SetupContext<ChipsEmitTypes>['emit'],
13
13
  slots: Record<string, unknown>,
14
14
  ) => {
15
- const { disabled, active, variant, iconWeight, icon } = toRefs(props);
15
+ const { disabled, active, variant, iconWeight, icon, size, tone } = toRefs(props);
16
16
 
17
17
  const chipsBaseClasses: ComputedRef<string> = computed(() => {
18
18
  if (variant.value === 'day') {
@@ -38,11 +38,15 @@ export const useChips = (
38
38
  }
39
39
 
40
40
  return classNames(
41
- 'spr-body-xs-regular spr-py-1.5 spr-px-2 spr-text-color-strong spr-inline-flex spr-items-center spr-justify-center spr-gap-1 spr-rounded-full spr-transition-all spr-group',
41
+ 'spr-body-xs-regular spr-text-color-strong spr-inline-flex spr-items-center spr-justify-center spr-gap-1 spr-rounded-full spr-transition-all spr-group',
42
42
  {
43
43
  // Base cursor state
44
44
  'hover:spr-cursor-pointer': !disabled.value,
45
45
 
46
+ // Padding for sizes
47
+ 'spr-py-1.5 spr-px-2': size.value === 'md',
48
+ 'spr-py-0.5 spr-px-1.5': size.value === 'sm',
49
+
46
50
  // Disabled state (highest priority)
47
51
  'spr-cursor-not-allowed spr-text-color-on-fill-disabled spr-background-color-disabled spr-border-solid spr-border-[1px] spr-border-color-disabled':
48
52
  disabled.value,
@@ -52,8 +56,12 @@ export const useChips = (
52
56
  active.value && !disabled.value,
53
57
 
54
58
  // Default state (with hover/pressed)
55
- 'spr-background-color-surface spr-border spr-border-solid spr-border-color-weak group-hover:spr-background-color-hover group-active:spr-background-color-pressed':
59
+ 'spr-border spr-border-solid spr-border-color-weak group-hover:spr-background-color-hover group-active:spr-background-color-pressed':
56
60
  !active.value && !disabled.value,
61
+
62
+ // Default state bg color
63
+ 'spr-background-color-surface': !active.value && !disabled.value && tone.value === 'default',
64
+ 'spr-background-color': !active.value && !disabled.value && tone.value === 'subtle',
57
65
 
58
66
  // Reset close button styles
59
67
  '[&_.chips-close]:hover:spr-cursor-pointer [&_.chips-close]:spr-p-0 [&_.chips-close]:spr-m-0 [&_.chips-close]:spr-border-0 [&_.chips-close]:spr-bg-transparent [&_.chips-close]:spr-inline-flex [&_.chips-close]:spr-items-center [&_.chips-close]:spr-leading-[0]':
@@ -22,60 +22,66 @@
22
22
  <label v-if="props.label" :for="props.id" :class="datePickerClasses.labelClasses">
23
23
  {{ props.label }}
24
24
  </label>
25
- <div ref="datePickerRef" :class="datePickerClasses.datePickerBaseInputClasses" @click="datePopperState = true">
26
- <div class="spr-flex spr-h-full spr-items-center spr-gap-1.5">
27
- <input
28
- :id="`${props.id}-month`"
29
- ref="monthInputRef"
30
- v-model="monthInput"
31
- :class="['spr-w-[38px] spr-min-w-[38px]', datePickerClasses.datePickerInputClasses]"
32
- type="text"
33
- placeholder="MMM"
34
- maxlength="3"
35
- :disabled="props.disabled"
36
- :readonly="props.readonly"
37
- autocomplete="off"
38
- @input="handleMonthInput"
39
- @keyup="handleMonthInput"
40
- @keydown="handleBackspace('month', $event)"
41
- />
42
- <span class="spr-text-color-strong spr-font-size-200 spr-text-color-weak">/</span>
43
- <input
44
- :id="`${props.id}-date`"
45
- ref="dateInputRef"
46
- v-model="dateInput"
47
- :class="['spr-w-[24px] spr-min-w-[24px] spr-text-center', datePickerClasses.datePickerInputClasses]"
48
- type="text"
49
- placeholder="DD"
50
- maxlength="2"
51
- :disabled="props.disabled"
52
- :readonly="props.readonly"
53
- autocomplete="off"
54
- @input="handleDateInput"
55
- @keyup="handleDateInput"
56
- @keydown="handleBackspace('date', $event)"
57
- />
58
- <span class="spr-text-color-strong spr-font-size-200 spr-text-color-weak">/</span>
59
- <input
60
- :id="`${props.id}-year`"
61
- ref="yearInputRef"
62
- v-model="yearInput"
63
- :class="['spr-w-[42px] spr-min-w-[42px]', datePickerClasses.datePickerInputClasses]"
64
- type="text"
65
- placeholder="YYYY"
66
- maxlength="4"
67
- :disabled="props.disabled"
68
- :readonly="props.readonly"
69
- autocomplete="off"
70
- @input="handleYearInput"
71
- @keyup="handleYearInput"
72
- @keydown="handleBackspace('year', $event)"
73
- />
74
- </div>
75
- <div class="spr-flex spr-items-center spr-justify-center">
76
- <Icon class="spr-text-color-supporting spr-h-4 spr-w-4" icon="ph:calendar-blank" />
25
+ <slot :handle-click="handleSlotClick">
26
+ <div
27
+ ref="datePickerRef"
28
+ :class="datePickerClasses.datePickerBaseInputClasses"
29
+ @click="datePopperState = true"
30
+ >
31
+ <div class="spr-flex spr-h-full spr-items-center spr-gap-1.5">
32
+ <input
33
+ :id="`${props.id}-month`"
34
+ ref="monthInputRef"
35
+ v-model="monthInput"
36
+ :class="['spr-w-[38px] spr-min-w-[38px]', datePickerClasses.datePickerInputClasses]"
37
+ type="text"
38
+ placeholder="MMM"
39
+ maxlength="3"
40
+ :disabled="props.disabled"
41
+ :readonly="props.readonly"
42
+ autocomplete="off"
43
+ @input="handleMonthInput"
44
+ @keyup="handleMonthInput"
45
+ @keydown="handleBackspace('month', $event)"
46
+ />
47
+ <span class="spr-text-color-strong spr-font-size-200 spr-text-color-weak">/</span>
48
+ <input
49
+ :id="`${props.id}-date`"
50
+ ref="dateInputRef"
51
+ v-model="dateInput"
52
+ :class="['spr-w-[24px] spr-min-w-[24px] spr-text-center', datePickerClasses.datePickerInputClasses]"
53
+ type="text"
54
+ placeholder="DD"
55
+ maxlength="2"
56
+ :disabled="props.disabled"
57
+ :readonly="props.readonly"
58
+ autocomplete="off"
59
+ @input="handleDateInput"
60
+ @keyup="handleDateInput"
61
+ @keydown="handleBackspace('date', $event)"
62
+ />
63
+ <span class="spr-text-color-strong spr-font-size-200 spr-text-color-weak">/</span>
64
+ <input
65
+ :id="`${props.id}-year`"
66
+ ref="yearInputRef"
67
+ v-model="yearInput"
68
+ :class="['spr-w-[42px] spr-min-w-[42px]', datePickerClasses.datePickerInputClasses]"
69
+ type="text"
70
+ placeholder="YYYY"
71
+ maxlength="4"
72
+ :disabled="props.disabled"
73
+ :readonly="props.readonly"
74
+ autocomplete="off"
75
+ @input="handleYearInput"
76
+ @keyup="handleYearInput"
77
+ @keydown="handleBackspace('year', $event)"
78
+ />
79
+ </div>
80
+ <div class="spr-flex spr-items-center spr-justify-center">
81
+ <Icon class="spr-text-color-supporting spr-h-4 spr-w-4" icon="ph:calendar-blank" />
82
+ </div>
77
83
  </div>
78
- </div>
84
+ </slot>
79
85
  </div>
80
86
 
81
87
  <template #popper>
@@ -324,6 +330,7 @@ const {
324
330
  handleTabClick,
325
331
  handleBackspace,
326
332
  clearDate,
333
+ handleSlotClick
327
334
  } = useDatePicker(props, emit);
328
335
 
329
336
  defineExpose({
@@ -933,6 +933,11 @@ export const useDatePicker = (props: DatePickerPropTypes, emit: SetupContext<Dat
933
933
  yearInput.value = '';
934
934
  };
935
935
 
936
+ const handleSlotClick = () => {
937
+ if(disabled.value || readonly.value) return;
938
+ datePopperState.value = true;
939
+ };
940
+
936
941
  watch(datePopperState, (newValue) => {
937
942
  if (newValue === false) {
938
943
  setTimeout(() => {
@@ -1032,5 +1037,6 @@ export const useDatePicker = (props: DatePickerPropTypes, emit: SetupContext<Dat
1032
1037
  handleTabClick,
1033
1038
  handleBackspace,
1034
1039
  clearDate,
1040
+ handleSlotClick
1035
1041
  };
1036
1042
  };
@@ -3,7 +3,7 @@ import type { ChipTitle } from '@/components/table/table-chips-title/table-chips
3
3
  import type { LozengeTitle } from '@/components/table/table-lozenge-title/table-lozenge-title';
4
4
  export const definePropType = <T>(val: unknown): PropType<T> => val as PropType<T>;
5
5
 
6
- interface Header {
6
+ export interface Header {
7
7
  field: string;
8
8
  name: string;
9
9
  sort: boolean;
@@ -15,6 +15,7 @@ interface Header {
15
15
  badgeText: string;
16
16
  badgeVariant: string;
17
17
  avatarVariant: string;
18
+ customTailwindClasses?: string;
18
19
  }
19
20
 
20
21
  export interface TableData {
@@ -31,7 +31,7 @@
31
31
  />
32
32
  </div>
33
33
  </th>
34
- <th v-for="(header, keyHeader) in headers" :key="keyHeader" :class="[getTableClasses.headerClasses]">
34
+ <th v-for="(header, keyHeader) in headers" :key="keyHeader" :class="[getTableClasses.headerClasses(header)]">
35
35
  <div :class="getTableClasses.headerNameClass">
36
36
  <span :class="[{ 'spr-cursor-pointer': header.sort }]" @click="header.sort && sortData(header.field)">
37
37
  {{ header.name }}
@@ -1,6 +1,6 @@
1
1
  import { ref, computed, toRefs, Slots, watch } from 'vue';
2
2
 
3
- import type { TablePropTypes, TableEmitTypes, TABLE_SORT, TableData, TableDataProps } from './table';
3
+ import type { TablePropTypes, TableEmitTypes, TABLE_SORT, TableData, TableDataProps, Header } from './table';
4
4
  import type { SetupContext } from 'vue';
5
5
 
6
6
  import classNames from 'classnames';
@@ -96,15 +96,20 @@ export const useTable = (props: TablePropTypes, emit: SetupContext<TableEmitType
96
96
  'spr-background-color': props.variant === 'white',
97
97
  'spr-background-color-surface': props.variant === 'surface',
98
98
  });
99
- const headerClasses = classNames(
100
- 'spr-min-h-12 spr-px-size-spacing-2xs spr-py-size-spacing-3xs',
101
- 'spr-text-color-strong spr-font-size-100 spr-font-line-height-100 spr-font-letter-spacing-normal spr-text-start spr-font-medium spr-uppercase',
102
- 'spr-border-color-weak spr-border-x-0 spr-border-y spr-border-solid',
103
- {
104
- 'spr-border-t-0': !slots.default,
99
+ const headerClasses = (header: Header) => {
100
+ if (header.customTailwindClasses){
101
+ return classNames(header.customTailwindClasses);
102
+ }
103
+
104
+ return classNames(
105
+ 'spr-min-h-12 spr-px-size-spacing-2xs spr-py-size-spacing-3xs',
106
+ 'spr-text-color-strong spr-font-size-100 spr-font-line-height-100 spr-font-letter-spacing-normal spr-text-start spr-font-medium spr-uppercase',
107
+ 'spr-border-color-weak spr-border-x-0 spr-border-y spr-border-solid',
108
+ {
109
+ 'spr-border-t-0': !slots.default,
105
110
  },
106
111
  headerBackground,
107
- );
112
+ )};
108
113
 
109
114
  const headerNameClass = 'spr-flex spr-flex-row spr-items-center spr-gap-size-spacing-5xs';
110
115