@inceptionbg/iui 2.0.25 → 2.0.26

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 (202) hide show
  1. package/dist/icons/index.d.ts +3 -1
  2. package/dist/icons/index.js +1 -1
  3. package/dist/index.d.ts +44 -31
  4. package/dist/index.js +1 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/iui.css +1 -1
  7. package/package.json +1 -1
  8. package/src/assets/icons/duotone/faBell.ts +17 -17
  9. package/src/assets/icons/duotone/faCircleUser.ts +17 -17
  10. package/src/assets/icons/index.ts +26 -25
  11. package/src/assets/icons/light/faArrowDownShortWide.ts +15 -15
  12. package/src/assets/icons/light/faArrowDownWideShort.ts +15 -15
  13. package/src/assets/icons/light/faArrowLeft.ts +15 -15
  14. package/src/assets/icons/light/faArrowRight.ts +15 -15
  15. package/src/assets/icons/light/faArrowUpArrowDown.ts +15 -15
  16. package/src/assets/icons/light/faArrowUpRightFromSquare.ts +15 -15
  17. package/src/assets/icons/light/faArrowsToLine.ts +15 -15
  18. package/src/assets/icons/light/faArrowsUpDown.ts +15 -15
  19. package/src/assets/icons/light/faBell.ts +15 -15
  20. package/src/assets/icons/light/faBookmark.ts +15 -15
  21. package/src/assets/icons/light/faBookmarkSlash.ts +15 -15
  22. package/src/assets/icons/light/faCalendarPlus.ts +15 -15
  23. package/src/assets/icons/light/faCheck.ts +15 -15
  24. package/src/assets/icons/light/faChevronDown.ts +15 -15
  25. package/src/assets/icons/light/faChevronRight.ts +15 -15
  26. package/src/assets/icons/light/faCircleCheck.ts +15 -0
  27. package/src/assets/icons/light/faCircleInfo.ts +15 -15
  28. package/src/assets/icons/light/faCircleXmark.ts +15 -15
  29. package/src/assets/icons/light/faClipboardCheck.ts +15 -15
  30. package/src/assets/icons/light/faClockRotateLeft.ts +15 -15
  31. package/src/assets/icons/light/faEllipsisVertical.ts +15 -15
  32. package/src/assets/icons/light/faEnvelope.ts +15 -15
  33. package/src/assets/icons/light/faEye.ts +15 -15
  34. package/src/assets/icons/light/faEyeSlash.ts +15 -15
  35. package/src/assets/icons/light/faFilter.ts +15 -15
  36. package/src/assets/icons/light/faGear.ts +15 -15
  37. package/src/assets/icons/light/faHouse.ts +15 -15
  38. package/src/assets/icons/light/faIdBadge.ts +15 -15
  39. package/src/assets/icons/light/faLineColumns.ts +15 -15
  40. package/src/assets/icons/light/faLink.ts +15 -15
  41. package/src/assets/icons/light/faMagnifyingGlass.ts +15 -15
  42. package/src/assets/icons/light/faPen.ts +15 -15
  43. package/src/assets/icons/light/faPrint.ts +15 -15
  44. package/src/assets/icons/light/faQuestion.ts +15 -15
  45. package/src/assets/icons/light/faRotateRight.ts +15 -15
  46. package/src/assets/icons/light/faTrashCan.ts +15 -15
  47. package/src/assets/icons/light/faTriangleExclamation.ts +15 -15
  48. package/src/assets/icons/light/faXmark.ts +15 -15
  49. package/src/assets/icons/regular/faArrowLeft.ts +15 -15
  50. package/src/assets/icons/regular/faArrowRightArrowLeft.ts +15 -15
  51. package/src/assets/icons/regular/faCircleCheck.ts +15 -15
  52. package/src/assets/icons/regular/faCircleExclamation.ts +15 -15
  53. package/src/assets/icons/regular/faCircleInfo.ts +15 -15
  54. package/src/assets/icons/regular/faFileArrowDown.ts +15 -15
  55. package/src/assets/icons/regular/faFilterCircleXmark.ts +15 -15
  56. package/src/assets/icons/regular/faTriangleExclamation.ts +15 -15
  57. package/src/assets/icons/solid/faAngleLeft.ts +15 -15
  58. package/src/assets/icons/solid/faAngleRight.ts +15 -15
  59. package/src/assets/icons/solid/faArrowDownWideShort.ts +15 -15
  60. package/src/assets/icons/solid/faCaretDown.ts +15 -15
  61. package/src/assets/icons/solid/faCheck.ts +15 -15
  62. package/src/assets/icons/solid/faEllipsisVertical.ts +15 -15
  63. package/src/assets/icons/solid/faEnvelopeDot.ts +15 -15
  64. package/src/assets/icons/solid/faFilter.ts +15 -15
  65. package/src/assets/icons/solid/faFloppyDisk.ts +15 -15
  66. package/src/assets/icons/solid/faGripDotsVertical.ts +15 -15
  67. package/src/assets/icons/solid/faListUl.ts +15 -15
  68. package/src/assets/icons/solid/faMinus.ts +15 -15
  69. package/src/assets/icons/solid/faPlus.ts +15 -15
  70. package/src/assets/icons/solid/faPrint.ts +15 -15
  71. package/src/assets/icons/solid/faRotateRight.ts +15 -15
  72. package/src/assets/icons/solid/faXmark.ts +15 -15
  73. package/src/components/Accordions/Accordions.tsx +75 -75
  74. package/src/components/Alert/Alert.tsx +31 -31
  75. package/src/components/Badge/DotBadge.tsx +16 -16
  76. package/src/components/Badge/NotificationBadge.tsx +29 -29
  77. package/src/components/Badge/PillBadge.tsx +13 -13
  78. package/src/components/Button/Button.tsx +56 -56
  79. package/src/components/Button/IconButton.tsx +51 -51
  80. package/src/components/Button/SplitButton.tsx +91 -91
  81. package/src/components/Dashboard/Dashboard.tsx +9 -9
  82. package/src/components/Dashboard/DashboardWidget.tsx +44 -44
  83. package/src/components/Dashboard/FastLinksWidget/FastLinksWidget.tsx +37 -37
  84. package/src/components/Dialog/Dialog.tsx +166 -166
  85. package/src/components/Dialog/components/DialogFooter.tsx +100 -100
  86. package/src/components/Header/Components/EnvBadge.tsx +17 -17
  87. package/src/components/Header/Components/ModuleSelect.tsx +68 -68
  88. package/src/components/Header/Components/Notifications.tsx +202 -202
  89. package/src/components/Header/Components/UserMenu.tsx +52 -52
  90. package/src/components/Header/Header.tsx +45 -37
  91. package/src/components/Helper/Collapse.tsx +53 -53
  92. package/src/components/Inputs/Checkbox.tsx +53 -53
  93. package/src/components/Inputs/CurrencyInput.tsx +124 -124
  94. package/src/components/Inputs/DateInput/DateInput.tsx +184 -184
  95. package/src/components/Inputs/DateInput/components/DatePartInput.tsx +159 -159
  96. package/src/components/Inputs/InputWrapper.tsx +95 -95
  97. package/src/components/Inputs/NumberInput.tsx +86 -86
  98. package/src/components/Inputs/PasswordInput.tsx +40 -40
  99. package/src/components/Inputs/PhoneInput/PhoneInput.tsx +108 -108
  100. package/src/components/Inputs/PhoneInput/utils/countryCode.ts +20 -20
  101. package/src/components/Inputs/Radio.tsx +59 -59
  102. package/src/components/Inputs/RadioGroup.tsx +48 -48
  103. package/src/components/Inputs/RadioLarge.tsx +39 -39
  104. package/src/components/Inputs/SearchInput.tsx +46 -46
  105. package/src/components/Inputs/Selects/Select.tsx +17 -17
  106. package/src/components/Inputs/Selects/components/CustomSelectComponents.tsx +19 -19
  107. package/src/components/Inputs/Selects/components/SelectWrapper.tsx +118 -118
  108. package/src/components/Inputs/Selects/utils/selectStyles.ts +101 -101
  109. package/src/components/Inputs/TextAreaInput.tsx +68 -68
  110. package/src/components/Inputs/TextInput.tsx +100 -100
  111. package/src/components/Inputs/TimeInput/TimeInput.tsx +81 -81
  112. package/src/components/List/List.tsx +21 -21
  113. package/src/components/List/ListItem.tsx +70 -70
  114. package/src/components/Loader/Loader.tsx +59 -59
  115. package/src/components/Loader/ProgressBar.tsx +41 -41
  116. package/src/components/Menu/Menu.tsx +81 -81
  117. package/src/components/Menu/MenuItem.tsx +46 -46
  118. package/src/components/Menu/NewMenu.tsx +63 -63
  119. package/src/components/Menu/hooks/useMenuPosition.tsx +116 -116
  120. package/src/components/PageComponents/ScrollableContent.tsx +11 -0
  121. package/src/components/Pullover/Pullover.tsx +197 -197
  122. package/src/components/Router/Router.tsx +52 -52
  123. package/src/components/Sidebar/AddButton.tsx +22 -22
  124. package/src/components/Sidebar/Sidebar.tsx +85 -85
  125. package/src/components/Sidebar/SidebarItem.tsx +84 -84
  126. package/src/components/Sidebar/types/ISidebar.ts +28 -28
  127. package/src/components/Table/Table.tsx +259 -259
  128. package/src/components/Table/components/columns/ColumnsList.tsx +60 -60
  129. package/src/components/Table/components/columns/TableColumnsEdit.tsx +114 -114
  130. package/src/components/Table/components/edit/TableEditRow.tsx +78 -78
  131. package/src/components/Table/components/filters/FilterItem.tsx +15 -15
  132. package/src/components/Table/components/filters/TableFilters.tsx +126 -126
  133. package/src/components/Table/components/footer/TableFooter.tsx +126 -126
  134. package/src/components/Table/components/header/TableHeader.tsx +40 -40
  135. package/src/components/Table/components/header/TableHeaderRow.tsx +57 -57
  136. package/src/components/Table/components/items/TableItemActions.tsx +78 -78
  137. package/src/components/Table/components/print/TablePrint.tsx +200 -200
  138. package/src/components/Table/components/select/TableSelect.tsx +50 -50
  139. package/src/components/Table/components/sort/TableSort.tsx +73 -73
  140. package/src/components/Table/components/templates/CreateTemplateDialog.tsx +58 -58
  141. package/src/components/Table/components/templates/TableTemplates.tsx +65 -65
  142. package/src/components/Table/components/templates/TemplatesPullover.tsx +88 -88
  143. package/src/components/Table/contexts/TableContext.tsx +116 -116
  144. package/src/components/Table/hooks/localHooks/useLocalTableColumns.tsx +70 -70
  145. package/src/components/Table/hooks/localHooks/useLocalTableData.tsx +84 -84
  146. package/src/components/Table/hooks/localHooks/useLocalTableKeyboard.ts +176 -176
  147. package/src/components/Table/hooks/localHooks/useLocalTablePagination.ts +12 -12
  148. package/src/components/Table/hooks/useTableColumns.ts +34 -34
  149. package/src/components/Table/hooks/useTableEdit.tsx +140 -140
  150. package/src/components/Table/hooks/useTableFilterFields.tsx +150 -150
  151. package/src/components/Table/hooks/useTablePagination.ts +19 -19
  152. package/src/components/Table/hooks/useTablePrint.ts +83 -83
  153. package/src/components/Table/hooks/useTableSearch.ts +31 -31
  154. package/src/components/Table/hooks/useTableSelect.ts +19 -19
  155. package/src/components/Table/hooks/useTableSort.ts +8 -8
  156. package/src/components/Tabs/Tabs.tsx +68 -68
  157. package/src/components/Tooltip/Tooltip.tsx +191 -191
  158. package/src/components/Tree/Tree.tsx +22 -22
  159. package/src/components/Tree/TreeItem.tsx +57 -57
  160. package/src/components/Wrappers/AppLayout.tsx +17 -17
  161. package/src/components/Wrappers/ConditionalWrapper.tsx +10 -10
  162. package/src/components/Wrappers/FormWrapper.tsx +84 -84
  163. package/src/components/Wrappers/PageLayout.tsx +164 -156
  164. package/src/hooks/useBackgroundClose.ts +19 -19
  165. package/src/hooks/useGetFocusableElements.ts +43 -43
  166. package/src/hooks/useIsMenuOpen.ts +11 -11
  167. package/src/hooks/useLocalPopoverControl.ts +32 -32
  168. package/src/hooks/usePopupControl.ts +22 -22
  169. package/src/hooks/useZendesk.ts +21 -21
  170. package/src/index.ts +381 -379
  171. package/src/pages/NoAccessPage.tsx +27 -27
  172. package/src/pages/NotFoundPage.tsx +26 -26
  173. package/src/styles/common/helpers/_color.scss +3 -0
  174. package/src/styles/components/_page.scss +0 -13
  175. package/src/types/IBasic.ts +32 -32
  176. package/src/types/IHeader.ts +40 -40
  177. package/src/types/IInfo.ts +1 -1
  178. package/src/types/IKeyboard.ts +33 -33
  179. package/src/types/IMenu.ts +19 -19
  180. package/src/types/INotifications.ts +15 -15
  181. package/src/types/IPopup.ts +17 -17
  182. package/src/types/IRouter.ts +6 -6
  183. package/src/types/ISelect.ts +54 -54
  184. package/src/types/ITab.ts +10 -10
  185. package/src/types/ITable.ts +290 -290
  186. package/src/utils/InputPatternValidation.ts +12 -12
  187. package/src/utils/dateUtils.ts +32 -32
  188. package/src/utils/fileUtils.ts +177 -177
  189. package/src/utils/i18n/i18nIUICyrilic.ts +119 -119
  190. package/src/utils/i18n/i18nIUILatin.ts +120 -120
  191. package/src/utils/i18n/i18nIUIMe.ts +118 -118
  192. package/src/utils/icons.ts +13 -13
  193. package/src/utils/localStorageHelper.ts +24 -24
  194. package/src/utils/logoUtils.ts +7 -7
  195. package/src/utils/numberUtils.ts +21 -21
  196. package/src/utils/objectUtils.ts +114 -114
  197. package/src/utils/popupUtils.ts +82 -82
  198. package/src/utils/rootDir.ts +1 -1
  199. package/src/utils/stringUtils.ts +18 -18
  200. package/src/utils/tableUtils.ts +130 -130
  201. package/src/utils/toasts.ts +6 -6
  202. package/src/utils/urlUtils.ts +4 -4
