willba-component-library 0.1.15 → 0.1.17

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "willba-component-library",
3
- "version": "0.1.15",
3
+ "version": "0.1.17",
4
4
  "description": "A stroybook 6 with TypeScript demo",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/index.esm.js",
@@ -25,6 +25,16 @@
25
25
  transform: translateY(-50%);
26
26
  }
27
27
 
28
+ /* Tabs */
29
+
30
+ .will-filter-bar-tabs {
31
+ display: flex;
32
+ align-items: center;
33
+ width: fit-content;
34
+ position: relative;
35
+ z-index: 222;
36
+ }
37
+
28
38
  /* Header */
29
39
  .will-filter-bar-header {
30
40
  display: flex;
@@ -35,8 +45,9 @@
35
45
 
36
46
 
37
47
  border-radius: 40px;
48
+ border-top-left-radius: 0;
38
49
  background-color: var(--will-white);
39
- box-shadow: var(--will-box-shadow);
50
+
40
51
  }
41
52
 
42
53
  @media (max-width: 960px) {
@@ -54,7 +65,7 @@
54
65
 
55
66
  padding: 90px 40px 30px 40px;
56
67
  position: absolute;
57
- top: 0;
68
+ top: 45px;
58
69
  z-index: 111;
59
70
  border-radius: 25px;
60
71
  width: -webkit-fill-available;
@@ -16,6 +16,7 @@ import './FilterBar.css'
16
16
  import '../../themes/Default.css'
17
17
  import i18n from '../../i18n'
18
18
  import CloseButton from './components/buttons/close-button/CloseButton'
19
+ import TabButton from './components/buttons/tab-button/TabButton'
19
20
  import { AgeCategoryType } from './FilterBarTypes'
20
21
 
21
22
  export interface FilterBarProps {
@@ -24,11 +25,13 @@ export interface FilterBarProps {
24
25
  ageCategories?: AgeCategoryType[]
25
26
  redirectUrl: string
26
27
  palette?: Palette
28
+ currentPath?: string
27
29
  }
28
30
 
29
31
  export default function FilterBar({
30
32
  language,
31
33
  ageCategories = AGE_CATEGORIES_FALLBACK,
34
+ currentPath,
32
35
  redirectUrl = REDIRECT_URL_FALLBACK,
33
36
  palette,
34
37
  }: FilterBarProps) {
@@ -49,11 +52,13 @@ export default function FilterBar({
49
52
  ageCategoryCounts,
50
53
  categories,
51
54
  calendarRange,
55
+ selectedPath,
52
56
  setCalendarRange,
53
57
  setCategories,
54
58
  handleSelectedFilter,
55
59
  handleSubmit,
56
60
  updateGuestsCount,
61
+ setSelectedPath,
57
62
  } = useFilterBar({ redirectUrl })
58
63
 
59
64
  // Scroll in to view
@@ -81,13 +86,27 @@ export default function FilterBar({
81
86
  }}
82
87
  />
83
88
  )}
89
+
84
90
  <div
85
91
  className={`will-root ${selectedFilter ? 'isMobileAbsolute' : ''}`}
86
92
  style={themePalette}
87
93
  >
88
- <div className="will-filter-bar-header" ref={targetFilterBarRef}>
94
+ <div className="will-filter-bar-tabs" ref={targetFilterBarRef}>
95
+ <TabButton
96
+ label={t('tabs.events')}
97
+ onClick={() => setSelectedPath('./events')}
98
+ active={selectedPath === '/events'}
99
+ />
100
+ <TabButton
101
+ label={t('tabs.rooms')}
102
+ onClick={() => setSelectedPath('./rooms')}
103
+ active={selectedPath === '/rooms'}
104
+ />
105
+ </div>
106
+
107
+ <div className="will-filter-bar-header">
89
108
  <SelectButton
90
- style={fontWigthBold(selectedFilter === 1 || selectedFilter === 2)}
109
+ style={fontWeightBold(selectedFilter === 1 || selectedFilter === 2)}
91
110
  label={t('calendar.startDate')}
92
111
  onClick={() => handleSelectedFilter(1)}
93
112
  date={
@@ -96,9 +115,11 @@ export default function FilterBar({
96
115
  : null
97
116
  }
98
117
  />
118
+
99
119
  <Divider />
120
+
100
121
  <SelectButton
101
- style={fontWigthBold(selectedFilter === 1 || selectedFilter === 2)}
122
+ style={fontWeightBold(selectedFilter === 1 || selectedFilter === 2)}
102
123
  label={t('calendar.endDate')}
103
124
  onClick={() => handleSelectedFilter(2)}
104
125
  date={
@@ -111,14 +132,14 @@ export default function FilterBar({
111
132
  <SelectButton
112
133
  label={t('guests.label')}
113
134
  onClick={() => handleSelectedFilter(3)}
114
- style={fontWigthBold(selectedFilter === 3)}
135
+ style={fontWeightBold(selectedFilter === 3)}
115
136
  /> */}
116
137
 
117
138
  {/* <Divider />
118
139
  <SelectButton
119
140
  label={t('categories.label')}
120
141
  onClick={() => handleSelectedFilter(4)}
121
- style={fontWigthBold(selectedFilter === 4)}
142
+ style={fontWeightBold(selectedFilter === 4)}
122
143
  /> */}
123
144
 
124
145
  <SubmitButton onClick={handleSubmit} />
@@ -156,7 +177,7 @@ export default function FilterBar({
156
177
 
157
178
  ////////////
158
179
 
159
- const fontWigthBold = (input: boolean) => {
180
+ const fontWeightBold = (input: boolean) => {
160
181
  return { fontWeight: input ? 'bold' : 'initial' }
161
182
  }
162
183
 
@@ -0,0 +1,43 @@
1
+ .will-filter-bar-tab-button {
2
+ width: auto;
3
+ height: auto;
4
+ padding: 10px 50px;
5
+ cursor: pointer;
6
+ border: none;
7
+ white-space: nowrap;
8
+ text-transform: uppercase;
9
+ font-size: 12px;
10
+ display: flex;
11
+ align-items: center;
12
+ border: 1px solid var(--will-black);
13
+ border-top: none;
14
+ background-color: var(--will-transparent-white);
15
+ user-select: none;
16
+ font-weight: 600;
17
+ }
18
+
19
+ /* .will-filter-bar-tab-button:not(:first-child) {
20
+ border-left: none;
21
+ } */
22
+
23
+ .will-filter-bar-tab-button:hover {
24
+ background-color: var(--will-white);
25
+ }
26
+
27
+ .will-filter-bar-tab-button.active {
28
+ background-color: var(--will-white);
29
+ border-color: var(--will-white);
30
+ }
31
+
32
+
33
+
34
+
35
+
36
+
37
+ /* @media (max-width: 960px) {
38
+ .will-filter-bar-tab-button {
39
+ justify-content: center;
40
+ margin-bottom: 15px;
41
+ }
42
+ } */
43
+
@@ -0,0 +1,20 @@
1
+ import React from 'react'
2
+
3
+ import './TabButton.css'
4
+
5
+ type Props = {
6
+ onClick?: () => void
7
+ label: string
8
+ active?: boolean
9
+ }
10
+
11
+ export default function SubmitButton({ onClick, label, active }: Props) {
12
+ return (
13
+ <button
14
+ className={`will-filter-bar-tab-button ${active && 'active'}`}
15
+ onClick={onClick}
16
+ >
17
+ {label}
18
+ </button>
19
+ )
20
+ }
@@ -21,13 +21,15 @@ export default function Calendar({
21
21
  //const { t } = useTranslation('filterBar')
22
22
  const isTablet = useMediaQuery({ maxWidth: 960 })
23
23
 
24
- const defaultCalendarSelected: DateRange = {
25
- from: currentMonth,
26
- to: addDays(currentMonth, 0),
27
- }
24
+ // Add default selection
25
+ // const defaultCalendarSelected: DateRange = {
26
+ // from: currentMonth,
27
+ // to: addDays(currentMonth, 0),
28
+ // }
29
+ //--------------//----------------
28
30
 
29
31
  useEffect(() => {
30
- if (!calendarRange) setCalendarRange(defaultCalendarSelected)
32
+ if (!calendarRange) setCalendarRange(undefined)
31
33
  }, [])
32
34
 
33
35
  return (
@@ -9,6 +9,8 @@ interface UseFilterBarPropsType {
9
9
  }
10
10
 
11
11
  export default function useFilterBar({ redirectUrl }: UseFilterBarPropsType) {
12
+ const [selectedPath, setSelectedPath] = useState('/events')
13
+
12
14
  const [selectedFilter, setSelectedFilter] = useState<number | boolean>(false)
13
15
  const [calendarRange, setCalendarRange] = useState<DateRange | undefined>()
14
16
 
@@ -69,7 +71,7 @@ export default function useFilterBar({ redirectUrl }: UseFilterBarPropsType) {
69
71
  }
70
72
  }
71
73
 
72
- window.location.href = `${redirectUrl}${
74
+ window.location.href = `${redirectUrl}/${selectedPath}${
73
75
  queryParams ? `?${queryParams.toString()}` : ''
74
76
  }`
75
77
  handleSelectedFilter(false)
@@ -83,6 +85,21 @@ export default function useFilterBar({ redirectUrl }: UseFilterBarPropsType) {
83
85
  }
84
86
  }, [selectedFilter])
85
87
 
88
+ useEffect(() => {
89
+ let currentPath = '/events' // Default path name
90
+
91
+ if (typeof window !== 'undefined') {
92
+ // Get current path name
93
+ currentPath =
94
+ window.location.pathname.includes('/events') ||
95
+ window.location.pathname.includes('/rooms')
96
+ ? window.location.pathname
97
+ : '/events'
98
+
99
+ setSelectedPath(currentPath)
100
+ }
101
+ }, [])
102
+
86
103
  const handleResetFilters = () => {
87
104
  setAgeCategoryCounts({})
88
105
  handleSubmit()
@@ -94,6 +111,7 @@ export default function useFilterBar({ redirectUrl }: UseFilterBarPropsType) {
94
111
  ageCategoryCounts,
95
112
  categories,
96
113
  calendarRange,
114
+ selectedPath,
97
115
  setCalendarRange,
98
116
  setSelectedFilter,
99
117
  setAgeCategoryCounts,
@@ -102,5 +120,6 @@ export default function useFilterBar({ redirectUrl }: UseFilterBarPropsType) {
102
120
  handleSubmit,
103
121
  updateGuestsCount,
104
122
  handleResetFilters,
123
+ setSelectedPath,
105
124
  }
106
125
  }
@@ -17,5 +17,9 @@
17
17
  },
18
18
  "submit": {
19
19
  "label": "Search"
20
+ },
21
+ "tabs": {
22
+ "events": "Events",
23
+ "rooms": "Rooms"
20
24
  }
21
25
  }
@@ -17,5 +17,9 @@
17
17
  },
18
18
  "submit": {
19
19
  "label": "Hae"
20
+ },
21
+ "tabs": {
22
+ "events": "Events",
23
+ "rooms": "Rooms"
20
24
  }
21
25
  }
@@ -11,13 +11,15 @@
11
11
 
12
12
  color: #1E1E1E;
13
13
 
14
- /* Pallete */
14
+ /* Palette */
15
15
  --will-primary: #374269;
16
16
  --will-secondary: #374269;
17
17
  --will-grey: #ABA7AF;
18
18
  --will-white: #fff;
19
+ --will-black: #000;
19
20
  --will-onahau: #CDEEFF;
20
21
  --will-text: #5A5959;
22
+ --will-transparent-white: rgba(255, 255, 255, 0.8);
21
23
 
22
24
  /* Confines */
23
25
  --will-box-shadow: 0px 6px 11px 0px #a7a4a480;