@via-profit/ui-kit 0.2.1-alpha.1 → 0.2.2

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.
Files changed (143) hide show
  1. package/Autocomplete/AutocompleteContainer.d.ts +33 -6
  2. package/Autocomplete/AutocompleteContainer.js +48 -36
  3. package/Autocomplete/AutocompleteItem.d.ts +1 -1
  4. package/Autocomplete/AutocompleteTextField.d.ts +3 -0
  5. package/Autocomplete/AutocompleteTextField.js +63 -1
  6. package/Autocomplete/OverrideMenuList.d.ts +4 -0
  7. package/Autocomplete/OverrideMenuList.js +39 -0
  8. package/Autocomplete/context.d.ts +9 -1
  9. package/Autocomplete/context.js +15 -1
  10. package/Autocomplete/index.js +9 -10
  11. package/Autocomplete2/Autocomplete2.d.ts +12 -0
  12. package/Autocomplete2/Autocomplete2.js +83 -0
  13. package/Autocomplete2/Autocomplete2TextField.d.ts +7 -0
  14. package/Autocomplete2/Autocomplete2TextField.js +39 -0
  15. package/Autocomplete2/index.d.ts +2 -0
  16. package/Autocomplete2/index.js +7 -0
  17. package/Avatar/index.js +1 -1
  18. package/Badge/BadgeDeleteButton.js +6 -6
  19. package/Badge/BadgeOutlined.js +2 -2
  20. package/Badge/BadgeStandard.js +1 -1
  21. package/Button/ButtonOutlined.js +1 -1
  22. package/Button/ButtonPlain.js +1 -1
  23. package/Button/ButtonStandard.js +4 -11
  24. package/Calendar/CalendarCell.js +6 -2
  25. package/Calendar/CalendarComponent.d.ts +226 -0
  26. package/Calendar/CalendarComponent.js +572 -0
  27. package/Calendar/CalendarControlButton.js +16 -9
  28. package/Calendar/CalendarDayBadge.js +1 -1
  29. package/Calendar/CalendarEmptyCell.d.ts +2 -2
  30. package/Calendar/CalendarEmptyCell.js +8 -3
  31. package/Calendar/CalendarHeading.js +2 -1
  32. package/Calendar/CalendarSubheading.js +3 -2
  33. package/Calendar/CalendarWeekDayCell.d.ts +10 -0
  34. package/Calendar/CalendarWeekDayCell.js +32 -0
  35. package/Calendar/CalendarWeekDayWeekNumber.d.ts +7 -0
  36. package/Calendar/CalendarWeekDayWeekNumber.js +38 -0
  37. package/Calendar/CalendarWeekRow.d.ts +2 -2
  38. package/Calendar/CalendarWeekRow.js +2 -1
  39. package/Calendar/CalendarWeekRowButton.d.ts +13 -0
  40. package/Calendar/CalendarWeekRowButton.js +31 -0
  41. package/Calendar/CalendarYearsSelector.d.ts +39 -1
  42. package/Calendar/CalendarYearsSelector.js +52 -16
  43. package/Calendar/IconChevronDown.d.ts +3 -0
  44. package/Calendar/IconChevronDown.js +31 -0
  45. package/Calendar/index.d.ts +7 -224
  46. package/Calendar/index.js +19 -281
  47. package/Calendar/use-calendar.d.ts +1 -1
  48. package/Color/Color.d.ts +138 -0
  49. package/Color/Color.js +324 -0
  50. package/Color/ColorGenerator.d.ts +29 -0
  51. package/Color/ColorGenerator.js +141 -0
  52. package/Color/ColorParser.d.ts +20 -0
  53. package/Color/ColorParser.js +284 -0
  54. package/Color/index.d.ts +4 -122
  55. package/Color/index.js +18 -473
  56. package/CountryFlags/SwiperOverview.d.ts +257 -0
  57. package/CountryFlags/SwiperOverview.js +524 -0
  58. package/DatePicker/index.d.ts +2 -17
  59. package/DatePicker/index.js +47 -61
  60. package/DatePicker/useDatePickerFormat.js +5 -5
  61. package/ErrorBoundary/Fallback.d.ts +3 -0
  62. package/ErrorBoundary/Fallback.js +51 -0
  63. package/ErrorBoundary/RenderError.d.ts +6 -0
  64. package/ErrorBoundary/RenderError.js +80 -0
  65. package/ErrorBoundary/index.d.ts +7 -11
  66. package/ErrorBoundary/index.js +4 -51
  67. package/LoadingIndicator/Spinner.d.ts +5 -3
  68. package/LoadingIndicator/Spinner.js +61 -32
  69. package/LoadingIndicator/index.d.ts +3 -3
  70. package/LoadingIndicator/index.js +15 -2
  71. package/MaskedField/index.d.ts +2 -1
  72. package/MaskedField/index.js +52 -43
  73. package/MaskedField/useMasked.js +7 -5
  74. package/Menu/AutoHeightWrapper.d.ts +6 -0
  75. package/Menu/AutoHeightWrapper.js +43 -0
  76. package/Menu/MeasuredItem.d.ts +10 -0
  77. package/Menu/MeasuredItem.js +51 -0
  78. package/Menu/MenuContainer.d.ts +51 -18
  79. package/Menu/MenuContainer.js +19 -12
  80. package/Menu/MenuItem.d.ts +24 -7
  81. package/Menu/MenuItem.js +13 -6
  82. package/Menu/MenuList.d.ts +4 -2
  83. package/Menu/MenuList.js +26 -6
  84. package/Menu/VirtualizedItem.d.ts +22 -0
  85. package/Menu/VirtualizedItem.js +69 -0
  86. package/Menu/VirtualizedList.d.ts +18 -0
  87. package/Menu/VirtualizedList.js +28 -0
  88. package/Menu/VirtualizedListComponent.d.ts +20 -0
  89. package/Menu/VirtualizedListComponent.js +305 -0
  90. package/Menu/index.d.ts +3 -1
  91. package/Menu/index.js +2 -0
  92. package/Popper/Popper.d.ts +7 -80
  93. package/Popper/Popper.js +26 -12
  94. package/Popper/PopperContainer.js +1 -1
  95. package/Popper/usePopprer.d.ts +88 -3
  96. package/Popper/usePopprer.js +240 -65
  97. package/Selectbox/SelectboxButton.d.ts +5 -0
  98. package/Selectbox/SelectboxButton.js +48 -8
  99. package/Selectbox/SelectboxButtonWrapper.d.ts +2 -0
  100. package/Selectbox/SelectboxButtonWrapper.js +1 -17
  101. package/Selectbox/SelectboxMenu.d.ts +12 -0
  102. package/Selectbox/SelectboxMenu.js +50 -0
  103. package/Selectbox/index.d.ts +5 -5
  104. package/Selectbox/index.js +115 -97
  105. package/Surface/index.js +1 -1
  106. package/Swiper/Swiper.d.ts +57 -0
  107. package/Swiper/Swiper.js +412 -0
  108. package/Swiper/SwiperContainer.d.ts +7 -0
  109. package/Swiper/SwiperContainer.js +15 -0
  110. package/Swiper/SwiperSlide.d.ts +12 -0
  111. package/Swiper/SwiperSlide.js +58 -0
  112. package/Swiper/SwiperSlidesRenderer.d.ts +11 -0
  113. package/Swiper/SwiperSlidesRenderer.js +74 -0
  114. package/Swiper/SwiperTrack.d.ts +18 -0
  115. package/Swiper/SwiperTrack.js +55 -0
  116. package/Swiper/SwiperWrapper.d.ts +16 -0
  117. package/Swiper/SwiperWrapper.js +60 -0
  118. package/Swiper/index.d.ts +7 -0
  119. package/Swiper/index.js +26 -0
  120. package/Switch/SwitchDot.js +1 -1
  121. package/Switch/SwitchTrack.js +1 -1
  122. package/TextField/TextFieldContainer.d.ts +2 -2
  123. package/TextField/TextFieldContainer.js +5 -3
  124. package/TextField/TextFieldErrorText.d.ts +2 -2
  125. package/TextField/TextFieldErrorText.js +5 -4
  126. package/TextField/TextFieldIconWrapper.d.ts +3 -3
  127. package/TextField/TextFieldIconWrapper.js +5 -3
  128. package/TextField/TextFieldInput.d.ts +2 -2
  129. package/TextField/TextFieldInput.js +6 -4
  130. package/TextField/TextFieldInputWrapper.d.ts +2 -2
  131. package/TextField/TextFieldInputWrapper.js +5 -3
  132. package/TextField/TextFieldLabel.d.ts +2 -2
  133. package/TextField/TextFieldLabel.js +5 -3
  134. package/TextField/TextFieldLabelAsterisk.d.ts +2 -2
  135. package/TextField/TextFieldLabelAsterisk.js +5 -3
  136. package/TextField/index.d.ts +8 -1
  137. package/TextField/index.js +49 -22
  138. package/ThemeProvider/createTheme.js +2 -2
  139. package/package.json +1 -1
  140. package/Calendar/reducer.d.ts +0 -17
  141. package/Calendar/reducer.js +0 -50
  142. /package/Calendar/{IconChevronRight.d.ts → CalendarIconNext.d.ts} +0 -0
  143. /package/Calendar/{IconChevronRight.js → CalendarIconNext.js} +0 -0
