design-system-next 2.2.0 → 2.3.1

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.
Binary file
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "design-system-next",
3
3
  "private": false,
4
- "version": "2.2.0",
4
+ "version": "2.3.1",
5
5
  "main": "./dist/design-system-next.js",
6
6
  "module": "./dist/design-system-next.js",
7
7
  "repository": {
@@ -80,17 +80,17 @@ export const useCalendarCell = (props: CalendarCellPropTypes, emit: SetupContext
80
80
  'spr-border-solid': !props.status || (props.status !== 'pending' && props.status !== 'error'),
81
81
  });
82
82
 
83
- const titleClasses = classNames('spr-text-color-strong spr-body-xs-regular-medium', {
83
+ const titleClasses = classNames('spr-text-color-strong spr-body-sm-regular-medium', {
84
84
  'spr-text-color-danger-base': props.status === 'error',
85
85
  });
86
86
 
87
- const descriptionClasses = classNames('spr-text-color-strong spr-body-xs-regular', {
87
+ const descriptionClasses = classNames('spr-text-color-strong spr-body-sm-regular', {
88
88
  'spr-text-color-danger-base': props.status === 'error',
89
89
  });
90
90
 
91
- const getTypeLabelClassess = classNames('spr-text-color-strong spr-body-xs-regular', {
91
+ const getTypeLabelClassess = classNames('spr-text-color-strong spr-body-sm-regular', {
92
92
  'spr-text-color-danger-base': props.status === 'error',
93
- 'spr-text-color-strong spr-body-xs-regular-medium': offlineStatus.includes(props.type),
93
+ 'spr-text-color-strong spr-body-sm-regular-medium': offlineStatus.includes(props.type),
94
94
  });
95
95
 
96
96
  const getMainClasses = classNames(calendarCellWrapper, getCellClasses.value, statusCellClasses);
@@ -86,6 +86,6 @@ const {
86
86
  handleSelectedLadderizedItem,
87
87
  dropdownValue,
88
88
  removeCurrentLevelInBackLabel,
89
- isLadderizedSearch
89
+ isLadderizedSearch,
90
90
  } = useDropdown(props, emit);
91
91
  </script>
@@ -4,13 +4,14 @@
4
4
  aria-id="filter-option-wrapper"
5
5
  distance="4"
6
6
  placement="bottom"
7
- :triggers="['click']"
7
+ :triggers="[]"
8
+ :popper-hide-triggers="[]"
8
9
  :container="`#${uniqueId}`"
10
+ :auto-hide="false"
9
11
  :style="{
10
12
  width: props.width,
11
13
  position: 'relative',
12
14
  }"
13
- :auto-hide="false"
14
15
  >
15
16
  <span
16
17
  :id="uniqueId"
@@ -18,6 +19,7 @@
18
19
  width: props.width,
19
20
  position: 'relative',
20
21
  }"
22
+ @click="isFilterOpen = true"
21
23
  >
22
24
  <slot>
23
25
  <spr-input v-model="searchValue" type="text" :placeholder="placeholder" :label="label" :disabled="disabled">
@@ -184,6 +186,7 @@
184
186
  >
185
187
  <div
186
188
  class="spr-flex spr-w-full spr-flex-row spr-items-center spr-justify-items-start spr-gap-size-spacing-3xs"
189
+ @click="getFiltereredOption[key].isSelected = !getFiltereredOption[key].isSelected"
187
190
  >
188
191
  <spr-checkbox
189
192
  v-model="getFiltereredOption[key].isSelected"
@@ -93,12 +93,16 @@ export const sidenavPropTypes = {
93
93
  },
94
94
  notificationCount: {
95
95
  type: [String, Number],
96
- validator: (value: number) => typeof value === 'number',
96
+ validator: (value: string | number) => {
97
+ return typeof value === 'number' || typeof value === 'string';
98
+ },
97
99
  default: '',
98
100
  },
99
101
  requestCount: {
100
102
  type: [String, Number],
101
- validator: (value: number) => typeof value === 'number',
103
+ validator: (value: string | number) => {
104
+ return typeof value === 'number' || typeof value === 'string';
105
+ },
102
106
  default: '',
103
107
  },
104
108
  userMenu: {
@@ -127,6 +127,7 @@
127
127
  <!-- Search -->
128
128
  <div
129
129
  v-if="props.hasSearch"
130
+ id="sidenav_search"
130
131
  :class="[
131
132
  'spr-flex spr-cursor-pointer spr-items-center spr-justify-center spr-rounded-border-radius-md spr-p-2 spr-transition spr-duration-150 spr-ease-in-out',
132
133
  'hover:spr-background-color-hover',
@@ -151,6 +152,7 @@
151
152
  instant-move
152
153
  >
153
154
  <div
155
+ :id="`${generateId(parentLink.title)}`"
154
156
  :class="{
155
157
  'spr-flex spr-cursor-pointer spr-items-center spr-justify-center spr-rounded-border-radius-md spr-p-2 spr-transition spr-duration-150 spr-ease-in-out spr-max-w-9 spr-max-h-9 spr-m-auto spr-box-border': true,
156
158
  'spr-background-color-single-active spr-border-color-brand-base spr-border-[1.5px] spr-border-solid active:spr-scale-90':
@@ -195,6 +197,7 @@
195
197
  instant-move
196
198
  >
197
199
  <div
200
+ :id="`${generateId(parentLink.title, menuLinkItem.title)}`"
198
201
  :class="{
199
202
  'spr-body-sm-regular spr-relative spr-m-0 spr-flex spr-cursor-pointer spr-justify-between spr-px-2 spr-py-1.5 spr-align-middle spr-duration-150 spr-ease-in-out': true,
200
203
  'spr-background-color-single-active': props.activeNav.menu === menuLinkItem.title,
@@ -234,6 +237,7 @@
234
237
  <Menu aria-id="sidenav-sub-submenu-wrapper" :triggers="['click', 'hover']" instant-move>
235
238
  <div
236
239
  v-if="!submenuLinkItem.hidden"
240
+ :id="`${generateId(parentLink.title, menuLinkItem.title, submenuLinkItem.title)}`"
237
241
  :class="{
238
242
  'spr-body-sm-regular spr-relative spr-m-0 spr-flex spr-cursor-pointer spr-justify-between spr-px-2 spr-py-1.5 spr-align-middle spr-duration-150 spr-ease-in-out': true,
239
243
  'spr-background-color-single-active':
@@ -268,6 +272,7 @@
268
272
  <template v-else>
269
273
  <div
270
274
  v-if="!menuLinkItem.hidden"
275
+ :id="`${generateId(parentLink.title, menuLinkItem.title)}`"
271
276
  :class="{
272
277
  'spr-body-sm-regular spr-relative spr-m-0 spr-flex spr-cursor-pointer spr-justify-between spr-px-2 spr-py-1.5 spr-align-middle spr-duration-150 spr-ease-in-out': true,
273
278
  'spr-background-color-single-active': props.activeNav.menu === menuLinkItem.title,
@@ -276,6 +281,10 @@
276
281
  }"
277
282
  @click="handleRedirect(menuLinkItem, parentLink.title, menuLinkItem.title, '')"
278
283
  >
284
+ <div
285
+ v-if="props.activeNav.menu === menuLinkItem.title"
286
+ class="spr-background-color-brand-base spr-absolute spr-left-0 spr-top-0 spr-h-full spr-w-[2px]"
287
+ ></div>
279
288
  <span>{{ menuLinkItem.title }}</span>
280
289
  </div>
281
290
  </template>
@@ -298,6 +307,7 @@
298
307
  <span class="spr-label-xs-medium spr-uppercase">{{ parentLink.title }}</span>
299
308
  </template>
300
309
  <div
310
+ :id="`${generateId(parentLink.title)}`"
301
311
  :class="{
302
312
  'spr-flex spr-cursor-pointer spr-items-center spr-justify-center spr-rounded-border-radius-md spr-p-2 spr-transition spr-duration-150 spr-ease-in-out spr-max-w-9 spr-max-h-9 spr-m-auto spr-box-border': true,
303
313
  'spr-background-color-single-active spr-border-color-brand-base spr-border-[1.5px] spr-border-solid active:spr-scale-90':
@@ -339,6 +349,7 @@
339
349
  instant-move
340
350
  >
341
351
  <div
352
+ :id="`${generateId(parentLink.title)}`"
342
353
  :class="{
343
354
  'spr-flex spr-cursor-pointer spr-items-center spr-justify-center spr-rounded-border-radius-md spr-p-2 spr-transition spr-duration-150 spr-ease-in-out spr-max-w-9 spr-max-h-9 spr-m-auto spr-box-border': true,
344
355
  'spr-background-color-single-active spr-border-color-brand-base spr-border-[1.5px] spr-border-solid active:spr-scale-90':
@@ -383,6 +394,7 @@
383
394
  instant-move
384
395
  >
385
396
  <div
397
+ :id="`${generateId(parentLink.title, menuLinkItem.title)}`"
386
398
  :class="{
387
399
  'spr-body-sm-regular spr-relative spr-m-0 spr-flex spr-cursor-pointer spr-justify-between spr-px-2 spr-py-1.5 spr-align-middle spr-duration-150 spr-ease-in-out': true,
388
400
  'spr-background-color-single-active': props.activeNav.menu === menuLinkItem.title,
@@ -422,6 +434,7 @@
422
434
  <Menu aria-id="sidenav-sub-submenu-wrapper" :triggers="['click', 'hover']" instant-move>
423
435
  <div
424
436
  v-if="!submenuLinkItem.hidden"
437
+ :id="`${generateId(parentLink.title, menuLinkItem.title, submenuLinkItem.title)}`"
425
438
  :class="{
426
439
  'spr-body-sm-regular spr-relative spr-m-0 spr-flex spr-cursor-pointer spr-justify-between spr-px-2 spr-py-1.5 spr-align-middle spr-duration-150 spr-ease-in-out': true,
427
440
  'spr-background-color-single-active':
@@ -456,6 +469,7 @@
456
469
  <template v-else>
457
470
  <div
458
471
  v-if="!menuLinkItem.hidden"
472
+ :id="`${generateId(parentLink.title, menuLinkItem.title)}`"
459
473
  :class="[
460
474
  'spr-body-sm-regular spr-m-0 spr-flex spr-cursor-pointer spr-justify-between spr-px-2 spr-py-1.5 spr-align-middle spr-duration-300 spr-ease-in-out',
461
475
  'hover:spr-background-color-hover',
@@ -486,6 +500,7 @@
486
500
  <span class="spr-label-xs-medium spr-uppercase">{{ parentLink.title }}</span>
487
501
  </template>
488
502
  <div
503
+ :id="`${generateId(parentLink.title)}`"
489
504
  :class="{
490
505
  'spr-flex spr-cursor-pointer spr-items-center spr-justify-center spr-rounded-border-radius-md spr-p-2 spr-transition spr-duration-150 spr-ease-in-out spr-max-w-9 spr-max-h-9 spr-m-auto spr-box-border': true,
491
506
  'spr-background-color-single-active spr-border-color-brand-base spr-border-[1.5px] spr-border-solid active:spr-scale-90':
@@ -526,6 +541,7 @@
526
541
  </template>
527
542
  <div
528
543
  v-if="props.notificationCount || props.notificationCount === 0"
544
+ id="sidenav_notification"
529
545
  :class="[
530
546
  'spr-relative spr-flex spr-cursor-pointer spr-items-center spr-justify-center spr-2 spr-rounded-border-radius-md',
531
547
  'spr-transition spr-duration-150 spr-ease-in-out spr-w-9 spr-h-9 spr-m-auto',
@@ -559,6 +575,7 @@
559
575
  </template>
560
576
  <div
561
577
  v-if="props.requestCount || props.requestCount === 0"
578
+ id="sidenav_request"
562
579
  :class="[
563
580
  'spr-relative spr-flex spr-cursor-pointer spr-items-center spr-justify-center spr-2 spr-rounded-border-radius-md',
564
581
  'spr-transition spr-duration-150 spr-ease-in-out spr-w-9 spr-h-9 spr-m-auto',
@@ -693,7 +710,7 @@ import SprBadge from '../badge/badge.vue';
693
710
  const props = defineProps(sidenavPropTypes);
694
711
  const emit = defineEmits(sidenavEmitTypes);
695
712
 
696
- const { isQuckActionMenuVisible, isUserMenuVisible, userProfileError, getUserInitials, handleRedirect } = useSidenav(
713
+ const { isQuckActionMenuVisible, isUserMenuVisible, userProfileError, getUserInitials, handleRedirect, generateId } = useSidenav(
697
714
  props,
698
715
  emit,
699
716
  );
@@ -53,11 +53,27 @@ export const useSidenav = (props: SidenavPropTypes, emit: SetupContext<SidenavEm
53
53
  }
54
54
  };
55
55
 
56
+ const transformToCamelCaseId = (str: string) => {
57
+ return str
58
+ .toLowerCase()
59
+ .split(' ')
60
+ .map((word, index) => {
61
+ if (index === 0) return word;
62
+ return word.charAt(0).toUpperCase() + word.slice(1);
63
+ })
64
+ .join('');
65
+ }
66
+
67
+ const generateId = (...titles: string[]): string => {
68
+ return titles.map(transformToCamelCaseId).join('_');
69
+ }
70
+
56
71
  return {
57
72
  isQuckActionMenuVisible,
58
73
  isUserMenuVisible,
59
74
  userProfileError,
60
75
  getUserInitials,
61
76
  handleRedirect,
77
+ generateId
62
78
  };
63
79
  };
@@ -24,17 +24,14 @@ export const useTablePagination = (
24
24
  const { selectedRowCount, currentPage, totalItems, bordered } = toRefs(props);
25
25
 
26
26
  const paginationClasses: ComputedRef<TablePaginationClasses> = computed(() => {
27
- const baseClass = classNames(
28
- 'spr-p-size-spacing-xs spr-flex spr-justify-between spr-bg-white-50 spr-h-max',
29
- {
30
- 'spr-border spr-border-solid spr-border-color-weak': bordered.value,
31
- 'spr-border-x-0 spr-border-t spr-border-b-0 spr-border-solid spr-border-color-weak': !bordered.value,
32
- },
33
- );
34
- const dropdownInputFieldClass = classNames('spr-w-[120px] spr-font-bold spr-h-full spr-space-x-2');
27
+ const baseClass = classNames('spr-p-size-spacing-xs spr-flex spr-justify-between spr-bg-white-50 spr-h-max', {
28
+ 'spr-border spr-border-solid spr-border-color-weak': bordered.value,
29
+ 'spr-border-x-0 spr-border-t spr-border-b-0 spr-border-solid spr-border-color-weak': !bordered.value,
30
+ });
31
+ const dropdownInputFieldClass = classNames('spr-w-[120px] spr-h-full spr-space-x-2');
35
32
  const inputFieldIconClass = classNames('spr-mt-0.5 spr-pl-1 spr-text-mushroom-950');
36
33
  const rightSideClass = classNames('spr-flex spr-justify-between spr-items-center spr-space-x-4');
37
- const computeRowRangeClass = classNames('spr-font-main spr-text-color-base');
34
+ const computeRowRangeClass = classNames('spr-text-color-base spr-body-sm-regular');
38
35
  const navigationContainerClass = classNames('spr-flex spr-space-x-2');
39
36
  const navigationButtonClass = classNames('spr-rounded-border-radius-md');
40
37
  const dropdownClass = classNames('!spr-w-max');
@@ -76,7 +76,7 @@ export const useTable = (props: TablePropTypes, emit: SetupContext<TableEmitType
76
76
  const tableWrapperClasses = classNames(
77
77
  'spr-border-color-weak spr-w-full spr-overflow-hidden spr-rounded-border-radius-lg spr-border spr-border-solid spr-table-wrapper spr-relative spr-h-max',
78
78
  );
79
- const tableFooterClasses = classNames('spr-absolute spr-w-full spr-bottom-0 spr-left-0', {
79
+ const tableFooterClasses = classNames('spr-w-full spr-bottom-0 spr-left-0', {
80
80
  'spr-background-color-surface': props.variant === 'surface',
81
81
  'spr-background-color': props.variant === 'white',
82
82
  });