@majoo-ui/react 1.54.21 → 1.55.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.
@@ -1,5 +1,6 @@
1
1
  export * from './InputDatePicker';
2
2
  export * from './DatePicker';
3
+ export * from './CustomDatePicker';
3
4
  export * from './AdvancedOption';
4
5
  export * from './state/reducer';
5
6
  export * from './timePicker';
@@ -15,6 +15,7 @@ interface IInputResourceListProps {
15
15
  counterFooterText: string;
16
16
  isLoading: boolean;
17
17
  enabledItems?: string[];
18
+ emptyDataMessage?: string;
18
19
  value?: IResource[];
19
20
  fetchData?(props: {
20
21
  query?: string;
@@ -26,5 +27,5 @@ interface IInputResourceListProps {
26
27
  title?: string;
27
28
  hideSelectAll?: boolean;
28
29
  }
29
- declare function InputResourceList({ data, disabled, onItemCheck, onItemUncheck, searchPlaceholder, counterFooterText, isLoading, enabledItems, value, fetchData, onQueryChange, css, defaultSort, title, hideSelectAll }: IInputResourceListProps): JSX.Element;
30
+ declare function InputResourceList({ data, disabled, onItemCheck, onItemUncheck, searchPlaceholder, counterFooterText, isLoading, enabledItems, emptyDataMessage, value, fetchData, onQueryChange, css, defaultSort, title, hideSelectAll, }: IInputResourceListProps): JSX.Element;
30
31
  export default InputResourceList;
@@ -1123,6 +1123,10 @@ export interface TableProps {
1123
1123
  * Total amount of the data.
1124
1124
  */
1125
1125
  totalData?: number;
1126
+ /**
1127
+ * Total amount of the page.
1128
+ */
1129
+ totalPage?: number;
1126
1130
  /**
1127
1131
  * Function executed when pagination or sorter is changed.<br/>
1128
1132
  * interface FetchDataParams { <br/>
@@ -1235,7 +1239,7 @@ export interface TableProps {
1235
1239
  showDuplicatedData?: boolean;
1236
1240
  onRowClick?: (record: Row, index: number) => void;
1237
1241
  }
1238
- export declare function Table({ columns, data: rawData, keyId, pageIndex: controlledPageIndex, totalData, fetchData, hideDataInfo, rowsPerPageOptions, emptyDataMessage, customEmptyDataProps, isLoading, css, headerCss, onSelectedChange, isInfiniteScroll, hasMoreItems, rowLimit, cellAlign, selectedIds, rowGroup, hiddenColumns, columnOrder, customRowsStyle, isMobileLayout, showDuplicatedData, onRowClick, }: TableProps): JSX.Element;
1242
+ export declare function Table({ columns, data: rawData, keyId, pageIndex: controlledPageIndex, totalPage, totalData, fetchData, hideDataInfo, rowsPerPageOptions, emptyDataMessage, customEmptyDataProps, isLoading, css, headerCss, onSelectedChange, isInfiniteScroll, hasMoreItems, rowLimit, cellAlign, selectedIds, rowGroup, hiddenColumns, columnOrder, customRowsStyle, isMobileLayout, showDuplicatedData, onRowClick, }: TableProps): JSX.Element;
1239
1243
  export interface TableColumnProps {
1240
1244
  /**
1241
1245
  * Required if accessor is a function<br/>
package/index.esm.js CHANGED
@@ -3,7 +3,7 @@ import React__default, { useState, createContext, useContext, useEffect, useRef,
3
3
  import PropTypes from 'prop-types';
4
4
  import { createStitches, styled as styled$1 } from '@stitches/react';
5
5
  import { foundations } from '@majoo-ui/core';
6
- import { CloseOutline, UserFilled, CircleQuestionOutline, SearchOutline, CloseFilled, CircleInfoOutline, CaretDownOutline, ChevronUpOutline, ChevronDownOutline, CirclePlusOutline, MinusOutline, PlusOutline, ChevronLgLeftOutline, ChevronLgRightOutline, ChevronLeftOutline, ChevronRightOutline, TimeOutline, CalendarOutline, ArrowLeftOutline, ArrowRightOutline, EllipsisHorizontalOutline, EyeOutline, UploadOutline, ImageOutline, ChevronUpDownOutline, CheckFilled, RemoveOutline, LocationOutline } from '@majoo-ui/icons';
6
+ import { CloseOutline, UserFilled, CircleQuestionOutline, SearchOutline, CloseFilled, CircleInfoOutline, CaretDownOutline, ChevronUpOutline, ChevronDownOutline, CirclePlusOutline, SortingOutline, MinusOutline, PlusOutline, ChevronLgLeftOutline, ChevronLgRightOutline, ChevronLeftOutline, ChevronRightOutline, TimeOutline, CalendarOutline, ArrowLeftOutline, ArrowRightOutline, EllipsisHorizontalOutline, EyeOutline, UploadOutline, ImageOutline, ChevronUpDownOutline, CheckFilled, RemoveOutline, LocationOutline } from '@majoo-ui/icons';
7
7
  import { Transition } from 'react-transition-group';
8
8
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
9
9
  import { Portal } from '@majoo-ui/helpers';
@@ -10645,15 +10645,10 @@ InputCreatable.defaultProps = {
10645
10645
  value: ''
10646
10646
  };
10647
10647
 
10648
- const SortingIcon = styled('div', {
10649
- marginTop: 1,
10648
+ const SortingIcon = styled(Flex$1, {
10650
10649
  cursor: 'pointer',
10651
- '&::after': {
10652
- size: '16px',
10653
- content: `url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cg fill='%23A5ABAB'%3E%3Cpath d='m9.38 3.95 2.462 3.134c.338.43.098 1.166-.38 1.166H6.538c-.478 0-.718-.736-.38-1.166L8.62 3.95c.21-.267.55-.267.76 0zM9.38 14.05l2.462-3.134c.338-.43.098-1.166-.38-1.166H6.538c-.478 0-.718.736-.38 1.166L8.62 14.05c.21.267.55.267.76 0z'/%3E%3C/g%3E%3C/svg%3E")`,
10654
- margin: '0 $spacing-02 $spacing-01 0',
10655
- opacity: 1
10656
- }
10650
+ alignItems: 'center',
10651
+ justifyContent: 'center'
10657
10652
  });
10658
10653
 
10659
10654
  function InputResourceList({
@@ -10665,6 +10660,7 @@ function InputResourceList({
10665
10660
  counterFooterText = 'kategori dipilih',
10666
10661
  isLoading = false,
10667
10662
  enabledItems,
10663
+ emptyDataMessage,
10668
10664
  value,
10669
10665
  fetchData,
10670
10666
  onQueryChange,
@@ -10852,23 +10848,31 @@ function InputResourceList({
10852
10848
  disabled: disabled
10853
10849
  }, void 0), defaultSort && jsxs(Flex$1, Object.assign({
10854
10850
  align: "center",
10855
- gap: 4,
10851
+ gap: 3,
10856
10852
  css: {
10857
10853
  paddingLeft: !hideSelectAll ? 16 : 0,
10858
- marginTop: '$spacing-04'
10854
+ marginTop: '$spacing-05'
10859
10855
  }
10860
10856
  }, {
10861
10857
  children: [!hideSelectAll && jsx(InputCheckbox, {
10862
10858
  checked: (value === null || value === void 0 ? void 0 : value.length) === (data === null || data === void 0 ? void 0 : data.length),
10863
10859
  indeterminate: Boolean((value === null || value === void 0 ? void 0 : value.length) && (value === null || value === void 0 ? void 0 : value.length) < (data === null || data === void 0 ? void 0 : data.length)),
10864
- onCheckedChange: toggleCheckAll
10865
- }, void 0), jsx(Paragraph, Object.assign({
10866
- paragraph: "shortContentBold"
10860
+ onCheckedChange: toggleCheckAll,
10861
+ css: {
10862
+ marginRight: '$spacing-02'
10863
+ }
10864
+ }, void 0), jsx(Heading, Object.assign({
10865
+ heading: "headerTable"
10867
10866
  }, {
10868
- children: title || 'DATA TITLE'
10869
- }), void 0), jsx(SortingIcon, {
10867
+ children: title || 'Urutkan'
10868
+ }), void 0), jsx(SortingIcon, Object.assign({
10870
10869
  onClick: toggleSort
10871
- }, void 0)]
10870
+ }, {
10871
+ children: jsx(SortingOutline, {
10872
+ size: 16,
10873
+ color: colors$4.iconSecondary
10874
+ }, void 0)
10875
+ }), void 0)]
10872
10876
  }), void 0), isLoading && jsx(Flex$1, Object.assign({
10873
10877
  justify: "center",
10874
10878
  align: "center",
@@ -10906,10 +10910,12 @@ function InputResourceList({
10906
10910
  width: '100%'
10907
10911
  }
10908
10912
  }, {
10909
- children: jsx(Text$1, Object.assign({
10910
- variant: "caption"
10913
+ children: jsx(Paragraph, Object.assign({
10914
+ paragraph: "shortContentRegular",
10915
+ align: "center",
10916
+ color: "secondary"
10911
10917
  }, {
10912
- children: "Tidak ada data"
10918
+ children: emptyDataMessage || 'Tidak ada data'
10913
10919
  }), void 0)
10914
10920
  }), void 0), jsx(ConditionalWrapper, Object.assign({
10915
10921
  condition: !!fetchData && data.length > 0,
@@ -17626,6 +17632,124 @@ function InputDatePicker({
17626
17632
  }, void 0);
17627
17633
  }
17628
17634
 
17635
+ function CustomDatePicker({
17636
+ children,
17637
+ type = SINGLE_PICKER,
17638
+ disabled,
17639
+ onChange,
17640
+ defaultValue: defaultDateValue,
17641
+ value: dateValue,
17642
+ defaultDate,
17643
+ date,
17644
+ advanceView,
17645
+ placement = 'bottom-start',
17646
+ showTimePicker,
17647
+ minDate,
17648
+ maxDate,
17649
+ allowReset,
17650
+ sideOffset = 8
17651
+ }) {
17652
+ const [value, setValue] = useState(date || dateValue);
17653
+ const [defaultValue, setDefaultValue] = useState(defaultDate || defaultDateValue);
17654
+ useEffect(() => {
17655
+ setValue(date || dateValue);
17656
+ }, [date, dateValue]);
17657
+ useEffect(() => {
17658
+ setDefaultValue(defaultDate || defaultDateValue);
17659
+ }, [defaultDate, defaultDateValue]);
17660
+ const [{
17661
+ selectedDate
17662
+ }, dispatch] = useReducer(pickerReducer, {
17663
+ selectedDate: defaultValue !== null && defaultValue !== void 0 ? defaultValue : value
17664
+ });
17665
+ const [openPicker, setOpenPicker] = useState(false);
17666
+ useEffect(() => {
17667
+ if (value) {
17668
+ dispatch({
17669
+ type: UPDATE_PICKER,
17670
+ payload: value
17671
+ });
17672
+ }
17673
+ }, [value]);
17674
+ const isMobile = useMediaQuery(`(max-width: ${type === SINGLE_PICKER ? '480px' : '767px'})`);
17675
+
17676
+ function handleOpenChange() {
17677
+ if (!disabled) {
17678
+ setOpenPicker(!openPicker);
17679
+ }
17680
+ }
17681
+
17682
+ const handleDatePickerChange = value => {
17683
+ dispatch({
17684
+ type: 'UPDATE',
17685
+ payload: value
17686
+ });
17687
+ onChange === null || onChange === void 0 ? void 0 : onChange(value);
17688
+ };
17689
+
17690
+ const renderDatePicker = () => {
17691
+ return jsx(DatePicker, {
17692
+ advanceView: type === ADVANCE_PICKER && (!advanceView ? jsx(AdvancedOption, {
17693
+ options: advancePickerOptions,
17694
+ disabled: disabled,
17695
+ optionHandler: value => {
17696
+ dispatch({
17697
+ type: 'UPDATE',
17698
+ payload: advancePickerDate(value, undefined)
17699
+ });
17700
+ if (onChange) onChange(advancePickerDate(value, undefined));
17701
+ setOpenPicker(false);
17702
+ }
17703
+ }, void 0) : {
17704
+ advanceView
17705
+ }),
17706
+ type: type,
17707
+ disabled: disabled,
17708
+ date: value ? value === null || value === void 0 ? void 0 : value[1] : selectedDate === null || selectedDate === void 0 ? void 0 : selectedDate[1],
17709
+ selected: selectedDate,
17710
+ isMultiDatePicker: type !== SINGLE_PICKER,
17711
+ onChange: handleDatePickerChange,
17712
+ onClose: () => setOpenPicker(false),
17713
+ showTimePicker: showTimePicker,
17714
+ minDate: minDate,
17715
+ maxDate: maxDate,
17716
+ allowReset: allowReset
17717
+ }, void 0);
17718
+ };
17719
+
17720
+ return !isMobile ? jsxs(Popover, Object.assign({
17721
+ open: openPicker,
17722
+ onOpenChange: setOpenPicker,
17723
+ placement: placement,
17724
+ sideOffset: sideOffset
17725
+ }, {
17726
+ children: [jsx(PopoverTrigger, Object.assign({
17727
+ disabled: disabled
17728
+ }, {
17729
+ children: children
17730
+ }), void 0), jsx(PopoverContent, {
17731
+ children: renderDatePicker()
17732
+ }, void 0)]
17733
+ }), void 0) : jsxs(Fragment, {
17734
+ children: [/*#__PURE__*/React.cloneElement(children, Object.assign(Object.assign({}, children.props), {
17735
+ onClick: handleOpenChange
17736
+ })), jsx(Drawer, Object.assign({
17737
+ open: openPicker,
17738
+ onOpenChange: handleOpenChange,
17739
+ side: "bottom"
17740
+ }, {
17741
+ children: jsx(DrawerContent, Object.assign({
17742
+ css: {
17743
+ position: 'fixed',
17744
+ left: 0
17745
+ }
17746
+ }, {
17747
+ children: renderDatePicker()
17748
+ }), void 0)
17749
+ }), void 0)]
17750
+ }, void 0);
17751
+ }
17752
+
17629
17753
  const removeUndefinedFields = obj => {
17630
17754
  let newObj = {};
17631
17755
  Object.keys(obj).forEach(key => {
@@ -18048,7 +18172,7 @@ function PaginationInfo(_ref) {
18048
18172
  }, `Ditampilkan ${(currentPage - 1) * selectedLimit + 1} - ${selectedLimit * currentPage < totalData ? selectedLimit * currentPage : totalData} dari ${totalData} data`));
18049
18173
  }