@@ -39,7 +39,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
40
  const React = __importStar(require("react"));
41
41
  const styled_1 = __importDefault(require("@emotion/styled"));
42
- const react_1 = require("@emotion/react");
43
42
  const Wrapper = styled_1.default.div `
44
43
  min-width: 16em;
45
44
  font-size: 0.9em;
@@ -48,28 +47,13 @@ const Wrapper = styled_1.default.div `
48
47
  display: flex;
49
48
  align-items: stretch;
50
49
  border-radius: ${({ theme }) => theme.shape.radiusFactor * 2}em;
51
- border: 1px solid transparent;
52
-
53
- border: 1px solid;
54
50
  outline: 1px solid transparent;
55
-
56
- border-color: ${({ theme }) => theme.isDark
57
- ? theme.color.textPrimary.darken(100).toString()
58
- : theme.color.textPrimary.lighten(150).toString()};
59
51
  width: ${({ $fullWidth }) => ($fullWidth ? '100%' : 'auto')};
60
-
61
52
  background-color: ${({ theme }) => theme.color.surface.toString()};
62
53
  color: ${({ theme }) => theme.color.textPrimary.toString()};
63
54
  transition: all 180ms ease-out 0s;
64
55
 
65
- ${props => props.$error &&
66
- (0, react_1.css) `
67
- border-color: ${props.theme.color.error.toString()};
68
- color: ${props.theme.color.error.toString()};
69
- &:focus {
70
- border-color: ${props.theme.color.error.lighten(0.6).toString()};
71
- }
72
- `}
56
+
73
57
  `;
74
58
  const SelectboxButtonWrapper = (props, ref) => {
75
59
  const { fullWidth, children, error } = props, nativeProps = __rest(props, ["fullWidth", "children", "error"]);
@@ -0,0 +1,12 @@
1
+ import * as React from 'react';
2
+ import { MenuProps, MenuRef } from '../Menu';
3
+ import { AnchorPos } from '../Popper';
4
+ import { OnChange } from 'Selectbox';
5
+ export interface SelectbosMenuProps<T, Multiple extends boolean | undefined = undefined> extends MenuProps<T, Multiple> {
6
+ readonly actualPlacement: AnchorPos;
7
+ readonly onChange?: OnChange<T, Multiple>;
8
+ }
9
+ declare const _default: <T, Multiple extends boolean | undefined = undefined>(props: SelectbosMenuProps<T, Multiple> & {
10
+ ref?: React.Ref<MenuRef> | undefined;
11
+ }) => JSX.Element;
12
+ export default _default;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const React = __importStar(require("react"));
30
+ const Menu_1 = __importDefault(require("../Menu"));
31
+ const OverrideMenuList_1 = __importDefault(require("../Autocomplete/OverrideMenuList"));
32
+ const SelectboxMenu = React.forwardRef((props, ref) => {
33
+ const { actualPlacement, multiple, items, value, isOpen, anchorElement, getOptionSelected, onChange, onRequestClose, children, onAnchorPosChanged, } = props;
34
+ const handleSelectItem = React.useCallback((item) => {
35
+ onChange === null || onChange === void 0 ? void 0 : onChange(item);
36
+ }, [onChange]);
37
+ const handleRequestClose = React.useCallback(evt => {
38
+ if ((evt === null || evt === void 0 ? void 0 : evt.target) !== anchorElement) {
39
+ if (onRequestClose) {
40
+ onRequestClose(evt);
41
+ }
42
+ anchorElement === null || anchorElement === void 0 ? void 0 : anchorElement.focus();
43
+ }
44
+ }, [onRequestClose, anchorElement]);
45
+ return (React.createElement(Menu_1.default, { ref: ref, offset: 0, anchorPos: actualPlacement, onAnchorPosChanged: onAnchorPosChanged, multiple: multiple, items: items, value: value, isOpen: isOpen && items.length > 0, autofocus: true, anchorElement: anchorElement, closeOutsideClick: false, getOptionSelected: getOptionSelected, onSelectItem: handleSelectItem, overrides: {
46
+ List: OverrideMenuList_1.default,
47
+ }, closeOnSelect: !multiple, onRequestClose: handleRequestClose }, ({ index, item }, itemProps) => children({ index, item: item }, itemProps)));
48
+ });
49
+ SelectboxMenu.displayName = 'SelectboxMenu';
50
+ exports.default = React.memo(SelectboxMenu);
@@ -1,17 +1,17 @@
1
- import React, { ButtonHTMLAttributes } from 'react';
2
- import { Value, OnRequestClose, GetOptionSelected } from '../Menu';
1
+ import * as React from 'react';
2
+ import { GetOptionSelected, OnRequestClose, Value } from '../Menu';
3
+ import type { MenuItemCommonProps } from '../Menu/MenuItem';
3
4
  import SelectboxItem from '../Menu/MenuItem';
4
5
  import { SelectboxButtonProps } from './SelectboxButton';
5
6
  import { SelectboxChevronIconProps } from './SelectboxChevronIcon';
6
- import type { AnchorPos } from '../Popper';
7
- import type { MenuItemCommonProps } from '../Menu/MenuItem';
7
+ import { AnchorPos } from '../Popper';
8
8
  import { TextFieldLabelProps } from '../TextField/TextFieldLabel';
9
9
  import { TextFieldLabelAsteriskProps } from '../TextField/TextFieldLabelAsterisk';
10
10
  import { TextFieldErrorTextProps } from '../TextField/TextFieldErrorText';
11
11
  import { SelectboxButtonWrapperProps } from './SelectboxButtonWrapper';
12
12
  import { SelectboxContainerProps } from './SelectboxContainer';
13
13
  export { SelectboxItem };
14
- export interface SelectboxProps<T, Multiple extends boolean | undefined = undefined> extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'value' | 'onChange' | 'children'> {
14
+ export interface SelectboxProps<T, Multiple extends boolean | undefined = undefined> extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'value' | 'onChange' | 'children'> {
15
15
  /**
16
16
  * Array of values
17
17
  */
@@ -1,4 +1,27 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __rest = (this && this.__rest) || function (s, e) {
3
26
  var t = {};
4
27
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -15,8 +38,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
15
38
  };
16
39
  Object.defineProperty(exports, "__esModule", { value: true });
17
40
  exports.SelectboxItem = void 0;
18
- const react_1 = __importDefault(require("react"));
19
- const Menu_1 = __importDefault(require("../Menu"));
41
+ const React = __importStar(require("react"));
20
42
  const MenuItem_1 = __importDefault(require("../Menu/MenuItem"));
21
43
  exports.SelectboxItem = MenuItem_1.default;
22
44
  const SelectboxButton_1 = __importDefault(require("./SelectboxButton"));
@@ -28,112 +50,108 @@ const TextFieldLabelAsterisk_1 = __importDefault(require("../TextField/TextField
28
50
  const TextFieldErrorText_1 = __importDefault(require("../TextField/TextFieldErrorText"));
29
51
  const SelectboxButtonWrapper_1 = __importDefault(require("./SelectboxButtonWrapper"));
30
52
  const SelectboxContainer_1 = __importDefault(require("./SelectboxContainer"));
31
- const Selectbox = react_1.default.forwardRef((props, ref) => {
32
- const { items, value, multiple, isOpen = false, isLoading = false, anchorPos = 'bottom', fullWidth = false, children, onChange, selectedItemToString, getOptionSelected, onRequestOpen = () => undefined, onRequestClose = () => undefined, overrides, id, label, onFocus, requiredAsterisk, error, errorText, notSetLabel = 'Not set' } = props, nativeButtonProps = __rest(props, ["items", "value", "multiple", "isOpen", "isLoading", "anchorPos", "fullWidth", "children", "onChange", "selectedItemToString", "getOptionSelected", "onRequestOpen", "onRequestClose", "overrides", "id", "label", "onFocus", "requiredAsterisk", "error", "errorText", "notSetLabel"]);
33
- const menuRef = react_1.default.useRef(null);
34
- const overridesMap = react_1.default.useMemo(() => ({
35
- Button: (overrides === null || overrides === void 0 ? void 0 : overrides.Button) || SelectboxButton_1.default,
36
- Icon: (overrides === null || overrides === void 0 ? void 0 : overrides.Icon) || SelectboxChevronIcon_1.default,
37
- Label: (overrides === null || overrides === void 0 ? void 0 : overrides.Label) || TextFieldLabel_1.default,
38
- Asterisk: (overrides === null || overrides === void 0 ? void 0 : overrides.Asterisk) || TextFieldLabelAsterisk_1.default,
39
- ErrorText: (overrides === null || overrides === void 0 ? void 0 : overrides.ErrorText) || TextFieldErrorText_1.default,
40
- ButtonWrapper: (overrides === null || overrides === void 0 ? void 0 : overrides.ButtonWrapper) || SelectboxButtonWrapper_1.default,
41
- Container: (overrides === null || overrides === void 0 ? void 0 : overrides.Container) || SelectboxContainer_1.default,
42
- }), [overrides]);
43
- const [anchorElement, setAnchorElement] = react_1.default.useState(null);
44
- react_1.default.useEffect(() => {
53
+ const SelectboxMenu_1 = __importDefault(require("./SelectboxMenu"));
54
+ const DEFAULT_OVERRIDES = {
55
+ Button: SelectboxButton_1.default,
56
+ Icon: SelectboxChevronIcon_1.default,
57
+ Label: TextFieldLabel_1.default,
58
+ Asterisk: TextFieldLabelAsterisk_1.default,
59
+ ErrorText: TextFieldErrorText_1.default,
60
+ ButtonWrapper: SelectboxButtonWrapper_1.default,
61
+ Container: SelectboxContainer_1.default,
62
+ };
63
+ const generateGuid = () => {
64
+ const u = Date.now().toString(16) + Math.random().toString(16) + '0'.repeat(16);
65
+ return [
66
+ u.substring(0, 8),
67
+ u.substring(8, 12),
68
+ '4000-8' + u.substring(13, 16),
69
+ u.substring(16, 28),
70
+ ].join('-');
71
+ };
72
+ const Selectbox = React.forwardRef((props, ref) => {
73
+ const { items, value, multiple, isOpen = false, isLoading = false, anchorPos = 'bottom-fill', fullWidth = false, children, onChange, selectedItemToString, getOptionSelected, onRequestOpen = () => undefined, onRequestClose = () => undefined, overrides, id, label, onFocus, requiredAsterisk, error, errorText, notSetLabel = 'Not set' } = props, nativeButtonProps = __rest(props, ["items", "value", "multiple", "isOpen", "isLoading", "anchorPos", "fullWidth", "children", "onChange", "selectedItemToString", "getOptionSelected", "onRequestOpen", "onRequestClose", "overrides", "id", "label", "onFocus", "requiredAsterisk", "error", "errorText", "notSetLabel"]);
74
+ const menuRef = React.useRef(null);
75
+ const [actualPlacement, setActualPlacement] = React.useState(anchorPos);
76
+ const [anchorElement, setAnchorElement] = React.useState(null);
77
+ const overridesMap = React.useMemo(() => (Object.assign(Object.assign({}, DEFAULT_OVERRIDES), overrides)), [overrides]);
78
+ const inputID = React.useMemo(() => {
79
+ if (typeof id === 'string') {
80
+ return id;
81
+ }
82
+ return generateGuid();
83
+ }, [id]);
84
+ React.useEffect(() => {
45
85
  if (isOpen && menuRef.current) {
46
86
  menuRef.current.scrollToFirstSelected();
47
87
  }
48
88
  }, [isOpen]);
49
- react_1.default.useEffect(() => {
50
- const mouseDownEvent = (event) => {
51
- var _a;
52
- let parentElem = event.target;
53
- let needToClose = true;
54
- while (parentElem && 'parentNode' in parentElem) {
55
- if (parentElem === anchorElement || parentElem === ((_a = menuRef.current) === null || _a === void 0 ? void 0 : _a.getListElement())) {
56
- needToClose = false;
57
- break;
58
- }
59
- parentElem = parentElem.parentNode;
60
- }
61
- if (needToClose) {
62
- onRequestClose(event);
63
- }
64
- };
65
- window.document.addEventListener(ClickOutside_1.mouseEventMap.onMouseDown, mouseDownEvent);
66
- return () => {
67
- window.document.removeEventListener(ClickOutside_1.mouseEventMap.onMouseDown, mouseDownEvent);
68
- };
69
- }, [onRequestClose, anchorElement]);
70
- const renderValueAsString = react_1.default.useCallback(() => {
89
+ const renderValueAsString = React.useCallback(() => {
71
90
  if ((!multiple && !value) || (multiple && value.length === 0)) {
72
91
  return notSetLabel;
73
92
  }
74
93
  return selectedItemToString(value);
75
94
  }, [multiple, selectedItemToString, value, notSetLabel]);
76
- const inputID = react_1.default.useMemo(() => {
77
- if (typeof id === 'string') {
78
- return id;
95
+ const handleButtonClick = React.useCallback((event) => {
96
+ var _a;
97
+ if (isOpen) {
98
+ onRequestClose(event);
79
99
  }
80
- const u = Date.now().toString(16) + Math.random().toString(16) + '0'.repeat(16);
81
- const guid = [
82
- u.substring(0, 8),
83
- u.substring(8, 12),
84
- '4000-8' + u.substring(13, 16),
85
- u.substring(16, 28),
86
- ].join('-');
87
- return guid;
88
- }, [id]);
89
- return (react_1.default.createElement(overridesMap.Container, null,
90
- typeof label !== 'undefined' && label !== null && (react_1.default.createElement(overridesMap.Label, { htmlFor: inputID, error: error },
100
+ else {
101
+ onRequestOpen(event);
102
+ }
103
+ (_a = nativeButtonProps.onClick) === null || _a === void 0 ? void 0 : _a.call(nativeButtonProps, event);
104
+ }, [isOpen, nativeButtonProps, onRequestClose, onRequestOpen]);
105
+ const setRefs = React.useCallback((el) => {
106
+ if (anchorElement !== el) {
107
+ setAnchorElement(el);
108
+ }
109
+ if (typeof ref === 'function') {
110
+ ref(el);
111
+ }
112
+ else if (ref) {
113
+ ref.current = el;
114
+ }
115
+ }, [anchorElement, ref]);
116
+ const handleMouseDown = React.useCallback((event) => {
117
+ var _a;
118
+ let parentElem = event.target;
119
+ let needToClose = true;
120
+ while (parentElem && 'parentNode' in parentElem) {
121
+ if (parentElem === anchorElement || parentElem === ((_a = menuRef.current) === null || _a === void 0 ? void 0 : _a.getListElement())) {
122
+ needToClose = false;
123
+ break;
124
+ }
125
+ parentElem = parentElem.parentNode;
126
+ }
127
+ if (needToClose) {
128
+ onRequestClose(event);
129
+ }
130
+ }, [onRequestClose, anchorElement]);
131
+ React.useEffect(() => {
132
+ window.document.addEventListener(ClickOutside_1.mouseEventMap.onMouseDown, handleMouseDown);
133
+ return () => {
134
+ window.document.removeEventListener(ClickOutside_1.mouseEventMap.onMouseDown, handleMouseDown);
135
+ };
136
+ }, [handleMouseDown]);
137
+ const buttonProps = React.useMemo(() => (Object.assign({ fullWidth,
138
+ error,
139
+ isOpen, anchorPos: actualPlacement, endIcon: isLoading ? React.createElement(Spinner_1.default, null) : React.createElement(overridesMap.Icon, { isOpen: isOpen }) }, nativeButtonProps)), [fullWidth, error, isOpen, actualPlacement, isLoading, overridesMap, nativeButtonProps]);
140
+ const labelProps = React.useMemo(() => ({
141
+ htmlFor: inputID,
142
+ error,
143
+ }), [inputID, error]);
144
+ if (!(items === null || items === void 0 ? void 0 : items.length) && !isLoading) {
145
+ return null;
146
+ }
147
+ return (React.createElement(overridesMap.Container, null,
148
+ label != null && (React.createElement(overridesMap.Label, Object.assign({}, labelProps),
91
149
  label,
92
- typeof requiredAsterisk !== 'undefined' && requiredAsterisk !== null && (react_1.default.createElement(overridesMap.Asterisk, null, typeof requiredAsterisk === 'boolean' ? '*' : requiredAsterisk)))),
93
- react_1.default.createElement(overridesMap.ButtonWrapper, { fullWidth: fullWidth, error: error },
94
- react_1.default.createElement(overridesMap.Button, Object.assign({ fullWidth: fullWidth, error: error, endIcon: isLoading ? react_1.default.createElement(Spinner_1.default, null) : react_1.default.createElement(overridesMap.Icon, { isOpen: isOpen }), onClick: event => {
95
- if (isOpen) {
96
- onRequestClose(event);
97
- }
98
- else {
99
- onRequestOpen(event);
100
- }
101
- if (typeof nativeButtonProps.onClick === 'function') {
102
- nativeButtonProps.onClick(event);
103
- }
104
- } }, nativeButtonProps, { ref: el => {
105
- if (anchorElement !== el) {
106
- setAnchorElement(el);
107
- }
108
- if (typeof ref === 'function') {
109
- ref(el);
110
- }
111
- if (ref && typeof ref === 'object') {
112
- ref.current = el;
113
- }
114
- } }), renderValueAsString())),
115
- react_1.default.createElement(overridesMap.ErrorText, { error: error }, errorText),
116
- react_1.default.useMemo(() => (react_1.default.createElement(Menu_1.default, { ref: menuRef, anchorPos: anchorPos, multiple: multiple, items: items, value: value, isOpen: isOpen && items.length > 0, autofocus: true, anchorElement: anchorElement, closeOutsideClick: false, getOptionSelected: getOptionSelected, onSelectItem: item => {
117
- if (typeof onChange === 'function') {
118
- onChange(item);
119
- }
120
- }, closeOnSelect: !multiple, onRequestClose: evt => {
121
- if ((evt === null || evt === void 0 ? void 0 : evt.target) !== anchorElement) {
122
- onRequestClose(evt);
123
- anchorElement === null || anchorElement === void 0 ? void 0 : anchorElement.focus();
124
- }
125
- } }, ({ index, item }, itemProps) => children({ index, item: item }, itemProps))), [
126
- items,
127
- anchorPos,
128
- multiple,
129
- value,
130
- isOpen,
131
- getOptionSelected,
132
- onChange,
133
- onRequestClose,
134
- children,
135
- anchorElement,
136
- ])));
150
+ requiredAsterisk != null && (React.createElement(overridesMap.Asterisk, null, typeof requiredAsterisk === 'boolean' ? '*' : requiredAsterisk)))),
151
+ React.createElement(overridesMap.ButtonWrapper, { fullWidth: fullWidth, error: error, isOpen: isOpen },
152
+ React.createElement(overridesMap.Button, Object.assign({}, buttonProps, { onClick: handleButtonClick, ref: setRefs }), renderValueAsString())),
153
+ React.createElement(overridesMap.ErrorText, { error: error }, errorText),
154
+ React.createElement(SelectboxMenu_1.default, { actualPlacement: actualPlacement, multiple: multiple, items: items, value: value, isOpen: isOpen, anchorElement: anchorElement, getOptionSelected: getOptionSelected, onChange: onChange, onRequestClose: onRequestClose, onAnchorPosChanged: setActualPlacement, ref: menuRef }, children)));
137
155
  });
138
156
  Selectbox.displayName = 'Selectbox';
139
157
  exports.default = Selectbox;
package/Surface/index.js CHANGED
@@ -56,7 +56,7 @@ const Surface = (props, ref) => {
56
56
  Footer: (overrides === null || overrides === void 0 ? void 0 : overrides.Footer) || SurfaceFooter_1.default,
57
57
  }), [overrides]);
58
58
  if (!hasHeader && hasSubheader) {
59
- console.warn(`[@via-profit/ui-kit] Surface component. If you use a subheader, then you should add a header`);
59
+ console.warn('[@via-profit/ui-kit] Surface component. If you use a subheader, then you should add a header');
60
60
  }
61
61
  return (React.createElement(overridesMap.Container, Object.assign({}, nativeProps, { inline: inline, noPadding: noPadding, rounded: rounded, ref: ref }),
62
62
  hasHeader && (React.createElement(overridesMap.Header, { noPadding: noPadding, rounded: rounded }, header)),
@@ -0,0 +1,57 @@
1
+ import * as React from 'react';
2
+ import { SwiperContainerProps } from './SwiperContainer';
3
+ import { SwiperWrapperProps } from './SwiperWrapper';
4
+ import { SwiperTrackProps } from './SwiperTrack';
5
+ import SwiperSlide, { SwiperSlideBaseProps, SwiperSlideProps } from './SwiperSlide';
6
+ export * from './SwiperSlide';
7
+ export type SwiperSlideBaseElement = React.ReactElement<SwiperSlideBaseProps, typeof SwiperSlide>;
8
+ export type SwiperSlideElement = React.ReactElement<SwiperSlideProps, typeof SwiperSlide>;
9
+ export type SwiperRef = {
10
+ next: () => void;
11
+ prev: () => void;
12
+ goToIndex: (index: number) => void;
13
+ getRealIndex: () => number;
14
+ getTotalSlides: () => number;
15
+ pause: () => void;
16
+ resume: () => void;
17
+ };
18
+ export interface SwiperOverrides {
19
+ readonly Container?: React.ComponentType<SwiperContainerProps & React.RefAttributes<HTMLDivElement>>;
20
+ readonly Wrapper?: React.ComponentType<SwiperWrapperProps & React.RefAttributes<HTMLDivElement>>;
21
+ readonly Track?: React.ComponentType<SwiperTrackProps & React.RefAttributes<HTMLDivElement>>;
22
+ }
23
+ export type SwiperProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> & {
24
+ readonly dragThreshold?: number;
25
+ readonly snap?: boolean;
26
+ readonly draggable?: boolean;
27
+ readonly initialIndex?: number;
28
+ readonly infinite?: boolean;
29
+ readonly onSlideChange?: (realIndex: number) => void;
30
+ readonly autoplay?: boolean;
31
+ readonly autoplayInterval?: number;
32
+ readonly pauseOnHover?: boolean;
33
+ readonly keyboardControl?: boolean;
34
+ readonly threshold?: number;
35
+ readonly resistance?: boolean;
36
+ readonly slidesPerView?: number;
37
+ readonly children?: readonly SwiperSlideBaseElement[];
38
+ readonly overrides?: SwiperOverrides;
39
+ };
40
+ export declare const Swiper: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLDivElement>, "children"> & {
41
+ readonly dragThreshold?: number | undefined;
42
+ readonly snap?: boolean | undefined;
43
+ readonly draggable?: boolean | undefined;
44
+ readonly initialIndex?: number | undefined;
45
+ readonly infinite?: boolean | undefined;
46
+ readonly onSlideChange?: ((realIndex: number) => void) | undefined;
47
+ readonly autoplay?: boolean | undefined;
48
+ readonly autoplayInterval?: number | undefined;
49
+ readonly pauseOnHover?: boolean | undefined;
50
+ readonly keyboardControl?: boolean | undefined;
51
+ readonly threshold?: number | undefined;
52
+ readonly resistance?: boolean | undefined;
53
+ readonly slidesPerView?: number | undefined;
54
+ readonly children?: readonly SwiperSlideBaseElement[] | undefined;
55
+ readonly overrides?: SwiperOverrides | undefined;
56
+ } & React.RefAttributes<SwiperRef>>;
57
+ export default Swiper;