design-system-next 2.21.10 → 2.22.2

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.
@@ -19,16 +19,21 @@ interface SidepanelClasses {
19
19
  }
20
20
 
21
21
  export const useSidepanel = (props: SidepanelPropTypes, emit: SetupContext<SidepanelEmitTypes>['emit']) => {
22
- const { size, position, isStacking, footerNoPadding } = toRefs(props);
22
+ const { size, position, isStacking, footerNoPadding, isExpanded, isActivePanel } = toRefs(props);
23
23
 
24
24
  const sidepanelClasses: ComputedRef<SidepanelClasses> = computed(() => {
25
25
  const sidepanelBaseClasses = classNames(
26
- 'spr-right-4 spr-top-1/2 spr-z-[1015] spr-flex spr-h-full spr-min-h-[200px] spr-translate-y-[-50%] spr-flex-col spr-rounded-border-radius-xl spr-bg-white-50 spr-drop-shadow',
26
+ 'spr-right-4 spr-top-1/2 spr-z-[1015] spr-flex spr-h-full spr-min-h-[200px] spr-translate-y-[-50%] spr-flex-col spr-rounded-border-radius-xl spr-bg-white-50 spr-drop-shadow spr-transition-all spr-ease-[ease-in-out] spr-duration-[150ms]',
27
27
  {
28
28
  'spr-fixed': !isStacking.value,
29
- 'spr-w-[360px] sm:spr-w-[calc(100%-35px)]': size.value === 'sm',
30
- 'spr-w-[420px] sm:spr-w-[calc(100%-35px)]': size.value === 'md',
31
- 'spr-w-[480px] sm:spr-w-[calc(100%-35px)]': size.value === 'lg',
29
+ 'spr-w-[360px]': size.value === 'sm' && !isExpanded.value,
30
+ 'spr-w-[420px]': size.value === 'md' && !isExpanded.value,
31
+ 'spr-w-[480px]': size.value === 'lg' && !isExpanded.value,
32
+ '[@media(max-width:360px)]:spr-w-[calc(100vw-35px)]': size.value === 'sm' && !isExpanded.value && !isStacking.value,
33
+ '[@media(max-width:420px)]:spr-w-[calc(100vw-35px)]': size.value === 'md' && !isExpanded.value && !isStacking.value,
34
+ '[@media(max-width:480px)]:spr-w-[calc(100vw-35px)]': size.value === 'lg' && !isExpanded.value && !isStacking.value,
35
+ 'spr-w-[calc(100vw-50px)]': isExpanded.value,
36
+ 'spr-pointer-events-none': !isActivePanel.value && isStacking.value
32
37
  },
33
38
  );
34
39
 
@@ -45,13 +50,13 @@ export const useSidepanel = (props: SidepanelPropTypes, emit: SetupContext<Sidep
45
50
  const sidepanelFooterClasses = classNames(
46
51
  'spr-bottom-0 spr-left-0 spr-w-full spr-rounded-b-border-radius-xl spr-border-0 spr-border-t spr-border-solid spr-border-mushroom-200 spr-bg-white-50 ',
47
52
  {
48
- 'spr-py-3': !footerNoPadding.value
49
- }
53
+ 'spr-py-3': !footerNoPadding.value,
54
+ },
50
55
  );
51
56
 
52
- const sidepanelTransitionActiveClasses = classNames(
53
- { 'spr-transition-all spr-duration-[150ms] spr-ease-[ease-in-out]': !isStacking.value },
54
- );
57
+ const sidepanelTransitionActiveClasses = classNames({
58
+ 'spr-transition-all spr-duration-[150ms] spr-ease-[ease-in-out]': !isStacking.value,
59
+ });
55
60
 
56
61
  const sidepanelTransitionHiddenClasses = classNames('spr-opacity-0', {
57
62
  'spr-translate-x-full -spr-translate-y-2/4': !isStacking.value && position.value === 'right',
@@ -84,6 +89,14 @@ export const useSidepanel = (props: SidepanelPropTypes, emit: SetupContext<Sidep
84
89
  emit('close');
85
90
  };
86
91
 
92
+ const handlePanelExpansion = () => {
93
+ if (isExpanded.value) {
94
+ emit('shrink');
95
+ } else {
96
+ emit('expand');
97
+ }
98
+ };
99
+
87
100
  let ignoreClick = false;
88
101
 
89
102
  const handleClickOutside = (event: MouseEvent) => {
@@ -111,7 +124,7 @@ export const useSidepanel = (props: SidepanelPropTypes, emit: SetupContext<Sidep
111
124
  emit('onClose');
112
125
  }
113
126
  },
114
- );
127
+ );
115
128
 
116
129
  onMounted(() => {
117
130
  document.addEventListener('click', handleClickOutside);
@@ -126,6 +139,8 @@ export const useSidepanel = (props: SidepanelPropTypes, emit: SetupContext<Sidep
126
139
  return {
127
140
  sidepanelClasses,
128
141
  sidepanelRef,
142
+ isExpanded,
129
143
  handleClose,
144
+ handlePanelExpansion,
130
145
  };
131
146
  };