@ctlyst.id/internal-ui 2.0.8 → 2.0.10

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.
@@ -4,23 +4,9 @@ declare const _default: {
4
4
  chakra: {
5
5
  theme: Record<string, any>;
6
6
  };
7
- component: {
8
- <P>({ columns, dataSource, isLoading, withSelectedRow, onSelectedRow, onSort, manualSorting, sortingState, styles, ...props }: import("../components/data-table").DataTableProps<P>): React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)>;
9
- defaultProps: {
10
- withSelectedRow: boolean;
11
- overflowX: string;
12
- pos: string;
13
- maxW: string;
14
- minH: number;
15
- w: string;
16
- styles: undefined;
17
- isLoading: undefined;
18
- onSelectedRow: undefined;
19
- onSort: undefined;
20
- manualSorting: boolean;
21
- sortingState: never[];
22
- };
23
- };
7
+ component: <T extends unknown>(props: import("../components/data-table").DataTableProps<T> & {
8
+ ref?: ((instance: Pick<any, "toggleAllRowsSelected"> | null) => void) | React.RefObject<Pick<any, "toggleAllRowsSelected">> | null | undefined;
9
+ }) => JSX.Element;
24
10
  argTypes: {
25
11
  selectedRow: {
26
12
  options: boolean[];
@@ -1,5 +1,5 @@
1
1
  import type { BoxProps, TableBodyProps, TableCellProps, TableColumnHeaderProps, TableHeadProps, TableProps, TableRowProps } from '@chakra-ui/react';
2
- import type { ColumnDef, ColumnSort, SortingState } from '@tanstack/react-table';
2
+ import type { ColumnDef, RowSelectionInstance, SortingState } from '@tanstack/react-table';
3
3
  import * as React from 'react';
4
4
  export interface TableStyleProps {
5
5
  table?: TableProps;
@@ -16,25 +16,15 @@ export interface DataTableProps<T = unknown> extends BoxProps {
16
16
  isLoading?: boolean;
17
17
  withSelectedRow?: boolean | undefined;
18
18
  onSelectedRow?: (data: T[]) => void;
19
- onSort?: (data: ColumnSort[] | ((prevState: SortingState) => SortingState)) => void;
19
+ onSort?: (data: SortingState) => void;
20
20
  manualSorting?: boolean;
21
21
  sortingState?: SortingState;
22
+ sortDescFirst?: boolean;
23
+ headerSticky?: boolean;
24
+ onRowClick?: (data: T) => void;
22
25
  }
23
- declare const DataTable: {
24
- <P>({ columns, dataSource, isLoading, withSelectedRow, onSelectedRow, onSort, manualSorting, sortingState, styles, ...props }: DataTableProps<P>): React.ReactElement;
25
- defaultProps: {
26
- withSelectedRow: boolean;
27
- overflowX: string;
28
- pos: string;
29
- maxW: string;
30
- minH: number;
31
- w: string;
32
- styles: undefined;
33
- isLoading: undefined;
34
- onSelectedRow: undefined;
35
- onSort: undefined;
36
- manualSorting: boolean;
37
- sortingState: never[];
38
- };
39
- };
40
- export default DataTable;
26
+ export declare type DataTableRefs<T> = Pick<RowSelectionInstance<T>, 'toggleAllRowsSelected'>;
27
+ declare const _default: <T extends unknown>(props: DataTableProps<T> & {
28
+ ref?: ((instance: Pick<any, "toggleAllRowsSelected"> | null) => void) | React.RefObject<Pick<any, "toggleAllRowsSelected">> | null | undefined;
29
+ }) => JSX.Element;
30
+ export default _default;
@@ -4,16 +4,20 @@ export * from './breadcrumb';
4
4
  export * from './button';
5
5
  export * from './card';
6
6
  export * from './checkbox';
7
+ export * from './chips';
7
8
  export * from './data-table';
8
9
  export * from './datepicker';
9
10
  export * from './field';
10
11
  export * from './form';
11
12
  export * from './header';
13
+ export * from './image';
12
14
  export * from './layouting';
15
+ export * from './list';
13
16
  export * from './loader';
14
17
  export * from './modal';
15
18
  export * from './navigation';
16
19
  export * from './pagination';
20
+ export * from './popover';
17
21
  export * from './radio';
18
22
  export * from './rating';
19
23
  export * from './select';
@@ -2,6 +2,7 @@ import type { HTMLChakraProps, ThemingProps } from '@chakra-ui/react';
2
2
  export interface LoaderProps {
3
3
  size?: string;
4
4
  variant?: string;
5
+ thickness?: string;
5
6
  }
6
7
  export interface CustomBadgeProps extends HTMLChakraProps<'span'>, ThemingProps {
7
8
  }
@@ -520,37 +520,63 @@ CheckboxGroupComponent.defaultProps = {
520
520
  errorMessage: ''
521
521
  };
522
522
 
523
- const IndeterminateCheckbox = ({
524
- indeterminate = false,
523
+ const Chips = ({
524
+ children,
525
525
  ...rest
526
526
  }) => {
527
- const ref = React.useRef(null);
528
- React.useEffect(() => {
529
- if (ref.current && typeof indeterminate === 'boolean') {
530
- ref.current.indeterminate = !rest.checked && indeterminate;
531
- }
532
- }, [ref, indeterminate]);
533
- return /*#__PURE__*/React.createElement(react.Flex, {
534
- align: "center"
535
- }, /*#__PURE__*/React.createElement("input", Object.assign({
536
- type: "checkbox",
537
- ref: ref
538
- }, rest)));
527
+ const {
528
+ isActive,
529
+ isDisabled,
530
+ onClose
531
+ } = rest;
532
+ const styles = react.useStyleConfig('Chips', rest);
533
+ const closeColor = React.useMemo(() => {
534
+ if (isActive) return 'white.high';
535
+ if (isDisabled) return 'black.low';
536
+ return 'primary.500';
537
+ }, [isActive, isDisabled]);
538
+ return /*#__PURE__*/React__default.createElement(react.Box, Object.assign({
539
+ __css: styles,
540
+ display: "inline-flex",
541
+ alignItems: "center",
542
+ justifyContent: "center"
543
+ }, rest), children, onClose && /*#__PURE__*/React__default.createElement(react.Box, {
544
+ onClick: isDisabled ? undefined : onClose,
545
+ cursor: isDisabled ? 'not-allowed' : 'pointer',
546
+ ml: 2,
547
+ display: "flex",
548
+ alignItems: "center",
549
+ justifyContent: "center"
550
+ }, /*#__PURE__*/React__default.createElement(internalIcon.Close, {
551
+ color: closeColor,
552
+ size: 4
553
+ })));
554
+ };
555
+ Chips.defaultProps = {
556
+ isDisabled: false,
557
+ isActive: false,
558
+ onClose: undefined,
559
+ children: undefined,
560
+ size: 'sm'
539
561
  };
540
562
 
541
563
  /* eslint-disable react-hooks/rules-of-hooks */
542
- const DataTable = ({
543
- columns,
544
- dataSource = [],
545
- isLoading,
546
- withSelectedRow,
547
- onSelectedRow,
548
- onSort,
549
- manualSorting,
550
- sortingState,
551
- styles,
552
- ...props
553
- }) => {
564
+ const DataTable = /*#__PURE__*/React.forwardRef((props, ref) => {
565
+ const {
566
+ columns,
567
+ dataSource = [],
568
+ isLoading,
569
+ withSelectedRow,
570
+ onSelectedRow,
571
+ onSort,
572
+ sortDescFirst,
573
+ styles,
574
+ sortingState,
575
+ headerSticky,
576
+ manualSorting,
577
+ onRowClick
578
+ } = props;
579
+ const [isFirstLoad, setIsFirstLoad] = React.useState(true);
554
580
  const [sorting, setSorting] = React.useState(sortingState !== null && sortingState !== void 0 ? sortingState : []);
555
581
  const [rowSelection, onRowSelectionChange] = React.useState({});
556
582
  const dataColumns = React.useMemo(() => columns, [columns]);
@@ -558,16 +584,20 @@ const DataTable = ({
558
584
  id: 'select',
559
585
  header: ({
560
586
  table
561
- }) => /*#__PURE__*/React.createElement(IndeterminateCheckbox, Object.assign({}, {
562
- checked: table.getIsAllRowsSelected(),
563
- indeterminate: table.getIsSomeRowsSelected(),
587
+ }) => /*#__PURE__*/React.createElement(react.Checkbox, Object.assign({
588
+ "data-test-id": "select-header-data-table"
589
+ }, {
590
+ isChecked: table.getIsAllRowsSelected(),
591
+ isIndeterminate: table.getIsSomeRowsSelected(),
564
592
  onChange: table.getToggleAllRowsSelectedHandler()
565
593
  })),
566
594
  cell: ({
567
595
  row
568
- }) => /*#__PURE__*/React.createElement(IndeterminateCheckbox, Object.assign({}, {
569
- checked: row.getIsSelected(),
570
- indeterminate: row.getIsSomeSelected(),
596
+ }) => /*#__PURE__*/React.createElement(react.Checkbox, Object.assign({
597
+ "data-test-id": `select-data-table-${row.index}`
598
+ }, {
599
+ isChecked: row.getIsSelected(),
600
+ isIndeterminate: row.getIsSomeSelected(),
571
601
  onChange: row.getToggleSelectedHandler()
572
602
  }))
573
603
  }], []);
@@ -579,9 +609,6 @@ const DataTable = ({
579
609
  };
580
610
  const onSortingChange = data => {
581
611
  setSorting(data);
582
- if (onSort) {
583
- onSort(data);
584
- }
585
612
  };
586
613
  const table = reactTable.useReactTable({
587
614
  data: dataSource,
@@ -589,24 +616,39 @@ const DataTable = ({
589
616
  getCoreRowModel: reactTable.getCoreRowModel(),
590
617
  getSortedRowModel: reactTable.getSortedRowModel(),
591
618
  manualPagination: true,
592
- sortDescFirst: true,
619
+ manualSorting,
620
+ sortDescFirst,
593
621
  state: {
594
622
  sorting,
595
623
  rowSelection
596
624
  },
597
625
  onRowSelectionChange,
598
- onSortingChange,
599
- manualSorting
626
+ onSortingChange
600
627
  });
628
+ const {
629
+ getSelectedRowModel,
630
+ toggleAllRowsSelected
631
+ } = table;
601
632
  const {
602
633
  flatRows
603
- } = table.getSelectedRowModel();
634
+ } = getSelectedRowModel();
604
635
  React.useEffect(() => {
605
636
  const rowData = flatRows.map(row => row.original);
606
637
  if (onSelectedRow) {
607
638
  onSelectedRow(rowData);
608
639
  }
609
640
  }, [flatRows]);
641
+ React.useImperativeHandle(ref, () => ({
642
+ toggleAllRowsSelected
643
+ }));
644
+ React.useEffect(() => {
645
+ if (onSort && !isFirstLoad) {
646
+ onSort(sorting);
647
+ }
648
+ }, [sorting]);
649
+ React.useEffect(() => {
650
+ setIsFirstLoad(false);
651
+ }, []);
610
652
  return /*#__PURE__*/React.createElement(react.Box, Object.assign({}, props), isLoading && /*#__PURE__*/React.createElement(react.Flex, {
611
653
  w: "100%",
612
654
  h: "100%",
@@ -619,7 +661,12 @@ const DataTable = ({
619
661
  color: "primary.500",
620
662
  thickness: "4px",
621
663
  size: "lg"
622
- })), /*#__PURE__*/React.createElement(react.Table, Object.assign({}, styles === null || styles === void 0 ? void 0 : styles.table), /*#__PURE__*/React.createElement(react.Thead, Object.assign({}, styles === null || styles === void 0 ? void 0 : styles.tableHead), table.getHeaderGroups().map(headerGroup => /*#__PURE__*/React.createElement(react.Tr, Object.assign({
664
+ })), /*#__PURE__*/React.createElement(react.Table, Object.assign({}, styles === null || styles === void 0 ? void 0 : styles.table), /*#__PURE__*/React.createElement(react.Thead, Object.assign({}, (headerSticky ? {
665
+ position: 'sticky',
666
+ top: 0,
667
+ bg: 'white',
668
+ zIndex: 1
669
+ } : {})), table.getHeaderGroups().map(headerGroup => /*#__PURE__*/React.createElement(react.Tr, Object.assign({
623
670
  key: headerGroup.id,
624
671
  bg: react.useColorModeValue('initial', 'ebony-clay.700')
625
672
  }, styles === null || styles === void 0 ? void 0 : styles.tableRow), headerGroup.headers.map(header => {
@@ -651,6 +698,7 @@ const DataTable = ({
651
698
  h: 2
652
699
  }))));
653
700
  })))), /*#__PURE__*/React.createElement(react.Tbody, Object.assign({}, styles === null || styles === void 0 ? void 0 : styles.tableBody), table.getRowModel().rows.map(row => /*#__PURE__*/React.createElement(react.Tr, Object.assign({
701
+ "data-test-id": "6aZAeefGHBA2oG1wLuv-L",
654
702
  key: row.id
655
703
  }, styles === null || styles === void 0 ? void 0 : styles.tableRow, {
656
704
  css: react$1.css`
@@ -659,13 +707,18 @@ const DataTable = ({
659
707
  border-bottom: none;
660
708
  }
661
709
  }
662
- `
710
+ `,
711
+ onClick: () => {
712
+ if (onRowClick) {
713
+ onRowClick(row.original);
714
+ }
715
+ }
663
716
  }), row.getVisibleCells().map(cell => /*#__PURE__*/React.createElement(react.Td, Object.assign({
664
717
  key: cell.id,
665
718
  fontSize: "text.sm",
666
719
  color: react.useColorModeValue('dark.800', 'dark.300')
667
720
  }, styles === null || styles === void 0 ? void 0 : styles.tableCell), reactTable.flexRender(cell.column.columnDef.cell, cell.getContext()))))))));
668
- };
721
+ });
669
722
  /* eslint-disable react/default-props-match-prop-types */
670
723
  DataTable.defaultProps = {
671
724
  withSelectedRow: false,
@@ -679,7 +732,10 @@ DataTable.defaultProps = {
679
732
  onSelectedRow: undefined,
680
733
  onSort: undefined,
681
734
  manualSorting: false,
682
- sortingState: []
735
+ sortingState: [],
736
+ sortDescFirst: false,
737
+ headerSticky: false,
738
+ onRowClick: undefined
683
739
  };
684
740
 
685
741
  const getProperties = props => {
@@ -3942,7 +3998,7 @@ const Checkbox = /*#__PURE__*/defineMultiStyleConfig$1({
3942
3998
  }
3943
3999
  });
3944
4000
 
3945
- const Chips = /*#__PURE__*/styledSystem.defineStyleConfig({
4001
+ const Chips$1 = /*#__PURE__*/styledSystem.defineStyleConfig({
3946
4002
  baseStyle: props => {
3947
4003
  const {
3948
4004
  isDisabled,
@@ -4129,6 +4185,7 @@ const rotate = /*#__PURE__*/react$1.keyframes({
4129
4185
  const getLoaderColor = color => {
4130
4186
  if (color === 'primary') return colors.primary[600];
4131
4187
  if (color === 'danger') return colors.danger[500];
4188
+ if (color === 'warning') return colors.warning[700];
4132
4189
  return colors.white.high;
4133
4190
  };
4134
4191
  const LoaderStyle = /*#__PURE__*/styledSystem.defineStyleConfig({
@@ -4487,7 +4544,7 @@ var components = {
4487
4544
  Button: Button$1,
4488
4545
  Card: CardStyle,
4489
4546
  Checkbox: Checkbox,
4490
- Chips: Chips,
4547
+ Chips: Chips$1,
4491
4548
  FormLabel: FormLabel,
4492
4549
  Input: Input,
4493
4550
  LoaderStyle: LoaderStyle,
@@ -4734,6 +4791,18 @@ Object.defineProperty(exports, 'Heading', {
4734
4791
  return react.Heading;
4735
4792
  }
4736
4793
  });
4794
+ Object.defineProperty(exports, 'Icon', {
4795
+ enumerable: true,
4796
+ get: function () {
4797
+ return react.Icon;
4798
+ }
4799
+ });
4800
+ Object.defineProperty(exports, 'Image', {
4801
+ enumerable: true,
4802
+ get: function () {
4803
+ return react.Image;
4804
+ }
4805
+ });
4737
4806
  Object.defineProperty(exports, 'InputElementLeft', {
4738
4807
  enumerable: true,
4739
4808
  get: function () {
@@ -4746,6 +4815,24 @@ Object.defineProperty(exports, 'InputElementRight', {
4746
4815
  return react.InputRightElement;
4747
4816
  }
4748
4817
  });
4818
+ Object.defineProperty(exports, 'List', {
4819
+ enumerable: true,
4820
+ get: function () {
4821
+ return react.List;
4822
+ }
4823
+ });
4824
+ Object.defineProperty(exports, 'ListIcon', {
4825
+ enumerable: true,
4826
+ get: function () {
4827
+ return react.ListIcon;
4828
+ }
4829
+ });
4830
+ Object.defineProperty(exports, 'ListItem', {
4831
+ enumerable: true,
4832
+ get: function () {
4833
+ return react.ListItem;
4834
+ }
4835
+ });
4749
4836
  Object.defineProperty(exports, 'Modal', {
4750
4837
  enumerable: true,
4751
4838
  get: function () {
@@ -4776,6 +4863,72 @@ Object.defineProperty(exports, 'ModalOverlay', {
4776
4863
  return react.ModalOverlay;
4777
4864
  }
4778
4865
  });
4866
+ Object.defineProperty(exports, 'OrderedList', {
4867
+ enumerable: true,
4868
+ get: function () {
4869
+ return react.OrderedList;
4870
+ }
4871
+ });
4872
+ Object.defineProperty(exports, 'Popover', {
4873
+ enumerable: true,
4874
+ get: function () {
4875
+ return react.Popover;
4876
+ }
4877
+ });
4878
+ Object.defineProperty(exports, 'PopoverAnchor', {
4879
+ enumerable: true,
4880
+ get: function () {
4881
+ return react.PopoverAnchor;
4882
+ }
4883
+ });
4884
+ Object.defineProperty(exports, 'PopoverArrow', {
4885
+ enumerable: true,
4886
+ get: function () {
4887
+ return react.PopoverArrow;
4888
+ }
4889
+ });
4890
+ Object.defineProperty(exports, 'PopoverBody', {
4891
+ enumerable: true,
4892
+ get: function () {
4893
+ return react.PopoverBody;
4894
+ }
4895
+ });
4896
+ Object.defineProperty(exports, 'PopoverCloseButton', {
4897
+ enumerable: true,
4898
+ get: function () {
4899
+ return react.PopoverCloseButton;
4900
+ }
4901
+ });
4902
+ Object.defineProperty(exports, 'PopoverContent', {
4903
+ enumerable: true,
4904
+ get: function () {
4905
+ return react.PopoverContent;
4906
+ }
4907
+ });
4908
+ Object.defineProperty(exports, 'PopoverFooter', {
4909
+ enumerable: true,
4910
+ get: function () {
4911
+ return react.PopoverFooter;
4912
+ }
4913
+ });
4914
+ Object.defineProperty(exports, 'PopoverHeader', {
4915
+ enumerable: true,
4916
+ get: function () {
4917
+ return react.PopoverHeader;
4918
+ }
4919
+ });
4920
+ Object.defineProperty(exports, 'PopoverTrigger', {
4921
+ enumerable: true,
4922
+ get: function () {
4923
+ return react.PopoverTrigger;
4924
+ }
4925
+ });
4926
+ Object.defineProperty(exports, 'Portal', {
4927
+ enumerable: true,
4928
+ get: function () {
4929
+ return react.Portal;
4930
+ }
4931
+ });
4779
4932
  Object.defineProperty(exports, 'Stack', {
4780
4933
  enumerable: true,
4781
4934
  get: function () {
@@ -4824,6 +4977,12 @@ Object.defineProperty(exports, 'Tooltip', {
4824
4977
  return react.Tooltip;
4825
4978
  }
4826
4979
  });
4980
+ Object.defineProperty(exports, 'UnorderedList', {
4981
+ enumerable: true,
4982
+ get: function () {
4983
+ return react.UnorderedList;
4984
+ }
4985
+ });
4827
4986
  Object.defineProperty(exports, 'VStack', {
4828
4987
  enumerable: true,
4829
4988
  get: function () {
@@ -4962,6 +5121,7 @@ exports.Button = Button;
4962
5121
  exports.Card = CardCustom;
4963
5122
  exports.Checkbox = CheckboxComponent;
4964
5123
  exports.CheckboxGroup = CheckboxGroupComponent;
5124
+ exports.Chips = Chips;
4965
5125
  exports.DataTable = DataTable;
4966
5126
  exports.DatePickerMonth = DatePickerMonth;
4967
5127
  exports.Datepicker = Datepicker;