@coveord/plasma-mantine 53.0.0 → 53.1.0
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/.turbo/turbo-build.log +3 -3
- package/.turbo/turbo-test.log +33 -33
- package/dist/.tsbuildinfo +1 -1
- package/dist/cjs/components/inline-confirm/InlineConfirm.d.ts +2 -4
- package/dist/cjs/components/inline-confirm/InlineConfirm.d.ts.map +1 -1
- package/dist/cjs/components/inline-confirm/InlineConfirm.js +2 -2
- package/dist/cjs/components/inline-confirm/InlineConfirm.js.map +1 -1
- package/dist/cjs/components/sticky-footer/StickyFooter.d.ts +8 -1
- package/dist/cjs/components/sticky-footer/StickyFooter.d.ts.map +1 -1
- package/dist/cjs/components/sticky-footer/StickyFooter.js.map +1 -1
- package/dist/cjs/components/sticky-footer/StickyFooter.module.css +9 -0
- package/dist/cjs/components/table/Table.module.css +1 -2
- package/dist/cjs/components/table/layouts/row-layout/RowLayoutHeader.d.ts.map +1 -1
- package/dist/cjs/components/table/layouts/row-layout/RowLayoutHeader.js +2 -1
- package/dist/cjs/components/table/layouts/row-layout/RowLayoutHeader.js.map +1 -1
- package/dist/cjs/components/table/table-column/TableCollapsibleColumn.js +1 -1
- package/dist/cjs/components/table/table-column/TableCollapsibleColumn.js.map +1 -1
- package/dist/cjs/components/table/table-header/TableHeader.d.ts.map +1 -1
- package/dist/cjs/components/table/table-header/TableHeader.js +0 -2
- package/dist/cjs/components/table/table-header/TableHeader.js.map +1 -1
- package/dist/cjs/components/table/table-per-page/TablePerPage.d.ts.map +1 -1
- package/dist/cjs/components/table/table-per-page/TablePerPage.js +0 -1
- package/dist/cjs/components/table/table-per-page/TablePerPage.js.map +1 -1
- package/dist/cjs/styles/Alert.module.css +31 -1
- package/dist/cjs/styles/Pagination.module.css +27 -0
- package/dist/cjs/styles/SegmentedControl.module.css +32 -0
- package/dist/cjs/theme/Theme.d.ts.map +1 -1
- package/dist/cjs/theme/Theme.js +19 -8
- package/dist/cjs/theme/Theme.js.map +1 -1
- package/dist/esm/components/inline-confirm/InlineConfirm.d.ts +2 -4
- package/dist/esm/components/inline-confirm/InlineConfirm.d.ts.map +1 -1
- package/dist/esm/components/inline-confirm/InlineConfirm.js +3 -3
- package/dist/esm/components/inline-confirm/InlineConfirm.js.map +1 -1
- package/dist/esm/components/sticky-footer/StickyFooter.d.ts +8 -1
- package/dist/esm/components/sticky-footer/StickyFooter.d.ts.map +1 -1
- package/dist/esm/components/sticky-footer/StickyFooter.js.map +1 -1
- package/dist/esm/components/sticky-footer/StickyFooter.module.css +9 -0
- package/dist/esm/components/table/Table.module.css +1 -2
- package/dist/esm/components/table/layouts/row-layout/RowLayoutHeader.d.ts.map +1 -1
- package/dist/esm/components/table/layouts/row-layout/RowLayoutHeader.js +1 -1
- package/dist/esm/components/table/layouts/row-layout/RowLayoutHeader.js.map +1 -1
- package/dist/esm/components/table/table-column/TableCollapsibleColumn.js +1 -1
- package/dist/esm/components/table/table-column/TableCollapsibleColumn.js.map +1 -1
- package/dist/esm/components/table/table-header/TableHeader.d.ts.map +1 -1
- package/dist/esm/components/table/table-header/TableHeader.js +0 -2
- package/dist/esm/components/table/table-header/TableHeader.js.map +1 -1
- package/dist/esm/components/table/table-per-page/TablePerPage.d.ts.map +1 -1
- package/dist/esm/components/table/table-per-page/TablePerPage.js +0 -1
- package/dist/esm/components/table/table-per-page/TablePerPage.js.map +1 -1
- package/dist/esm/styles/Alert.module.css +31 -1
- package/dist/esm/styles/Pagination.module.css +27 -0
- package/dist/esm/styles/SegmentedControl.module.css +32 -0
- package/dist/esm/theme/Theme.d.ts.map +1 -1
- package/dist/esm/theme/Theme.js +19 -10
- package/dist/esm/theme/Theme.js.map +1 -1
- package/package.json +5 -5
- package/src/components/inline-confirm/InlineConfirm.tsx +4 -6
- package/src/components/inline-confirm/__tests__/InlineConfirm.spec.tsx +2 -2
- package/src/components/sticky-footer/StickyFooter.module.css +9 -0
- package/src/components/sticky-footer/StickyFooter.tsx +8 -1
- package/src/components/table/Table.module.css +1 -2
- package/src/components/table/layouts/row-layout/RowLayoutHeader.tsx +2 -5
- package/src/components/table/table-column/TableCollapsibleColumn.tsx +1 -1
- package/src/components/table/table-header/TableHeader.tsx +1 -7
- package/src/components/table/table-per-page/TablePerPage.tsx +0 -1
- package/src/styles/Alert.module.css +31 -1
- package/src/styles/Pagination.module.css +27 -0
- package/src/styles/SegmentedControl.module.css +32 -0
- package/src/theme/Theme.tsx +22 -4
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {Factory, StylesApiProps, useProps} from '@mantine/core';
|
|
2
|
+
import {MantineComponent} from '@mantine/core/lib/core/factory/factory';
|
|
2
3
|
import {Children, ReactElement, ReactNode, useState} from 'react';
|
|
3
4
|
import {InlineConfirmProvider} from './InlineConfirmContext';
|
|
4
5
|
import {InlineConfirmPrompt} from './InlineConfirmPrompt';
|
|
5
6
|
|
|
6
7
|
import {InlineConfirmTarget} from './InlineConfirmTarget';
|
|
7
8
|
|
|
8
|
-
export type InlineConfirmStyleNames = 'root';
|
|
9
|
-
|
|
10
9
|
export interface InlineConfirmProps extends StylesApiProps<InlineConfirmFactory> {
|
|
11
10
|
/**
|
|
12
11
|
* The content of the component. Should contain at least one `InlineConfirm.Target` and one `InlineConfirm.Prompt` with matching ids
|
|
@@ -17,7 +16,6 @@ export interface InlineConfirmProps extends StylesApiProps<InlineConfirmFactory>
|
|
|
17
16
|
export type InlineConfirmFactory = Factory<{
|
|
18
17
|
props: InlineConfirmProps;
|
|
19
18
|
ref: never;
|
|
20
|
-
stylesNames: InlineConfirmStyleNames;
|
|
21
19
|
staticComponents: {
|
|
22
20
|
Prompt: typeof InlineConfirmPrompt;
|
|
23
21
|
Target: typeof InlineConfirmTarget;
|
|
@@ -26,7 +24,7 @@ export type InlineConfirmFactory = Factory<{
|
|
|
26
24
|
|
|
27
25
|
const defaultProps: Partial<InlineConfirmProps> = {};
|
|
28
26
|
|
|
29
|
-
export const InlineConfirm =
|
|
27
|
+
export const InlineConfirm = ((_props) => {
|
|
30
28
|
const {children} = useProps('InlineConfirm', defaultProps, _props);
|
|
31
29
|
const [confirmingId, setConfirmingId] = useState<string | null>(null);
|
|
32
30
|
|
|
@@ -41,7 +39,7 @@ export const InlineConfirm = factory<InlineConfirmFactory>((_props) => {
|
|
|
41
39
|
{prompt ?? children}
|
|
42
40
|
</InlineConfirmProvider>
|
|
43
41
|
);
|
|
44
|
-
})
|
|
42
|
+
}) as MantineComponent<InlineConfirmFactory>;
|
|
45
43
|
|
|
46
44
|
InlineConfirm.Prompt = InlineConfirmPrompt;
|
|
47
45
|
InlineConfirm.Target = InlineConfirmTarget;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {Button, Menu
|
|
1
|
+
import {Button, Menu} from '@mantine/core';
|
|
2
2
|
import {render, screen, userEvent} from '@test-utils';
|
|
3
3
|
|
|
4
4
|
import {InlineConfirm} from '../InlineConfirm';
|
|
@@ -36,7 +36,7 @@ describe('InlineConfirm', () => {
|
|
|
36
36
|
<button>open menu</button>
|
|
37
37
|
</Menu.Target>
|
|
38
38
|
<Menu.Dropdown>
|
|
39
|
-
<InlineConfirm.Target component={
|
|
39
|
+
<InlineConfirm.Target component={Menu.Item} id="delete" onClick={onClickSpy}>
|
|
40
40
|
Delete
|
|
41
41
|
</InlineConfirm.Target>
|
|
42
42
|
</Menu.Dropdown>
|
|
@@ -4,6 +4,15 @@
|
|
|
4
4
|
z-index: 10;
|
|
5
5
|
background-color: white;
|
|
6
6
|
padding: var(--mantine-spacing-md) var(--mantine-spacing-lg);
|
|
7
|
+
|
|
8
|
+
&[data-variant='modal-footer'] {
|
|
9
|
+
border-top: 1px solid var(--mantine-color-gray-3);
|
|
10
|
+
padding-bottom: 0;
|
|
11
|
+
margin-top: var(--mb-padding);
|
|
12
|
+
margin-bottom: calc(var(--mantine-spacing-md) - var(--mb-padding));
|
|
13
|
+
margin-left: calc(-1 * var(--mb-padding));
|
|
14
|
+
margin-right: calc(-1 * var(--mb-padding));
|
|
15
|
+
}
|
|
7
16
|
}
|
|
8
17
|
|
|
9
18
|
.border {
|
|
@@ -4,7 +4,7 @@ import {ReactNode} from 'react';
|
|
|
4
4
|
import classes from './StickyFooter.module.css';
|
|
5
5
|
|
|
6
6
|
export interface StickyFooterProps
|
|
7
|
-
extends Omit<GroupProps, 'classNames' | 'styles' | 'vars'>,
|
|
7
|
+
extends Omit<GroupProps, 'classNames' | 'styles' | 'vars' | 'variant'>,
|
|
8
8
|
StylesApiProps<StickyFooterFactory> {
|
|
9
9
|
/**
|
|
10
10
|
* Whether a border is render on top of the footer
|
|
@@ -14,6 +14,13 @@ export interface StickyFooterProps
|
|
|
14
14
|
* Footer's children, usually buttons
|
|
15
15
|
*/
|
|
16
16
|
children?: ReactNode;
|
|
17
|
+
/**
|
|
18
|
+
* Use variant 'modal-footer' when rendering the `StickyFooter` inside `Modal`.
|
|
19
|
+
*
|
|
20
|
+
* The 'modal-footer' removes the modal's default padding so that the footer properly hugs the bottom of the modal.
|
|
21
|
+
* It also adds a border on top of the footer.
|
|
22
|
+
*/
|
|
23
|
+
variant?: 'default' | 'modal-footer';
|
|
17
24
|
}
|
|
18
25
|
|
|
19
26
|
export type StickyFooterStylesNames = 'root';
|
|
@@ -35,8 +35,7 @@
|
|
|
35
35
|
.headerRoot {
|
|
36
36
|
border-bottom: 1px solid var(--mantine-color-gray-3);
|
|
37
37
|
background-color: var(--mantine-color-gray-1);
|
|
38
|
-
padding
|
|
39
|
-
padding-right: var(--mantine-spacing-lg);
|
|
38
|
+
padding: var(--mantine-spacing-sm) var(--mantine-spacing-xl);
|
|
40
39
|
position: relative;
|
|
41
40
|
}
|
|
42
41
|
|
|
@@ -26,11 +26,8 @@ const defaultProps: Partial<RowLayoutHeaderProps<unknown>> = {};
|
|
|
26
26
|
|
|
27
27
|
export const RowLayoutHeader = <T,>(props: RowLayoutHeaderProps<T> & {ref?: ForwardedRef<HTMLTableRowElement>}) => {
|
|
28
28
|
const ctx = useRowLayout();
|
|
29
|
-
const {table, getExpandChildren, loading, className, style, classNames, styles, ...others} =
|
|
30
|
-
'RowLayoutHeader',
|
|
31
|
-
defaultProps as RowLayoutHeaderProps<T>,
|
|
32
|
-
props,
|
|
33
|
-
);
|
|
29
|
+
const {table, getExpandChildren, loading, doubleClickAction, className, style, classNames, styles, ...others} =
|
|
30
|
+
useProps('RowLayoutHeader', defaultProps as RowLayoutHeaderProps<T>, props);
|
|
34
31
|
const {multiRowSelectionEnabled, disableRowSelection} = useTable();
|
|
35
32
|
|
|
36
33
|
const headers = table.getHeaderGroups().map((headerGroup) => (
|
|
@@ -43,13 +43,7 @@ export const TableHeader = factory<TableHeaderFactory>((props, ref) => {
|
|
|
43
43
|
const gridStyles = ctx.getStyles('headerGrid', stylesApiProps);
|
|
44
44
|
|
|
45
45
|
return (
|
|
46
|
-
<Box
|
|
47
|
-
py="sm"
|
|
48
|
-
px="lg"
|
|
49
|
-
ref={ref}
|
|
50
|
-
{...ctx.getStyles('headerRoot', {className, style, ...stylesApiProps})}
|
|
51
|
-
{...others}
|
|
52
|
-
>
|
|
46
|
+
<Box ref={ref} {...ctx.getStyles('headerRoot', {className, style, ...stylesApiProps})} {...others}>
|
|
53
47
|
<Grid
|
|
54
48
|
justify="flex-start"
|
|
55
49
|
align="center"
|
|
@@ -26,7 +26,6 @@ export const TablePerPage: FunctionComponent<TablePerPageProps> & {DEFAULT_SIZE:
|
|
|
26
26
|
value={state.pagination.pageSize.toString() ?? values?.[1].toString()}
|
|
27
27
|
onChange={updatePerPage}
|
|
28
28
|
data={values.map((value) => value.toString())}
|
|
29
|
-
color="action"
|
|
30
29
|
size="sm"
|
|
31
30
|
/>
|
|
32
31
|
</Group>
|
|
@@ -1,3 +1,33 @@
|
|
|
1
|
+
.root {
|
|
2
|
+
padding: var(--mantine-spacing-sm);
|
|
3
|
+
&:not(&[data-variant]) {
|
|
4
|
+
border-color: color-mix(in srgb, var(--alert-color), var(--alert-bg) 85%);
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.wrapper {
|
|
9
|
+
gap: var(--mantine-spacing-sm);
|
|
10
|
+
}
|
|
11
|
+
|
|
1
12
|
.title {
|
|
2
|
-
font-weight:
|
|
13
|
+
font-weight: 500;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.icon {
|
|
17
|
+
width: 16px;
|
|
18
|
+
height: 16px;
|
|
19
|
+
margin-right: 0;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.message {
|
|
23
|
+
@mixin light {
|
|
24
|
+
color: var(--mantine-color-gray-7);
|
|
25
|
+
&:where([data-variant='filled']) {
|
|
26
|
+
color: var(--alert-color);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
&:where([data-variant='white']) {
|
|
31
|
+
color: var(--mantine-color-black);
|
|
32
|
+
}
|
|
3
33
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
.root {
|
|
2
|
+
--pagination-control-fz: var(--mantine-font-size-sm);
|
|
3
|
+
color: var(--mantine-color-gray-6);
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.control {
|
|
7
|
+
color: var(--mantine-color-gray-6);
|
|
8
|
+
|
|
9
|
+
@mixin light {
|
|
10
|
+
border-color: var(--mantine-color-gray-3);
|
|
11
|
+
@mixin hover {
|
|
12
|
+
&:where(:not(:disabled, [data-disabled])) {
|
|
13
|
+
background-color: var(--mantine-primary-color-1);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
&:where([data-active]) {
|
|
19
|
+
@mixin light {
|
|
20
|
+
border-color: var(--pagination-active-bg);
|
|
21
|
+
color: var(--pagination-active-color, var(--mantine-color-white));
|
|
22
|
+
@mixin hover {
|
|
23
|
+
background-color: var(--pagination-active-bg);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -1,3 +1,35 @@
|
|
|
1
1
|
.root {
|
|
2
2
|
background-color: var(--mantine-color-gray-2);
|
|
3
3
|
}
|
|
4
|
+
|
|
5
|
+
.indicator {
|
|
6
|
+
border-radius: var(--sc-radius, var(--mantine-radius-sm));
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.label {
|
|
10
|
+
font-weight: 300;
|
|
11
|
+
|
|
12
|
+
@mixin light {
|
|
13
|
+
color: var(--mantine-color-gray-6);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
&:where([data-disabled]) {
|
|
17
|
+
@mixin light {
|
|
18
|
+
color: var(--mantine-color-gray-5);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
&:where([data-active]) {
|
|
23
|
+
@mixin light {
|
|
24
|
+
color: var(--sc-label-color, var(--mantine-color-black));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
&:where(:not([data-disabled], [data-active], [data-read-only])) {
|
|
29
|
+
@mixin hover {
|
|
30
|
+
@mixin light {
|
|
31
|
+
color: var(--mantine-color-black);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
package/src/theme/Theme.tsx
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
ArrowHeadLeftSize16Px,
|
|
3
|
+
ArrowHeadRightSize16Px,
|
|
4
|
+
CheckSize16Px,
|
|
5
|
+
CrossSize16Px,
|
|
6
|
+
FilterSize16Px,
|
|
7
|
+
InfoSize16Px,
|
|
8
|
+
InfoSize24Px,
|
|
9
|
+
} from '@coveord/plasma-react-icons';
|
|
2
10
|
import {color} from '@coveord/plasma-tokens';
|
|
3
11
|
import {
|
|
4
12
|
ActionIcon,
|
|
@@ -23,6 +31,7 @@ import {
|
|
|
23
31
|
MultiSelect,
|
|
24
32
|
NavLink,
|
|
25
33
|
Notification,
|
|
34
|
+
Pagination,
|
|
26
35
|
Popover,
|
|
27
36
|
Radio,
|
|
28
37
|
ScrollArea,
|
|
@@ -53,6 +62,7 @@ import ListClasses from '../styles/List.module.css';
|
|
|
53
62
|
import ModalClasses from '../styles/Modal.module.css';
|
|
54
63
|
import NavLinkClasses from '../styles/NavLink.module.css';
|
|
55
64
|
import NotificationClasses from '../styles/Notification.module.css';
|
|
65
|
+
import PaginationClasses from '../styles/Pagination.module.css';
|
|
56
66
|
import RadioClasses from '../styles/Radio.module.css';
|
|
57
67
|
import ScrollAreaClasses from '../styles/ScrollArea.module.css';
|
|
58
68
|
import SegmentedControlClasses from '../styles/SegmentedControl.module.css';
|
|
@@ -107,10 +117,10 @@ export const plasmaTheme: MantineThemeOverride = createTheme({
|
|
|
107
117
|
}),
|
|
108
118
|
Alert: Alert.extend({
|
|
109
119
|
defaultProps: {
|
|
110
|
-
icon: <
|
|
120
|
+
icon: <InfoSize16Px height={16} />,
|
|
111
121
|
color: 'navy',
|
|
112
122
|
},
|
|
113
|
-
classNames:
|
|
123
|
+
classNames: AlertClasses,
|
|
114
124
|
}),
|
|
115
125
|
Anchor: Anchor.extend({
|
|
116
126
|
defaultProps: {
|
|
@@ -213,6 +223,14 @@ export const plasmaTheme: MantineThemeOverride = createTheme({
|
|
|
213
223
|
},
|
|
214
224
|
vars: NotificationVars,
|
|
215
225
|
}),
|
|
226
|
+
Pagination: Pagination.extend({
|
|
227
|
+
classNames: PaginationClasses,
|
|
228
|
+
vars: () => ({root: {'--pagination-control-fz': 'var(--mantine-font-size-sm)'}}),
|
|
229
|
+
defaultProps: {
|
|
230
|
+
nextIcon: ArrowHeadRightSize16Px,
|
|
231
|
+
previousIcon: ArrowHeadLeftSize16Px,
|
|
232
|
+
},
|
|
233
|
+
}),
|
|
216
234
|
Popover: Popover.extend({
|
|
217
235
|
defaultProps: {
|
|
218
236
|
shadow: 'md',
|
|
@@ -226,7 +244,7 @@ export const plasmaTheme: MantineThemeOverride = createTheme({
|
|
|
226
244
|
classNames: {viewport: ScrollAreaClasses.viewport},
|
|
227
245
|
}),
|
|
228
246
|
SegmentedControl: SegmentedControl.extend({
|
|
229
|
-
classNames:
|
|
247
|
+
classNames: SegmentedControlClasses,
|
|
230
248
|
}),
|
|
231
249
|
Select: Select.extend({
|
|
232
250
|
defaultProps: {withCheckIcon: false, allowDeselect: false},
|