@qoretechnologies/reqore 0.37.8 → 0.38.0
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.
- package/build-storybook.log +487 -3177
- package/chromatic.config.json +1 -0
- package/dist/components/Breadcrumbs/index.d.ts +1 -1
- package/dist/components/Breadcrumbs/index.d.ts.map +1 -1
- package/dist/components/Breadcrumbs/index.js +15 -14
- package/dist/components/Breadcrumbs/index.js.map +1 -1
- package/dist/components/Button/index.d.ts.map +1 -1
- package/dist/components/Button/index.js +5 -5
- package/dist/components/Button/index.js.map +1 -1
- package/dist/components/ControlGroup/index.d.ts.map +1 -1
- package/dist/components/ControlGroup/index.js +1 -1
- package/dist/components/ControlGroup/index.js.map +1 -1
- package/dist/components/Drawer/index.d.ts +1 -1
- package/dist/components/Drawer/index.d.ts.map +1 -1
- package/dist/components/Effect/index.d.ts +1 -0
- package/dist/components/Effect/index.d.ts.map +1 -1
- package/dist/components/Effect/index.js +39 -24
- package/dist/components/Effect/index.js.map +1 -1
- package/dist/components/InternalPopover/index.d.ts.map +1 -1
- package/dist/components/InternalPopover/index.js +21 -1
- package/dist/components/InternalPopover/index.js.map +1 -1
- package/dist/components/Panel/LabelEditor.d.ts +12 -0
- package/dist/components/Panel/LabelEditor.d.ts.map +1 -0
- package/dist/components/Panel/LabelEditor.js +61 -0
- package/dist/components/Panel/LabelEditor.js.map +1 -0
- package/dist/components/Panel/index.d.ts +11 -1
- package/dist/components/Panel/index.d.ts.map +1 -1
- package/dist/components/Panel/index.js +57 -20
- package/dist/components/Panel/index.js.map +1 -1
- package/dist/components/Tabs/content.d.ts +4 -2
- package/dist/components/Tabs/content.d.ts.map +1 -1
- package/dist/components/Tabs/content.js +22 -5
- package/dist/components/Tabs/content.js.map +1 -1
- package/dist/components/Tabs/index.d.ts +2 -2
- package/dist/components/Tabs/index.d.ts.map +1 -1
- package/dist/components/Tabs/list.d.ts +3 -0
- package/dist/components/Tabs/list.d.ts.map +1 -1
- package/dist/components/Tabs/list.js +13 -7
- package/dist/components/Tabs/list.js.map +1 -1
- package/package.json +2 -1
- package/src/components/Breadcrumbs/index.tsx +35 -27
- package/src/components/Button/index.tsx +12 -11
- package/src/components/ControlGroup/index.tsx +1 -0
- package/src/components/Drawer/index.tsx +1 -1
- package/src/components/Effect/index.tsx +46 -15
- package/src/components/InternalPopover/index.tsx +24 -1
- package/src/components/Panel/LabelEditor.tsx +66 -0
- package/src/components/Panel/index.tsx +90 -23
- package/src/components/Tabs/content.tsx +44 -7
- package/src/components/Tabs/index.tsx +2 -2
- package/src/components/Tabs/list.tsx +14 -6
- package/src/mock/breadcrumbs.ts +15 -4
- package/src/stories/Panel/Panel.stories.tsx +37 -0
- package/src/stories/Popover/Popover.stories.tsx +41 -0
- package/src/stories/Tabs/Tabs.stories.tsx +1 -1
- package/tests.json +1 -1
|
@@ -2,6 +2,8 @@ import React from 'react';
|
|
|
2
2
|
import { IReqoreTabsListItem, IReqoreTabsProps } from '.';
|
|
3
3
|
import { TSizes } from '../../constants/sizes';
|
|
4
4
|
import { IReqoreBreadcrumbsTheme, IReqoreCustomTheme, IReqoreTheme } from '../../constants/theme';
|
|
5
|
+
import { IReqoreBreadcrumbItem } from '../Breadcrumbs';
|
|
6
|
+
import { IReqoreTagProps } from '../Tag';
|
|
5
7
|
export interface IReqoreTabsListProps extends IReqoreTabsProps, React.HTMLAttributes<HTMLDivElement> {
|
|
6
8
|
onTabChange?: (tabId: string | number) => any;
|
|
7
9
|
children?: any;
|
|
@@ -11,6 +13,7 @@ export interface IReqoreTabsListStyle extends Omit<IReqoreTabsListProps, 'tabs'>
|
|
|
11
13
|
theme: IReqoreTheme;
|
|
12
14
|
}
|
|
13
15
|
export declare const StyledReqoreTabsList: any;
|
|
16
|
+
export declare const getLabelLength: (item: IReqoreBreadcrumbItem | IReqoreTabsListItem | IReqoreTabsListItem[] | IReqoreTagProps, activeTab?: string | number, tabsSize?: TSizes) => any;
|
|
14
17
|
/**
|
|
15
18
|
* This function returns the total width or height of the tabs.
|
|
16
19
|
* @param items the items that will be rendered in the tabs
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/list.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,GAAG,CAAC;AAE1D,OAAO,EAKL,MAAM,EACP,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/list.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,GAAG,CAAC;AAE1D,OAAO,EAKL,MAAM,EACP,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AASlG,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAMvD,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAGzC,MAAM,WAAW,oBACf,SAAQ,gBAAgB,EACtB,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACtC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,GAAG,CAAC;IAC9C,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,WAAW,CAAC,EAAE,kBAAkB,GAAG,uBAAuB,CAAC;CAC5D;AAED,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAC9E,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,eAAO,MAAM,oBAAoB,KAgChC,CAAC;AAgCF,eAAO,MAAM,cAAc,SACnB,qBAAqB,GAAG,mBAAmB,GAAG,mBAAmB,EAAE,GAAG,eAAe,cAC/E,MAAM,GAAG,MAAM,aACjB,MAAM,QAoCjB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,UACjB,CAAC,mBAAmB,GAAG,mBAAmB,EAAE,CAAC,EAAE,SAChD,OAAO,GAAG,QAAQ,cACZ,MAAM,GAAG,MAAM,aAChB,MAAM,KAChB,MAcI,CAAC;AAiCR,QAAA,MAAM,cAAc,kJAejB,oBAAoB,4CAmJtB,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -61,7 +61,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
61
61
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
62
62
|
};
|
|
63
63
|
exports.__esModule = true;
|
|
64
|
-
exports.getTabsLength = exports.StyledReqoreTabsList = void 0;
|
|
64
|
+
exports.getTabsLength = exports.getLabelLength = exports.StyledReqoreTabsList = void 0;
|
|
65
65
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
66
66
|
var react_1 = require("react");
|
|
67
67
|
var lodash_1 = require("lodash");
|
|
@@ -101,12 +101,13 @@ var getBadgeLength = function (badge, tabsSize) {
|
|
|
101
101
|
return badge.reduce(function (len, b) { return len + getBadgeLength(b); }, 0);
|
|
102
102
|
}
|
|
103
103
|
if ((0, lodash_1.isObject)(badge)) {
|
|
104
|
-
return getLabelLength(badge, undefined, (0, utils_1.getOneLessSize)(tabsSize)) + sizes_1.PADDING_FROM_SIZE[tabsSize];
|
|
104
|
+
return (0, exports.getLabelLength)(badge, undefined, (0, utils_1.getOneLessSize)(tabsSize)) + sizes_1.PADDING_FROM_SIZE[tabsSize];
|
|
105
105
|
}
|
|
106
106
|
return ((0, utils_1.calculateStringSizeInPixels)(badge.toString(), sizes_1.TEXT_FROM_SIZE[(0, utils_1.getOneLessSize)(tabsSize)]) +
|
|
107
107
|
sizes_1.PADDING_FROM_SIZE[tabsSize]);
|
|
108
108
|
};
|
|
109
109
|
var getLabelLength = function (item, activeTab, tabsSize) {
|
|
110
|
+
var _a;
|
|
110
111
|
if (tabsSize === void 0) { tabsSize = 'normal'; }
|
|
111
112
|
if (!item) {
|
|
112
113
|
return 0;
|
|
@@ -124,12 +125,17 @@ var getLabelLength = function (item, activeTab, tabsSize) {
|
|
|
124
125
|
var badgeLength = (0, lodash_1.isArray)(item)
|
|
125
126
|
? 0
|
|
126
127
|
: getBadgeLength(item.badge, tabsSize);
|
|
127
|
-
|
|
128
|
+
var descriptionLength = (0, lodash_1.isArray)(item)
|
|
129
|
+
? 0
|
|
130
|
+
: (0, utils_1.calculateStringSizeInPixels)((_a = item === null || item === void 0 ? void 0 : item.description) === null || _a === void 0 ? void 0 : _a.toString(), sizes_1.TEXT_FROM_SIZE[(0, utils_1.getOneLessSize)(tabsSize)]);
|
|
131
|
+
var topLabelLength = (0, utils_1.calculateStringSizeInPixels)(label === null || label === void 0 ? void 0 : label.toString(), sizes_1.TEXT_FROM_SIZE[tabsSize]) +
|
|
128
132
|
icon +
|
|
133
|
+
rightIcon +
|
|
129
134
|
closeIconSize +
|
|
130
|
-
badgeLength
|
|
131
|
-
|
|
135
|
+
badgeLength;
|
|
136
|
+
return Math.max(topLabelLength, descriptionLength);
|
|
132
137
|
};
|
|
138
|
+
exports.getLabelLength = getLabelLength;
|
|
133
139
|
/**
|
|
134
140
|
* This function returns the total width or height of the tabs.
|
|
135
141
|
* @param items the items that will be rendered in the tabs
|
|
@@ -142,12 +148,12 @@ var getTabsLength = function (items, type, activeTab, tabsSize) {
|
|
|
142
148
|
if (type === void 0) { type = 'width'; }
|
|
143
149
|
return items.reduce(function (len, item) {
|
|
144
150
|
if (type === 'height') {
|
|
145
|
-
var rows = getLabelLength(item, activeTab, tabsSize) / 4 || 1;
|
|
151
|
+
var rows = (0, exports.getLabelLength)(item, activeTab, tabsSize) / 4 || 1;
|
|
146
152
|
return len + rows * 15 + 10;
|
|
147
153
|
}
|
|
148
154
|
var labelLength = sizes_1.PADDING_FROM_SIZE[tabsSize] * 2 +
|
|
149
155
|
sizes_1.GAP_FROM_SIZE[tabsSize] * 2 +
|
|
150
|
-
getLabelLength(item, activeTab, tabsSize);
|
|
156
|
+
(0, exports.getLabelLength)(item, activeTab, tabsSize);
|
|
151
157
|
return len + labelLength;
|
|
152
158
|
}, 0);
|
|
153
159
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/components/Tabs/list.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAA2C;AAC3C,gDAA0B;AAC1B,uCAAuC;AACvC,qEAAgD;AAEhD,2BAAsC;AACtC,+CAM+B;AAE/B,iFAAiE;AACjE,+CAI8B;AAC9B,6CAAkF;AAClF,iDAAsD;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/components/Tabs/list.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qoretechnologies/reqore",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.38.0",
|
|
4
4
|
"description": "ReQore is a highly theme-able and modular UI library for React",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
"@babel/preset-env": "^7.12.11",
|
|
43
43
|
"@babel/preset-react": "^7.12.10",
|
|
44
44
|
"@babel/preset-typescript": "^7.12.7",
|
|
45
|
+
"@chromaui/addon-visual-tests": "^0.0.98",
|
|
45
46
|
"@storybook/addon-actions": "^7.1.1",
|
|
46
47
|
"@storybook/addon-essentials": "^7.1.1",
|
|
47
48
|
"@storybook/addon-interactions": "^7.1.1",
|
|
@@ -1,25 +1,18 @@
|
|
|
1
|
-
import { isArray } from 'lodash';
|
|
1
|
+
import { size as count, isArray, last } from 'lodash';
|
|
2
2
|
import React, { useMemo } from 'react';
|
|
3
3
|
import { useMeasure } from 'react-use';
|
|
4
4
|
import styled, { css } from 'styled-components';
|
|
5
5
|
import { ReqoreDropdown } from '../..';
|
|
6
|
-
import {
|
|
7
|
-
ICON_FROM_SIZE,
|
|
8
|
-
MARGIN_FROM_SIZE,
|
|
9
|
-
PADDING_FROM_SIZE,
|
|
10
|
-
TEXT_FROM_SIZE,
|
|
11
|
-
TSizes,
|
|
12
|
-
} from '../../constants/sizes';
|
|
6
|
+
import { ICON_FROM_SIZE, MARGIN_FROM_SIZE, PADDING_FROM_SIZE, TSizes } from '../../constants/sizes';
|
|
13
7
|
import { IReqoreBreadcrumbsTheme, IReqoreTheme, TReqoreIntent } from '../../constants/theme';
|
|
14
8
|
import { changeLightness, getReadableColor, getReadableColorFrom } from '../../helpers/colors';
|
|
15
|
-
import { calculateStringSizeInPixels } from '../../helpers/utils';
|
|
16
9
|
import { useReqoreTheme } from '../../hooks/useTheme';
|
|
17
10
|
import { IReqoreButtonProps } from '../Button';
|
|
18
11
|
import { IReqoreDropdownItem } from '../Dropdown/list';
|
|
19
12
|
import ReqoreIcon from '../Icon';
|
|
20
13
|
import { IReqoreTabsListItem } from '../Tabs';
|
|
21
14
|
import { StyledTabListItem } from '../Tabs/item';
|
|
22
|
-
import ReqoreTabsList, { StyledReqoreTabsList, getTabsLength } from '../Tabs/list';
|
|
15
|
+
import ReqoreTabsList, { StyledReqoreTabsList, getLabelLength, getTabsLength } from '../Tabs/list';
|
|
23
16
|
import ReqoreBreadcrumbsItem from './item';
|
|
24
17
|
|
|
25
18
|
export interface IReqoreBreadcrumbItemTabs {
|
|
@@ -32,7 +25,7 @@ export interface IReqoreBreadcrumbItemTabs {
|
|
|
32
25
|
export interface IReqoreBreadcrumbItem extends IReqoreButtonProps {
|
|
33
26
|
label?: string;
|
|
34
27
|
as?: any;
|
|
35
|
-
props?:
|
|
28
|
+
props?: Record<string, any>;
|
|
36
29
|
withTabs?: IReqoreBreadcrumbItemTabs;
|
|
37
30
|
}
|
|
38
31
|
|
|
@@ -110,7 +103,7 @@ const getBreadcrumbsLength = (
|
|
|
110
103
|
): number =>
|
|
111
104
|
items.reduce((len, item) => {
|
|
112
105
|
if (isArray(item)) {
|
|
113
|
-
return len +
|
|
106
|
+
return len + 120;
|
|
114
107
|
}
|
|
115
108
|
|
|
116
109
|
if (item.withTabs) {
|
|
@@ -124,10 +117,9 @@ const getBreadcrumbsLength = (
|
|
|
124
117
|
|
|
125
118
|
return (
|
|
126
119
|
len +
|
|
127
|
-
PADDING_FROM_SIZE[size] +
|
|
120
|
+
PADDING_FROM_SIZE[size] * 2 +
|
|
128
121
|
ICON_FROM_SIZE[size] +
|
|
129
|
-
|
|
130
|
-
calculateStringSizeInPixels(item.label || '', TEXT_FROM_SIZE[size])
|
|
122
|
+
getLabelLength(item, undefined, size)
|
|
131
123
|
);
|
|
132
124
|
}, 0);
|
|
133
125
|
|
|
@@ -144,17 +136,17 @@ const getTransformedItems = (
|
|
|
144
136
|
let newItems = [...items];
|
|
145
137
|
|
|
146
138
|
while (getBreadcrumbsLength(newItems, size) > width && !stop) {
|
|
147
|
-
if (isArray(newItems[
|
|
148
|
-
newItems[
|
|
149
|
-
newItems[
|
|
139
|
+
if (isArray(newItems[0])) {
|
|
140
|
+
newItems[0].push(newItems[1] as IReqoreBreadcrumbItem);
|
|
141
|
+
newItems[1] = undefined!;
|
|
150
142
|
} else {
|
|
151
|
-
const secondItem = newItems[
|
|
152
|
-
newItems[
|
|
143
|
+
const secondItem = newItems[0];
|
|
144
|
+
newItems[0] = [secondItem];
|
|
153
145
|
}
|
|
154
146
|
|
|
155
147
|
newItems = newItems.filter((i) => i);
|
|
156
148
|
|
|
157
|
-
if (!newItems[
|
|
149
|
+
if (!newItems[1] || (newItems[1] as IReqoreBreadcrumbItem).withTabs) {
|
|
158
150
|
stop = true;
|
|
159
151
|
}
|
|
160
152
|
}
|
|
@@ -179,22 +171,38 @@ const ReqoreBreadcrumbs: React.FC<IReqoreBreadcrumbsProps> = ({
|
|
|
179
171
|
[items, width, _testWidth, size]
|
|
180
172
|
);
|
|
181
173
|
|
|
182
|
-
const renderItem = (
|
|
183
|
-
|
|
174
|
+
const renderItem = (
|
|
175
|
+
itemOrItems: IReqoreBreadcrumbItem | IReqoreBreadcrumbItem[],
|
|
176
|
+
index: number
|
|
177
|
+
) => {
|
|
178
|
+
if (isArray(itemOrItems) && count(itemOrItems) > 1) {
|
|
184
179
|
return (
|
|
185
180
|
<React.Fragment key={index}>
|
|
186
|
-
<ReqoreIcon icon='ArrowRightSLine' size={size} key={'icon' + index} margin='both' />
|
|
187
181
|
<ReqoreDropdown
|
|
188
182
|
key={`dropdown-${index}`}
|
|
189
|
-
icon=
|
|
183
|
+
icon={last(itemOrItems)?.icon}
|
|
184
|
+
leftIconProps={last(itemOrItems)?.leftIconProps}
|
|
190
185
|
handler='hoverStay'
|
|
191
186
|
delay={500}
|
|
192
|
-
|
|
193
|
-
|
|
187
|
+
size={size}
|
|
188
|
+
badge={count(itemOrItems)}
|
|
189
|
+
items={itemOrItems as IReqoreDropdownItem[]}
|
|
190
|
+
>
|
|
191
|
+
<ReqoreIcon icon='MoreLine' />
|
|
192
|
+
</ReqoreDropdown>
|
|
194
193
|
</React.Fragment>
|
|
195
194
|
);
|
|
196
195
|
}
|
|
197
196
|
|
|
197
|
+
const item: IReqoreBreadcrumbItem = (
|
|
198
|
+
isArray(itemOrItems) && count(itemOrItems) === 1
|
|
199
|
+
? {
|
|
200
|
+
...itemOrItems[0],
|
|
201
|
+
label: <ReqoreIcon icon='MoreLine' />,
|
|
202
|
+
}
|
|
203
|
+
: itemOrItems
|
|
204
|
+
) as IReqoreBreadcrumbItem;
|
|
205
|
+
|
|
198
206
|
if (item.withTabs) {
|
|
199
207
|
return (
|
|
200
208
|
<StyledBreadcrumbsTabsWrapper key={index}>
|
|
@@ -385,18 +385,17 @@ const ReqoreButton = memo(
|
|
|
385
385
|
: getReadableColor(theme, undefined, undefined, true);
|
|
386
386
|
|
|
387
387
|
const _children = useMemo(() => label || children, [label, children]);
|
|
388
|
+
const hasLeftIcon = icon || leftIconProps?.image;
|
|
389
|
+
const hasRightIcon = rightIcon || rightIconProps?.image;
|
|
388
390
|
|
|
389
391
|
return (
|
|
390
392
|
<StyledButton
|
|
391
393
|
{...rest}
|
|
392
|
-
effect={
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
...fixedEffect,
|
|
398
|
-
}
|
|
399
|
-
}
|
|
394
|
+
effect={{
|
|
395
|
+
interactive: !readOnly && !rest.disabled,
|
|
396
|
+
...fixedEffect,
|
|
397
|
+
gradient: intent ? undefined : fixedEffect?.gradient,
|
|
398
|
+
}}
|
|
400
399
|
tabindex={rest.disabled ? -1 : 0}
|
|
401
400
|
as={as || 'button'}
|
|
402
401
|
theme={theme}
|
|
@@ -419,7 +418,7 @@ const ReqoreButton = memo(
|
|
|
419
418
|
className={`${className || ''} reqore-control reqore-button`}
|
|
420
419
|
>
|
|
421
420
|
<StyledButtonContent size={size} wrap={wrap} description={description} flat={_flat}>
|
|
422
|
-
{
|
|
421
|
+
{hasLeftIcon ? (
|
|
423
422
|
<>
|
|
424
423
|
<ReqoreIcon
|
|
425
424
|
icon={icon}
|
|
@@ -438,7 +437,9 @@ const ReqoreButton = memo(
|
|
|
438
437
|
: undefined
|
|
439
438
|
}
|
|
440
439
|
/>
|
|
441
|
-
{_children ||
|
|
440
|
+
{_children || hasRightIcon ? (
|
|
441
|
+
<ReqoreSpacer width={PADDING_FROM_SIZE[size]} />
|
|
442
|
+
) : null}
|
|
442
443
|
</>
|
|
443
444
|
) : _children ? (
|
|
444
445
|
<ReqoreHorizontalSpacer
|
|
@@ -470,7 +471,7 @@ const ReqoreButton = memo(
|
|
|
470
471
|
{(badge || badge === 0) && !wrap ? (
|
|
471
472
|
<ButtonBadge content={badge} size={size} theme={theme} />
|
|
472
473
|
) : null}
|
|
473
|
-
{!
|
|
474
|
+
{!hasRightIcon ? (
|
|
474
475
|
_children ? (
|
|
475
476
|
<ReqoreHorizontalSpacer
|
|
476
477
|
width={1}
|
|
@@ -16,7 +16,7 @@ import { ReqoreBackdrop } from './backdrop';
|
|
|
16
16
|
|
|
17
17
|
export type TPosition = 'top' | 'bottom' | 'left' | 'right';
|
|
18
18
|
|
|
19
|
-
export interface IReqoreDrawerProps extends Omit<IReqorePanelProps, 'size'> {
|
|
19
|
+
export interface IReqoreDrawerProps extends Omit<IReqorePanelProps, 'size' | 'resizable'> {
|
|
20
20
|
children?: any;
|
|
21
21
|
isOpen?: boolean;
|
|
22
22
|
isHidden?: boolean;
|
|
@@ -75,6 +75,7 @@ export interface IReqoreEffect extends IReqoreEffectFilters {
|
|
|
75
75
|
inset?: boolean;
|
|
76
76
|
blur?: number;
|
|
77
77
|
opacity?: number;
|
|
78
|
+
when?: 'always' | 'hover' | 'focus' | 'active';
|
|
78
79
|
};
|
|
79
80
|
interactive?: boolean;
|
|
80
81
|
}
|
|
@@ -222,28 +223,58 @@ export const StyledEffect = styled.span`
|
|
|
222
223
|
return undefined;
|
|
223
224
|
}
|
|
224
225
|
|
|
226
|
+
let glow;
|
|
227
|
+
|
|
225
228
|
if (!isText) {
|
|
226
|
-
|
|
229
|
+
glow = css`
|
|
227
230
|
box-shadow: ${effect.glow.inset ? 'inset ' : ''} 0 0 ${effect.glow.blur || 0}px
|
|
228
231
|
${effect.glow.size || 2}px ${getColorFromMaybeString(theme, effect.glow.color)};
|
|
229
232
|
`;
|
|
233
|
+
} else {
|
|
234
|
+
const color = getColorFromMaybeString(
|
|
235
|
+
theme,
|
|
236
|
+
effect.glow.color === 'main' ? 'main:lighten:2' : effect.glow.color
|
|
237
|
+
);
|
|
238
|
+
const blur = effect.glow.blur || 0;
|
|
239
|
+
const opacity = effect.glow.opacity || 1;
|
|
240
|
+
|
|
241
|
+
glow = css`
|
|
242
|
+
color: ${Colors.LIGHT};
|
|
243
|
+
text-shadow: 0 0 ${blur}px ${rgba(color, opacity)},
|
|
244
|
+
0 0 ${blur + 5}px ${rgba(color, opacity)}, 0 0 ${blur + 10}px ${rgba(color, opacity)},
|
|
245
|
+
0 0 1px ${rgba(getReadableColorFrom(color), opacity)},
|
|
246
|
+
0 0 2px ${rgba(getReadableColorFrom(color), opacity)},
|
|
247
|
+
0 0 3px ${rgba(getReadableColorFrom(color), opacity)};
|
|
248
|
+
`;
|
|
230
249
|
}
|
|
231
250
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
);
|
|
236
|
-
const blur = effect.glow.blur || 0;
|
|
237
|
-
const opacity = effect.glow.opacity || 1;
|
|
251
|
+
if (effect.glow.when === 'always' || !effect.glow.when) {
|
|
252
|
+
return glow;
|
|
253
|
+
}
|
|
238
254
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
255
|
+
if (effect.glow.when === 'hover') {
|
|
256
|
+
return css`
|
|
257
|
+
&:hover {
|
|
258
|
+
${glow}
|
|
259
|
+
}
|
|
260
|
+
`;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
if (effect.glow.when === 'focus') {
|
|
264
|
+
return css`
|
|
265
|
+
&:focus {
|
|
266
|
+
${glow}
|
|
267
|
+
}
|
|
268
|
+
`;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
if (effect.glow.when === 'active') {
|
|
272
|
+
return css`
|
|
273
|
+
&:active {
|
|
274
|
+
${glow}
|
|
275
|
+
}
|
|
276
|
+
`;
|
|
277
|
+
}
|
|
247
278
|
}}
|
|
248
279
|
|
|
249
280
|
${({ effect }: IReqoreTextEffectProps) =>
|
|
@@ -3,6 +3,7 @@ import { rgba } from 'polished';
|
|
|
3
3
|
import React, { MutableRefObject, memo, useEffect, useRef, useState } from 'react';
|
|
4
4
|
import { createPortal } from 'react-dom';
|
|
5
5
|
import { usePopper } from 'react-popper';
|
|
6
|
+
import { useUnmount, useUpdateEffect } from 'react-use';
|
|
6
7
|
import styled, { css } from 'styled-components';
|
|
7
8
|
import { useContext } from 'use-context-selector';
|
|
8
9
|
import { RADIUS_FROM_SIZE } from '../../constants/sizes';
|
|
@@ -164,7 +165,8 @@ const InternalPopover: React.FC<IReqoreInternalPopoverProps> = memo(
|
|
|
164
165
|
const [popperElement, setPopperElement] = useState(null);
|
|
165
166
|
const [arrowElement, setArrowElement] = useState(null);
|
|
166
167
|
const popperRef: MutableRefObject<any> = useRef(null);
|
|
167
|
-
const
|
|
168
|
+
const mutationObserber: MutableRefObject<any> = useRef(null);
|
|
169
|
+
const { styles, attributes, forceUpdate, state } = usePopper(targetElement, popperElement, {
|
|
168
170
|
placement,
|
|
169
171
|
modifiers: [
|
|
170
172
|
{
|
|
@@ -186,6 +188,27 @@ const InternalPopover: React.FC<IReqoreInternalPopoverProps> = memo(
|
|
|
186
188
|
],
|
|
187
189
|
});
|
|
188
190
|
|
|
191
|
+
useUpdateEffect(() => {
|
|
192
|
+
if (!mutationObserber.current && targetElement && state) {
|
|
193
|
+
// Watch for changes in the target element
|
|
194
|
+
const observer = new MutationObserver(() => {
|
|
195
|
+
forceUpdate();
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
observer.observe(document, {
|
|
199
|
+
attributes: true,
|
|
200
|
+
childList: true,
|
|
201
|
+
subtree: true,
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
mutationObserber.current = observer;
|
|
205
|
+
}
|
|
206
|
+
}, [styles, attributes, state]);
|
|
207
|
+
|
|
208
|
+
useUnmount(() => {
|
|
209
|
+
mutationObserber.current?.disconnect();
|
|
210
|
+
});
|
|
211
|
+
|
|
189
212
|
useEffect(() => {
|
|
190
213
|
if (popperRef.current) {
|
|
191
214
|
updatePopover?.(id, { popperRef: cloneDeep(popperRef) });
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { memo, useEffect, useState } from 'react';
|
|
2
|
+
import { useUpdateEffect } from 'react-use';
|
|
3
|
+
import { IReqoreHeadingProps, ReqoreHeading } from '../Header';
|
|
4
|
+
import ReqoreIcon, { IReqoreIconProps } from '../Icon';
|
|
5
|
+
import ReqoreInput, { IReqoreInputProps } from '../Input';
|
|
6
|
+
|
|
7
|
+
export interface IReqoreLabelEditorProps extends Omit<IReqoreHeadingProps, 'onSubmit'> {
|
|
8
|
+
label: string | number;
|
|
9
|
+
onSubmit?: (label: string | number) => void;
|
|
10
|
+
iconProps?: IReqoreIconProps;
|
|
11
|
+
inputProps?: IReqoreInputProps;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const LabelEditor = memo(
|
|
15
|
+
({ label, onSubmit, inputProps, iconProps, ...rest }: IReqoreLabelEditorProps) => {
|
|
16
|
+
const [name, setName] = useState<string | number>(label);
|
|
17
|
+
const [isEditing, setIsEditing] = useState(false);
|
|
18
|
+
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
setName(label);
|
|
21
|
+
}, [label]);
|
|
22
|
+
|
|
23
|
+
useUpdateEffect(() => {
|
|
24
|
+
if (!isEditing) {
|
|
25
|
+
onSubmit?.(name);
|
|
26
|
+
}
|
|
27
|
+
}, [isEditing]);
|
|
28
|
+
|
|
29
|
+
if (isEditing) {
|
|
30
|
+
return (
|
|
31
|
+
<ReqoreInput
|
|
32
|
+
focusRules={{ type: 'auto' }}
|
|
33
|
+
onClick={(e) => e.stopPropagation()}
|
|
34
|
+
value={name}
|
|
35
|
+
minimal
|
|
36
|
+
onChange={(e: any) => setName(e.target.value)}
|
|
37
|
+
onKeyUp={(e) => {
|
|
38
|
+
if (e.key === 'Enter') {
|
|
39
|
+
setIsEditing(false);
|
|
40
|
+
}
|
|
41
|
+
}}
|
|
42
|
+
onBlur={() => setIsEditing(false)}
|
|
43
|
+
{...inputProps}
|
|
44
|
+
/>
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return (
|
|
49
|
+
<ReqoreHeading
|
|
50
|
+
{...rest}
|
|
51
|
+
className={`${rest.className || ''} reqore-label-editor`}
|
|
52
|
+
onClick={
|
|
53
|
+
onSubmit
|
|
54
|
+
? (e) => {
|
|
55
|
+
e.stopPropagation();
|
|
56
|
+
setIsEditing(true);
|
|
57
|
+
}
|
|
58
|
+
: undefined
|
|
59
|
+
}
|
|
60
|
+
>
|
|
61
|
+
{name}
|
|
62
|
+
{onSubmit ? <ReqoreIcon icon='EditLine' size='small' margin='left' {...iconProps} /> : null}
|
|
63
|
+
</ReqoreHeading>
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
);
|