@coveord/plasma-mantine 48.21.0 → 48.22.5

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.
@@ -11,6 +11,7 @@ Object.defineProperty(exports, "TableFilter", {
11
11
  var _defineProperty = require("@swc/helpers/lib/_define_property.js").default;
12
12
  var _objectSpread = require("@swc/helpers/lib/_object_spread.js").default;
13
13
  var _objectSpreadProps = require("@swc/helpers/lib/_object_spread_props.js").default;
14
+ var _objectWithoutProperties = require("@swc/helpers/lib/_object_without_properties.js").default;
14
15
  var _jsxRuntime = require("react/jsx-runtime");
15
16
  var _plasmaReactIcons = require("@coveord/plasma-react-icons");
16
17
  var _core = require("@mantine/core");
@@ -25,9 +26,19 @@ var useStyles = (0, _core.createStyles)(function(theme) {
25
26
  }
26
27
  };
27
28
  });
28
- var TableFilter = function(param) {
29
- var _param_placeholder = param.placeholder, placeholder = _param_placeholder === void 0 ? "Search by any field" : _param_placeholder;
30
- var _useStyles = useStyles(), classes = _useStyles.classes, cx = _useStyles.cx;
29
+ var TableFilter = function(_param) {
30
+ var _param_placeholder = _param.placeholder, placeholder = _param_placeholder === void 0 ? "Search by any field" : _param_placeholder, classNames = _param.classNames, styles = _param.styles, unstyled = _param.unstyled, others = _objectWithoutProperties(_param, [
31
+ "placeholder",
32
+ "classNames",
33
+ "styles",
34
+ "unstyled"
35
+ ]);
36
+ var _useStyles = useStyles(null, {
37
+ name: "TableHeader",
38
+ classNames: classNames,
39
+ styles: styles,
40
+ unstyled: unstyled
41
+ }), classes = _useStyles.classes, cx = _useStyles.cx;
31
42
  var _useTable1 = (0, _useTable.useTable)(), state = _useTable1.state, setState = _useTable1.setState;
32
43
  var handleSearchChange = function(event) {
33
44
  var value = event.currentTarget.value;
@@ -37,7 +48,7 @@ var TableFilter = function(param) {
37
48
  });
38
49
  });
39
50
  };
40
- return /*#__PURE__*/ (0, _jsxRuntime.jsx)(_core.TextInput, {
51
+ return /*#__PURE__*/ (0, _jsxRuntime.jsx)(_core.TextInput, _objectSpread({
41
52
  className: classes.wrapper,
42
53
  placeholder: placeholder,
43
54
  mb: "md",
@@ -47,7 +58,7 @@ var TableFilter = function(param) {
47
58
  }),
48
59
  value: state.globalFilter,
49
60
  onChange: handleSearchChange
50
- });
61
+ }, others));
51
62
  };
52
63
 
53
64
  //# sourceMappingURL=TableFilter.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/table/TableFilter.tsx"],"sourcesContent":["import {SearchSize16Px} from '@coveord/plasma-react-icons';\nimport {createStyles, TextInput} from '@mantine/core';\nimport {TableState} from '@tanstack/react-table';\nimport {ChangeEvent, FunctionComponent} from 'react';\nimport {useTable} from './useTable';\n\nconst useStyles = createStyles((theme) => ({\n wrapper: {\n marginBottom: '0 !important',\n },\n empty: {\n color: theme.colors.gray[4],\n },\n}));\n\ninterface TableFilterProps {\n /**\n * The placeholder for the filter input\n *\n * @default \"Search by any field\"\n */\n placeholder?: string;\n}\n\nexport const TableFilter: FunctionComponent<TableFilterProps> = ({placeholder = 'Search by any field'}) => {\n const {classes, cx} = useStyles();\n const {state, setState} = useTable();\n\n const handleSearchChange = (event: ChangeEvent<HTMLInputElement>) => {\n const {value} = event.currentTarget;\n setState((prevState: TableState) => ({...prevState, globalFilter: value}));\n };\n\n return (\n <TextInput\n className={classes.wrapper}\n placeholder={placeholder}\n mb=\"md\"\n rightSection={<SearchSize16Px height={14} className={cx({[classes.empty]: !state.globalFilter})} />}\n value={state.globalFilter}\n onChange={handleSearchChange}\n />\n );\n};\n"],"names":["TableFilter","useStyles","createStyles","theme","wrapper","marginBottom","empty","color","colors","gray","placeholder","classes","cx","useTable","state","setState","handleSearchChange","event","value","currentTarget","prevState","globalFilter","TextInput","className","mb","rightSection","SearchSize16Px","height","onChange"],"mappings":"AAAA;;;;+BAwBaA;;;eAAAA;;;;;;;gCAxBgB;oBACS;wBAGf;AAEvB,IAAMC,YAAYC,IAAAA,kBAAY,EAAC,SAACC;WAAW;QACvCC,SAAS;YACLC,cAAc;QAClB;QACAC,OAAO;YACHC,OAAOJ,MAAMK,MAAM,CAACC,IAAI,CAAC,EAAE;QAC/B;IACJ;;AAWO,IAAMT,cAAmD,gBAA2C;mCAAzCU,aAAAA,8CAAc;IAC5E,IAAsBT,aAAAA,aAAfU,UAAeV,WAAfU,SAASC,KAAMX,WAANW;IAChB,IAA0BC,aAAAA,IAAAA,kBAAQ,KAA3BC,QAAmBD,WAAnBC,OAAOC,WAAYF,WAAZE;IAEd,IAAMC,qBAAqB,SAACC,OAAyC;QACjE,IAAM,AAACC,QAASD,MAAME,aAAa,CAA5BD;QACPH,SAAS,SAACK;mBAA2B,qCAAIA;gBAAWC,cAAcH;;;IACtE;IAEA,qBACI,qBAACI,eAAS;QACNC,WAAWZ,QAAQP,OAAO;QAC1BM,aAAaA;QACbc,IAAG;QACHC,4BAAc,qBAACC,gCAAc;YAACC,QAAQ;YAAIJ,WAAWX,GAAI,oBAACD,QAAQL,KAAK,EAAG,CAACQ,MAAMO,YAAY;;QAC7FH,OAAOJ,MAAMO,YAAY;QACzBO,UAAUZ;;AAGtB"}
