@7shifts/sous-chef 1.2.0 → 1.2.1

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/CHANGELOG.md CHANGED
@@ -1,4 +1,20 @@
1
- ## NEXT VERSION
1
+ ## NEXT RELEASE
2
+
3
+ ### New components
4
+
5
+ - DataTable ([#50](https://github.com/7shifts/sous-chef/pull/50))
6
+
7
+ ## 1.2.1 (September 23rd, 2021)
8
+
9
+ ### Bug fixes
10
+
11
+ - Modal: When a scroll was showing, the top content was getting cut off on the top. Also updated the flow type ([#55](https://github.com/7shifts/sous-chef/pull/55))
12
+
13
+ ### Enhancements
14
+
15
+ - Form: Updated the field components to work with formik components such as `Field` and `FieldArray`. It also suports now dynamic fields ([#53](https://github.com/7shifts/sous-chef/pull/53))
16
+
17
+ ## 1.2.0 (September 15th, 2021)
2
18
 
3
19
  ### New components
4
20
 
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import type { Column, CustomComponent, Item, Sort } from './types';
3
+ declare type Props<T> = {
4
+ /** Each element represents a row and each key of the object represents a column */
5
+ items: Item<T>[];
6
+ /** For each column element, the `name` property should match the key on `items` */
7
+ columns: Column[];
8
+ /** A custom component for customizing how the each item is rendered. It pass as props: `item`, `index`, `columnSizes` and `columns` */
9
+ itemComponent?: React.ComponentType<CustomComponent<T>>;
10
+ maxHeight?: number;
11
+ /** Used for pagination */
12
+ hasPrevious?: boolean;
13
+ /** Used for pagination */
14
+ hasNext?: boolean;
15
+ /** Used for pagination */
16
+ onPreviousClick?: () => void;
17
+ /** Used for pagination */
18
+ onNextClick?: () => void;
19
+ isLoading?: boolean;
20
+ /** It is fired when a sorted column is clicked to be sorted */
21
+ onSort?: (sort: Sort) => void;
22
+ showActionMenu?: boolean;
23
+ /** Will render footer component if not null; expects same format as row items */
24
+ footer?: Item<T>;
25
+ /** Will render vertical borders between columns if true */
26
+ hasVerticalBorders?: boolean;
27
+ };
28
+ declare const DataTable: <T extends unknown>({ items, columns, itemComponent, maxHeight, hasPrevious, hasNext, onPreviousClick, onNextClick, onSort, isLoading, showActionMenu, footer, hasVerticalBorders }: Props<T>) => JSX.Element;
29
+ export default DataTable;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Flowtype definitions for DataTable
3
+ * Generated by Flowgen from a Typescript Definition
4
+ * Flowgen v1.14.1
5
+ * @flow
6
+ */
7
+
8
+ import * as React from 'react';
9
+ import type { Column, CustomComponent, Item, Sort } from './types';
10
+ declare type Props<T> = {
11
+ /**
12
+ * Each element represents a row and each key of the object represents a column
13
+ */
14
+ items: Item<T>[],
15
+
16
+ /**
17
+ * For each column element, the `name` property should match the key on `items`
18
+ */
19
+ columns: Column[],
20
+
21
+ /**
22
+ * A custom component for customizing how the each item is rendered. It pass as props: `item`, `index`, `columnSizes` and `columns`
23
+ */
24
+ itemComponent?: React$ComponentType<CustomComponent<T>>,
25
+ maxHeight?: number,
26
+
27
+ /**
28
+ * Used for pagination
29
+ */
30
+ hasPrevious?: boolean,
31
+
32
+ /**
33
+ * Used for pagination
34
+ */
35
+ hasNext?: boolean,
36
+
37
+ /**
38
+ * Used for pagination
39
+ */
40
+ onPreviousClick?: () => void,
41
+
42
+ /**
43
+ * Used for pagination
44
+ */
45
+ onNextClick?: () => void,
46
+ isLoading?: boolean,
47
+
48
+ /**
49
+ * It is fired when a sorted column is clicked to be sorted
50
+ */
51
+ onSort?: (sort: Sort) => void,
52
+ showActionMenu?: boolean,
53
+ /** Will render footer component if not null; expects same format as row items */
54
+ footer?: Item<T>,
55
+ /** Will render vertical borders between columns if true */
56
+ hasVerticalBorders?: boolean
57
+ };
58
+ declare var DataTable: <T>(props: Props<T>) => React$Node;
59
+ declare export default typeof DataTable;
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import type { Column } from './types';
3
+ export declare type DataTableContextType = {
4
+ columns?: Column[];
5
+ showActionMenu?: boolean;
6
+ };
7
+ declare const Context: import("react").Context<DataTableContextType>;
8
+ export declare const useDataTableContext: () => DataTableContextType;
9
+ export default Context;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Flowtype definitions for DataTableContext
3
+ * Generated by Flowgen from a Typescript Definition
4
+ * Flowgen v1.14.1
5
+ * @flow
6
+ */
7
+ import * as React from 'react';
8
+
9
+ export type DataTableContextType = {
10
+ columnSizes?: number[],
11
+ showActionMenu?: boolean,
12
+ };
13
+ declare var Context: React$Context<DataTableContextType>;
14
+ declare export var useDataTableContext: () => DataTableContextType;
15
+ declare export default typeof Context;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import type { Column, Sort } from './types';
3
+ declare type Props = {
4
+ columns: Column[];
5
+ onSort?: (sort: Sort) => void;
6
+ showActionMenu?: boolean;
7
+ };
8
+ declare const DataTableHeader: React.FC<Props>;
9
+ export default DataTableHeader;
@@ -0,0 +1 @@
1
+ export { default } from './DataTable';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Flowtype definitions for index
3
+ * Generated by Flowgen from a Typescript Definition
4
+ * Flowgen v1.14.1
5
+ * @flow
6
+ */
7
+
8
+ declare export { default } from "./DataTable";
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ export declare type Column = {
3
+ name: string;
4
+ label?: React.ReactNode;
5
+ size?: number;
6
+ isSortable?: boolean;
7
+ currentSort?: SortDirection;
8
+ isRightAligned?: boolean;
9
+ };
10
+ export declare type SortDirection = 'asc' | 'desc' | null;
11
+ export declare type Sort = {
12
+ columnName: string;
13
+ direction: SortDirection;
14
+ };
15
+ export declare type Item<T> = T | (T & {
16
+ actions?: Action[];
17
+ });
18
+ export declare type CustomComponent<T> = {
19
+ item: Item<T>;
20
+ index: number;
21
+ columnSizes?: number[];
22
+ columns?: Column[];
23
+ hasVerticalBorders?: boolean;
24
+ };
25
+ export declare type Action = {
26
+ label: React.ReactNode;
27
+ onAction: () => void;
28
+ };
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Flowtype definitions for types
3
+ * Generated by Flowgen from a Typescript Definition
4
+ * Flowgen v1.14.1
5
+ * @flow
6
+ */
7
+ import * as React from 'react';
8
+
9
+ export type Column = {
10
+ name: string,
11
+ label?: React$Node,
12
+ size?: number,
13
+ isSortable?: boolean,
14
+ currentSort?: SortDirection,
15
+ };
16
+ export type SortDirection = 'asc' | 'desc' | null;
17
+ export type Sort = {
18
+ columnName: string,
19
+ direction: SortDirection,
20
+ };
21
+ export type Item<T> = T | (T & { actions?: Action[] });
22
+ export type CustomComponent<T> = {
23
+ item: Item<T>,
24
+ index: number,
25
+ columnSizes?: number[],
26
+ columns?: Column[],
27
+ };
28
+ export type Action = {
29
+ label: React$Node,
30
+ onAction: () => void,
31
+ };
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import type { Action } from '../DataTable/types';
3
+ declare type Props = {
4
+ children: React.ReactNode;
5
+ onClick?: () => void;
6
+ isSelected?: boolean;
7
+ actions?: Action[];
8
+ hasVerticalBorders?: boolean;
9
+ };
10
+ declare const DataTableRow: React.FC<Props>;
11
+ export default DataTableRow;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Flowtype definitions for DataTableRow
3
+ * Generated by Flowgen from a Typescript Definition
4
+ * Flowgen v1.14.1
5
+ * @flow
6
+ */
7
+
8
+ import * as React from 'react';
9
+ import type { Action } from '../DataTable/types';
10
+ declare type Props = {
11
+ children: React$Node,
12
+ onClick?: () => void,
13
+ isSelected?: boolean,
14
+ actions?: Action[],
15
+ };
16
+ declare var DataTableRow: (props: Props) => React$Node;
17
+ declare export default typeof DataTableRow;
@@ -0,0 +1 @@
1
+ export { default } from './DataTableRow';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Flowtype definitions for index
3
+ * Generated by Flowgen from a Typescript Definition
4
+ * Flowgen v1.14.1
5
+ * @flow
6
+ */
7
+
8
+ declare export { default } from "./DataTableRow";
@@ -21,5 +21,8 @@ declare type Props<T> = {
21
21
  onSort?: (sort: Sort) => void;
22
22
  showActionMenu?: boolean;
23
23
  };
24
+ /**
25
+ * @deprecated On v2.0 we introduced the `DataTable` that should be used for tabular data. This component will be removed on v3.0.
26
+ */
24
27
  declare const ResourceTable: <T extends unknown>({ items, columns, itemComponent, maxHeight, hasPrevious, hasNext, onPreviousClick, onNextClick, onSort, isLoading, showActionMenu }: Props<T>) => JSX.Element;
25
28
  export default ResourceTable;
@@ -5,5 +5,8 @@ declare type Props = {
5
5
  onSort?: (sort: Sort) => void;
6
6
  showActionMenu?: boolean;
7
7
  };
8
+ /**
9
+ * @deprecated On v2.0 we introduced the `DataTable` that should be used for tabular data. This component will be removed on v3.0.
10
+ */
8
11
  declare const ResourceTableHeader: React.FC<Props>;
9
12
  export default ResourceTableHeader;
@@ -6,5 +6,8 @@ declare type Props = {
6
6
  isSelected?: boolean;
7
7
  actions?: Action[];
8
8
  };
9
+ /**
10
+ * @deprecated On v2.0 we introduced the `DataTable` that should be used for tabular data. This component will be removed on v3.0.
11
+ */
9
12
  declare const ResourceTableRow: React.FC<Props>;
10
13
  export default ResourceTableRow;
package/dist/index.css CHANGED
@@ -2026,8 +2026,6 @@ Please ask a designer if you have questions about which colours to use.
2026
2026
  font-family: "Proxima Nova", sans-serif;
2027
2027
  font-size: 14px;
2028
2028
  line-height: 16px;
2029
- display: flex;
2030
- flex-direction: column;
2031
2029
  position: relative;
2032
2030
  z-index: 1;
2033
2031
  background: #fff no-repeat;
package/dist/index.js CHANGED
@@ -1435,6 +1435,55 @@ var useFieldId = function useFieldId(_ref) {
1435
1435
  return id;
1436
1436
  };
1437
1437
 
1438
+ var getFormikState = function getFormikState(name, formik) {
1439
+ if (formik === undefined) {
1440
+ return null;
1441
+ }
1442
+
1443
+ if (Object.keys(formik.values).includes(name)) {
1444
+ return {
1445
+ error: formik.touched[name] ? formik.errors[name] : undefined,
1446
+ value: formik.values[name]
1447
+ };
1448
+ }
1449
+
1450
+ var formikArray = getFormikArrayPath(name);
1451
+
1452
+ if (formikArray) {
1453
+ var _formik$touched, _formik$touched$array, _formik$touched$array2, _formik$errors, _formik$errors$arrayN, _formik$errors$arrayN2, _formik$values, _formik$values$arrayN, _formik$values$arrayN2;
1454
+
1455
+ var arrayName = formikArray.arrayName,
1456
+ itemIndex = formikArray.itemIndex,
1457
+ fieldName = formikArray.fieldName;
1458
+ return {
1459
+ error: (_formik$touched = formik.touched) !== null && _formik$touched !== void 0 && (_formik$touched$array = _formik$touched[arrayName]) !== null && _formik$touched$array !== void 0 && (_formik$touched$array2 = _formik$touched$array[itemIndex]) !== null && _formik$touched$array2 !== void 0 && _formik$touched$array2[fieldName] ? (_formik$errors = formik.errors) === null || _formik$errors === void 0 ? void 0 : (_formik$errors$arrayN = _formik$errors[arrayName]) === null || _formik$errors$arrayN === void 0 ? void 0 : (_formik$errors$arrayN2 = _formik$errors$arrayN[itemIndex]) === null || _formik$errors$arrayN2 === void 0 ? void 0 : _formik$errors$arrayN2[fieldName] : undefined,
1460
+ value: (_formik$values = formik.values) === null || _formik$values === void 0 ? void 0 : (_formik$values$arrayN = _formik$values[arrayName]) === null || _formik$values$arrayN === void 0 ? void 0 : (_formik$values$arrayN2 = _formik$values$arrayN[itemIndex]) === null || _formik$values$arrayN2 === void 0 ? void 0 : _formik$values$arrayN2[fieldName]
1461
+ };
1462
+ }
1463
+
1464
+ return null;
1465
+ };
1466
+
1467
+ var getFormikArrayPath = function getFormikArrayPath(name) {
1468
+ if (!name.includes('[')) {
1469
+ return false;
1470
+ }
1471
+
1472
+ var _name$split = name.split('['),
1473
+ arrayName = _name$split[0],
1474
+ missingSplit = _name$split[1];
1475
+
1476
+ var _missingSplit$split = missingSplit.split('].'),
1477
+ itemIndex = _missingSplit$split[0],
1478
+ fieldName = _missingSplit$split[1];
1479
+
1480
+ return {
1481
+ arrayName: arrayName,
1482
+ itemIndex: itemIndex,
1483
+ fieldName: fieldName
1484
+ };
1485
+ };
1486
+
1438
1487
  var useFieldControllers = function useFieldControllers(_ref) {
1439
1488
  var name = _ref.name,
1440
1489
  inputId = _ref.id,
@@ -1455,18 +1504,18 @@ var useFieldControllers = function useFieldControllers(_ref) {
1455
1504
  error: error,
1456
1505
  value: value,
1457
1506
  onChange: function onChange(e) {
1458
- return _onChange && _onChange(e.target.value);
1507
+ return _onChange && _onChange(formik ? e : e.target.value);
1459
1508
  },
1460
1509
  onBlur: function onBlur(e) {
1461
- return _onBlur && _onBlur(e.target.value);
1510
+ return _onBlur && _onBlur(formik ? e : e.target.value);
1462
1511
  }
1463
1512
  };
1513
+ var formikState = getFormikState(name, formik);
1464
1514
 
1465
- if (formik && Object.keys(formik.values).includes(name)) {
1466
- var formikError = formik.touched[name] ? formik.errors[name] : undefined;
1515
+ if (formik && formikState) {
1467
1516
  controllers = _extends({}, controllers, {
1468
- error: error !== undefined ? controllers.error : formikError,
1469
- value: value !== undefined ? controllers.value : formik.values[name],
1517
+ error: error !== undefined ? controllers.error : formikState.error,
1518
+ value: value !== undefined ? controllers.value : formikState.value,
1470
1519
  onChange: _onChange ? controllers.onChange : function (e) {
1471
1520
  return formik.setFieldValue(name, e.target.value);
1472
1521
  },
@@ -1734,12 +1783,12 @@ var useCheckBoxFieldControllers = function useCheckBoxFieldControllers(_ref) {
1734
1783
  return _onBlur && _onBlur(e.target.checked);
1735
1784
  }
1736
1785
  };
1786
+ var formikState = getFormikState(name, formik);
1737
1787
 
1738
- if (formik && Object.keys(formik.values).includes(name)) {
1739
- var formikError = formik.touched[name] ? formik.errors[name] : undefined;
1788
+ if (formik && formikState) {
1740
1789
  controllers = _extends({}, controllers, {
1741
- error: error !== undefined ? controllers.error : formikError,
1742
- checked: checked !== undefined ? controllers.checked : formik.values[name],
1790
+ error: error !== undefined ? controllers.error : formikState.error,
1791
+ checked: checked !== undefined ? controllers.checked : formikState.value,
1743
1792
  onChange: function onChange(e) {
1744
1793
  formik.setFieldValue(name, e.target.checked);
1745
1794
  _onChange && _onChange(e.target.checked);
@@ -1822,12 +1871,12 @@ var useRadioGroupFieldControllers = function useRadioGroupFieldControllers(_ref)
1822
1871
  return _onChange && _onChange(e.target.value);
1823
1872
  }
1824
1873
  };
1874
+ var formikState = getFormikState(name, formik);
1825
1875
 
1826
- if (formik && Object.keys(formik.values).includes(name)) {
1827
- var formikError = formik.touched[name] ? formik.errors[name] : undefined;
1876
+ if (formik && formikState) {
1828
1877
  controllers = _extends({}, controllers, {
1829
- error: error !== undefined ? controllers.error : formikError,
1830
- value: value !== undefined ? controllers.value : formik.values[name],
1878
+ error: error !== undefined ? controllers.error : formikState.error,
1879
+ value: value !== undefined ? controllers.value : formikState.value,
1831
1880
  onChange: function onChange(e) {
1832
1881
  formik.setFieldValue(name, e.target.checked);
1833
1882
  _onChange && _onChange(e.target.value);
@@ -2094,12 +2143,12 @@ var useMultiSelectFieldControllers = function useMultiSelectFieldControllers(_re
2094
2143
  return _onBlur && _onBlur(options);
2095
2144
  }
2096
2145
  };
2146
+ var formikState = getFormikState(name, formik);
2097
2147
 
2098
- if (formik && formik.values[name] !== undefined) {
2099
- var formikError = formik.touched[name] ? formik.errors[name] : undefined;
2148
+ if (formik && formikState) {
2100
2149
  controllers = _extends({}, controllers, {
2101
- error: error ? controllers.error : formikError,
2102
- value: value ? controllers.value : formik.values[name],
2150
+ error: error ? controllers.error : formikState.error,
2151
+ value: value ? controllers.value : formikState.value,
2103
2152
  onChange: function onChange(options) {
2104
2153
  if (_onChange) {
2105
2154
  _onChange(options);
@@ -2327,12 +2376,12 @@ var useSelectFieldControllers = function useSelectFieldControllers(_ref) {
2327
2376
  return _onBlur && _onBlur(option);
2328
2377
  }
2329
2378
  };
2379
+ var formikState = getFormikState(name, formik);
2330
2380
 
2331
- if (formik && formik.values[name] !== undefined) {
2332
- var formikError = formik.touched[name] ? formik.errors[name] : undefined;
2381
+ if (formik && formikState) {
2333
2382
  controllers = _extends({}, controllers, {
2334
- error: error ? controllers.error : formikError,
2335
- value: value ? controllers.value : formik.values[name],
2383
+ error: error ? controllers.error : formikState.error,
2384
+ value: value ? controllers.value : formikState.value,
2336
2385
  onChange: function onChange(option) {
2337
2386
  if (_onChange) {
2338
2387
  _onChange(option);
@@ -2479,12 +2528,12 @@ var useDateFieldControllers = function useDateFieldControllers(_ref) {
2479
2528
  return _onBlur && _onBlur();
2480
2529
  }
2481
2530
  };
2531
+ var formikState = getFormikState(name, formik);
2482
2532
 
2483
- if (formik && Object.keys(formik.values).includes(name)) {
2484
- var formikError = formik.touched[name] ? formik.errors[name] : undefined;
2533
+ if (formik && formikState) {
2485
2534
  controllers = _extends({}, controllers, {
2486
- error: error !== undefined ? controllers.error : formikError,
2487
- value: value !== undefined ? controllers.value : formik.values[name],
2535
+ error: error !== undefined ? controllers.error : formikState.error,
2536
+ value: value !== undefined ? controllers.value : formikState.value,
2488
2537
  onChange: _onChange ? controllers.onChange : function (newValue) {
2489
2538
  formik.setFieldValue(name, newValue === undefined ? null : newValue);
2490
2539
  },
@@ -2676,12 +2725,12 @@ var useRangeFieldControllers = function useRangeFieldControllers(_ref) {
2676
2725
  return _onBlur && _onBlur();
2677
2726
  }
2678
2727
  };
2728
+ var formikState = getFormikState(name, formik);
2679
2729
 
2680
- if (formik && Object.keys(formik.values).includes(name)) {
2681
- var formikError = formik.touched[name] ? formik.errors[name] : undefined;
2730
+ if (formik && formikState) {
2682
2731
  return _extends({}, initialControllers, {
2683
- error: error !== undefined ? initialControllers.error : formikError,
2684
- value: value !== undefined ? initialControllers.value : formik.values[name],
2732
+ error: error !== undefined ? initialControllers.error : formikState.error,
2733
+ value: value !== undefined ? initialControllers.value : formikState.value,
2685
2734
  onChange: _onChange ? initialControllers.onChange : function (newValue) {
2686
2735
  formik.setFieldValue(name, newValue === undefined ? null : newValue);
2687
2736
  },
@@ -3140,9 +3189,8 @@ var Modal = function Modal(_ref) {
3140
3189
  }), children);
3141
3190
  };
3142
3191
 
3143
- Modal.setAppElement = function (rootElementId) {
3144
- var element = document.getElementById(rootElementId);
3145
- element && ReactModal.setAppElement(element);
3192
+ Modal.setAppElement = function (rootElement) {
3193
+ ReactModal.setAppElement(rootElement);
3146
3194
  };
3147
3195
 
3148
3196
  var styles$t = {"modal-body":"_2J-ku"};