@kaizen/components 0.0.0-canary-tsx-codemod-20241029235345 → 0.0.0-canary-fix-icon-size-20241107223933
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/bin/codemod.sh +1 -1
- package/codemods/README.md +1 -1
- package/dist/cjs/ButtonGroup/ButtonGroup.cjs +1 -1
- package/dist/cjs/Filter/Filter/Filter.cjs +4 -1
- package/dist/cjs/Filter/Filter/Filter.module.css.cjs +6 -0
- package/dist/cjs/Filter/FilterBar/FilterBar.cjs +4 -2
- package/dist/cjs/Filter/FilterBar/FilterBar.module.css.cjs +8 -0
- package/dist/cjs/Filter/FilterBar/subcomponents/FilterBarButton/FilterBarButton.cjs +9 -3
- package/dist/cjs/Filter/FilterBar/subcomponents/FilterBarButton/FilterBarButton.module.css.cjs +6 -0
- package/dist/cjs/Filter/FilterBar/subcomponents/FilterBarMultiSelect/FilterBarMultiSelect.cjs +7 -2
- package/dist/cjs/Filter/FilterBar/subcomponents/FilterBarMultiSelect/FilterBarMultiSelect.module.css.cjs +6 -0
- package/dist/cjs/Filter/FilterButton/FilterButton/FilterButton.cjs +1 -1
- package/dist/cjs/Filter/FilterButton/FilterButton/FilterButton.module.css.cjs +9 -0
- package/dist/cjs/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.cjs +5 -1
- package/dist/cjs/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.module.css.cjs +6 -0
- package/dist/cjs/Filter/FilterMultiSelect/FilterMultiSelect.cjs +5 -2
- package/dist/cjs/Filter/FilterMultiSelect/subcomponents/Trigger/RemovableFilterTrigger/RemovableFilterTrigger.cjs +4 -1
- package/dist/cjs/Filter/FilterMultiSelect/subcomponents/Trigger/RemovableFilterTrigger/RemovableFilterTrigger.module.css.cjs +6 -0
- package/dist/cjs/__future__/Icon/Icon.cjs +1 -1
- package/dist/cjs/__future__/Icon/Icon.module.css.cjs +1 -0
- package/dist/esm/ButtonGroup/ButtonGroup.mjs +1 -1
- package/dist/esm/Filter/Filter/Filter.mjs +3 -1
- package/dist/esm/Filter/Filter/Filter.module.css.mjs +4 -0
- package/dist/esm/Filter/FilterBar/FilterBar.mjs +4 -2
- package/dist/esm/Filter/FilterBar/FilterBar.module.css.mjs +6 -0
- package/dist/esm/Filter/FilterBar/subcomponents/FilterBarButton/FilterBarButton.mjs +8 -3
- package/dist/esm/Filter/FilterBar/subcomponents/FilterBarButton/FilterBarButton.module.css.mjs +4 -0
- package/dist/esm/Filter/FilterBar/subcomponents/FilterBarMultiSelect/FilterBarMultiSelect.mjs +7 -2
- package/dist/esm/Filter/FilterBar/subcomponents/FilterBarMultiSelect/FilterBarMultiSelect.module.css.mjs +4 -0
- package/dist/esm/Filter/FilterButton/FilterButton/FilterButton.mjs +1 -1
- package/dist/esm/Filter/FilterButton/FilterButton/FilterButton.module.css.mjs +7 -0
- package/dist/esm/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.mjs +4 -1
- package/dist/esm/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.module.css.mjs +4 -0
- package/dist/esm/Filter/FilterMultiSelect/FilterMultiSelect.mjs +5 -2
- package/dist/esm/Filter/FilterMultiSelect/subcomponents/Trigger/RemovableFilterTrigger/RemovableFilterTrigger.mjs +3 -1
- package/dist/esm/Filter/FilterMultiSelect/subcomponents/Trigger/RemovableFilterTrigger/RemovableFilterTrigger.module.css.mjs +4 -0
- package/dist/esm/__future__/Icon/Icon.mjs +1 -1
- package/dist/esm/__future__/Icon/Icon.module.css.mjs +1 -0
- package/dist/styles.css +72 -26
- package/dist/types/Filter/FilterMultiSelect/FilterMultiSelect.d.ts +2 -1
- package/package.json +11 -9
- package/src/ButtonGroup/ButtonGroup.tsx +4 -1
- package/src/Filter/Filter/Filter.module.css +5 -0
- package/src/Filter/Filter/Filter.tsx +6 -1
- package/src/Filter/FilterBar/FilterBar.module.css +23 -0
- package/src/Filter/FilterBar/FilterBar.tsx +15 -13
- package/src/Filter/FilterBar/_docs/FilterBar.stories.tsx +5 -0
- package/src/Filter/FilterBar/subcomponents/FilterBarButton/FilterBarButton.module.css +3 -0
- package/src/Filter/FilterBar/subcomponents/FilterBarButton/FilterBarButton.tsx +36 -18
- package/src/Filter/FilterBar/subcomponents/FilterBarMultiSelect/FilterBarMultiSelect.module.css +5 -0
- package/src/Filter/FilterBar/subcomponents/FilterBarMultiSelect/FilterBarMultiSelect.tsx +7 -1
- package/src/Filter/FilterButton/FilterButton/FilterButton.module.css +23 -0
- package/src/Filter/FilterButton/FilterButton/FilterButton.tsx +1 -1
- package/src/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.module.css +3 -0
- package/src/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.tsx +10 -1
- package/src/Filter/FilterButton/subcomponents/FilterButtonBase/FilterButtonBase.module.scss +2 -2
- package/src/Filter/FilterMultiSelect/FilterMultiSelect.tsx +3 -1
- package/src/Filter/FilterMultiSelect/subcomponents/Trigger/RemovableFilterTrigger/RemovableFilterTrigger.module.css +3 -0
- package/src/Filter/FilterMultiSelect/subcomponents/Trigger/RemovableFilterTrigger/RemovableFilterTrigger.tsx +6 -1
- package/src/__future__/Icon/Icon.module.css +12 -0
- package/src/__future__/Icon/Icon.tsx +1 -0
- package/dist/cjs/Filter/FilterBar/FilterBar.module.scss.cjs +0 -7
- package/dist/cjs/Filter/FilterButton/FilterButton/FilterButton.module.scss.cjs +0 -9
- package/dist/esm/Filter/FilterBar/FilterBar.module.scss.mjs +0 -5
- package/dist/esm/Filter/FilterButton/FilterButton/FilterButton.module.scss.mjs +0 -7
- package/src/Filter/FilterBar/FilterBar.module.scss +0 -19
- package/src/Filter/FilterButton/FilterButton/FilterButton.module.scss +0 -22
package/dist/styles.css
CHANGED
|
@@ -173,9 +173,6 @@
|
|
|
173
173
|
--button-icon-size: var(--spacing-16);
|
|
174
174
|
gap: var(--spacing-8);
|
|
175
175
|
}
|
|
176
|
-
.Focusable-module_focusableWrapper__NfuIi {
|
|
177
|
-
display: inline-flex;
|
|
178
|
-
}
|
|
179
176
|
.MenuItem-module_item__DPerF {
|
|
180
177
|
font-family: var(--typography-paragraph-body-font-family);
|
|
181
178
|
font-size: var(--typography-paragraph-body-font-size);
|
|
@@ -210,6 +207,9 @@
|
|
|
210
207
|
.MenuItem-module_item__DPerF[data-disabled] {
|
|
211
208
|
opacity: 0.3;
|
|
212
209
|
}
|
|
210
|
+
.Focusable-module_focusableWrapper__NfuIi {
|
|
211
|
+
display: inline-flex;
|
|
212
|
+
}
|
|
213
213
|
/** THIS IS AN AUTOGENERATED FILE **/
|
|
214
214
|
/** THIS IS AN AUTOGENERATED FILE **/
|
|
215
215
|
.OverlayArrow-module_overlayArrow__hoDyK {
|
|
@@ -250,6 +250,18 @@
|
|
|
250
250
|
"opsz" var(--icon-optical-size, var(--icon-size, 20));
|
|
251
251
|
}
|
|
252
252
|
|
|
253
|
+
.Icon-module_icon__CkmHY.Icon-module_IconOverride__5s4BE {
|
|
254
|
+
font-size: calc(1px * var(--icon-size, 20));
|
|
255
|
+
font-weight: var(--icon-font-weight, 400);
|
|
256
|
+
vertical-align: var(--icon-vertical-align);
|
|
257
|
+
|
|
258
|
+
/* Must use vars otherwise whole attribute must be set again */
|
|
259
|
+
font-variation-settings:
|
|
260
|
+
"FILL" var(--icon-fill, 0),
|
|
261
|
+
"GRAD" var(--icon-grade, 0),
|
|
262
|
+
"opsz" var(--icon-optical-size, var(--icon-size, 20));
|
|
263
|
+
}
|
|
264
|
+
|
|
253
265
|
.Icon-module_filled__-VArQ {
|
|
254
266
|
--icon-fill: 1;
|
|
255
267
|
}
|
|
@@ -1765,7 +1777,7 @@
|
|
|
1765
1777
|
position: relative;
|
|
1766
1778
|
display: inline-flex;
|
|
1767
1779
|
align-items: center;
|
|
1768
|
-
height: 3rem;
|
|
1780
|
+
min-height: 3rem;
|
|
1769
1781
|
padding: var(--spacing-sm, 0.75rem);
|
|
1770
1782
|
border-width: 0;
|
|
1771
1783
|
border-radius: var(--border-solid-border-radius, 7px);
|
|
@@ -1776,7 +1788,7 @@
|
|
|
1776
1788
|
line-height: var(--typography-button-secondary-line-height, 1.5rem);
|
|
1777
1789
|
letter-spacing: var(--typography-button-secondary-letter-spacing, normal);
|
|
1778
1790
|
color: var(--color-blue-500, #0168b3);
|
|
1779
|
-
|
|
1791
|
+
text-align: start;
|
|
1780
1792
|
}
|
|
1781
1793
|
.FilterButtonBase-module_filterButtonBase__ImByM:hover, .FilterButtonBase-module_filterButtonBase__ImByM:active {
|
|
1782
1794
|
z-index: 2;
|
|
@@ -4052,6 +4064,12 @@ input[type=range].InputRange-module_ratingScaleRange__gI-rs::-ms-thumb:not(:disa
|
|
|
4052
4064
|
border-radius: var(--border-borderless-border-radius, 7px);
|
|
4053
4065
|
display: inline-flex;
|
|
4054
4066
|
}
|
|
4067
|
+
@media (width < 768px) {
|
|
4068
|
+
.Filter-module_filter__u3IkC {
|
|
4069
|
+
flex-basis: 100%;
|
|
4070
|
+
}
|
|
4071
|
+
}
|
|
4072
|
+
|
|
4055
4073
|
/** THIS IS AN AUTOGENERATED FILE **/
|
|
4056
4074
|
.FilterContents-module_filterContents__tQWu8 {
|
|
4057
4075
|
padding: var(--spacing-md, 1.5rem);
|
|
@@ -4065,26 +4083,38 @@ input[type=range].InputRange-module_ratingScaleRange__gI-rs::-ms-thumb:not(:disa
|
|
|
4065
4083
|
display: grid;
|
|
4066
4084
|
gap: var(--spacing-16, 1rem);
|
|
4067
4085
|
}
|
|
4068
|
-
|
|
4069
|
-
|
|
4070
|
-
|
|
4071
|
-
|
|
4086
|
+
.FilterButton-module_filterButton__Fn1OD {
|
|
4087
|
+
gap: var(--spacing-6);
|
|
4088
|
+
justify-content: space-between;
|
|
4089
|
+
}
|
|
4090
|
+
|
|
4091
|
+
@media (width < 768px) {
|
|
4092
|
+
.FilterButton-module_filterButton__Fn1OD {
|
|
4093
|
+
flex-grow: 1;
|
|
4094
|
+
}
|
|
4072
4095
|
}
|
|
4073
4096
|
|
|
4074
|
-
.FilterButton-
|
|
4097
|
+
.FilterButton-module_labelContainer__sPAcx {
|
|
4075
4098
|
display: inline-flex;
|
|
4099
|
+
flex-wrap: wrap;
|
|
4076
4100
|
}
|
|
4077
4101
|
|
|
4078
|
-
.FilterButton-
|
|
4102
|
+
.FilterButton-module_hasSelectedValues__bHR5g {
|
|
4079
4103
|
font-weight: bold;
|
|
4080
4104
|
}
|
|
4081
4105
|
|
|
4082
|
-
.FilterButton-
|
|
4083
|
-
margin-inline-end: var(--spacing-
|
|
4106
|
+
.FilterButton-module_labelSeparator__KimZO {
|
|
4107
|
+
margin-inline-end: var(--spacing-6);
|
|
4084
4108
|
}
|
|
4085
|
-
|
|
4086
|
-
|
|
4109
|
+
|
|
4110
|
+
.FilterButtonRemovable-module_filterButtonBase__V4xk8 {
|
|
4111
|
+
height: 100%;
|
|
4112
|
+
}
|
|
4113
|
+
|
|
4114
|
+
.FilterBarButton-module_filterBarButton__3IF-- {
|
|
4115
|
+
width: 100%;
|
|
4087
4116
|
}
|
|
4117
|
+
|
|
4088
4118
|
/** THIS IS AN AUTOGENERATED FILE **/
|
|
4089
4119
|
.DateRangeDisplayLabel-module_dateRangeDisplayLabel__g7nVd {
|
|
4090
4120
|
display: inline-flex;
|
|
@@ -4374,6 +4404,16 @@ input[type=range].InputRange-module_ratingScaleRange__gI-rs::-ms-thumb:not(:disa
|
|
|
4374
4404
|
.SelectionControlButton-module_button__u-ysH.SelectionControlButton-module_isDisabled__0axMR:focus-visible::after {
|
|
4375
4405
|
border-color: var(--color-gray-400, #cdcdd0);
|
|
4376
4406
|
}
|
|
4407
|
+
.RemovableFilterTrigger-module_filterButtonRemovable__-M4wV {
|
|
4408
|
+
width: 100%;
|
|
4409
|
+
}
|
|
4410
|
+
|
|
4411
|
+
@media (width < 768px) {
|
|
4412
|
+
.FilterBarMultiSelect-module_filterMultiSelect__a4enz {
|
|
4413
|
+
flex-basis: 100%;
|
|
4414
|
+
}
|
|
4415
|
+
}
|
|
4416
|
+
|
|
4377
4417
|
.ListBox-module_listBox__Uf6Mc {
|
|
4378
4418
|
list-style: none;
|
|
4379
4419
|
margin-top: 0;
|
|
@@ -4623,24 +4663,30 @@ input[type=range].InputRange-module_ratingScaleRange__gI-rs::-ms-thumb:not(:disa
|
|
|
4623
4663
|
.ClearAllButton-module_clearAllButton__XNkm2 {
|
|
4624
4664
|
white-space: nowrap;
|
|
4625
4665
|
}
|
|
4626
|
-
|
|
4627
|
-
|
|
4628
|
-
|
|
4629
|
-
|
|
4630
|
-
.FilterBar-
|
|
4666
|
+
.FilterBar-module_wrapper__D8GXq {
|
|
4667
|
+
container: filter-bar-wrapper / inline-size;
|
|
4668
|
+
}
|
|
4669
|
+
|
|
4670
|
+
.FilterBar-module_filterBar__JEVKL {
|
|
4631
4671
|
display: flex;
|
|
4632
|
-
padding: var(--spacing-8
|
|
4633
|
-
|
|
4634
|
-
|
|
4635
|
-
|
|
4672
|
+
padding: var(--spacing-8);
|
|
4673
|
+
border-radius: var(--border-solid-border-radius);
|
|
4674
|
+
background-color: var(--color-white);
|
|
4675
|
+
}
|
|
4676
|
+
|
|
4677
|
+
@media (width < 768px) {
|
|
4678
|
+
.FilterBar-module_filterBar__JEVKL {
|
|
4679
|
+
flex-direction: column;
|
|
4680
|
+
}
|
|
4636
4681
|
}
|
|
4637
4682
|
|
|
4638
|
-
.FilterBar-
|
|
4683
|
+
.FilterBar-module_filtersContainer__Xl-DO {
|
|
4639
4684
|
display: flex;
|
|
4640
4685
|
flex-grow: 1;
|
|
4641
4686
|
flex-wrap: wrap;
|
|
4642
|
-
gap: var(--spacing-8
|
|
4687
|
+
gap: var(--spacing-8);
|
|
4643
4688
|
}
|
|
4689
|
+
|
|
4644
4690
|
/** THIS IS AN AUTOGENERATED FILE **/
|
|
4645
4691
|
/** THIS IS AN AUTOGENERATED FILE **/
|
|
4646
4692
|
/** THIS IS AN AUTOGENERATED FILE **/
|
|
@@ -16,9 +16,10 @@ export type FilterMultiSelectProps = {
|
|
|
16
16
|
trigger: (value?: MenuTriggerProviderContextType) => React.ReactNode;
|
|
17
17
|
children: (value?: SelectionProviderContextType) => React.ReactNode;
|
|
18
18
|
triggerRef?: React.RefObject<HTMLButtonElement>;
|
|
19
|
+
className?: string;
|
|
19
20
|
} & Omit<MenuPopupProps, "children"> & Omit<MenuTriggerProviderProps, "children"> & SelectionProps;
|
|
20
21
|
export declare const FilterMultiSelect: {
|
|
21
|
-
({ trigger, children, isOpen, defaultOpen, onOpenChange, isLoading, loadingSkeleton, label, items, selectedKeys, defaultSelectedKeys, onSelectionChange, selectionMode, onSearchInputChange, triggerRef, }: FilterMultiSelectProps): JSX.Element;
|
|
22
|
+
({ trigger, children, isOpen, defaultOpen, onOpenChange, isLoading, loadingSkeleton, label, items, selectedKeys, defaultSelectedKeys, onSelectionChange, selectionMode, onSearchInputChange, triggerRef, className, }: FilterMultiSelectProps): JSX.Element;
|
|
22
23
|
displayName: string;
|
|
23
24
|
TriggerButton: {
|
|
24
25
|
({ selectedOptionLabels, label, classNameOverride, labelCharacterLimitBeforeTruncate, }: import("./subcomponents/Trigger").FilterTriggerButtonProps): JSX.Element;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kaizen/components",
|
|
3
|
-
"version": "0.0.0-canary-
|
|
3
|
+
"version": "0.0.0-canary-fix-icon-size-20241107223933",
|
|
4
4
|
"description": "Kaizen component library",
|
|
5
5
|
"author": "Geoffrey Chong <geoff.chong@cultureamp.com>",
|
|
6
6
|
"homepage": "https://cultureamp.design",
|
|
@@ -113,27 +113,29 @@
|
|
|
113
113
|
"react-highlight": "^0.15.0",
|
|
114
114
|
"react-intl": "^6.8.4",
|
|
115
115
|
"rollup": "^4.24.2",
|
|
116
|
-
"sass": "
|
|
116
|
+
"sass": "1.79.6",
|
|
117
117
|
"serialize-query-params": "^2.0.2",
|
|
118
118
|
"svgo": "^3.3.2",
|
|
119
119
|
"tslib": "^2.8.0",
|
|
120
120
|
"tsx": "^4.19.2",
|
|
121
|
-
"@kaizen/design-tokens": "
|
|
122
|
-
"@kaizen/package-bundler": "1.1.
|
|
121
|
+
"@kaizen/design-tokens": "10.8.1",
|
|
122
|
+
"@kaizen/package-bundler": "1.1.9"
|
|
123
|
+
},
|
|
124
|
+
"devDependenciesComments": {
|
|
125
|
+
"sass": "Prevent deprecation warnings introduced in 1.80 as we plan to move away from sass",
|
|
126
|
+
"typescript": "Installed in root"
|
|
123
127
|
},
|
|
124
128
|
"peerDependencies": {
|
|
125
129
|
"@cultureamp/i18n-react-intl": "^2.5.9",
|
|
126
130
|
"react": "^18.3.1",
|
|
127
131
|
"react-dom": "^18.3.1",
|
|
128
132
|
"react-intl": "^6.6.8",
|
|
129
|
-
"typescript": "
|
|
130
|
-
},
|
|
131
|
-
"peerDependenciesComments": {
|
|
132
|
-
"typescript": "Used for codemods"
|
|
133
|
+
"typescript": "5.x"
|
|
133
134
|
},
|
|
134
135
|
"peerDependenciesMeta": {
|
|
135
136
|
"typescript": {
|
|
136
|
-
"optional": true
|
|
137
|
+
"optional": true,
|
|
138
|
+
"comments": "Used for codemods"
|
|
137
139
|
}
|
|
138
140
|
},
|
|
139
141
|
"scripts": {
|
|
@@ -50,7 +50,10 @@ export const ButtonGroup = ({
|
|
|
50
50
|
if (isFilterButton(button)) {
|
|
51
51
|
return React.cloneElement(child, {
|
|
52
52
|
children: React.cloneElement(button, {
|
|
53
|
-
classNameOverride:
|
|
53
|
+
classNameOverride: classnames(
|
|
54
|
+
button.props.classNameOverride,
|
|
55
|
+
buttonClassNames
|
|
56
|
+
),
|
|
54
57
|
}),
|
|
55
58
|
})
|
|
56
59
|
}
|
|
@@ -5,10 +5,12 @@ import React, {
|
|
|
5
5
|
useRef,
|
|
6
6
|
useState,
|
|
7
7
|
} from "react"
|
|
8
|
+
import classnames from "classnames"
|
|
8
9
|
import { FocusOn } from "react-focus-on"
|
|
9
10
|
import { OverrideClassName } from "~components/types/OverrideClassName"
|
|
10
11
|
import { FilterPopover } from "./subcomponents/FilterPopover"
|
|
11
12
|
import { FilterTriggerRef } from "./types"
|
|
13
|
+
import styles from "./Filter.module.css"
|
|
12
14
|
|
|
13
15
|
export type FilterProps = {
|
|
14
16
|
children: React.ReactNode
|
|
@@ -54,7 +56,10 @@ export const Filter = ({
|
|
|
54
56
|
}, [filterButtonRef.current?.triggerRef?.current, onMount])
|
|
55
57
|
|
|
56
58
|
return (
|
|
57
|
-
<div
|
|
59
|
+
<div
|
|
60
|
+
className={classnames(styles.filter, classNameOverride)}
|
|
61
|
+
{...restProps}
|
|
62
|
+
>
|
|
58
63
|
{React.cloneElement(trigger, {
|
|
59
64
|
ref: filterButtonRef,
|
|
60
65
|
})}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
.wrapper {
|
|
2
|
+
container: filter-bar-wrapper / inline-size;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.filterBar {
|
|
6
|
+
display: flex;
|
|
7
|
+
padding: var(--spacing-8);
|
|
8
|
+
border-radius: var(--border-solid-border-radius);
|
|
9
|
+
background-color: var(--color-white);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
@media (width < 768px) {
|
|
13
|
+
.filterBar {
|
|
14
|
+
flex-direction: column;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.filtersContainer {
|
|
19
|
+
display: flex;
|
|
20
|
+
flex-grow: 1;
|
|
21
|
+
flex-wrap: wrap;
|
|
22
|
+
gap: var(--spacing-8);
|
|
23
|
+
}
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
import { AddFiltersMenu } from "./subcomponents/AddFiltersMenu"
|
|
15
15
|
import { ClearAllButton } from "./subcomponents/ClearAllButton"
|
|
16
16
|
import { FiltersValues } from "./types"
|
|
17
|
-
import styles from "./FilterBar.module.
|
|
17
|
+
import styles from "./FilterBar.module.css"
|
|
18
18
|
|
|
19
19
|
export type FilterBarProps<ValuesMap extends FiltersValues> = OverrideClassName<
|
|
20
20
|
Omit<FilterBarProviderProps<ValuesMap>, "children">
|
|
@@ -27,19 +27,21 @@ export const FilterBar = <ValuesMap extends FiltersValues>({
|
|
|
27
27
|
}: FilterBarProps<ValuesMap>): JSX.Element => (
|
|
28
28
|
<FilterBarProvider<ValuesMap> filters={filters} {...providerProps}>
|
|
29
29
|
{(activeFilters): JSX.Element => (
|
|
30
|
-
<div className={
|
|
31
|
-
<div className={styles.
|
|
32
|
-
{
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
30
|
+
<div className={styles.wrapper}>
|
|
31
|
+
<div className={classnames(styles.filterBar, classNameOverride)}>
|
|
32
|
+
<div className={styles.filtersContainer}>
|
|
33
|
+
{Object.values(activeFilters).map(({ id, Component }) => (
|
|
34
|
+
// `id` will always be `string`, but keyof ValuesMap transformed it
|
|
35
|
+
<React.Fragment key={id as string}>
|
|
36
|
+
{React.cloneElement(Component, { id })}
|
|
37
|
+
</React.Fragment>
|
|
38
|
+
))}
|
|
39
|
+
<AddFiltersMenu />
|
|
40
|
+
</div>
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
<div>
|
|
43
|
+
<ClearAllButton />
|
|
44
|
+
</div>
|
|
43
45
|
</div>
|
|
44
46
|
</div>
|
|
45
47
|
)}
|
|
@@ -152,6 +152,11 @@ const filters = [
|
|
|
152
152
|
{ value: "none", label: "None" },
|
|
153
153
|
{ value: "pearls", label: "Pearls" },
|
|
154
154
|
{ value: "fruit-jelly", label: "Fruit Jelly" },
|
|
155
|
+
{ value: "peanuts", label: "Peanuts" },
|
|
156
|
+
{ value: "coconut", label: "Coconut" },
|
|
157
|
+
{ value: "aloe", label: "Aloe Vera" },
|
|
158
|
+
{ value: "mochi", label: "Mini Mochi" },
|
|
159
|
+
{ value: "popping-pearls", label: "Popping Pearls" },
|
|
155
160
|
]}
|
|
156
161
|
>
|
|
157
162
|
{(): JSX.Element => (
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React, { forwardRef, useEffect } from "react"
|
|
2
|
+
import classnames from "classnames"
|
|
2
3
|
import { FilterTriggerRef } from "~components/Filter/Filter"
|
|
3
4
|
import { useFilterBarContext } from "~components/Filter/FilterBar/context/FilterBarContext"
|
|
4
5
|
import {
|
|
@@ -7,6 +8,7 @@ import {
|
|
|
7
8
|
FilterButtonRemovable,
|
|
8
9
|
} from "~components/Filter/FilterButton"
|
|
9
10
|
import { isRefObject } from "~components/utils/isRefObject"
|
|
11
|
+
import styles from "./FilterBarButton.module.css"
|
|
10
12
|
|
|
11
13
|
export type FilterBarButtonProps = FilterButtonProps & {
|
|
12
14
|
filterId: string
|
|
@@ -16,25 +18,41 @@ export type FilterBarButtonProps = FilterButtonProps & {
|
|
|
16
18
|
export const FilterBarButton = forwardRef<
|
|
17
19
|
FilterTriggerRef,
|
|
18
20
|
FilterBarButtonProps
|
|
19
|
-
>(
|
|
20
|
-
|
|
21
|
+
>(
|
|
22
|
+
(
|
|
23
|
+
{ filterId, isRemovable = false, classNameOverride, ...props },
|
|
24
|
+
ref
|
|
25
|
+
): JSX.Element => {
|
|
26
|
+
const { hideFilter, focusId, setFocus } = useFilterBarContext()
|
|
21
27
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
if (focusId === filterId && isRefObject(ref)) {
|
|
30
|
+
ref?.current?.triggerRef?.current?.focus()
|
|
31
|
+
setFocus(undefined)
|
|
32
|
+
}
|
|
33
|
+
}, [focusId])
|
|
28
34
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
return isRemovable ? (
|
|
36
|
+
<FilterButtonRemovable
|
|
37
|
+
ref={ref}
|
|
38
|
+
triggerButtonProps={props}
|
|
39
|
+
removeButtonProps={{ onClick: () => hideFilter(filterId) }}
|
|
40
|
+
classNameOverride={classnames(
|
|
41
|
+
classNameOverride,
|
|
42
|
+
styles.filterBarButton
|
|
43
|
+
)}
|
|
44
|
+
/>
|
|
45
|
+
) : (
|
|
46
|
+
<FilterButton
|
|
47
|
+
ref={ref}
|
|
48
|
+
classNameOverride={classnames(
|
|
49
|
+
classNameOverride,
|
|
50
|
+
styles.filterBarButton
|
|
51
|
+
)}
|
|
52
|
+
{...props}
|
|
53
|
+
/>
|
|
54
|
+
)
|
|
55
|
+
}
|
|
56
|
+
)
|
|
39
57
|
|
|
40
58
|
FilterBarButton.displayName = "FilterBar.Button"
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
} from "~components/Filter/FilterMultiSelect"
|
|
9
9
|
import { useFilterBarContext } from "../../context/FilterBarContext"
|
|
10
10
|
import { checkArraysMatch } from "../../utils/checkArraysMatch"
|
|
11
|
+
import styles from "./FilterBarMultiSelect.module.css"
|
|
11
12
|
|
|
12
13
|
export type FilterBarMultiSelectProps = Omit<
|
|
13
14
|
FilterMultiSelectProps,
|
|
@@ -97,6 +98,7 @@ export const FilterBarMultiSelect = ({
|
|
|
97
98
|
items={items}
|
|
98
99
|
isOpen={filterState.isOpen}
|
|
99
100
|
onOpenChange={(open): void => setFilterOpenState(id, open)}
|
|
101
|
+
className={styles.filterMultiSelect}
|
|
100
102
|
trigger={(): JSX.Element => {
|
|
101
103
|
const triggerProps = {
|
|
102
104
|
selectedOptionLabels: filterState.value
|
|
@@ -112,9 +114,13 @@ export const FilterBarMultiSelect = ({
|
|
|
112
114
|
<FilterMultiSelect.RemovableTrigger
|
|
113
115
|
{...triggerProps}
|
|
114
116
|
onRemove={() => hideFilter(id)}
|
|
117
|
+
classNameOverride={styles.triggerButton}
|
|
115
118
|
/>
|
|
116
119
|
) : (
|
|
117
|
-
<FilterMultiSelect.TriggerButton
|
|
120
|
+
<FilterMultiSelect.TriggerButton
|
|
121
|
+
classNameOverride={styles.triggerButton}
|
|
122
|
+
{...triggerProps}
|
|
123
|
+
/>
|
|
118
124
|
)
|
|
119
125
|
}}
|
|
120
126
|
triggerRef={buttonRef}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
.filterButton {
|
|
2
|
+
gap: var(--spacing-6);
|
|
3
|
+
justify-content: space-between;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
@media (width < 768px) {
|
|
7
|
+
.filterButton {
|
|
8
|
+
flex-grow: 1;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.labelContainer {
|
|
13
|
+
display: inline-flex;
|
|
14
|
+
flex-wrap: wrap;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.hasSelectedValues {
|
|
18
|
+
font-weight: bold;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.labelSeparator {
|
|
22
|
+
margin-inline-end: var(--spacing-6);
|
|
23
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { forwardRef } from "react"
|
|
2
2
|
import { useIntl } from "@cultureamp/i18n-react-intl"
|
|
3
|
+
import classnames from "classnames"
|
|
3
4
|
import { ButtonGroup, ButtonGroupProps } from "~components/ButtonGroup"
|
|
4
5
|
import { FilterTriggerRef } from "~components/Filter/Filter"
|
|
5
6
|
import { Icon } from "~components/__future__/Icon"
|
|
@@ -11,6 +12,7 @@ import {
|
|
|
11
12
|
FilterButtonBase,
|
|
12
13
|
FilterButtonBaseProps,
|
|
13
14
|
} from "../subcomponents/FilterButtonBase"
|
|
15
|
+
import styles from "./FilterButtonRemovable.module.css"
|
|
14
16
|
|
|
15
17
|
export type FilterButtonRemovableProps = {
|
|
16
18
|
triggerButtonProps: FilterButtonProps & DataAttributes
|
|
@@ -49,7 +51,14 @@ export const FilterButtonRemovable = forwardRef<
|
|
|
49
51
|
<ButtonGroup {...restProps}>
|
|
50
52
|
<FilterButton ref={ref} {...triggerButtonProps} />
|
|
51
53
|
<Tooltip text={removeButtonLabel} display="inline-block" position="below">
|
|
52
|
-
<FilterButtonBase
|
|
54
|
+
<FilterButtonBase
|
|
55
|
+
ref={removeButtonRef}
|
|
56
|
+
classNameOverride={classnames(
|
|
57
|
+
styles.filterButtonBase,
|
|
58
|
+
restProps.classNameOverride
|
|
59
|
+
)}
|
|
60
|
+
{...removeButtonProps}
|
|
61
|
+
>
|
|
53
62
|
<Icon name="cancel" alt={removeButtonLabel} isFilled />
|
|
54
63
|
</FilterButtonBase>
|
|
55
64
|
</Tooltip>
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
position: relative;
|
|
14
14
|
display: inline-flex;
|
|
15
15
|
align-items: center;
|
|
16
|
-
height: 3rem; // 48px
|
|
16
|
+
min-height: 3rem; // 48px
|
|
17
17
|
padding: $spacing-sm;
|
|
18
18
|
border-width: 0;
|
|
19
19
|
border-radius: $border-solid-border-radius;
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
line-height: $typography-button-secondary-line-height;
|
|
25
25
|
letter-spacing: $typography-button-secondary-letter-spacing;
|
|
26
26
|
color: $color-blue-500;
|
|
27
|
-
|
|
27
|
+
text-align: start;
|
|
28
28
|
|
|
29
29
|
&:hover,
|
|
30
30
|
&:active {
|
|
@@ -42,6 +42,7 @@ export type FilterMultiSelectProps = {
|
|
|
42
42
|
trigger: (value?: MenuTriggerProviderContextType) => React.ReactNode
|
|
43
43
|
children: (value?: SelectionProviderContextType) => React.ReactNode // the content of the menu
|
|
44
44
|
triggerRef?: React.RefObject<HTMLButtonElement>
|
|
45
|
+
className?: string
|
|
45
46
|
} & Omit<MenuPopupProps, "children"> &
|
|
46
47
|
Omit<MenuTriggerProviderProps, "children"> &
|
|
47
48
|
SelectionProps
|
|
@@ -62,6 +63,7 @@ export const FilterMultiSelect = ({
|
|
|
62
63
|
selectionMode = "multiple",
|
|
63
64
|
onSearchInputChange,
|
|
64
65
|
triggerRef,
|
|
66
|
+
className,
|
|
65
67
|
}: FilterMultiSelectProps): JSX.Element => {
|
|
66
68
|
const menuTriggerProps = { isOpen, defaultOpen, onOpenChange, triggerRef }
|
|
67
69
|
const menuPopupProps = { isLoading, loadingSkeleton }
|
|
@@ -83,7 +85,7 @@ export const FilterMultiSelect = ({
|
|
|
83
85
|
|
|
84
86
|
return (
|
|
85
87
|
<MenuTriggerProvider {...menuTriggerProps}>
|
|
86
|
-
<div>
|
|
88
|
+
<div className={className}>
|
|
87
89
|
<MenuTriggerConsumer>{trigger}</MenuTriggerConsumer>
|
|
88
90
|
<MenuPopup {...menuPopupProps}>
|
|
89
91
|
<SelectionProvider {...selectionProps}>
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import React, { useRef } from "react"
|
|
2
|
+
import classnames from "classnames"
|
|
2
3
|
import { FilterTriggerRef } from "~components/Filter/Filter"
|
|
3
4
|
import { FilterButtonRemovable } from "~components/Filter/FilterButton"
|
|
4
5
|
import { useMenuTriggerContext } from "../../../context"
|
|
5
6
|
import { getTruncatedLabels } from "../../../utils"
|
|
6
7
|
import { FilterTriggerButtonProps } from "../FilterTriggerButton"
|
|
8
|
+
import styles from "./RemovableFilterTrigger.module.css"
|
|
7
9
|
|
|
8
10
|
export type RemovableFilterTriggerProps = FilterTriggerButtonProps & {
|
|
9
11
|
onRemove: () => void
|
|
@@ -22,7 +24,10 @@ export const RemovableFilterTrigger = ({
|
|
|
22
24
|
return (
|
|
23
25
|
<FilterButtonRemovable
|
|
24
26
|
ref={ref}
|
|
25
|
-
classNameOverride={
|
|
27
|
+
classNameOverride={classnames(
|
|
28
|
+
styles.filterButtonRemovable,
|
|
29
|
+
classNameOverride
|
|
30
|
+
)}
|
|
26
31
|
triggerButtonProps={{
|
|
27
32
|
...buttonProps,
|
|
28
33
|
label,
|
|
@@ -10,6 +10,18 @@
|
|
|
10
10
|
"opsz" var(--icon-optical-size, var(--icon-size, 20));
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
.icon.IconOverride {
|
|
14
|
+
font-size: calc(1px * var(--icon-size, 20));
|
|
15
|
+
font-weight: var(--icon-font-weight, 400);
|
|
16
|
+
vertical-align: var(--icon-vertical-align);
|
|
17
|
+
|
|
18
|
+
/* Must use vars otherwise whole attribute must be set again */
|
|
19
|
+
font-variation-settings:
|
|
20
|
+
"FILL" var(--icon-fill, 0),
|
|
21
|
+
"GRAD" var(--icon-grade, 0),
|
|
22
|
+
"opsz" var(--icon-optical-size, var(--icon-size, 20));
|
|
23
|
+
}
|
|
24
|
+
|
|
13
25
|
.filled {
|
|
14
26
|
--icon-fill: 1;
|
|
15
27
|
}
|