@mw-kit/mw-ui 1.1.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.
@@ -12,6 +12,7 @@ interface CommonProps extends React.HTMLAttributes<HTMLDivElement> {
12
12
  maxWidth?: string | number;
13
13
  maxHeight?: string | number;
14
14
  references?: References;
15
+ zIndex?: number;
15
16
  }
16
17
  export interface AbsoluteContainerProps extends CommonProps {
17
18
  position?: Position;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ declare const Footer: () => JSX.Element;
3
+ export default Footer;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ declare const Header: () => JSX.Element;
3
+ export default Header;
@@ -5,29 +5,34 @@ import { InputProps } from '../Input/interfaces';
5
5
  export interface Data {
6
6
  value: string;
7
7
  }
8
- interface Option extends Data {
8
+ export interface Option extends Data {
9
9
  label: string | {
10
10
  text: string;
11
11
  element: ElementOrString;
12
12
  };
13
13
  onClick?: (index: number, data: Data) => void;
14
14
  }
15
+ interface LoaderReturn {
16
+ options: Option[];
17
+ lastPage: boolean;
18
+ }
19
+ export declare type Loader = (search: string, page: number) => Promise<LoaderReturn | Option[]>;
15
20
  interface CommonProps extends Omit<InputProps, 'type' | 'mask' | 'icon' | 'setValue' | 'name' | 'value' | 'onChange'> {
16
21
  onScrollEnd?: () => Promise<void>;
17
22
  position?: Position;
18
23
  disableAutoPosition?: boolean;
19
- search?: (value: string) => Promise<void>;
24
+ loader?: Loader;
25
+ options: Option[];
26
+ setOptions: React.Dispatch<React.SetStateAction<Option[]>>;
20
27
  }
21
28
  export interface OneSelectProps extends CommonProps {
22
29
  type: 'select';
23
- options: Option[];
24
30
  name?: string;
25
31
  setValue: (value: string) => void;
26
32
  value: string;
27
33
  }
28
34
  export interface MultSelectProps extends CommonProps {
29
35
  type: 'select-multiple';
30
- options: Option[];
31
36
  setValue: (value: string[]) => void;
32
37
  value: string[];
33
38
  selectAll?: boolean;
@@ -35,9 +40,11 @@ export interface MultSelectProps extends CommonProps {
35
40
  export declare type SelectProps = OneSelectProps | MultSelectProps;
36
41
  export interface ContextInterface {
37
42
  props: SelectProps;
38
- open: boolean;
39
43
  setOpen: React.Dispatch<React.SetStateAction<boolean>>;
40
44
  checked: string[];
41
45
  setChecked: React.Dispatch<React.SetStateAction<string[]>>;
46
+ searched: string;
47
+ setSearched: React.Dispatch<React.SetStateAction<string>>;
48
+ setPage: React.Dispatch<React.SetStateAction<number>>;
42
49
  }
43
50
  export {};
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import { ZoomProps } from './interfaces';
3
+ declare const Zoom: (props: ZoomProps) => JSX.Element;
4
+ export default Zoom;
@@ -0,0 +1,9 @@
1
+ import { ModalProps } from '../Modal/interfaces';
2
+ export interface StyledZoomProps {
3
+ width?: number | string;
4
+ height?: number | string;
5
+ }
6
+ export interface ZoomProps extends StyledZoomProps {
7
+ src: string;
8
+ defaultClickOptions?: Partial<ModalProps>;
9
+ }
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { StyledZoomProps } from './interfaces';
3
+ export declare const Image: import("styled-components").StyledComponent<"img", import("styled-components").DefaultTheme, {}, never>;
4
+ export declare const Container: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, StyledZoomProps, never>;
5
+ export declare const Dimmer: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
6
+ export declare const Button: import("styled-components").StyledComponent<(props: import("../Button/interfaces").ButtonProps) => JSX.Element, import("styled-components").DefaultTheme, {}, never>;
7
+ export declare const ModalContent: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
@@ -15,4 +15,5 @@ export { default as MwToast } from './Toast';
15
15
  export { default as MwDatePicker } from './Calendar';
16
16
  export { default as MwCalendarInterval } from './CalendarInterval';
17
17
  export { default as MwPlaceholder } from './Placeholder';
18
+ export { default as MwZoom } from './Zoom';
18
19
  export { default as MwEllipsisContainer } from './EllipsisContainer';
package/dist/index.js CHANGED
@@ -11908,7 +11908,7 @@ var positions = {
11908
11908
  return styled.css(_templateObject8$1 || (_templateObject8$1 = _taggedTemplateLiteralLoose(["\n top: ", ";\n left: 0;\n "])), top || '100%');
11909
11909
  }
11910
11910
  };
11911
- var Container$2 = styled__default.div(_templateObject9$1 || (_templateObject9$1 = _taggedTemplateLiteralLoose(["\n ", ";\n\n > div {\n box-shadow: 0px 3px 6px ", ";\n border: 1px solid ", ";\n }\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n position: absolute;\n\n ", "\n\n ", "\n"])), function (_ref9) {
11911
+ var Container$2 = styled__default.div(_templateObject9$1 || (_templateObject9$1 = _taggedTemplateLiteralLoose(["\n ", ";\n\n > div {\n box-shadow: 0px 3px 6px ", ";\n border: 1px solid ", ";\n }\n\n z-index: ", ";\n\n ", "\n\n ", "\n\n ", "\n\n ", "\n\n position: absolute;\n\n ", "\n\n ", "\n"])), function (_ref9) {
11912
11912
  var theme = _ref9.theme;
11913
11913
  return theme.useTypography('p');
11914
11914
  }, function (_ref10) {
@@ -11918,27 +11918,30 @@ var Container$2 = styled__default.div(_templateObject9$1 || (_templateObject9$1
11918
11918
  var theme = _ref11.theme;
11919
11919
  return theme.colors.lightestGrey;
11920
11920
  }, function (_ref12) {
11921
- var width = _ref12.width;
11921
+ var zIndex = _ref12.zIndex;
11922
+ return zIndex || 1;
11923
+ }, function (_ref13) {
11924
+ var width = _ref13.width;
11922
11925
  if (!width) return;
11923
11926
  return styled.css(_templateObject10$1 || (_templateObject10$1 = _taggedTemplateLiteralLoose(["\n width: ", ";\n "])), width);
11924
- }, function (_ref13) {
11925
- var height = _ref13.height;
11927
+ }, function (_ref14) {
11928
+ var height = _ref14.height;
11926
11929
  if (!height) return;
11927
11930
  return styled.css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteralLoose(["\n height: ", ";\n "])), height);
11928
- }, function (_ref14) {
11929
- var maxWidth = _ref14.maxWidth;
11931
+ }, function (_ref15) {
11932
+ var maxWidth = _ref15.maxWidth;
11930
11933
  if (!maxWidth) return;
11931
11934
  return styled.css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteralLoose(["\n max-width: ", ";\n "])), maxWidth);
11932
- }, function (_ref15) {
11933
- var maxHeight = _ref15.maxHeight;
11935
+ }, function (_ref16) {
11936
+ var maxHeight = _ref16.maxHeight;
11934
11937
  if (!maxHeight) return;
11935
11938
  return styled.css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteralLoose(["\n max-height: ", ";\n "])), maxHeight);
11936
- }, function (_ref16) {
11937
- var position = _ref16.position,
11938
- references = _ref16.references;
11939
- return positions[position](references || {});
11940
11939
  }, function (_ref17) {
11941
- var firstRender = _ref17.firstRender;
11940
+ var position = _ref17.position,
11941
+ references = _ref17.references;
11942
+ return positions[position](references || {});
11943
+ }, function (_ref18) {
11944
+ var firstRender = _ref18.firstRender;
11942
11945
  if (!firstRender) return;
11943
11946
  return styled.css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteralLoose(["\n visibility: hidden;\n "])));
11944
11947
  });
