willba-component-library 0.1.7 → 0.1.12
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/README.md +10 -10
- package/lib/components/FilterBar/FilterBar.d.ts +5 -4
- package/lib/index.d.ts +7 -1
- package/lib/index.esm.js +198 -157
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +198 -157
- package/lib/index.js.map +1 -1
- package/lib/index.umd.js +198 -157
- package/lib/index.umd.js.map +1 -1
- package/lib/themes/useTheme.d.ts +13 -4
- package/package.json +4 -4
- package/rollup.config.mjs +0 -1
- package/src/components/FilterBar/FilterBar.css +6 -8
- package/src/components/FilterBar/FilterBar.stories.tsx +5 -2
- package/src/components/FilterBar/FilterBar.tsx +31 -16
- package/src/components/FilterBar/components/close-button/CloseButton.css +9 -5
- package/src/components/FilterBar/components/submit-button/SubmitButton.css +1 -1
- package/src/components/FilterBar/hooks/useFilterBar.tsx +1 -1
- package/src/themes/Default.css +1 -10
- package/src/themes/useTheme.tsx +20 -10
package/lib/themes/useTheme.d.ts
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { CSSProperties } from 'react';
|
|
2
|
+
export interface Palette {
|
|
3
|
+
primary: string;
|
|
4
|
+
secondary: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ThemeProps {
|
|
7
|
+
palette?: Palette;
|
|
8
|
+
}
|
|
9
|
+
interface CustomPaletteTypes extends CSSProperties {
|
|
10
|
+
'--will-primary'?: string;
|
|
11
|
+
'--will-secondary'?: string;
|
|
12
|
+
}
|
|
13
|
+
export default function useTheme({ palette }: ThemeProps): CustomPaletteTypes;
|
|
5
14
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "willba-component-library",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.12",
|
|
4
4
|
"description": "A stroybook 6 with TypeScript demo",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib/index.esm.js",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"classnames": "^2.3.2",
|
|
19
19
|
"react-day-picker": "^8.8.0",
|
|
20
20
|
"react-i18next": "^13.1.2",
|
|
21
|
-
"react-icons": "^4.
|
|
21
|
+
"react-icons": "^4.11.0",
|
|
22
22
|
"react-responsive": "^9.0.2"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
"react-dom": "^18.2.0"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@rollup/plugin-commonjs": "^25.0.
|
|
30
|
-
"@rollup/plugin-node-resolve": "^15.
|
|
29
|
+
"@rollup/plugin-commonjs": "^25.0.3",
|
|
30
|
+
"@rollup/plugin-node-resolve": "^15.1.0",
|
|
31
31
|
"@rollup/plugin-typescript": "^11.1.2",
|
|
32
32
|
"@storybook/addon-essentials": "^7.2.1",
|
|
33
33
|
"@storybook/addon-interactions": "^7.2.1",
|
package/rollup.config.mjs
CHANGED
|
@@ -14,13 +14,15 @@
|
|
|
14
14
|
.will-filter-bar-underlay {
|
|
15
15
|
background-color: rgba(0,0,0,.8);
|
|
16
16
|
position: absolute;
|
|
17
|
-
top:0;
|
|
17
|
+
/* top:0; */
|
|
18
18
|
left: 0;
|
|
19
19
|
width: 100%;
|
|
20
20
|
height: 100%;
|
|
21
21
|
cursor: pointer;
|
|
22
22
|
min-height: 200vh;
|
|
23
23
|
z-index: 88888;
|
|
24
|
+
|
|
25
|
+
transform: translateY(-50%);
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
/* Header */
|
|
@@ -70,16 +72,12 @@
|
|
|
70
72
|
.will-filter-bar-container {
|
|
71
73
|
margin-top: 20px;
|
|
72
74
|
padding: 30px 40px;
|
|
73
|
-
position:
|
|
75
|
+
position: relative;
|
|
74
76
|
}
|
|
75
77
|
|
|
76
|
-
.isMobileAbsolute {
|
|
77
|
-
position:
|
|
78
|
+
.will-root.isMobileAbsolute {
|
|
79
|
+
position: relative;
|
|
78
80
|
z-index: 99999;
|
|
79
81
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
82
|
}
|
|
85
83
|
|
|
@@ -14,8 +14,8 @@ type Story = StoryObj<typeof FilterBar>
|
|
|
14
14
|
|
|
15
15
|
export const Primary: Story = {
|
|
16
16
|
args: {
|
|
17
|
-
vendor: '',
|
|
18
17
|
language: '',
|
|
18
|
+
redirectUrl: '',
|
|
19
19
|
ageCategories: [
|
|
20
20
|
{
|
|
21
21
|
id: '1',
|
|
@@ -39,6 +39,9 @@ export const Primary: Story = {
|
|
|
39
39
|
minVal: 0,
|
|
40
40
|
},
|
|
41
41
|
],
|
|
42
|
-
|
|
42
|
+
palette: {
|
|
43
|
+
primary: '',
|
|
44
|
+
secondary: '',
|
|
45
|
+
},
|
|
43
46
|
},
|
|
44
47
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useEffect, useState } from 'react'
|
|
1
|
+
import React, { useEffect, useState, useRef } from 'react'
|
|
2
2
|
import { useTranslation } from 'react-i18next'
|
|
3
3
|
|
|
4
4
|
import Divider from './components/divider/Divider'
|
|
@@ -8,39 +8,41 @@ import Calendar from './components/calendar/Calendar'
|
|
|
8
8
|
import Guests from './components/guests/Guests'
|
|
9
9
|
import Categories from './components/categories/Categories'
|
|
10
10
|
|
|
11
|
-
import useTheme from '../../themes/useTheme'
|
|
11
|
+
import useTheme, { Palette } from '../../themes/useTheme'
|
|
12
12
|
import useFilterBar from './hooks/useFilterBar'
|
|
13
|
-
import { AgeCategoryType } from './FilterBarTypes'
|
|
14
13
|
|
|
15
14
|
import './FilterBar.css'
|
|
16
15
|
import '../../themes/Default.css'
|
|
17
16
|
import i18n from '../../i18n'
|
|
18
17
|
import CloseButton from './components/close-button/CloseButton'
|
|
18
|
+
import { AgeCategoryType } from './FilterBarTypes'
|
|
19
19
|
|
|
20
|
-
interface FilterBarProps {
|
|
20
|
+
export interface FilterBarProps {
|
|
21
21
|
vendor?: string
|
|
22
22
|
language?: string
|
|
23
23
|
ageCategories?: AgeCategoryType[]
|
|
24
24
|
redirectUrl: string
|
|
25
|
+
palette?: Palette
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
export default function FilterBar({
|
|
28
|
-
vendor,
|
|
29
29
|
language,
|
|
30
30
|
ageCategories = AGE_CATEGORIES_FALLBACK,
|
|
31
31
|
redirectUrl = REDIRECT_URL_FALLBACK,
|
|
32
|
+
palette,
|
|
32
33
|
}: FilterBarProps) {
|
|
33
|
-
const
|
|
34
|
-
const [rerenderKey, setRerenderKey] = useState(0)
|
|
34
|
+
const themePalette = useTheme({ palette })
|
|
35
35
|
|
|
36
|
+
// Translations
|
|
37
|
+
const [rerenderKey, setRerenderKey] = useState(0)
|
|
36
38
|
useEffect(() => {
|
|
37
39
|
i18n.changeLanguage(language)
|
|
38
40
|
|
|
39
41
|
setRerenderKey((prevKey) => prevKey + 1)
|
|
40
42
|
}, [language])
|
|
41
|
-
|
|
42
43
|
const { t } = useTranslation('filterBar')
|
|
43
44
|
|
|
45
|
+
// Filters
|
|
44
46
|
const {
|
|
45
47
|
selectedFilter,
|
|
46
48
|
ageCategoryCounts,
|
|
@@ -51,9 +53,23 @@ export default function FilterBar({
|
|
|
51
53
|
handleSelectedFilter,
|
|
52
54
|
handleSubmit,
|
|
53
55
|
updateGuestsCount,
|
|
54
|
-
handleResetFilters,
|
|
55
56
|
} = useFilterBar({ redirectUrl })
|
|
56
57
|
|
|
58
|
+
// Scroll in to view
|
|
59
|
+
|
|
60
|
+
const targetFilterBarRef = useRef<HTMLDivElement | null>(null)
|
|
61
|
+
useEffect(() => {
|
|
62
|
+
if (targetFilterBarRef.current && selectedFilter) {
|
|
63
|
+
window.scrollTo({
|
|
64
|
+
behavior: 'smooth',
|
|
65
|
+
top:
|
|
66
|
+
targetFilterBarRef.current.getBoundingClientRect().top -
|
|
67
|
+
document.body.getBoundingClientRect().top -
|
|
68
|
+
30,
|
|
69
|
+
})
|
|
70
|
+
}
|
|
71
|
+
}, [selectedFilter])
|
|
72
|
+
|
|
57
73
|
return (
|
|
58
74
|
<>
|
|
59
75
|
{selectedFilter && (
|
|
@@ -65,11 +81,10 @@ export default function FilterBar({
|
|
|
65
81
|
/>
|
|
66
82
|
)}
|
|
67
83
|
<div
|
|
68
|
-
className={`will-root ${
|
|
69
|
-
|
|
70
|
-
}`}
|
|
84
|
+
className={`will-root ${selectedFilter ? 'isMobileAbsolute' : ''}`}
|
|
85
|
+
style={themePalette}
|
|
71
86
|
>
|
|
72
|
-
<div className="will-filter-bar-header">
|
|
87
|
+
<div className="will-filter-bar-header" ref={targetFilterBarRef}>
|
|
73
88
|
<SelectButton
|
|
74
89
|
style={fontWigthBold(selectedFilter === 1 || selectedFilter === 2)}
|
|
75
90
|
label={t('calendar.startDate')}
|
|
@@ -82,7 +97,7 @@ export default function FilterBar({
|
|
|
82
97
|
onClick={() => handleSelectedFilter(2)}
|
|
83
98
|
/>
|
|
84
99
|
|
|
85
|
-
{/* TODO - Add strapi settings to
|
|
100
|
+
{/* TODO - Add strapi settings to show or hide filter sections */}
|
|
86
101
|
{/* <Divider />
|
|
87
102
|
<SelectButton
|
|
88
103
|
label={t('guests.label')}
|
|
@@ -98,12 +113,12 @@ export default function FilterBar({
|
|
|
98
113
|
/> */}
|
|
99
114
|
|
|
100
115
|
<SubmitButton onClick={handleSubmit} />
|
|
101
|
-
|
|
102
|
-
<CloseButton handleClose={handleResetFilters} />
|
|
103
116
|
</div>
|
|
104
117
|
|
|
105
118
|
{selectedFilter && (
|
|
106
119
|
<div className="will-filter-bar-container">
|
|
120
|
+
<CloseButton handleClose={() => handleSelectedFilter(false)} />
|
|
121
|
+
|
|
107
122
|
{(selectedFilter === 1 || selectedFilter === 2) && (
|
|
108
123
|
<Calendar
|
|
109
124
|
calendarRange={calendarRange}
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
.will-filter-bar-close-button {
|
|
2
2
|
width: auto;
|
|
3
3
|
height: auto;
|
|
4
|
-
background-color: var(--will-grey);
|
|
5
|
-
color: var(--will-
|
|
4
|
+
/* background-color: var(--will-grey); */
|
|
5
|
+
color: var(--will-grey);
|
|
6
6
|
padding: 2px 7px;
|
|
7
7
|
border-radius: 50%;
|
|
8
8
|
cursor: pointer;
|
|
9
9
|
border: none;
|
|
10
10
|
display: flex;
|
|
11
11
|
align-items: center;
|
|
12
|
-
font-size:
|
|
13
|
-
margin-left: 15px;
|
|
12
|
+
font-size: 23px;
|
|
14
13
|
display: none;
|
|
14
|
+
|
|
15
|
+
position: absolute;
|
|
16
|
+
top: 10px;
|
|
17
|
+
right: 10px;
|
|
18
|
+
|
|
15
19
|
}
|
|
16
20
|
|
|
17
21
|
@media (max-width: 960px) {
|
|
@@ -19,7 +23,7 @@
|
|
|
19
23
|
min-height: 35px;
|
|
20
24
|
border-radius: 25px;
|
|
21
25
|
margin-left:0;
|
|
22
|
-
|
|
26
|
+
|
|
23
27
|
display: flex;
|
|
24
28
|
justify-content: center;
|
|
25
29
|
}
|
|
@@ -60,7 +60,7 @@ export default function useFilterBar({ redirectUrl }: UseFilterBarPropsType) {
|
|
|
60
60
|
: '',
|
|
61
61
|
endDate: calendarRange?.to ? format(calendarRange.to, 'yyyy-MM-dd') : '',
|
|
62
62
|
categories,
|
|
63
|
-
ageCategoryCounts: JSON.stringify(ageCategoryCounts),
|
|
63
|
+
//ageCategoryCounts: JSON.stringify(ageCategoryCounts),
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
for (const [key, value] of Object.entries(params)) {
|
package/src/themes/Default.css
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
/* Pallete */
|
|
15
15
|
--will-primary: #374269;
|
|
16
|
+
--will-secondary: #374269;
|
|
16
17
|
--will-grey: #ABA7AF;
|
|
17
18
|
--will-white: #fff;
|
|
18
19
|
--will-onahau: #CDEEFF;
|
|
@@ -39,14 +40,4 @@
|
|
|
39
40
|
.will-root p, h1, h2, h3, h4, h5, h6, span {
|
|
40
41
|
margin: 0;
|
|
41
42
|
padding: 0;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/* Overrides as themes */
|
|
45
|
-
|
|
46
|
-
.will-root-kis {
|
|
47
|
-
--will-primary: #374269;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
.will-root-paj {
|
|
51
|
-
--will-primary: #1897D8;
|
|
52
43
|
}
|
package/src/themes/useTheme.tsx
CHANGED
|
@@ -1,14 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { CSSProperties } from 'react'
|
|
2
|
+
|
|
3
|
+
export interface Palette {
|
|
4
|
+
primary: string
|
|
5
|
+
secondary: string
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface ThemeProps {
|
|
9
|
+
palette?: Palette
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
interface CustomPaletteTypes extends CSSProperties {
|
|
13
|
+
'--will-primary'?: string
|
|
14
|
+
'--will-secondary'?: string
|
|
3
15
|
}
|
|
4
16
|
|
|
5
|
-
export default function useTheme({
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
? 'will-root-paj'
|
|
11
|
-
: ''
|
|
17
|
+
export default function useTheme({ palette }: ThemeProps) {
|
|
18
|
+
const themePalette: CustomPaletteTypes = {
|
|
19
|
+
'--will-primary': palette?.primary,
|
|
20
|
+
'--will-secondary': palette?.secondary,
|
|
21
|
+
}
|
|
12
22
|
|
|
13
|
-
return
|
|
23
|
+
return themePalette
|
|
14
24
|
}
|