1
+ {"version":3,"sources":["../../../../src/components/table/TableFilter.tsx"],"sourcesContent":["import {SearchSize16Px} from '@coveord/plasma-react-icons';\nimport {createStyles, TextInput, Selectors, DefaultProps} from '@mantine/core';\nimport {TableState} from '@tanstack/react-table';\nimport {ChangeEvent, FunctionComponent} from 'react';\nimport {useTable} from './useTable';\n\nconst useStyles = createStyles((theme) => ({\n wrapper: {\n marginBottom: '0 !important',\n },\n empty: {\n color: theme.colors.gray[4],\n },\n}));\n\ntype TableFilterStylesNames = Selectors<typeof useStyles>;\ninterface TableFilterProps extends DefaultProps<TableFilterStylesNames> {\n /**\n * The placeholder for the filter input\n *\n * @default \"Search by any field\"\n */\n placeholder?: string;\n}\n\nexport const TableFilter: FunctionComponent<TableFilterProps> = ({\n placeholder = 'Search by any field',\n classNames,\n styles,\n unstyled,\n ...others\n}) => {\n const {classes, cx} = useStyles(null, {name: 'TableHeader', classNames, styles, unstyled});\n const {state, setState} = useTable();\n\n const handleSearchChange = (event: ChangeEvent<HTMLInputElement>) => {\n const {value} = event.currentTarget;\n setState((prevState: TableState) => ({...prevState, globalFilter: value}));\n };\n\n return (\n <TextInput\n className={classes.wrapper}\n placeholder={placeholder}\n mb=\"md\"\n rightSection={<SearchSize16Px height={14} className={cx({[classes.empty]: !state.globalFilter})} />}\n value={state.globalFilter}\n onChange={handleSearchChange}\n {...others}\n />\n );\n};\n"],"names":["TableFilter","useStyles","createStyles","theme","wrapper","marginBottom","empty","color","colors","gray","placeholder","classNames","styles","unstyled","others","name","classes","cx","useTable","state","setState","handleSearchChange","event","value","currentTarget","prevState","globalFilter","TextInput","className","mb","rightSection","SearchSize16Px","height","onChange"],"mappings":"AAAA;;;;+BAyBaA;;;eAAAA;;;;;;;;gCAzBgB;oBACkC;wBAGxC;AAEvB,IAAMC,YAAYC,IAAAA,kBAAY,EAAC,SAACC;WAAW;QACvCC,SAAS;YACLC,cAAc;QAClB;QACAC,OAAO;YACHC,OAAOJ,MAAMK,MAAM,CAACC,IAAI,CAAC,EAAE;QAC/B;IACJ;;AAYO,IAAMT,cAAmD,iBAM1D;oCALFU,aAAAA,8CAAc,4CACdC,oBAAAA,YACAC,gBAAAA,QACAC,kBAAAA,UACGC;QAJHJ;QACAC;QACAC;QACAC;;IAGA,IAAsBZ,aAAAA,UAAU,IAAI,EAAE;QAACc,MAAM;QAAeJ,YAAAA;QAAYC,QAAAA;QAAQC,UAAAA;IAAQ,IAAjFG,UAAef,WAAfe,SAASC,KAAMhB,WAANgB;IAChB,IAA0BC,aAAAA,IAAAA,kBAAQ,KAA3BC,QAAmBD,WAAnBC,OAAOC,WAAYF,WAAZE;IAEd,IAAMC,qBAAqB,SAACC,OAAyC;QACjE,IAAM,AAACC,QAASD,MAAME,aAAa,CAA5BD;QACPH,SAAS,SAACK;mBAA2B,qCAAIA;gBAAWC,cAAcH;;;IACtE;IAEA,qBACI,qBAACI,eAAS;QACNC,WAAWZ,QAAQZ,OAAO;QAC1BM,aAAaA;QACbmB,IAAG;QACHC,4BAAc,qBAACC,gCAAc;YAACC,QAAQ;YAAIJ,WAAWX,GAAI,oBAACD,QAAQV,KAAK,EAAG,CAACa,MAAMO,YAAY;;QAC7FH,OAAOJ,MAAMO,YAAY;QACzBO,UAAUZ;OACNP;AAGhB"}
@@ -23,9 +23,10 @@ var TablePerPage = function(param) {
23
23
  var updatePerPage = function(newPerPage) {
24
24
  setState(function(prevState) {
25
25
  return _objectSpreadProps(_objectSpread({}, prevState), {
26
- pagination: _objectSpreadProps(_objectSpread({}, prevState.pagination), {
26
+ pagination: {
27
+ pageIndex: 0,
27
28
  pageSize: parseInt(newPerPage, 10)
28
- })
29
+ }
29
30
  });
30
31
  });
31
32
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/table/TablePerPage.tsx"],"sourcesContent":["import {Group, SegmentedControl, Text} from '@mantine/core';\nimport {TableState} from '@tanstack/react-table';\nimport {FunctionComponent} from 'react';\n\nimport {useTable} from './useTable';\n\ninterface TablePerPageProps {\n /**\n * The label displayed before the control\n *\n * @default Results per page\n */\n label?: string;\n /**\n * The per page choices to display\n *\n * @default [25, 50, 100]\n */\n values?: number[];\n}\n\nexport const TablePerPage: FunctionComponent<TablePerPageProps> & {DEFAULT_SIZE: number} = ({\n label = 'Results per page',\n values = [25, 50, 100],\n}) => {\n const {state, setState} = useTable();\n\n const updatePerPage = (newPerPage: string) => {\n setState((prevState: TableState) => ({\n ...prevState,\n pagination: {...prevState.pagination, pageSize: parseInt(newPerPage, 10)},\n }));\n };\n\n return (\n <Group>\n <Text>{label}</Text>\n <SegmentedControl\n value={state.pagination.pageSize.toString() ?? values?.[1].toString()}\n onChange={updatePerPage}\n data={values.map((value) => value.toString())}\n color=\"action\"\n size=\"md\"\n />\n </Group>\n );\n};\n\nTablePerPage.DEFAULT_SIZE = 50;\n"],"names":["TablePerPage","label","values","useTable","state","setState","updatePerPage","newPerPage","prevState","pagination","pageSize","parseInt","Group","Text","SegmentedControl","value","toString","onChange","data","map","color","size","DEFAULT_SIZE"],"mappings":"AAAA;;;;+BAqBaA;;;eAAAA;;;;;;oBArB+B;wBAIrB;AAiBhB,IAAMA,eAA8E,gBAGrF;6BAFFC,OAAAA,kCAAQ,yDACRC,QAAAA,oCAAS;QAAC;QAAI;QAAI;KAAI;IAEtB,IAA0BC,aAAAA,IAAAA,kBAAQ,KAA3BC,QAAmBD,WAAnBC,OAAOC,WAAYF,WAAZE;IAEd,IAAMC,gBAAgB,SAACC,YAAuB;QAC1CF,SAAS,SAACG;mBAA2B,qCAC9BA;gBACHC,YAAY,qCAAID,UAAUC,UAAU;oBAAEC,UAAUC,SAASJ,YAAY;;;;IAE7E;QAMmBH;IAJnB,qBACI,sBAACQ,WAAK;;0BACF,qBAACC,UAAI;0BAAEZ;;0BACP,qBAACa,sBAAgB;gBACbC,OAAOX,CAAAA,sCAAAA,MAAMK,UAAU,CAACC,QAAQ,CAACM,QAAQ,gBAAlCZ,iDAAAA,sCAAwCF,mBAAAA,oBAAAA,KAAAA,IAAAA,MAAQ,CAAC,EAAE,CAACc,QAAQ,EAAE;gBACrEC,UAAUX;gBACVY,MAAMhB,OAAOiB,GAAG,CAAC,SAACJ;2BAAUA,MAAMC,QAAQ;;gBAC1CI,OAAM;gBACNC,MAAK;;;;AAIrB;AAEArB,aAAasB,YAAY,GAAG"}
1
+ {"version":3,"sources":["../../../../src/components/table/TablePerPage.tsx"],"sourcesContent":["import {Group, SegmentedControl, Text} from '@mantine/core';\nimport {TableState} from '@tanstack/react-table';\nimport {FunctionComponent} from 'react';\n\nimport {useTable} from './useTable';\n\ninterface TablePerPageProps {\n /**\n * The label displayed before the control\n *\n * @default Results per page\n */\n label?: string;\n /**\n * The per page choices to display\n *\n * @default [25, 50, 100]\n */\n values?: number[];\n}\n\nexport const TablePerPage: FunctionComponent<TablePerPageProps> & {DEFAULT_SIZE: number} = ({\n label = 'Results per page',\n values = [25, 50, 100],\n}) => {\n const {state, setState} = useTable();\n\n const updatePerPage = (newPerPage: string) => {\n setState((prevState: TableState) => ({\n ...prevState,\n pagination: {pageIndex: 0, pageSize: parseInt(newPerPage, 10)},\n }));\n };\n\n return (\n <Group>\n <Text>{label}</Text>\n <SegmentedControl\n value={state.pagination.pageSize.toString() ?? values?.[1].toString()}\n onChange={updatePerPage}\n data={values.map((value) => value.toString())}\n color=\"action\"\n size=\"md\"\n />\n </Group>\n );\n};\n\nTablePerPage.DEFAULT_SIZE = 50;\n"],"names":["TablePerPage","label","values","useTable","state","setState","updatePerPage","newPerPage","prevState","pagination","pageIndex","pageSize","parseInt","Group","Text","SegmentedControl","value","toString","onChange","data","map","color","size","DEFAULT_SIZE"],"mappings":"AAAA;;;;+BAqBaA;;;eAAAA;;;;;;oBArB+B;wBAIrB;AAiBhB,IAAMA,eAA8E,gBAGrF;6BAFFC,OAAAA,kCAAQ,yDACRC,QAAAA,oCAAS;QAAC;QAAI;QAAI;KAAI;IAEtB,IAA0BC,aAAAA,IAAAA,kBAAQ,KAA3BC,QAAmBD,WAAnBC,OAAOC,WAAYF,WAAZE;IAEd,IAAMC,gBAAgB,SAACC,YAAuB;QAC1CF,SAAS,SAACG;mBAA2B,qCAC9BA;gBACHC,YAAY;oBAACC,WAAW;oBAAGC,UAAUC,SAASL,YAAY;gBAAG;;;IAErE;QAMmBH;IAJnB,qBACI,sBAACS,WAAK;;0BACF,qBAACC,UAAI;0BAAEb;;0BACP,qBAACc,sBAAgB;gBACbC,OAAOZ,CAAAA,sCAAAA,MAAMK,UAAU,CAACE,QAAQ,CAACM,QAAQ,gBAAlCb,iDAAAA,sCAAwCF,mBAAAA,oBAAAA,KAAAA,IAAAA,MAAQ,CAAC,EAAE,CAACe,QAAQ,EAAE;gBACrEC,UAAUZ;gBACVa,MAAMjB,OAAOkB,GAAG,CAAC,SAACJ;2BAAUA,MAAMC,QAAQ;;gBAC1CI,OAAM;gBACNC,MAAK;;;;AAIrB;AAEAtB,aAAauB,YAAY,GAAG"}
@@ -1,5 +1,12 @@
1
+ import { Selectors, DefaultProps } from '@mantine/core';
1
2
  import { FunctionComponent } from 'react';
2
- interface TableFilterProps {
3
+ declare const useStyles: (params: void, options?: import("@mantine/core").UseStylesOptions<"wrapper" | "empty">) => {
4
+ classes: Record<"wrapper" | "empty", string>;
5
+ cx: (...args: any) => string;
6
+ theme: import("@mantine/core").MantineTheme;
7
+ };
8
+ type TableFilterStylesNames = Selectors<typeof useStyles>;
9
+ interface TableFilterProps extends DefaultProps<TableFilterStylesNames> {
3
10
  /**
4
11
  * The placeholder for the filter input
5
12
  *
@@ -1 +1 @@
1
- {"version":3,"file":"TableFilter.d.ts","sourceRoot":"","sources":["../../../../src/components/table/TableFilter.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAc,iBAAiB,EAAC,MAAM,OAAO,CAAC;AAYrD,UAAU,gBAAgB;IACtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,WAAW,EAAE,iBAAiB,CAAC,gBAAgB,CAmB3D,CAAC"}
1
+ {"version":3,"file":"TableFilter.d.ts","sourceRoot":"","sources":["../../../../src/components/table/TableFilter.tsx"],"names":[],"mappings":"AACA,OAAO,EAA0B,SAAS,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AAE/E,OAAO,EAAc,iBAAiB,EAAC,MAAM,OAAO,CAAC;AAGrD,QAAA,MAAM,SAAS;;;;CAOZ,CAAC;AAEJ,KAAK,sBAAsB,GAAG,SAAS,CAAC,OAAO,SAAS,CAAC,CAAC;AAC1D,UAAU,gBAAiB,SAAQ,YAAY,CAAC,sBAAsB,CAAC;IACnE;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,WAAW,EAAE,iBAAiB,CAAC,gBAAgB,CA0B3D,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import _define_property from "@swc/helpers/src/_define_property.mjs";
2
2
  import _object_spread from "@swc/helpers/src/_object_spread.mjs";
3
3
  import _object_spread_props from "@swc/helpers/src/_object_spread_props.mjs";
4
+ import _object_without_properties from "@swc/helpers/src/_object_without_properties.mjs";
4
5
  import { jsx as _jsx } from "react/jsx-runtime";
5
6
  import { SearchSize16Px } from "@coveord/plasma-react-icons";
6
7
  import { createStyles, TextInput } from "@mantine/core";
@@ -15,9 +16,19 @@ var useStyles = createStyles(function(theme) {
15
16
  }
16
17
  };
17
18
  });
18
- export var TableFilter = function(param) {
19
- var _param_placeholder = param.placeholder, placeholder = _param_placeholder === void 0 ? "Search by any field" : _param_placeholder;
20
- var _useStyles = useStyles(), classes = _useStyles.classes, cx = _useStyles.cx;
19
+ export var TableFilter = function(_param) {
20
+ var _param_placeholder = _param.placeholder, placeholder = _param_placeholder === void 0 ? "Search by any field" : _param_placeholder, classNames = _param.classNames, styles = _param.styles, unstyled = _param.unstyled, others = _object_without_properties(_param, [
21
+ "placeholder",
22
+ "classNames",
23
+ "styles",
24
+ "unstyled"
25
+ ]);
26
+ var _useStyles = useStyles(null, {
27
+ name: "TableHeader",
28
+ classNames: classNames,
29
+ styles: styles,
30
+ unstyled: unstyled
31
+ }), classes = _useStyles.classes, cx = _useStyles.cx;
21
32
  var _useTable = useTable(), state = _useTable.state, setState = _useTable.setState;
22
33
  var handleSearchChange = function(event) {
23
34
  var value = event.currentTarget.value;
@@ -27,7 +38,7 @@ export var TableFilter = function(param) {
27
38
  });
28
39
  });
29
40
  };
30
- return /*#__PURE__*/ _jsx(TextInput, {
41
+ return /*#__PURE__*/ _jsx(TextInput, _object_spread({
31
42
  className: classes.wrapper,
32
43
  placeholder: placeholder,
33
44
  mb: "md",
@@ -37,7 +48,7 @@ export var TableFilter = function(param) {
37
48
  }),
38
49
  value: state.globalFilter,
39
50
  onChange: handleSearchChange
40
- });
51
+ }, others));
41
52
  };
42
53
 
43
54
  //# sourceMappingURL=TableFilter.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/table/TableFilter.tsx"],"sourcesContent":["import {SearchSize16Px} from '@coveord/plasma-react-icons';\nimport {createStyles, TextInput} from '@mantine/core';\nimport {TableState} from '@tanstack/react-table';\nimport {ChangeEvent, FunctionComponent} from 'react';\nimport {useTable} from './useTable';\n\nconst useStyles = createStyles((theme) => ({\n wrapper: {\n marginBottom: '0 !important',\n },\n empty: {\n color: theme.colors.gray[4],\n },\n}));\n\ninterface TableFilterProps {\n /**\n * The placeholder for the filter input\n *\n * @default \"Search by any field\"\n */\n placeholder?: string;\n}\n\nexport const TableFilter: FunctionComponent<TableFilterProps> = ({placeholder = 'Search by any field'}) => {\n const {classes, cx} = useStyles();\n const {state, setState} = useTable();\n\n const handleSearchChange = (event: ChangeEvent<HTMLInputElement>) => {\n const {value} = event.currentTarget;\n setState((prevState: TableState) => ({...prevState, globalFilter: value}));\n };\n\n return (\n <TextInput\n className={classes.wrapper}\n placeholder={placeholder}\n mb=\"md\"\n rightSection={<SearchSize16Px height={14} className={cx({[classes.empty]: !state.globalFilter})} />}\n value={state.globalFilter}\n onChange={handleSearchChange}\n />\n );\n};\n"],"names":["SearchSize16Px","createStyles","TextInput","useTable","useStyles","theme","wrapper","marginBottom","empty","color","colors","gray","TableFilter","placeholder","classes","cx","state","setState","handleSearchChange","event","value","currentTarget","prevState","globalFilter","className","mb","rightSection","height","onChange"],"mappings":"AAAA;;;;AAAA,SAAQA,cAAc,QAAO,8BAA8B;AAC3D,SAAQC,YAAY,EAAEC,SAAS,QAAO,gBAAgB;AAGtD,SAAQC,QAAQ,QAAO,aAAa;AAEpC,IAAMC,YAAYH,aAAa,SAACI;WAAW;QACvCC,SAAS;YACLC,cAAc;QAClB;QACAC,OAAO;YACHC,OAAOJ,MAAMK,MAAM,CAACC,IAAI,CAAC,EAAE;QAC/B;IACJ;;AAWA,OAAO,IAAMC,cAAmD,gBAA2C;mCAAzCC,aAAAA,8CAAc;IAC5E,IAAsBT,aAAAA,aAAfU,UAAeV,WAAfU,SAASC,KAAMX,WAANW;IAChB,IAA0BZ,YAAAA,YAAnBa,QAAmBb,UAAnBa,OAAOC,WAAYd,UAAZc;IAEd,IAAMC,qBAAqB,SAACC,OAAyC;QACjE,IAAM,AAACC,QAASD,MAAME,aAAa,CAA5BD;QACPH,SAAS,SAACK;mBAA2B,wCAAIA;gBAAWC,cAAcH;;;IACtE;IAEA,qBACI,KAAClB;QACGsB,WAAWV,QAAQR,OAAO;QAC1BO,aAAaA;QACbY,IAAG;QACHC,4BAAc,KAAC1B;YAAe2B,QAAQ;YAAIH,WAAWT,GAAI,qBAACD,QAAQN,KAAK,EAAG,CAACQ,MAAMO,YAAY;;QAC7FH,OAAOJ,MAAMO,YAAY;QACzBK,UAAUV;;AAGtB,EAAE"}
1
+ {"version":3,"sources":["../../../../src/components/table/TableFilter.tsx"],"sourcesContent":["import {SearchSize16Px} from '@coveord/plasma-react-icons';\nimport {createStyles, TextInput, Selectors, DefaultProps} from '@mantine/core';\nimport {TableState} from '@tanstack/react-table';\nimport {ChangeEvent, FunctionComponent} from 'react';\nimport {useTable} from './useTable';\n\nconst useStyles = createStyles((theme) => ({\n wrapper: {\n marginBottom: '0 !important',\n },\n empty: {\n color: theme.colors.gray[4],\n },\n}));\n\ntype TableFilterStylesNames = Selectors<typeof useStyles>;\ninterface TableFilterProps extends DefaultProps<TableFilterStylesNames> {\n /**\n * The placeholder for the filter input\n *\n * @default \"Search by any field\"\n */\n placeholder?: string;\n}\n\nexport const TableFilter: FunctionComponent<TableFilterProps> = ({\n placeholder = 'Search by any field',\n classNames,\n styles,\n unstyled,\n ...others\n}) => {\n const {classes, cx} = useStyles(null, {name: 'TableHeader', classNames, styles, unstyled});\n const {state, setState} = useTable();\n\n const handleSearchChange = (event: ChangeEvent<HTMLInputElement>) => {\n const {value} = event.currentTarget;\n setState((prevState: TableState) => ({...prevState, globalFilter: value}));\n };\n\n return (\n <TextInput\n className={classes.wrapper}\n placeholder={placeholder}\n mb=\"md\"\n rightSection={<SearchSize16Px height={14} className={cx({[classes.empty]: !state.globalFilter})} />}\n value={state.globalFilter}\n onChange={handleSearchChange}\n {...others}\n />\n );\n};\n"],"names":["SearchSize16Px","createStyles","TextInput","useTable","useStyles","theme","wrapper","marginBottom","empty","color","colors","gray","TableFilter","placeholder","classNames","styles","unstyled","others","name","classes","cx","state","setState","handleSearchChange","event","value","currentTarget","prevState","globalFilter","className","mb","rightSection","height","onChange"],"mappings":"AAAA;;;;;AAAA,SAAQA,cAAc,QAAO,8BAA8B;AAC3D,SAAQC,YAAY,EAAEC,SAAS,QAAgC,gBAAgB;AAG/E,SAAQC,QAAQ,QAAO,aAAa;AAEpC,IAAMC,YAAYH,aAAa,SAACI;WAAW;QACvCC,SAAS;YACLC,cAAc;QAClB;QACAC,OAAO;YACHC,OAAOJ,MAAMK,MAAM,CAACC,IAAI,CAAC,EAAE;QAC/B;IACJ;;AAYA,OAAO,IAAMC,cAAmD,iBAM1D;oCALFC,aAAAA,8CAAc,4CACdC,oBAAAA,YACAC,gBAAAA,QACAC,kBAAAA,UACGC;QAJHJ;QACAC;QACAC;QACAC;;IAGA,IAAsBZ,aAAAA,UAAU,IAAI,EAAE;QAACc,MAAM;QAAeJ,YAAAA;QAAYC,QAAAA;QAAQC,UAAAA;IAAQ,IAAjFG,UAAef,WAAfe,SAASC,KAAMhB,WAANgB;IAChB,IAA0BjB,YAAAA,YAAnBkB,QAAmBlB,UAAnBkB,OAAOC,WAAYnB,UAAZmB;IAEd,IAAMC,qBAAqB,SAACC,OAAyC;QACjE,IAAM,AAACC,QAASD,MAAME,aAAa,CAA5BD;QACPH,SAAS,SAACK;mBAA2B,wCAAIA;gBAAWC,cAAcH;;;IACtE;IAEA,qBACI,KAACvB;QACG2B,WAAWV,QAAQb,OAAO;QAC1BO,aAAaA;QACbiB,IAAG;QACHC,4BAAc,KAAC/B;YAAegC,QAAQ;YAAIH,WAAWT,GAAI,qBAACD,QAAQX,KAAK,EAAG,CAACa,MAAMO,YAAY;;QAC7FH,OAAOJ,MAAMO,YAAY;QACzBK,UAAUV;OACNN;AAGhB,EAAE"}
@@ -13,9 +13,10 @@ export var TablePerPage = function(param) {
13
13
  var updatePerPage = function(newPerPage) {
14
14
  setState(function(prevState) {
15
15
  return _object_spread_props(_object_spread({}, prevState), {
16
- pagination: _object_spread_props(_object_spread({}, prevState.pagination), {
16
+ pagination: {
17
+ pageIndex: 0,
17
18
  pageSize: parseInt(newPerPage, 10)
18
- })
19
+ }
19
20
  });
20
21
  });
21
22
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/table/TablePerPage.tsx"],"sourcesContent":["import {Group, SegmentedControl, Text} from '@mantine/core';\nimport {TableState} from '@tanstack/react-table';\nimport {FunctionComponent} from 'react';\n\nimport {useTable} from './useTable';\n\ninterface TablePerPageProps {\n /**\n * The label displayed before the control\n *\n * @default Results per page\n */\n label?: string;\n /**\n * The per page choices to display\n *\n * @default [25, 50, 100]\n */\n values?: number[];\n}\n\nexport const TablePerPage: FunctionComponent<TablePerPageProps> & {DEFAULT_SIZE: number} = ({\n label = 'Results per page',\n values = [25, 50, 100],\n}) => {\n const {state, setState} = useTable();\n\n const updatePerPage = (newPerPage: string) => {\n setState((prevState: TableState) => ({\n ...prevState,\n pagination: {...prevState.pagination, pageSize: parseInt(newPerPage, 10)},\n }));\n };\n\n return (\n <Group>\n <Text>{label}</Text>\n <SegmentedControl\n value={state.pagination.pageSize.toString() ?? values?.[1].toString()}\n onChange={updatePerPage}\n data={values.map((value) => value.toString())}\n color=\"action\"\n size=\"md\"\n />\n </Group>\n );\n};\n\nTablePerPage.DEFAULT_SIZE = 50;\n"],"names":["Group","SegmentedControl","Text","useTable","TablePerPage","label","values","state","setState","updatePerPage","newPerPage","prevState","pagination","pageSize","parseInt","value","toString","onChange","data","map","color","size","DEFAULT_SIZE"],"mappings":"AAAA;;;AAAA,SAAQA,KAAK,EAAEC,gBAAgB,EAAEC,IAAI,QAAO,gBAAgB;AAI5D,SAAQC,QAAQ,QAAO,aAAa;AAiBpC,OAAO,IAAMC,eAA8E,gBAGrF;6BAFFC,OAAAA,kCAAQ,yDACRC,QAAAA,oCAAS;QAAC;QAAI;QAAI;KAAI;IAEtB,IAA0BH,YAAAA,YAAnBI,QAAmBJ,UAAnBI,OAAOC,WAAYL,UAAZK;IAEd,IAAMC,gBAAgB,SAACC,YAAuB;QAC1CF,SAAS,SAACG;mBAA2B,wCAC9BA;gBACHC,YAAY,wCAAID,UAAUC,UAAU;oBAAEC,UAAUC,SAASJ,YAAY;;;;IAE7E;QAMmBH;IAJnB,qBACI,MAACP;;0BACG,KAACE;0BAAMG;;0BACP,KAACJ;gBACGc,OAAOR,CAAAA,sCAAAA,MAAMK,UAAU,CAACC,QAAQ,CAACG,QAAQ,gBAAlCT,iDAAAA,sCAAwCD,mBAAAA,oBAAAA,KAAAA,IAAAA,MAAQ,CAAC,EAAE,CAACU,QAAQ,EAAE;gBACrEC,UAAUR;gBACVS,MAAMZ,OAAOa,GAAG,CAAC,SAACJ;2BAAUA,MAAMC,QAAQ;;gBAC1CI,OAAM;gBACNC,MAAK;;;;AAIrB,EAAE;AAEFjB,aAAakB,YAAY,GAAG"}
1
+ {"version":3,"sources":["../../../../src/components/table/TablePerPage.tsx"],"sourcesContent":["import {Group, SegmentedControl, Text} from '@mantine/core';\nimport {TableState} from '@tanstack/react-table';\nimport {FunctionComponent} from 'react';\n\nimport {useTable} from './useTable';\n\ninterface TablePerPageProps {\n /**\n * The label displayed before the control\n *\n * @default Results per page\n */\n label?: string;\n /**\n * The per page choices to display\n *\n * @default [25, 50, 100]\n */\n values?: number[];\n}\n\nexport const TablePerPage: FunctionComponent<TablePerPageProps> & {DEFAULT_SIZE: number} = ({\n label = 'Results per page',\n values = [25, 50, 100],\n}) => {\n const {state, setState} = useTable();\n\n const updatePerPage = (newPerPage: string) => {\n setState((prevState: TableState) => ({\n ...prevState,\n pagination: {pageIndex: 0, pageSize: parseInt(newPerPage, 10)},\n }));\n };\n\n return (\n <Group>\n <Text>{label}</Text>\n <SegmentedControl\n value={state.pagination.pageSize.toString() ?? values?.[1].toString()}\n onChange={updatePerPage}\n data={values.map((value) => value.toString())}\n color=\"action\"\n size=\"md\"\n />\n </Group>\n );\n};\n\nTablePerPage.DEFAULT_SIZE = 50;\n"],"names":["Group","SegmentedControl","Text","useTable","TablePerPage","label","values","state","setState","updatePerPage","newPerPage","prevState","pagination","pageIndex","pageSize","parseInt","value","toString","onChange","data","map","color","size","DEFAULT_SIZE"],"mappings":"AAAA;;;AAAA,SAAQA,KAAK,EAAEC,gBAAgB,EAAEC,IAAI,QAAO,gBAAgB;AAI5D,SAAQC,QAAQ,QAAO,aAAa;AAiBpC,OAAO,IAAMC,eAA8E,gBAGrF;6BAFFC,OAAAA,kCAAQ,yDACRC,QAAAA,oCAAS;QAAC;QAAI;QAAI;KAAI;IAEtB,IAA0BH,YAAAA,YAAnBI,QAAmBJ,UAAnBI,OAAOC,WAAYL,UAAZK;IAEd,IAAMC,gBAAgB,SAACC,YAAuB;QAC1CF,SAAS,SAACG;mBAA2B,wCAC9BA;gBACHC,YAAY;oBAACC,WAAW;oBAAGC,UAAUC,SAASL,YAAY;gBAAG;;;IAErE;QAMmBH;IAJnB,qBACI,MAACP;;0BACG,KAACE;0BAAMG;;0BACP,KAACJ;gBACGe,OAAOT,CAAAA,sCAAAA,MAAMK,UAAU,CAACE,QAAQ,CAACG,QAAQ,gBAAlCV,iDAAAA,sCAAwCD,mBAAAA,oBAAAA,KAAAA,IAAAA,MAAQ,CAAC,EAAE,CAACW,QAAQ,EAAE;gBACrEC,UAAUT;gBACVU,MAAMb,OAAOc,GAAG,CAAC,SAACJ;2BAAUA,MAAMC,QAAQ;;gBAC1CI,OAAM;gBACNC,MAAK;;;;AAIrB,EAAE;AAEFlB,aAAamB,YAAY,GAAG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coveord/plasma-mantine",
3
- "version": "48.21.0",
3
+ "version": "48.22.5",
4
4
  "description": "A Plasma flavoured Mantine theme",
5
5
  "keywords": [
6
6
  "plasma",
@@ -1,5 +1,5 @@
1
1
  import {SearchSize16Px} from '@coveord/plasma-react-icons';
2
- import {createStyles, TextInput} from '@mantine/core';
2
+ import {createStyles, TextInput, Selectors, DefaultProps} from '@mantine/core';
3
3
  import {TableState} from '@tanstack/react-table';
4
4
  import {ChangeEvent, FunctionComponent} from 'react';
5
5
  import {useTable} from './useTable';
@@ -13,7 +13,8 @@ const useStyles = createStyles((theme) => ({
13
13
  },
14
14
  }));
15
15
 
16
- interface TableFilterProps {
16
+ type TableFilterStylesNames = Selectors<typeof useStyles>;
17
+ interface TableFilterProps extends DefaultProps<TableFilterStylesNames> {
17
18
  /**
18
19
  * The placeholder for the filter input
19
20
  *
@@ -22,8 +23,14 @@ interface TableFilterProps {
22
23
  placeholder?: string;
23
24
  }
24
25
 
25
- export const TableFilter: FunctionComponent<TableFilterProps> = ({placeholder = 'Search by any field'}) => {
26
- const {classes, cx} = useStyles();
26
+ export const TableFilter: FunctionComponent<TableFilterProps> = ({
27
+ placeholder = 'Search by any field',
28
+ classNames,
29
+ styles,
30
+ unstyled,
31
+ ...others
32
+ }) => {
33
+ const {classes, cx} = useStyles(null, {name: 'TableHeader', classNames, styles, unstyled});
27
34
  const {state, setState} = useTable();
28
35
 
29
36
  const handleSearchChange = (event: ChangeEvent<HTMLInputElement>) => {
@@ -39,6 +46,7 @@ export const TableFilter: FunctionComponent<TableFilterProps> = ({placeholder =
39
46
  rightSection={<SearchSize16Px height={14} className={cx({[classes.empty]: !state.globalFilter})} />}
40
47
  value={state.globalFilter}
41
48
  onChange={handleSearchChange}
49
+ {...others}
42
50
  />
43
51
  );
44
52
  };
@@ -28,7 +28,7 @@ export const TablePerPage: FunctionComponent<TablePerPageProps> & {DEFAULT_SIZE:
28
28
  const updatePerPage = (newPerPage: string) => {
29
29
  setState((prevState: TableState) => ({
30
30
  ...prevState,
31
- pagination: {...prevState.pagination, pageSize: parseInt(newPerPage, 10)},
31
+ pagination: {pageIndex: 0, pageSize: parseInt(newPerPage, 10)},
32
32
  }));
33
33
  };
34
34
 
@@ -79,4 +79,28 @@ describe('Table.PerPage', () => {
79
79
  expect.objectContaining({pagination: expect.objectContaining({pageSize: 100})})
80
80
  );
81
81
  });
82
+
83
+ it('resets page index when changing the number of items per page', async () => {
84
+ const user = userEvent.setup({delay: null});
85
+ const onChange = jest.fn();
86
+ render(
87
+ <Table
88
+ data={[{name: 'fruit'}, {name: 'vegetable'}]}
89
+ columns={columns}
90
+ onChange={onChange}
91
+ initialState={{pagination: {pageIndex: 1, pageSize: 50}}}
92
+ >
93
+ <Table.Footer>
94
+ <Table.Pagination totalPages={2} />
95
+ <Table.PerPage />
96
+ </Table.Footer>
97
+ </Table>
98
+ );
99
+
100
+ await user.click(screen.queryByRole('radio', {name: '100'}));
101
+
102
+ expect(onChange).toHaveBeenCalledWith(
103
+ expect.objectContaining({pagination: expect.objectContaining({pageIndex: 0})})
104
+ );
105
+ });
82
106
  });