@@ -13386,52 +13389,53 @@ var SelectAllContainer = styled__default.div(_templateObject4$b || (_templateObj
13386
13389
  var Header$1 = function Header() {
13387
13390
  var context = useContext();
13388
13391
 
13389
- if (!context.props.search && !context.props.multiple) {
13392
+ var _useState = React.useState(''),
13393
+ search = _useState[0],
13394
+ setSearch = _useState[1];
13395
+
13396
+ if (!context.props.loader) {
13390
13397
  return React__default.createElement(React__default.Fragment, null);
13391
13398
  }
13392
13399
 
13393
- var _useState = React.useState(''),
13394
- value = _useState[0],
13395
- setValue = _useState[1];
13396
-
13397
- var _context$props = context.props,
13398
- search = _context$props.search,
13399
- options = _context$props.options,
13400
+ var options = context.props.options,
13400
13401
  checked = context.checked,
13401
- setChecked = context.setChecked;
13402
+ setChecked = context.setChecked,
13403
+ searched = context.searched,
13404
+ setSearched = context.setSearched,
13405
+ setPage = context.setPage;
13402
13406
 
13403
13407
  var onClick = function onClick() {
13404
- return setChecked(function (prev) {
13408
+ setChecked(function (prev) {
13405
13409
  return prev.length === options.length ? [] : options.map(function (option) {
13406
13410
  return option.value;
13407
13411
  });
13408
13412
  });
13409
13413
  };
13410
13414
 
13415
+ var onSearch = function onSearch() {
13416
+ setSearched(search);
13417
+ setPage(1);
13418
+ };
13419
+
13411
13420
  return React__default.createElement(HeaderContainer, null, context.props.type === 'select-multiple' && context.props.selectAll && React__default.createElement(SelectAllContainer, null, React__default.createElement("b", null, "Selecionados (", checked.length, ")"), React__default.createElement(Button$1, {
13412
13421
  type: 'button',
13413
13422
  content: 'Selecionar todos',
13414
13423
  appearance: 'link',
13415
13424
  onClick: onClick,
13416
13425
  color: 'darkBlue'
13417
- })), search && React__default.createElement(Input$1, {
13426
+ })), React__default.createElement(Input$1, {
13418
13427
  type: 'search',
13419
13428
  placeholder: 'Pesquisa',
13420
- onChange: function onChange(event) {
13421
- return setValue(event.target.value);
13422
- },
13423
- value: value,
13424
- onPressEnter: function onPressEnter() {
13425
- return search(value);
13426
- },
13429
+ setValue: setSearch,
13430
+ value: search,
13431
+ onPressEnter: onSearch,
13432
+ clearable: search !== '' && search === searched,
13427
13433
  icon: {
13428
13434
  icon: {
13429
13435
  type: 'feather',
13430
13436
  icon: 'search'
13431
13437
  },
13432
- onClick: function onClick() {
13433
- return search(value);
13434
- }
13438
+ onClick: onSearch
13435
13439
  }
13436
13440
  }));
13437
13441
  };
@@ -13517,19 +13521,34 @@ var getOptions = function getOptions(props, checked, setChecked) {
13517
13521
  };
13518
13522
 
13519
13523
  var Select = React__default.forwardRef(function (props, ref) {
13520
- var onScrollEnd = props.onScrollEnd,
13521
- position = props.position,
13524
+ var position = props.position,
13522
13525
  disableAutoPosition = props.disableAutoPosition,
13523
- search = props.search,
13526
+ loader = props.loader,
13524
13527
  type = props.type;
13525
13528
 
13526
- var _useState2 = React.useState(false),
13527
- open = _useState2[0],
13528
- setOpen = _useState2[1];
13529
+ var _useState = React.useState(false),
13530
+ loading = _useState[0],
13531
+ setLoading = _useState[1];
13532
+
13533
+ var _useState2 = React.useState(''),
13534
+ searched = _useState2[0],
13535
+ setSearched = _useState2[1];
13536
+
13537
+ var _useState3 = React.useState(1),
13538
+ page = _useState3[0],
13539
+ setPage = _useState3[1];
13540
+
13541
+ var _useState4 = React.useState(false),
13542
+ lastPage = _useState4[0],
13543
+ setLastPage = _useState4[1];
13529
13544
 
13530
- var _useState3 = React.useState(Array.isArray(props.value) ? [].concat(props.value) : []),
13531
- checked = _useState3[0],
13532
- setChecked = _useState3[1];
13545
+ var _useState5 = React.useState(false),
13546
+ open = _useState5[0],
13547
+ setOpen = _useState5[1];
13548
+
13549
+ var _useState6 = React.useState(Array.isArray(props.value) ? [].concat(props.value) : []),
13550
+ checked = _useState6[0],
13551
+ setChecked = _useState6[1];
13533
13552
 
13534
13553
  var options = getOptions(props, checked, setChecked);
13535
13554
  var inputProps = filterObject(props, ['type', 'onScrollEnd', 'options', 'position', 'disableAutoPosition', 'value']);
@@ -13547,13 +13566,53 @@ var Select = React__default.forwardRef(function (props, ref) {
13547
13566
  inputProps.value = selected ? selected.label.text : '';
13548
13567
  }
13549
13568
 
13569
+ var _onScrollEnd = props.onScrollEnd || function () {};
13570
+
13571
+ var onScrollEnd = function onScrollEnd() {
13572
+ if (!lastPage) {
13573
+ setPage(function (prev) {
13574
+ return prev + 1;
13575
+ });
13576
+ }
13577
+
13578
+ _onScrollEnd();
13579
+ };
13580
+
13581
+ var onSubmit = React.useCallback(function () {
13582
+ try {
13583
+ if (!props.loader) return Promise.resolve();
13584
+ setLoading(true);
13585
+ return Promise.resolve(props.loader(searched, page)).then(function (optionsResult) {
13586
+ if (Array.isArray(optionsResult)) {
13587
+ props.setOptions(page === 1 ? optionsResult : function (prev) {
13588
+ return prev.concat(optionsResult);
13589
+ });
13590
+ setLastPage(true);
13591
+ } else {
13592
+ props.setOptions(page === 1 ? optionsResult.options : function (prev) {
13593
+ return prev.concat(optionsResult.options);
13594
+ });
13595
+ setLastPage(optionsResult.lastPage);
13596
+ }
13597
+
13598
+ setLoading(false);
13599
+ });
13600
+ } catch (e) {
13601
+ return Promise.reject(e);
13602
+ }
13603
+ }, [searched, page]);
13604
+ React.useEffect(function () {
13605
+ onSubmit();
13606
+ }, [onSubmit]);
13550
13607
  return React__default.createElement(Provider.Provider, {
13551
13608
  value: {
13552
13609
  props: props,
13553
- open: open,
13554
13610
  setOpen: setOpen,
13555
13611
  checked: checked,
13556
- setChecked: setChecked
13612
+ setPage: setPage,
13613
+ setChecked: setChecked,
13614
+ searched: searched,
13615
+ setSearched: setSearched
13557
13616
  }
13558
13617
  }, React__default.createElement(RelativeContainer$1, {
13559
13618
  ref: useOnClickOut(function () {
@@ -13567,6 +13626,7 @@ var Select = React__default.forwardRef(function (props, ref) {
13567
13626
  return !prev;
13568
13627
  });
13569
13628
  },
13629
+ loading: props.loading || loading,
13570
13630
  icon: {
13571
13631
  position: 'right',
13572
13632
  icon: {
@@ -13593,7 +13653,7 @@ var Select = React__default.forwardRef(function (props, ref) {
13593
13653
  },
13594
13654
  before: React__default.createElement(Header$1, null),
13595
13655
  after: React__default.createElement(Footer$1, null),
13596
- scrollHeight: search ? '135px' : '165px'
13656
+ scrollHeight: loader ? '135px' : '165px'
13597
13657
  })));
13598
13658
  });
13599
13659
  Select.displayName = 'Select';
@@ -15530,6 +15590,79 @@ var Placeholder = function Placeholder(props) {
15530
15590
  }
15531
15591
  };
15532
15592
 
15593
+ var _templateObject$E, _templateObject2$x, _templateObject3$w, _templateObject4$t, _templateObject5$r;
15594
+ var Image = styled__default.img(_templateObject$E || (_templateObject$E = _taggedTemplateLiteralLoose(["\n max-width: 100%;\n max-height: 100%;\n"])));
15595
+ var Container$n = styled__default.div(_templateObject2$x || (_templateObject2$x = _taggedTemplateLiteralLoose(["\n position: relative;\n display: inline-flex;\n\n &,\n ", " {\n width: ", ";\n\n height: ", ";\n }\n"])), Image, function (_ref) {
15596
+ var width = _ref.width;
15597
+
15598
+ switch (typeof width) {
15599
+ case 'string':
15600
+ return width;
15601
+
15602
+ case 'number':
15603
+ return width + "px";
15604
+
15605
+ default:
15606
+ return 'auto';
15607
+ }
15608
+ }, function (_ref2) {
15609
+ var height = _ref2.height;
15610
+
15611
+ switch (typeof height) {
15612
+ case 'string':
15613
+ return height;
15614
+
15615
+ case 'number':
15616
+ return height + "px";
15617
+
15618
+ default:
15619
+ return 'auto';
15620
+ }
15621
+ });
15622
+ var Dimmer = styled__default.div(_templateObject3$w || (_templateObject3$w = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: ", ";\n opacity: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n transition: opacity 0.5s;\n cursor: pointer;\n\n :hover {\n opacity: 1;\n }\n"])), function (_ref3) {
15623
+ var theme = _ref3.theme;
15624
+ return theme.getColor('greyishBlue', 50);
15625
+ });
15626
+ var Button$4 = styled__default(Button$1)(_templateObject4$t || (_templateObject4$t = _taggedTemplateLiteralLoose(["\n background-color: ", ";\n"])), function (_ref4) {
15627
+ var theme = _ref4.theme;
15628
+ return theme.getColor('white', 50);
15629
+ });
15630
+ var ModalContent = styled__default.div(_templateObject5$r || (_templateObject5$r = _taggedTemplateLiteralLoose(["\n position: absolute;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n\n img {\n max-height: 100%;\n max-width: 100%;\n }\n"])));
15631
+
15632
+ var _excluded$3 = ["src", "defaultClickOptions"];
15633
+
15634
+ var Zoom = function Zoom(props) {
15635
+ var src = props.src,
15636
+ imgProps = _objectWithoutPropertiesLoose(props, _excluded$3);
15637
+
15638
+ var _useState = React.useState(false),
15639
+ modalOpened = _useState[0],
15640
+ setModalOpened = _useState[1];
15641
+
15642
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(Container$n, Object.assign({}, imgProps, {
15643
+ onClick: function onClick() {
15644
+ return setModalOpened(true);
15645
+ }
15646
+ }), React__default.createElement(Image, {
15647
+ src: src,
15648
+ alt: 'zoom'
15649
+ }), React__default.createElement(Dimmer, null, React__default.createElement(Button$4, {
15650
+ content: 'Zoom',
15651
+ color: 'white',
15652
+ onClick: function onClick() {
15653
+ return setModalOpened(true);
15654
+ }
15655
+ }))), React__default.createElement(Modal$1, {
15656
+ openState: [modalOpened, setModalOpened],
15657
+ size: 'large',
15658
+ title: 'Zoom',
15659
+ closeOnClickOutside: true
15660
+ }, React__default.createElement(ModalContent, null, React__default.createElement("img", {
15661
+ src: src,
15662
+ alt: 'zoom'
15663
+ }))));
15664
+ };
15665
+
15533
15666
  var theme = {
15534
15667
  sizes: sizes,
15535
15668
  fontSizes: fontSizes
@@ -15539,14 +15672,14 @@ var theme$1 = {
15539
15672
  button: theme
15540
15673
  };
15541
15674
 
15542
- var _templateObject$E;
15543
- var FontStyles = styled.createGlobalStyle(_templateObject$E || (_templateObject$E = _taggedTemplateLiteralLoose(["\n"])));
15675
+ var _templateObject$F;
15676
+ var FontStyles = styled.createGlobalStyle(_templateObject$F || (_templateObject$F = _taggedTemplateLiteralLoose(["\n"])));
15544
15677
 
15545
15678
  var Globals = function Globals() {
15546
15679
  return React__default.createElement(React__default.Fragment, null, React__default.createElement(FontStyles, null));
15547
15680
  };
15548
15681
 
15549
- var _templateObject$F;
15682
+ var _templateObject$G;
15550
15683
 
15551
15684
  var getColor$1 = function getColor(color, opacity) {
15552
15685
  if (opacity === void 0) {
@@ -15561,7 +15694,7 @@ var useTypography = function useTypography(typography) {
15561
15694
  fontFamily = _typographies$typogra.fontFamily,
15562
15695
  fontWeight = _typographies$typogra.fontWeight,
15563
15696
  fontSize = _typographies$typogra.fontSize;
15564
- return styled.css(_templateObject$F || (_templateObject$F = _taggedTemplateLiteralLoose(["\n font-family: ", ";\n font-weight: ", ";\n font-size: ", ";\n "])), fontFamily, fontWeight, fontSize);
15697
+ return styled.css(_templateObject$G || (_templateObject$G = _taggedTemplateLiteralLoose(["\n font-family: ", ";\n font-weight: ", ";\n font-size: ", ";\n "])), fontFamily, fontWeight, fontSize);
15565
15698
  };
15566
15699
 
15567
15700
  var isDarkColor = function isDarkColor(color, ifDark, ifLight) {
@@ -15633,5 +15766,6 @@ exports.MwScrollContainer = ScrollContainer;
15633
15766
  exports.MwTabs = Tabs$1;
15634
15767
  exports.MwTextArea = TextArea;
15635
15768
  exports.MwToast = Toast;
15769
+ exports.MwZoom = Zoom;
15636
15770
  exports.ThemeProvider = ThemeProvider;
15637
15771
  //# sourceMappingURL=index.js.map