18050
18174
 
18051
- const _excluded$2 = ["limit", "currentPage", "totalData", "hideDataInfo", "onLimitChange", "onPageChange", "rowsPerPageOptions"];
18175
+ const _excluded$2 = ["limit", "currentPage", "totalData", "totalPage", "hideDataInfo", "onLimitChange", "onPageChange", "rowsPerPageOptions"];
18052
18176
  var _jsxFileName$h = "/home/alfiantryp/Project/majoo-ui/packages/react/src/components/pagination/Pagination.js";
18053
18177
 
18054
18178
  function Pagination(_ref) {
@@ -18056,6 +18180,7 @@ function Pagination(_ref) {
18056
18180
  limit,
18057
18181
  currentPage,
18058
18182
  totalData,
18183
+ totalPage,
18059
18184
  hideDataInfo,
18060
18185
  onLimitChange,
18061
18186
  onPageChange,
@@ -18063,9 +18188,9 @@ function Pagination(_ref) {
18063
18188
  } = _ref,
18064
18189
  props = _objectWithoutPropertiesLoose(_ref, _excluded$2);
18065
18190
 
18066
- const totalPages = Math.ceil(totalData / limit);
18191
+ const totalPages = totalPage || Math.ceil(totalData / limit);
18067
18192
  const isMobile = useMediaQuery('(max-width: 700px)');
18068
- return !hideDataInfo || totalPages > 1 ? /*#__PURE__*/React__default.createElement(Flex$1, _extends({
18193
+ return /*#__PURE__*/React__default.createElement(Flex$1, _extends({
18069
18194
  direction: isMobile ? 'columnReverse' : 'row',
18070
18195
  align: "center",
18071
18196
  justify: "between",
@@ -18074,7 +18199,7 @@ function Pagination(_ref) {
18074
18199
  __self: this,
18075
18200
  __source: {
18076
18201
  fileName: _jsxFileName$h,
18077
- lineNumber: 21,
18202
+ lineNumber: 22,
18078
18203
  columnNumber: 5
18079
18204
  }
18080
18205
  }), !hideDataInfo ? /*#__PURE__*/React__default.createElement(PaginationInfo, {
@@ -18086,14 +18211,14 @@ function Pagination(_ref) {
18086
18211
  __self: this,
18087
18212
  __source: {
18088
18213
  fileName: _jsxFileName$h,
18089
- lineNumber: 23,
18214
+ lineNumber: 24,
18090
18215
  columnNumber: 9
18091
18216
  }
18092
18217
  }) : /*#__PURE__*/React__default.createElement(Box, {
18093
18218
  __self: this,
18094
18219
  __source: {
18095
18220
  fileName: _jsxFileName$h,
18096
- lineNumber: 31,
18221
+ lineNumber: 32,
18097
18222
  columnNumber: 9
18098
18223
  }
18099
18224
  }), /*#__PURE__*/React__default.createElement(PaginationButton, {
@@ -18103,23 +18228,17 @@ function Pagination(_ref) {
18103
18228
  __self: this,
18104
18229
  __source: {
18105
18230
  fileName: _jsxFileName$h,
18106
- lineNumber: 34,
18231
+ lineNumber: 35,
18107
18232
  columnNumber: 7
18108
18233
  }
18109
- })) : /*#__PURE__*/React__default.createElement(Box, {
18110
- __self: this,
18111
- __source: {
18112
- fileName: _jsxFileName$h,
18113
- lineNumber: 37,
18114
- columnNumber: 5
18115
- }
18116
- });
18234
+ }));
18117
18235
  }
18118
18236
 
18119
18237
  Pagination.propTypes = {
18120
18238
  limit: PropTypes.number,
18121
18239
  currentPage: PropTypes.number,
18122
18240
  totalData: PropTypes.number,
18241
+ totalPage: PropTypes.number,
18123
18242
  hideDataInfo: PropTypes.bool,
18124
18243
  onLimitChange: PropTypes.func,
18125
18244
  onPageChange: PropTypes.func
@@ -18802,6 +18921,7 @@ function Table({
18802
18921
  data: rawData,
18803
18922
  keyId = 'id',
18804
18923
  pageIndex: controlledPageIndex = 0,
18924
+ totalPage,
18805
18925
  totalData = 0,
18806
18926
  fetchData,
18807
18927
  hideDataInfo = false,
@@ -18855,7 +18975,7 @@ function Table({
18855
18975
  manualPagination: !!fetchData,
18856
18976
  manualSortBy: !!fetchData,
18857
18977
  defaultCanSort: true,
18858
- pageCount: Math.ceil(totalData / limit),
18978
+ pageCount: totalPage || Math.ceil(totalData / limit),
18859
18979
  autoResetSortBy: false,
18860
18980
  autoResetExpanded: true,
18861
18981
  autoResetPage: false,
@@ -18899,6 +19019,7 @@ function Table({
18899
19019
  limit: pageSize,
18900
19020
  currentPage: pageIndex + 1,
18901
19021
  totalData: totalData,
19022
+ totalPage: totalPage,
18902
19023
  onLimitChange: selectedItem => {
18903
19024
  if (selectedItem) {
18904
19025
  doFetchData(pageIndex, selectedItem);
@@ -34047,4 +34168,4 @@ const useToggle = initialValue => {
34047
34168
  return useReducer(toggleReducer, initialValue);
34048
34169
  };
34049
34170
 
34050
- export { ADVANCE_PICKER, Accordion, AccordionContent, AccordionItem, AccordionTrigger, AdvancedOption, AlertDialog, AlertDialogCancel, AlertDialogConfirm, AlertDialogContent, AlertDialogDescription, AlertDialogFunction, AlertDialogRoot, AlertDialogTitle, AlertDialogTrigger, Avatar, BOTTOM_LEFT_POSITION, BOTTOM_RIGHT_POSITION, Badge, Banner, BannerClose, BannerDescription, BannerLink, BannerTitle, Box, Breadcrumb, BreadcrumbItem, BreadcrumbLink, Button$4 as Button, ButtonDropdown, ButtonGroup$1 as ButtonGroup, ButtonGroupItem, ButtonPrimitive, Card, CardComponent, CardLineColor, CheckboxGroup, CheckboxTable, ColorPicker$1 as ColorPicker, Colors, ContentEditor, ContextMenu, ContextMenuItem, ContextMenuSeparator, ContextMenuTrigger, DATE_RANGE_PICKER, DEFAULT, DateColumn, DatePicker, DecimalColumn, Device as DevicePreview, Dialog, DialogClose, DialogContent, DialogDescription, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerBody, DrawerClose, DrawerCloseButton, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuArrow, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuItem, DropdownMenuItemIndicator, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuTrigger, EditableTable, Flex$1 as Flex, FormGroup, FormHelper, FormLabel, Grid, GridItem, Heading, IconButton, IconContainer, Image, ImageDevicePreview, InputCheckbox, InputColorPicker, InputCombobox, InputCounter, InputCreatable, InputDatePicker, InputGroup, InputLeftAddon, InputLeftElement, InputMapPicker, InputNumber, InputOTP, InputPrefix, InputRadio, InputRadioGroup, InputResourceList, InputRightAddon, InputRightElement, InputSearchbox, InputSelect, InputSelectCheck, InputSelectTag, InputSuffix, InputSwitch, TagsInput as InputTags, InputText, InputTextArea, InputTimePicker, LAST_7_DAYS, LAST_MONTH, LAST_TWO_MONTHS, LAST_WEEK, LineChart, Link, LoadingBar, MONTHLY, MajooProvider, MapPicker, MobileTable, ModalDialog, ModalDialogContent, ModalDialogFooter, ModalDialogTitle, ModalDialogTrigger, NEXT_MONTH, NEXT_WEEK, NativeTimePicker, NotificationBadge, OptionWrapper$2 as OptionWrapper, PREV_MONTH, PREV_WEEK, PageContainer, PageDialog, PageDialogContent, PageDialogFooter, PageDialogTitle, PageDialogTrigger, Pagination, Paper, PaperComponent, Paragraph, Popover, PopoverClose, PopoverContent, PopoverTrigger, PriceColumn, Progress$1 as Progress, ProgressIndicator, RANGE_CONTROL, RANGE_MONTH, RANGE_PICKER, RANGE_WEEK, ResendOTP, RightSlot, rowExpanderColumn as RowExpanderColumn, rowMenuColumn as RowMenuColumn, rowSelectionColumn as RowSelectionColumn, SINGLE_PICKER, SelectBox, SelectContainer, SelectInputSearch, SelectItem, SelectOption, Separator$2 as Separator, Skeleton, Slider, StepWizard, StepWizardContext, StyledBox, StyledDropdown, StyledInput$1 as StyledInput, StyledSpan, StyledTitle$2 as StyledTitle, THIS_MONTH, THIS_WEEK, TODAY, TOP_LEFT_POSITION, TOP_RIGHT_POSITION, Table, TableBody$3 as TableBody, TableCell$3 as TableCell, TableColumn, TableContent$3 as TableContent, TableFoot$2 as TableFoot, TableFootCell$2 as TableFootCell, TableFootRow$2 as TableFootRow, TableHead$3 as TableHead, TableHeadCellContent, TableHeaderCellContainer, TableOfContent, TableOfContentPage, TableRow$3 as TableRow, Tabs$1 as Tabs, TabsContent$1 as TabsContent, TabsList$1 as TabsList, TabsTrigger$1 as TabsTrigger, Tag, TagStatus, Text$1 as Text, TextVariantsEnum, TimePicker, ToastContext, Tooltip$1 as Tooltip, UPDATE_PICKER, Upload, WEEKLY, YESTERDAY, addOnCellStyle, advancePickerDate, advancePickerOptions, defaultFetchDataParams, pickerReducer, useListOption, useToggle };
34171
+ export { ADVANCE_PICKER, Accordion, AccordionContent, AccordionItem, AccordionTrigger, AdvancedOption, AlertDialog, AlertDialogCancel, AlertDialogConfirm, AlertDialogContent, AlertDialogDescription, AlertDialogFunction, AlertDialogRoot, AlertDialogTitle, AlertDialogTrigger, Avatar, BOTTOM_LEFT_POSITION, BOTTOM_RIGHT_POSITION, Badge, Banner, BannerClose, BannerDescription, BannerLink, BannerTitle, Box, Breadcrumb, BreadcrumbItem, BreadcrumbLink, Button$4 as Button, ButtonDropdown, ButtonGroup$1 as ButtonGroup, ButtonGroupItem, ButtonPrimitive, Card, CardComponent, CardLineColor, CheckboxGroup, CheckboxTable, ColorPicker$1 as ColorPicker, Colors, ContentEditor, ContextMenu, ContextMenuItem, ContextMenuSeparator, ContextMenuTrigger, CustomDatePicker, DATE_RANGE_PICKER, DEFAULT, DateColumn, DatePicker, DecimalColumn, Device as DevicePreview, Dialog, DialogClose, DialogContent, DialogDescription, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerBody, DrawerClose, DrawerCloseButton, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuArrow, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuItem, DropdownMenuItemIndicator, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuTrigger, EditableTable, Flex$1 as Flex, FormGroup, FormHelper, FormLabel, Grid, GridItem, Heading, IconButton, IconContainer, Image, ImageDevicePreview, InputCheckbox, InputColorPicker, InputCombobox, InputCounter, InputCreatable, InputDatePicker, InputGroup, InputLeftAddon, InputLeftElement, InputMapPicker, InputNumber, InputOTP, InputPrefix, InputRadio, InputRadioGroup, InputResourceList, InputRightAddon, InputRightElement, InputSearchbox, InputSelect, InputSelectCheck, InputSelectTag, InputSuffix, InputSwitch, TagsInput as InputTags, InputText, InputTextArea, InputTimePicker, LAST_7_DAYS, LAST_MONTH, LAST_TWO_MONTHS, LAST_WEEK, LineChart, Link, LoadingBar, MONTHLY, MajooProvider, MapPicker, MobileTable, ModalDialog, ModalDialogContent, ModalDialogFooter, ModalDialogTitle, ModalDialogTrigger, NEXT_MONTH, NEXT_WEEK, NativeTimePicker, NotificationBadge, OptionWrapper$2 as OptionWrapper, PREV_MONTH, PREV_WEEK, PageContainer, PageDialog, PageDialogContent, PageDialogFooter, PageDialogTitle, PageDialogTrigger, Pagination, Paper, PaperComponent, Paragraph, Popover, PopoverClose, PopoverContent, PopoverTrigger, PriceColumn, Progress$1 as Progress, ProgressIndicator, RANGE_CONTROL, RANGE_MONTH, RANGE_PICKER, RANGE_WEEK, ResendOTP, RightSlot, rowExpanderColumn as RowExpanderColumn, rowMenuColumn as RowMenuColumn, rowSelectionColumn as RowSelectionColumn, SINGLE_PICKER, SelectBox, SelectContainer, SelectInputSearch, SelectItem, SelectOption, Separator$2 as Separator, Skeleton, Slider, StepWizard, StepWizardContext, StyledBox, StyledDropdown, StyledInput$1 as StyledInput, StyledSpan, StyledTitle$2 as StyledTitle, THIS_MONTH, THIS_WEEK, TODAY, TOP_LEFT_POSITION, TOP_RIGHT_POSITION, Table, TableBody$3 as TableBody, TableCell$3 as TableCell, TableColumn, TableContent$3 as TableContent, TableFoot$2 as TableFoot, TableFootCell$2 as TableFootCell, TableFootRow$2 as TableFootRow, TableHead$3 as TableHead, TableHeadCellContent, TableHeaderCellContainer, TableOfContent, TableOfContentPage, TableRow$3 as TableRow, Tabs$1 as Tabs, TabsContent$1 as TabsContent, TabsList$1 as TabsList, TabsTrigger$1 as TabsTrigger, Tag, TagStatus, Text$1 as Text, TextVariantsEnum, TimePicker, ToastContext, Tooltip$1 as Tooltip, UPDATE_PICKER, Upload, WEEKLY, YESTERDAY, addOnCellStyle, advancePickerDate, advancePickerOptions, defaultFetchDataParams, pickerReducer, useListOption, useToggle };
package/index.umd.js CHANGED
@@ -10780,15 +10780,10 @@
10780
10780
  value: ''
10781
10781
  };
10782
10782
 
10783
- var SortingIcon = styled('div', {
10784
- marginTop: 1,
10783
+ var SortingIcon = styled(Flex$1, {
10785
10784
  cursor: 'pointer',
10786
- '&::after': {
10787
- size: '16px',
10788
- content: "url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cg fill='%23A5ABAB'%3E%3Cpath d='m9.38 3.95 2.462 3.134c.338.43.098 1.166-.38 1.166H6.538c-.478 0-.718-.736-.38-1.166L8.62 3.95c.21-.267.55-.267.76 0zM9.38 14.05l2.462-3.134c.338-.43.098-1.166-.38-1.166H6.538c-.478 0-.718.736-.38 1.166L8.62 14.05c.21.267.55.267.76 0z'/%3E%3C/g%3E%3C/svg%3E\")",
10789
- margin: '0 $spacing-02 $spacing-01 0',
10790
- opacity: 1
10791
- }
10785
+ alignItems: 'center',
10786
+ justifyContent: 'center'
10792
10787
  });
10793
10788
 
10794
10789
  function InputResourceList(_a) {
@@ -10804,6 +10799,7 @@
10804
10799
  _e = _a.isLoading,
10805
10800
  isLoading = _e === void 0 ? false : _e,
10806
10801
  enabledItems = _a.enabledItems,
10802
+ emptyDataMessage = _a.emptyDataMessage,
10807
10803
  value = _a.value,
10808
10804
  fetchData = _a.fetchData,
10809
10805
  onQueryChange = _a.onQueryChange,
@@ -11016,23 +11012,31 @@
11016
11012
  disabled: disabled
11017
11013
  }, void 0), defaultSort && jsxRuntime.jsxs(Flex$1, __assign({
11018
11014
  align: "center",
11019
- gap: 4,
11015
+ gap: 3,
11020
11016
  css: {
11021
11017
  paddingLeft: !hideSelectAll ? 16 : 0,
11022
- marginTop: '$spacing-04'
11018
+ marginTop: '$spacing-05'
11023
11019
  }
11024
11020
  }, {
11025
11021
  children: [!hideSelectAll && jsxRuntime.jsx(InputCheckbox, {
11026
11022
  checked: (value === null || value === void 0 ? void 0 : value.length) === (data === null || data === void 0 ? void 0 : data.length),
11027
11023
  indeterminate: Boolean((value === null || value === void 0 ? void 0 : value.length) && (value === null || value === void 0 ? void 0 : value.length) < (data === null || data === void 0 ? void 0 : data.length)),
11028
- onCheckedChange: toggleCheckAll
11029
- }, void 0), jsxRuntime.jsx(Paragraph, __assign({
11030
- paragraph: "shortContentBold"
11024
+ onCheckedChange: toggleCheckAll,
11025
+ css: {
11026
+ marginRight: '$spacing-02'
11027
+ }
11028
+ }, void 0), jsxRuntime.jsx(Heading, __assign({
11029
+ heading: "headerTable"
11031
11030
  }, {
11032
- children: title || 'DATA TITLE'
11033
- }), void 0), jsxRuntime.jsx(SortingIcon, {
11031
+ children: title || 'Urutkan'
11032
+ }), void 0), jsxRuntime.jsx(SortingIcon, __assign({
11034
11033
  onClick: toggleSort
11035
- }, void 0)]
11034
+ }, {
11035
+ children: jsxRuntime.jsx(icons.SortingOutline, {
11036
+ size: 16,
11037
+ color: colors$4.iconSecondary
11038
+ }, void 0)
11039
+ }), void 0)]
11036
11040
  }), void 0), isLoading && jsxRuntime.jsx(Flex$1, __assign({
11037
11041
  justify: "center",
11038
11042
  align: "center",
@@ -11070,10 +11074,12 @@
11070
11074
  width: '100%'
11071
11075
  }
11072
11076
  }, {
11073
- children: jsxRuntime.jsx(Text$1, __assign({
11074
- variant: "caption"
11077
+ children: jsxRuntime.jsx(Paragraph, __assign({
11078
+ paragraph: "shortContentRegular",
11079
+ align: "center",
11080
+ color: "secondary"
11075
11081
  }, {
11076
- children: "Tidak ada data"
11082
+ children: emptyDataMessage || 'Tidak ada data'
11077
11083
  }), void 0)
11078
11084
  }), void 0), jsxRuntime.jsx(ConditionalWrapper, __assign({
11079
11085
  condition: !!fetchData && data.length > 0,
@@ -17915,6 +17921,140 @@
17915
17921
  }, void 0);
17916
17922
  }
17917
17923
 
17924
+ function CustomDatePicker(_a) {
17925
+ var children = _a.children,
17926
+ _b = _a.type,
17927
+ type = _b === void 0 ? SINGLE_PICKER : _b,
17928
+ disabled = _a.disabled,
17929
+ onChange = _a.onChange,
17930
+ defaultDateValue = _a.defaultValue,
17931
+ dateValue = _a.value,
17932
+ defaultDate = _a.defaultDate,
17933
+ date = _a.date,
17934
+ advanceView = _a.advanceView,
17935
+ _c = _a.placement,
17936
+ placement = _c === void 0 ? 'bottom-start' : _c,
17937
+ showTimePicker = _a.showTimePicker,
17938
+ minDate = _a.minDate,
17939
+ maxDate = _a.maxDate,
17940
+ allowReset = _a.allowReset,
17941
+ _d = _a.sideOffset,
17942
+ sideOffset = _d === void 0 ? 8 : _d;
17943
+
17944
+ var _e = React.useState(date || dateValue),
17945
+ value = _e[0],
17946
+ setValue = _e[1];
17947
+
17948
+ var _f = React.useState(defaultDate || defaultDateValue),
17949
+ defaultValue = _f[0],
17950
+ setDefaultValue = _f[1];
17951
+
17952
+ React.useEffect(function () {
17953
+ setValue(date || dateValue);
17954
+ }, [date, dateValue]);
17955
+ React.useEffect(function () {
17956
+ setDefaultValue(defaultDate || defaultDateValue);
17957
+ }, [defaultDate, defaultDateValue]);
17958
+
17959
+ var _g = React.useReducer(pickerReducer, {
17960
+ selectedDate: defaultValue !== null && defaultValue !== void 0 ? defaultValue : value
17961
+ }),
17962
+ selectedDate = _g[0].selectedDate,
17963
+ dispatch = _g[1];
17964
+
17965
+ var _h = React.useState(false),
17966
+ openPicker = _h[0],
17967
+ setOpenPicker = _h[1];
17968
+
17969
+ React.useEffect(function () {
17970
+ if (value) {
17971
+ dispatch({
17972
+ type: UPDATE_PICKER,
17973
+ payload: value
17974
+ });
17975
+ }
17976
+ }, [value]);
17977
+ var isMobile = useMediaQuery("(max-width: ".concat(type === SINGLE_PICKER ? '480px' : '767px', ")"));
17978
+
17979
+ function handleOpenChange() {
17980
+ if (!disabled) {
17981
+ setOpenPicker(!openPicker);
17982
+ }
17983
+ }
17984
+
17985
+ var handleDatePickerChange = function handleDatePickerChange(value) {
17986
+ dispatch({
17987
+ type: 'UPDATE',
17988
+ payload: value
17989
+ });
17990
+ onChange === null || onChange === void 0 ? void 0 : onChange(value);
17991
+ };
17992
+
17993
+ var renderDatePicker = function renderDatePicker() {
17994
+ return jsxRuntime.jsx(DatePicker, {
17995
+ advanceView: type === ADVANCE_PICKER && (!advanceView ? jsxRuntime.jsx(AdvancedOption, {
17996
+ options: advancePickerOptions,
17997
+ disabled: disabled,
17998
+ optionHandler: function (value) {
17999
+ dispatch({
18000
+ type: 'UPDATE',
18001
+ payload: advancePickerDate(value, undefined)
18002
+ });
18003
+ if (onChange) onChange(advancePickerDate(value, undefined));
18004
+ setOpenPicker(false);
18005
+ }
18006
+ }, void 0) : {
18007
+ advanceView: advanceView
18008
+ }),
18009
+ type: type,
18010
+ disabled: disabled,
18011
+ date: value ? value === null || value === void 0 ? void 0 : value[1] : selectedDate === null || selectedDate === void 0 ? void 0 : selectedDate[1],
18012
+ selected: selectedDate,
18013
+ isMultiDatePicker: type !== SINGLE_PICKER,
18014
+ onChange: handleDatePickerChange,
18015
+ onClose: function () {
18016
+ return setOpenPicker(false);
18017
+ },
18018
+ showTimePicker: showTimePicker,
18019
+ minDate: minDate,
18020
+ maxDate: maxDate,
18021
+ allowReset: allowReset
18022
+ }, void 0);
18023
+ };
18024
+
18025
+ return !isMobile ? jsxRuntime.jsxs(Popover, __assign({
18026
+ open: openPicker,
18027
+ onOpenChange: setOpenPicker,
18028
+ placement: placement,
18029
+ sideOffset: sideOffset
18030
+ }, {
18031
+ children: [jsxRuntime.jsx(PopoverTrigger, __assign({
18032
+ disabled: disabled
18033
+ }, {
18034
+ children: children
18035
+ }), void 0), jsxRuntime.jsx(PopoverContent, {
18036
+ children: renderDatePicker()
18037
+ }, void 0)]
18038
+ }), void 0) : jsxRuntime.jsxs(jsxRuntime.Fragment, {
18039
+ children: [/*#__PURE__*/React__namespace.cloneElement(children, __assign(__assign({}, children.props), {
18040
+ onClick: handleOpenChange
18041
+ })), jsxRuntime.jsx(Drawer, __assign({
18042
+ open: openPicker,
18043
+ onOpenChange: handleOpenChange,
18044
+ side: "bottom"
18045
+ }, {
18046
+ children: jsxRuntime.jsx(DrawerContent, __assign({
18047
+ css: {
18048
+ position: 'fixed',
18049
+ left: 0
18050
+ }
18051
+ }, {
18052
+ children: renderDatePicker()
18053
+ }), void 0)
18054
+ }), void 0)]
18055
+ }, void 0);
18056
+ }
18057
+
17918
18058
  const removeUndefinedFields = obj => {
17919
18059
  let newObj = {};
17920
18060
  Object.keys(obj).forEach(key => {
@@ -18337,7 +18477,7 @@
18337
18477
  }, `Ditampilkan ${(currentPage - 1) * selectedLimit + 1} - ${selectedLimit * currentPage < totalData ? selectedLimit * currentPage : totalData} dari ${totalData} data`));
18338
18478
  }
18339
18479
 
18340
- const _excluded$2 = ["limit", "currentPage", "totalData", "hideDataInfo", "onLimitChange", "onPageChange", "rowsPerPageOptions"];
18480
+ const _excluded$2 = ["limit", "currentPage", "totalData", "totalPage", "hideDataInfo", "onLimitChange", "onPageChange", "rowsPerPageOptions"];
18341
18481
  var _jsxFileName$h = "/home/alfiantryp/Project/majoo-ui/packages/react/src/components/pagination/Pagination.js";
18342
18482
 
18343
18483
  function Pagination(_ref) {
@@ -18345,6 +18485,7 @@
18345
18485
  limit,
18346
18486
  currentPage,
18347
18487
  totalData,
18488
+ totalPage,
18348
18489
  hideDataInfo,
18349
18490
  onLimitChange,
18350
18491
  onPageChange,
@@ -18352,9 +18493,9 @@
18352
18493
  } = _ref,
18353
18494
  props = _objectWithoutPropertiesLoose(_ref, _excluded$2);
18354
18495
 
18355
- const totalPages = Math.ceil(totalData / limit);
18496
+ const totalPages = totalPage || Math.ceil(totalData / limit);
18356
18497
  const isMobile = useMediaQuery('(max-width: 700px)');
18357
- return !hideDataInfo || totalPages > 1 ? /*#__PURE__*/React__default["default"].createElement(Flex$1, _extends({
18498
+ return /*#__PURE__*/React__default["default"].createElement(Flex$1, _extends({
18358
18499
  direction: isMobile ? 'columnReverse' : 'row',
18359
18500
  align: "center",
18360
18501
  justify: "between",
@@ -18363,7 +18504,7 @@
18363
18504
  __self: this,
18364
18505
  __source: {
18365
18506
  fileName: _jsxFileName$h,
18366
- lineNumber: 21,
18507
+ lineNumber: 22,
18367
18508
  columnNumber: 5
18368
18509
  }
18369
18510
  }), !hideDataInfo ? /*#__PURE__*/React__default["default"].createElement(PaginationInfo, {
@@ -18375,14 +18516,14 @@
18375
18516
  __self: this,
18376
18517
  __source: {
18377
18518
  fileName: _jsxFileName$h,
18378
- lineNumber: 23,
18519
+ lineNumber: 24,
18379
18520
  columnNumber: 9
18380
18521
  }
18381
18522
  }) : /*#__PURE__*/React__default["default"].createElement(Box, {
18382
18523
  __self: this,
18383
18524
  __source: {
18384
18525
  fileName: _jsxFileName$h,
18385
- lineNumber: 31,
18526
+ lineNumber: 32,
18386
18527
  columnNumber: 9
18387
18528
  }
18388
18529
  }), /*#__PURE__*/React__default["default"].createElement(PaginationButton, {
@@ -18392,23 +18533,17 @@
18392
18533
  __self: this,
18393
18534
  __source: {
18394
18535
  fileName: _jsxFileName$h,
18395
- lineNumber: 34,
18536
+ lineNumber: 35,
18396
18537
  columnNumber: 7
18397
18538
  }
18398
- })) : /*#__PURE__*/React__default["default"].createElement(Box, {
18399
- __self: this,
18400
- __source: {
18401
- fileName: _jsxFileName$h,
18402
- lineNumber: 37,
18403
- columnNumber: 5
18404
- }
18405
- });
18539
+ }));
18406
18540
  }
18407
18541
 
18408
18542
  Pagination.propTypes = {
18409
18543
  limit: PropTypes__default["default"].number,
18410
18544
  currentPage: PropTypes__default["default"].number,
18411
18545
  totalData: PropTypes__default["default"].number,
18546
+ totalPage: PropTypes__default["default"].number,
18412
18547
  hideDataInfo: PropTypes__default["default"].bool,
18413
18548
  onLimitChange: PropTypes__default["default"].func,
18414
18549
  onPageChange: PropTypes__default["default"].func
@@ -19102,6 +19237,7 @@
19102
19237
  keyId = _b === void 0 ? 'id' : _b,
19103
19238
  _c = _a.pageIndex,
19104
19239
  controlledPageIndex = _c === void 0 ? 0 : _c,
19240
+ totalPage = _a.totalPage,
19105
19241
  _d = _a.totalData,
19106
19242
  totalData = _d === void 0 ? 0 : _d,
19107
19243
  fetchData = _a.fetchData,
@@ -19177,7 +19313,7 @@
19177
19313
  manualPagination: !!fetchData,
19178
19314
  manualSortBy: !!fetchData,
19179
19315
  defaultCanSort: true,
19180
- pageCount: Math.ceil(totalData / limit),
19316
+ pageCount: totalPage || Math.ceil(totalData / limit),
19181
19317
  autoResetSortBy: false,
19182
19318
  autoResetExpanded: true,
19183
19319
  autoResetPage: false,
@@ -19229,6 +19365,7 @@
19229
19365
  limit: pageSize,
19230
19366
  currentPage: pageIndex + 1,
19231
19367
  totalData: totalData,
19368
+ totalPage: totalPage,
19232
19369
  onLimitChange: function (selectedItem) {
19233
19370
  if (selectedItem) {
19234
19371
  doFetchData(pageIndex, selectedItem);
@@ -34644,6 +34781,7 @@
34644
34781
  exports.ContextMenuItem = ContextMenuItem;
34645
34782
  exports.ContextMenuSeparator = ContextMenuSeparator;
34646
34783
  exports.ContextMenuTrigger = ContextMenuTrigger;
34784
+ exports.CustomDatePicker = CustomDatePicker;
34647
34785
  exports.DATE_RANGE_PICKER = DATE_RANGE_PICKER;
34648
34786
  exports.DEFAULT = DEFAULT;
34649
34787
  exports.DateColumn = DateColumn;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@majoo-ui/react",
3
- "version": "1.54.21",
3
+ "version": "1.55.1",
4
4
  "dependencies": {
5
5
  "@majoo-ui/core": "^1.31.1",
6
6
  "@majoo-ui/helpers": "^1.30.5",