@@ -1,166 +1,166 @@
1
- import type { FC, KeyboardEventHandler, ReactNode } from 'react';
2
- import type { IInfoType } from '../../types/IInfo';
3
- import type { ILocalPopupControl } from '../../types/IPopup';
4
- import type { IDialogFooterActions } from './components/DialogFooter';
5
- import { useRef } from 'react';
6
- import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
7
- import clsx from 'clsx';
8
- import { createPortal } from 'react-dom';
9
- import { faXmark } from '../../assets/icons';
10
- import { useBackgroundClose } from '../../hooks/useBackgroundClose';
11
- import { useGetFocusableElements } from '../../hooks/useGetFocusableElements';
12
- import { useLocalPopoverControl } from '../../hooks/useLocalPopoverControl';
13
- import { infoIcons } from '../../utils/icons';
14
- import { onPopupKeyDown } from '../../utils/popupUtils';
15
- import { rootDir } from '../../utils/rootDir';
16
- import { IconButton } from '../Button/IconButton';
17
- import { Loader } from '../Loader/Loader';
18
- import { ConditionalWrapper } from '../Wrappers/ConditionalWrapper';
19
- import { DialogFooter } from './components/DialogFooter';
20
-
21
- interface Props {
22
- control: ILocalPopupControl;
23
- title?: string;
24
- titleEl?: ReactNode;
25
- desc?: string;
26
- descEl?: ReactNode;
27
- onFormSubmit?: () => void;
28
- onCloseCallback?: () => void;
29
- isLoading?: boolean;
30
- footer?: IDialogFooterActions;
31
- isKeyboardDisabled?: boolean;
32
- noBackgroundClick?: boolean;
33
- noOverflow?: boolean;
34
- type?: IInfoType;
35
- size?: 'm' | 'l' | 'xl';
36
- className?: string;
37
- classNameContent?: string;
38
- children?: ReactNode;
39
- }
40
-
41
- export const Dialog: FC<Props> = ({
42
- control,
43
- title,
44
- titleEl,
45
- desc,
46
- descEl,
47
- onFormSubmit,
48
- onCloseCallback,
49
- isLoading,
50
- footer,
51
- isKeyboardDisabled,
52
- noBackgroundClick,
53
- noOverflow,
54
- type,
55
- size = 'm',
56
- className,
57
- classNameContent,
58
- children,
59
- }) => {
60
- const formRef = useRef<HTMLFormElement>(null);
61
-
62
- const { elementRef, isOpen, onClose } = useLocalPopoverControl({
63
- control,
64
- onCloseCallback,
65
- });
66
-
67
- const focusableElements = useGetFocusableElements({
68
- elementRef,
69
- isOpen,
70
- });
71
-
72
- useBackgroundClose({
73
- portalRef: elementRef,
74
- disabled: noBackgroundClick || !isOpen,
75
- handleClose: onClose,
76
- });
77
-
78
- const onKeyDown: KeyboardEventHandler<HTMLDivElement> = event => {
79
- !isKeyboardDisabled &&
80
- onPopupKeyDown(event, {
81
- onClose,
82
- enter: {
83
- onAction: () => {
84
- footer?.confirmButton?.onClick?.();
85
- !footer?.confirmButton?.keepOpen && onClose();
86
- },
87
- disabled: !footer?.confirmButton?.onClick,
88
- },
89
- focusableElements,
90
- });
91
- };
92
-
93
- return isOpen
94
- ? createPortal(
95
- <div
96
- ref={elementRef}
97
- className="iui-dialog"
98
- aria-label="popup"
99
- onKeyDown={onKeyDown}
100
- tabIndex={-1}
101
- >
102
- <Loader isLoading={!!isLoading}>
103
- <ConditionalWrapper
104
- condition={!!onFormSubmit}
105
- wrapper={children => (
106
- <form
107
- ref={formRef}
108
- onSubmit={e => {
109
- e.preventDefault();
110
- e.stopPropagation();
111
- onFormSubmit?.();
112
- !footer?.confirmButton?.keepOpen && onClose();
113
- }}
114
- >
115
- {children}
116
- </form>
117
- )}
118
- >
119
- <div className={clsx('iui-dialog-container', size, type, className)}>
120
- <div className="iui-dialog-header">
121
- {type && (
122
- <FontAwesomeIcon
123
- icon={infoIcons[type]}
124
- className={clsx('dialog-type-icon', type)}
125
- />
126
- )}
127
- <div className="full-width">
128
- <div className="iui-dialog-title">
129
- {title ? <h4>{title}</h4> : titleEl}
130
- <IconButton
131
- icon={faXmark}
132
- onClick={onClose}
133
- color="neutral"
134
- size="l"
135
- className="close-icon"
136
- buttonProps={{ tabIndex: -1 }}
137
- />
138
- </div>
139
- {desc ? <p className="iui-dialog-desc">{desc}</p> : descEl}
140
- </div>
141
- </div>
142
- {children && (
143
- <div
144
- className={clsx('iui-dialog-content', classNameContent, {
145
- 'no-overflow': noOverflow,
146
- })}
147
- >
148
- {children}
149
- </div>
150
- )}
151
- {footer && (
152
- <DialogFooter
153
- {...footer}
154
- onClose={onClose}
155
- isForm={!!onFormSubmit}
156
- type={type}
157
- />
158
- )}
159
- </div>
160
- </ConditionalWrapper>
161
- </Loader>
162
- </div>,
163
- rootDir
164
- )
165
- : null;
166
- };
1
+ import type { FC, KeyboardEventHandler, ReactNode } from 'react';
2
+ import type { IInfoType } from '../../types/IInfo';
3
+ import type { ILocalPopupControl } from '../../types/IPopup';
4
+ import type { IDialogFooterActions } from './components/DialogFooter';
5
+ import { useRef } from 'react';
6
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
7
+ import clsx from 'clsx';
8
+ import { createPortal } from 'react-dom';
9
+ import { faXmark } from '../../assets/icons';
10
+ import { useBackgroundClose } from '../../hooks/useBackgroundClose';
11
+ import { useGetFocusableElements } from '../../hooks/useGetFocusableElements';
12
+ import { useLocalPopoverControl } from '../../hooks/useLocalPopoverControl';
13
+ import { infoIcons } from '../../utils/icons';
14
+ import { onPopupKeyDown } from '../../utils/popupUtils';
15
+ import { rootDir } from '../../utils/rootDir';
16
+ import { IconButton } from '../Button/IconButton';
17
+ import { Loader } from '../Loader/Loader';
18
+ import { ConditionalWrapper } from '../Wrappers/ConditionalWrapper';
19
+ import { DialogFooter } from './components/DialogFooter';
20
+
21
+ interface Props {
22
+ control: ILocalPopupControl;
23
+ title?: string;
24
+ titleEl?: ReactNode;
25
+ desc?: string;
26
+ descEl?: ReactNode;
27
+ onFormSubmit?: () => void;
28
+ onCloseCallback?: () => void;
29
+ isLoading?: boolean;
30
+ footer?: IDialogFooterActions;
31
+ isKeyboardDisabled?: boolean;
32
+ noBackgroundClick?: boolean;
33
+ noOverflow?: boolean;
34
+ type?: IInfoType;
35
+ size?: 'm' | 'l' | 'xl';
36
+ className?: string;
37
+ classNameContent?: string;
38
+ children?: ReactNode;
39
+ }
40
+
41
+ export const Dialog: FC<Props> = ({
42
+ control,
43
+ title,
44
+ titleEl,
45
+ desc,
46
+ descEl,
47
+ onFormSubmit,
48
+ onCloseCallback,
49
+ isLoading,
50
+ footer,
51
+ isKeyboardDisabled,
52
+ noBackgroundClick,
53
+ noOverflow,
54
+ type,
55
+ size = 'm',
56
+ className,
57
+ classNameContent,
58
+ children,
59
+ }) => {
60
+ const formRef = useRef<HTMLFormElement>(null);
61
+
62
+ const { elementRef, isOpen, onClose } = useLocalPopoverControl({
63
+ control,
64
+ onCloseCallback,
65
+ });
66
+
67
+ const focusableElements = useGetFocusableElements({
68
+ elementRef,
69
+ isOpen,
70
+ });
71
+
72
+ useBackgroundClose({
73
+ portalRef: elementRef,
74
+ disabled: noBackgroundClick || !isOpen,
75
+ handleClose: onClose,
76
+ });
77
+
78
+ const onKeyDown: KeyboardEventHandler<HTMLDivElement> = event => {
79
+ !isKeyboardDisabled &&
80
+ onPopupKeyDown(event, {
81
+ onClose,
82
+ enter: {
83
+ onAction: () => {
84
+ footer?.confirmButton?.onClick?.();
85
+ !footer?.confirmButton?.keepOpen && onClose();
86
+ },
87
+ disabled: !footer?.confirmButton?.onClick,
88
+ },
89
+ focusableElements,
90
+ });
91
+ };
92
+
93
+ return isOpen
94
+ ? createPortal(
95
+ <div
96
+ ref={elementRef}
97
+ className="iui-dialog"
98
+ aria-label="popup"
99
+ onKeyDown={onKeyDown}
100
+ tabIndex={-1}
101
+ >
102
+ <Loader isLoading={!!isLoading}>
103
+ <ConditionalWrapper
104
+ condition={!!onFormSubmit}
105
+ wrapper={children => (
106
+ <form
107
+ ref={formRef}
108
+ onSubmit={e => {
109
+ e.preventDefault();
110
+ e.stopPropagation();
111
+ onFormSubmit?.();
112
+ !footer?.confirmButton?.keepOpen && onClose();
113
+ }}
114
+ >
115
+ {children}
116
+ </form>
117
+ )}
118
+ >
119
+ <div className={clsx('iui-dialog-container', size, type, className)}>
120
+ <div className="iui-dialog-header">
121
+ {type && (
122
+ <FontAwesomeIcon
123
+ icon={infoIcons[type]}
124
+ className={clsx('dialog-type-icon', type)}
125
+ />
126
+ )}
127
+ <div className="full-width">
128
+ <div className="iui-dialog-title">
129
+ {title ? <h4>{title}</h4> : titleEl}
130
+ <IconButton
131
+ icon={faXmark}
132
+ onClick={onClose}
133
+ color="neutral"
134
+ size="l"
135
+ className="close-icon"
136
+ buttonProps={{ tabIndex: -1 }}
137
+ />
138
+ </div>
139
+ {desc ? <p className="iui-dialog-desc">{desc}</p> : descEl}
140
+ </div>
141
+ </div>
142
+ {children && (
143
+ <div
144
+ className={clsx('iui-dialog-content', classNameContent, {
145
+ 'no-overflow': noOverflow,
146
+ })}
147
+ >
148
+ {children}
149
+ </div>
150
+ )}
151
+ {footer && (
152
+ <DialogFooter
153
+ {...footer}
154
+ onClose={onClose}
155
+ isForm={!!onFormSubmit}
156
+ type={type}
157
+ />
158
+ )}
159
+ </div>
160
+ </ConditionalWrapper>
161
+ </Loader>
162
+ </div>,
163
+ rootDir
164
+ )
165
+ : null;
166
+ };
@@ -1,100 +1,100 @@
1
- import type { IconDefinition } from '@fortawesome/fontawesome-svg-core';
2
- import type { ButtonHTMLAttributes, FC } from 'react';
3
- import type { IInfoType } from '../../../types/IInfo';
4
- import type { IButtonColor } from '../../Button/Button';
5
- import type { ISplitAction } from '../../Button/SplitButton';
6
- import { useTranslation } from 'react-i18next';
7
- import { Button } from '../../Button/Button';
8
- import { SplitButton } from '../../Button/SplitButton';
9
-
10
- export interface IDialogFooterActions {
11
- confirmButton?: {
12
- label?: string;
13
- icon?: IconDefinition;
14
- onClick?: () => void;
15
- disabled?: boolean;
16
- keepOpen?: boolean;
17
- color?: IButtonColor;
18
- isKeyboardDisabled?: boolean;
19
- type?: ButtonHTMLAttributes<HTMLButtonElement>['type'];
20
- splitActions?: ISplitAction[];
21
- };
22
- cancelButton?: {
23
- label?: string;
24
- icon?: IconDefinition;
25
- onClick?: () => void;
26
- hidden?: boolean;
27
- };
28
- additionalButton?: {
29
- label: string;
30
- icon?: IconDefinition;
31
- onClick: () => void;
32
- disabled?: boolean;
33
- keepOpen?: boolean;
34
- color?: IButtonColor;
35
- };
36
- }
37
-
38
- interface Props extends IDialogFooterActions {
39
- onClose: () => void;
40
- isForm?: boolean;
41
- type?: IInfoType;
42
- }
43
-
44
- export const DialogFooter: FC<Props> = ({
45
- confirmButton,
46
- cancelButton,
47
- additionalButton,
48
- onClose,
49
- isForm,
50
- type,
51
- }) => {
52
- const { t } = useTranslation();
53
- const ConfirmButton = confirmButton?.splitActions ? SplitButton : Button;
54
-
55
- return (
56
- <div className="iui-dialog-actions">
57
- {additionalButton && (
58
- <Button
59
- {...additionalButton}
60
- onClick={e => {
61
- e.stopPropagation();
62
- additionalButton.onClick!();
63
- !additionalButton.keepOpen && onClose();
64
- }}
65
- variant="simple"
66
- className="mr-auto"
67
- />
68
- )}
69
- {!cancelButton?.hidden && (
70
- <Button
71
- label={cancelButton?.label ?? t('Cancel')}
72
- icon={cancelButton?.icon}
73
- variant="outlined"
74
- onClick={e => {
75
- e.stopPropagation();
76
- cancelButton?.onClick?.();
77
- onClose();
78
- }}
79
- type="button"
80
- />
81
- )}
82
- {confirmButton && (
83
- <ConfirmButton
84
- label={confirmButton.label || t('Confirm')}
85
- icon={confirmButton.icon}
86
- variant="solid"
87
- type={confirmButton.type ?? (isForm ? 'submit' : 'button')}
88
- onClick={e => {
89
- e.stopPropagation();
90
- confirmButton.onClick?.();
91
- !confirmButton.keepOpen && !isForm && onClose();
92
- }}
93
- color={(confirmButton.color ?? type === 'danger') ? 'danger' : undefined}
94
- disabled={confirmButton.disabled}
95
- splitActions={confirmButton.splitActions}
96
- />
97
- )}
98
- </div>
99
- );
100
- };
1
+ import type { IconDefinition } from '@fortawesome/fontawesome-svg-core';
2
+ import type { ButtonHTMLAttributes, FC } from 'react';
3
+ import type { IInfoType } from '../../../types/IInfo';
4
+ import type { IButtonColor } from '../../Button/Button';
5
+ import type { ISplitAction } from '../../Button/SplitButton';
6
+ import { useTranslation } from 'react-i18next';
7
+ import { Button } from '../../Button/Button';
8
+ import { SplitButton } from '../../Button/SplitButton';
9
+
10
+ export interface IDialogFooterActions {
11
+ confirmButton?: {
12
+ label?: string;
13
+ icon?: IconDefinition;
14
+ onClick?: () => void;
15
+ disabled?: boolean;
16
+ keepOpen?: boolean;
17
+ color?: IButtonColor;
18
+ isKeyboardDisabled?: boolean;
19
+ type?: ButtonHTMLAttributes<HTMLButtonElement>['type'];
20
+ splitActions?: ISplitAction[];
21
+ };
22
+ cancelButton?: {
23
+ label?: string;
24
+ icon?: IconDefinition;
25
+ onClick?: () => void;
26
+ hidden?: boolean;
27
+ };
28
+ additionalButton?: {
29
+ label: string;
30
+ icon?: IconDefinition;
31
+ onClick: () => void;
32
+ disabled?: boolean;
33
+ keepOpen?: boolean;
34
+ color?: IButtonColor;
35
+ };
36
+ }
37
+
38
+ interface Props extends IDialogFooterActions {
39
+ onClose: () => void;
40
+ isForm?: boolean;
41
+ type?: IInfoType;
42
+ }
43
+
44
+ export const DialogFooter: FC<Props> = ({
45
+ confirmButton,
46
+ cancelButton,
47
+ additionalButton,
48
+ onClose,
49
+ isForm,
50
+ type,
51
+ }) => {
52
+ const { t } = useTranslation();
53
+ const ConfirmButton = confirmButton?.splitActions ? SplitButton : Button;
54
+
55
+ return (
56
+ <div className="iui-dialog-actions">
57
+ {additionalButton && (
58
+ <Button
59
+ {...additionalButton}
60
+ onClick={e => {
61
+ e.stopPropagation();
62
+ additionalButton.onClick!();
63
+ !additionalButton.keepOpen && onClose();
64
+ }}
65
+ variant="simple"
66
+ className="mr-auto"
67
+ />
68
+ )}
69
+ {!cancelButton?.hidden && (
70
+ <Button
71
+ label={cancelButton?.label ?? t('Cancel')}
72
+ icon={cancelButton?.icon}
73
+ variant="outlined"
74
+ onClick={e => {
75
+ e.stopPropagation();
76
+ cancelButton?.onClick?.();
77
+ onClose();
78
+ }}
79
+ type="button"
80
+ />
81
+ )}
82
+ {confirmButton && (
83
+ <ConfirmButton
84
+ label={confirmButton.label || t('Confirm')}
85
+ icon={confirmButton.icon}
86
+ variant="solid"
87
+ type={confirmButton.type ?? (isForm ? 'submit' : 'button')}
88
+ onClick={e => {
89
+ e.stopPropagation();
90
+ confirmButton.onClick?.();
91
+ !confirmButton.keepOpen && !isForm && onClose();
92
+ }}
93
+ color={(confirmButton.color ?? type === 'danger') ? 'danger' : undefined}
94
+ disabled={confirmButton.disabled}
95
+ splitActions={confirmButton.splitActions}
96
+ />
97
+ )}
98
+ </div>
99
+ );
100
+ };
@@ -1,17 +1,17 @@
1
- import type { FC } from 'react';
2
- import { PillBadge } from '../../Badge/PillBadge';
3
-
4
- export const EnvBadge: FC = () => {
5
- // @ts-ignore
6
- const env = import.meta.env.VITE_ENV;
7
- const isTest = env.includes('TEST');
8
- const isUAT = env.includes('UAT');
9
-
10
- if (!isTest && !isUAT) {
11
- return null;
12
- }
13
-
14
- return (
15
- <PillBadge label={isTest ? 'Test' : 'UAT'} color="warning" className="env-badge" />
16
- );
17
- };
1
+ import type { FC } from 'react';
2
+ import { PillBadge } from '../../Badge/PillBadge';
3
+
4
+ export const EnvBadge: FC = () => {
5
+ // @ts-ignore
6
+ const env = import.meta.env.VITE_ENV;
7
+ const isTest = env.includes('TEST');
8
+ const isUAT = env.includes('UAT');
9
+
10
+ if (!isTest && !isUAT) {
11
+ return null;
12
+ }
13
+
14
+ return (
15
+ <PillBadge label={isTest ? 'Test' : 'UAT'} color="warning" className="env-badge" />
16
+ );
17
+ };