@webiny/ui 5.33.5 → 5.34.0-beta.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.
- package/Accordion/Accordion.js +1 -5
- package/Accordion/Accordion.js.map +1 -1
- package/Accordion/AccordionItem.d.ts +18 -2
- package/Accordion/AccordionItem.js +46 -48
- package/Accordion/AccordionItem.js.map +1 -1
- package/Accordion/AccordionItemActions.d.ts +8 -0
- package/Accordion/AccordionItemActions.js +36 -0
- package/Accordion/AccordionItemActions.js.map +1 -0
- package/Alert/Alert.d.ts +1 -1
- package/Alert/Alert.js +1 -1
- package/Alert/Alert.js.map +1 -1
- package/Button/Button.d.ts +30 -1
- package/Button/Button.js +2 -3
- package/Button/Button.js.map +1 -1
- package/CodeEditor/CodeEditor.d.ts +2 -0
- package/CodeEditor/CodeEditor.js +4 -0
- package/CodeEditor/CodeEditor.js.map +1 -1
- package/DataTable/DataTable.d.ts +22 -0
- package/DataTable/DataTable.js +162 -0
- package/DataTable/DataTable.js.map +1 -0
- package/DataTable/DataTable.stories.d.ts +1 -0
- package/DataTable/DataTable.stories.js +77 -0
- package/DataTable/DataTable.stories.js.map +1 -0
- package/DataTable/README.md +72 -0
- package/DataTable/index.d.ts +1 -0
- package/DataTable/index.js +18 -0
- package/DataTable/index.js.map +1 -0
- package/DataTable/styled.d.ts +2 -0
- package/DataTable/styled.js +18 -0
- package/DataTable/styled.js.map +1 -0
- package/DelayedOnChange/DelayedOnChange.d.ts +40 -0
- package/DelayedOnChange/DelayedOnChange.js +129 -0
- package/DelayedOnChange/DelayedOnChange.js.map +1 -0
- package/DelayedOnChange/index.d.ts +2 -0
- package/DelayedOnChange/index.js +23 -0
- package/DelayedOnChange/index.js.map +1 -0
- package/DelayedOnChange/withDelayedOnChange.d.ts +3 -0
- package/DelayedOnChange/withDelayedOnChange.js +37 -0
- package/DelayedOnChange/withDelayedOnChange.js.map +1 -0
- package/Dialog/Dialog.js +5 -2
- package/Dialog/Dialog.js.map +1 -1
- package/Image/Image.js +3 -1
- package/Image/Image.js.map +1 -1
- package/ImageUpload/styled.d.ts +3 -3
- package/Input/Input.d.ts +1 -1
- package/Input/Input.js.map +1 -1
- package/List/DataList/DataList.js +11 -52
- package/List/DataList/DataList.js.map +1 -1
- package/List/DataList/Loader.d.ts +2 -2
- package/List/DataList/Loader.js +35 -49
- package/List/DataList/Loader.js.map +1 -1
- package/Menu/Menu.js +5 -1
- package/Menu/Menu.js.map +1 -1
- package/Skeleton/README.md +21 -0
- package/Skeleton/Skeleton.d.ts +4 -0
- package/Skeleton/Skeleton.js +25 -0
- package/Skeleton/Skeleton.js.map +1 -0
- package/Skeleton/Skeleton.stories.d.ts +1 -0
- package/Skeleton/Skeleton.stories.js +28 -0
- package/Skeleton/Skeleton.stories.js.map +1 -0
- package/Skeleton/index.d.ts +1 -0
- package/Skeleton/index.js +18 -0
- package/Skeleton/index.js.map +1 -0
- package/Switch/Switch.d.ts +1 -1
- package/Switch/Switch.js.map +1 -1
- package/Tabs/Tab.d.ts +1 -0
- package/Tabs/Tab.js +4 -1
- package/Tabs/Tab.js.map +1 -1
- package/Tabs/Tabs.d.ts +1 -0
- package/Tabs/Tabs.js +8 -1
- package/Tabs/Tabs.js.map +1 -1
- package/Tags/Tags.d.ts +8 -15
- package/Tags/Tags.js +83 -112
- package/Tags/Tags.js.map +1 -1
- package/Typography/Typography.d.ts +2 -2
- package/Typography/Typography.js.map +1 -1
- package/package.json +19 -17
- package/styles.scss +2 -3
- package/types.d.ts +3 -3
- package/types.js.map +1 -1
package/Menu/Menu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["style","disabledMenuItem","css","opacity","pointerEvents","Menu","menuIsOpen","setState","props","onOpen","onClose","anchor","state","className","closeMenu","onSelect","children","Array","isArray","renderMenuWithPortal","renderCustomContent","renderMenuContent","handle","React","cloneElement","onClick","openMenu","Component","MenuDivider","MenuItem","disabled","rest","classNames"],"sources":["Menu.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n Menu as BaseMenu,\n MenuProps as RmwcMenuProps,\n MenuItem as BaseMenuItem,\n MenuItemProps as BaseMenuItemProps,\n MenuSurface,\n MenuSurfaceAnchor\n} from \"@rmwc/menu\";\nimport { css } from \"emotion\";\nimport classNames from \"classnames\";\n\nconst style = {\n disabledMenuItem: css({\n opacity: 0.5,\n pointerEvents: \"none\"\n })\n};\n\ntype MenuProps = RmwcMenuProps & {\n // One or more MenuItem components.\n children: React.ReactNode;\n\n // A handler which triggers the menu, eg. button or link.\n handle?: React.ReactElement;\n\n // Position the menu to one of anchor corners.\n // 'bottomEnd' | 'bottomLeft' | 'bottomRight' | 'bottomStart' | 'topEnd' | 'topLeft' | 'topRight' | 'topStart'\n anchor?:\n | \"bottomEnd\"\n | \"bottomLeft\"\n | \"bottomRight\"\n | \"bottomStart\"\n | \"topEnd\"\n | \"topLeft\"\n | \"topRight\"\n | \"topStart\";\n\n // Class that will be added to the Menu element.\n className?: string;\n\n onOpen?: () => void;\n onClose?: () => void;\n\n // For testing purposes.\n \"data-testid\"?: string;\n};\n\ninterface MenuState {\n menuIsOpen: boolean;\n}\n\n/**\n * Use Menu component to display a list of choices, once the handler is triggered.\n */\nclass Menu extends React.Component<MenuProps, MenuState> {\n static defaultProps: Partial<MenuProps> = {\n anchor: \"topStart\"\n };\n\n public override state: MenuState = {\n menuIsOpen: false\n };\n\n private readonly openMenu = () => {\n this.setState({ menuIsOpen: true }, () => this.props.onOpen && this.props.onOpen());\n };\n\n private readonly closeMenu = () => {\n this.setState({ menuIsOpen: false }, () => this.props.onClose && this.props.onClose());\n };\n\n private readonly renderMenuWithPortal = () => {\n return (\n <BaseMenu\n anchorCorner={this.props.anchor}\n open={this.state.menuIsOpen}\n className={this.props.className}\n onClose={this.closeMenu}\n onSelect={this.props.onSelect}\n renderToPortal={true}\n >\n {this.props.children}\n </BaseMenu>\n );\n };\n\n private readonly renderCustomContent = () => {\n const { children } = this.props;\n return (\n <MenuSurface open={this.state.menuIsOpen} onClose={this.closeMenu}>\n {typeof children === \"function\"\n ? children({ closeMenu: this.closeMenu })\n : children}\n </MenuSurface>\n );\n };\n\n private readonly renderMenuContent = () => {\n return Array.isArray(this.props.children)\n ? this.renderMenuWithPortal()\n : this.renderCustomContent();\n };\n\n public override render(): React.ReactNode {\n return (\n <MenuSurfaceAnchor data-testid={this.props[\"data-testid\"]}>\n {this.renderMenuContent()}\n {this.props.handle &&\n React.cloneElement(this.props.handle, { onClick: this.openMenu })}\n </MenuSurfaceAnchor>\n );\n }\n}\n\nconst MenuDivider: React.FC = () => {\n return <li className=\"mdc-list-divider\" role=\"separator\" />;\n};\n\ninterface MenuItemProps extends BaseMenuItemProps {\n children: React.ReactNode;\n className?: string;\n onClick?: (event: React.MouseEvent) => void;\n \"data-testid\"?: string;\n}\n\nconst MenuItem: React.FC<MenuItemProps> = ({ disabled, className, ...rest }) => {\n return (\n <BaseMenuItem\n {...rest}\n className={classNames(className, { [style.disabledMenuItem]: disabled })}\n />\n );\n};\n\nexport { Menu, MenuItem, MenuDivider };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAQA;;AACA;;;AAEA,IAAMA,KAAK,GAAG;EACVC,gBAAgB,eAAE,IAAAC,YAAA,EAAI;IAClBC,OAAO,EAAE,GADS;IAElBC,aAAa,EAAE;EAFG,CAAJ;AADR,CAAd;;AAwCA;AACA;AACA;IACMC,I;;;;;;;;;;;;;;;wFAKiC;MAC/BC,UAAU,EAAE;IADmB,C;2FAIP,YAAM;MAC9B,MAAKC,QAAL,CAAc;QAAED,UAAU,EAAE;MAAd,CAAd,EAAoC;QAAA,OAAM,MAAKE,KAAL,CAAWC,MAAX,IAAqB,MAAKD,KAAL,CAAWC,MAAX,EAA3B;MAAA,CAApC;IACH,C;4FAE4B,YAAM;MAC/B,MAAKF,QAAL,CAAc;QAAED,UAAU,EAAE;MAAd,CAAd,EAAqC;QAAA,OAAM,MAAKE,KAAL,CAAWE,OAAX,IAAsB,MAAKF,KAAL,CAAWE,OAAX,EAA5B;MAAA,CAArC;IACH,C;uGAEuC,YAAM;MAC1C,oBACI,6BAAC,UAAD;QACI,YAAY,EAAE,MAAKF,KAAL,CAAWG,MAD7B;QAEI,IAAI,EAAE,MAAKC,KAAL,CAAWN,UAFrB;QAGI,SAAS,EAAE,MAAKE,KAAL,CAAWK,SAH1B;QAII,OAAO,EAAE,MAAKC,SAJlB;QAKI,QAAQ,EAAE,MAAKN,KAAL,CAAWO,QALzB;QAMI,cAAc,EAAE;
|
|
1
|
+
{"version":3,"names":["style","disabledMenuItem","css","opacity","pointerEvents","Menu","menuIsOpen","setState","props","onOpen","onClose","anchor","state","className","closeMenu","onSelect","zIndex","children","Array","isArray","renderMenuWithPortal","renderCustomContent","renderMenuContent","handle","React","cloneElement","onClick","openMenu","Component","MenuDivider","MenuItem","disabled","rest","classNames"],"sources":["Menu.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n Menu as BaseMenu,\n MenuProps as RmwcMenuProps,\n MenuItem as BaseMenuItem,\n MenuItemProps as BaseMenuItemProps,\n MenuSurface,\n MenuSurfaceAnchor\n} from \"@rmwc/menu\";\nimport { css } from \"emotion\";\nimport classNames from \"classnames\";\n\nconst style = {\n disabledMenuItem: css({\n opacity: 0.5,\n pointerEvents: \"none\"\n })\n};\n\ntype MenuProps = RmwcMenuProps & {\n // One or more MenuItem components.\n children: React.ReactNode;\n\n // A handler which triggers the menu, eg. button or link.\n handle?: React.ReactElement;\n\n // Position the menu to one of anchor corners.\n // 'bottomEnd' | 'bottomLeft' | 'bottomRight' | 'bottomStart' | 'topEnd' | 'topLeft' | 'topRight' | 'topStart'\n anchor?:\n | \"bottomEnd\"\n | \"bottomLeft\"\n | \"bottomRight\"\n | \"bottomStart\"\n | \"topEnd\"\n | \"topLeft\"\n | \"topRight\"\n | \"topStart\";\n\n // Class that will be added to the Menu element.\n className?: string;\n\n onOpen?: () => void;\n onClose?: () => void;\n\n // For testing purposes.\n \"data-testid\"?: string;\n};\n\ninterface MenuState {\n menuIsOpen: boolean;\n}\n\n/**\n * Use Menu component to display a list of choices, once the handler is triggered.\n */\nclass Menu extends React.Component<MenuProps, MenuState> {\n static defaultProps: Partial<MenuProps> = {\n anchor: \"topStart\"\n };\n\n public override state: MenuState = {\n menuIsOpen: false\n };\n\n private readonly openMenu = () => {\n this.setState({ menuIsOpen: true }, () => this.props.onOpen && this.props.onOpen());\n };\n\n private readonly closeMenu = () => {\n this.setState({ menuIsOpen: false }, () => this.props.onClose && this.props.onClose());\n };\n\n private readonly renderMenuWithPortal = () => {\n return (\n <BaseMenu\n anchorCorner={this.props.anchor}\n open={this.state.menuIsOpen}\n className={this.props.className}\n onClose={this.closeMenu}\n onSelect={this.props.onSelect}\n renderToPortal={true}\n style={{ zIndex: 99 }} // Fixes Menu in Drawers\n >\n {this.props.children}\n </BaseMenu>\n );\n };\n\n private readonly renderCustomContent = () => {\n const { children } = this.props;\n return (\n <MenuSurface open={this.state.menuIsOpen} onClose={this.closeMenu}>\n {typeof children === \"function\"\n ? children({ closeMenu: this.closeMenu })\n : children}\n </MenuSurface>\n );\n };\n\n private readonly renderMenuContent = () => {\n return Array.isArray(this.props.children)\n ? this.renderMenuWithPortal()\n : this.renderCustomContent();\n };\n\n public override render(): React.ReactNode {\n return (\n <MenuSurfaceAnchor data-testid={this.props[\"data-testid\"]}>\n {this.renderMenuContent()}\n {this.props.handle &&\n React.cloneElement(this.props.handle, { onClick: this.openMenu })}\n </MenuSurfaceAnchor>\n );\n }\n}\n\nconst MenuDivider: React.FC = () => {\n return <li className=\"mdc-list-divider\" role=\"separator\" />;\n};\n\ninterface MenuItemProps extends BaseMenuItemProps {\n children: React.ReactNode;\n className?: string;\n onClick?: (event: React.MouseEvent) => void;\n \"data-testid\"?: string;\n}\n\nconst MenuItem: React.FC<MenuItemProps> = ({ disabled, className, ...rest }) => {\n return (\n <BaseMenuItem\n {...rest}\n className={classNames(className, { [style.disabledMenuItem]: disabled })}\n />\n );\n};\n\nexport { Menu, MenuItem, MenuDivider };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAQA;;AACA;;;AAEA,IAAMA,KAAK,GAAG;EACVC,gBAAgB,eAAE,IAAAC,YAAA,EAAI;IAClBC,OAAO,EAAE,GADS;IAElBC,aAAa,EAAE;EAFG,CAAJ;AADR,CAAd;;AAwCA;AACA;AACA;IACMC,I;;;;;;;;;;;;;;;wFAKiC;MAC/BC,UAAU,EAAE;IADmB,C;2FAIP,YAAM;MAC9B,MAAKC,QAAL,CAAc;QAAED,UAAU,EAAE;MAAd,CAAd,EAAoC;QAAA,OAAM,MAAKE,KAAL,CAAWC,MAAX,IAAqB,MAAKD,KAAL,CAAWC,MAAX,EAA3B;MAAA,CAApC;IACH,C;4FAE4B,YAAM;MAC/B,MAAKF,QAAL,CAAc;QAAED,UAAU,EAAE;MAAd,CAAd,EAAqC;QAAA,OAAM,MAAKE,KAAL,CAAWE,OAAX,IAAsB,MAAKF,KAAL,CAAWE,OAAX,EAA5B;MAAA,CAArC;IACH,C;uGAEuC,YAAM;MAC1C,oBACI,6BAAC,UAAD;QACI,YAAY,EAAE,MAAKF,KAAL,CAAWG,MAD7B;QAEI,IAAI,EAAE,MAAKC,KAAL,CAAWN,UAFrB;QAGI,SAAS,EAAE,MAAKE,KAAL,CAAWK,SAH1B;QAII,OAAO,EAAE,MAAKC,SAJlB;QAKI,QAAQ,EAAE,MAAKN,KAAL,CAAWO,QALzB;QAMI,cAAc,EAAE,IANpB;QAOI,KAAK,EAAE;UAAEC,MAAM,EAAE;QAAV,CAPX,CAO2B;;MAP3B,GASK,MAAKR,KAAL,CAAWS,QAThB,CADJ;IAaH,C;sGAEsC,YAAM;MACzC,IAAQA,QAAR,GAAqB,MAAKT,KAA1B,CAAQS,QAAR;MACA,oBACI,6BAAC,iBAAD;QAAa,IAAI,EAAE,MAAKL,KAAL,CAAWN,UAA9B;QAA0C,OAAO,EAAE,MAAKQ;MAAxD,GACK,OAAOG,QAAP,KAAoB,UAApB,GACKA,QAAQ,CAAC;QAAEH,SAAS,EAAE,MAAKA;MAAlB,CAAD,CADb,GAEKG,QAHV,CADJ;IAOH,C;oGAEoC,YAAM;MACvC,OAAOC,KAAK,CAACC,OAAN,CAAc,MAAKX,KAAL,CAAWS,QAAzB,IACD,MAAKG,oBAAL,EADC,GAED,MAAKC,mBAAL,EAFN;IAGH,C;;;;;;WAED,kBAA0C;MACtC,oBACI,6BAAC,uBAAD;QAAmB,eAAa,KAAKb,KAAL,CAAW,aAAX;MAAhC,GACK,KAAKc,iBAAL,EADL,EAEK,KAAKd,KAAL,CAAWe,MAAX,iBACGC,cAAA,CAAMC,YAAN,CAAmB,KAAKjB,KAAL,CAAWe,MAA9B,EAAsC;QAAEG,OAAO,EAAE,KAAKC;MAAhB,CAAtC,CAHR,CADJ;IAOH;;;EA1DcH,cAAA,CAAMI,S;;;8BAAnBvB,I,kBACwC;EACtCM,MAAM,EAAE;AAD8B,C;;AA4D9C,IAAMkB,WAAqB,GAAG,SAAxBA,WAAwB,GAAM;EAChC,oBAAO;IAAI,SAAS,EAAC,kBAAd;IAAiC,IAAI,EAAC;EAAtC,EAAP;AACH,CAFD;;;;AAWA,IAAMC,QAAiC,GAAG,SAApCA,QAAoC,OAAsC;EAAA,IAAnCC,QAAmC,QAAnCA,QAAmC;EAAA,IAAzBlB,SAAyB,QAAzBA,SAAyB;EAAA,IAAXmB,IAAW;EAC5E,oBACI,6BAAC,cAAD,oBACQA,IADR;IAEI,SAAS,EAAE,IAAAC,mBAAA,EAAWpB,SAAX,oCAAyBb,KAAK,CAACC,gBAA/B,EAAkD8B,QAAlD;EAFf,GADJ;AAMH,CAPD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Skeleton
|
|
2
|
+
|
|
3
|
+
### Additional information
|
|
4
|
+
|
|
5
|
+
[https://www.npmjs.com/package/react-loading-skeleton](https://www.npmjs.com/package/react-loading-skeleton)
|
|
6
|
+
|
|
7
|
+
### Description
|
|
8
|
+
|
|
9
|
+
`Skeleton` component is used to render animated loading skeletons within Webiny.
|
|
10
|
+
|
|
11
|
+
### Usage
|
|
12
|
+
|
|
13
|
+
```jsx
|
|
14
|
+
import { Skeleton } from "@webiny/ui/Skeleton";
|
|
15
|
+
|
|
16
|
+
...
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<Skeleton />
|
|
20
|
+
)
|
|
21
|
+
```
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.Skeleton = void 0;
|
|
11
|
+
|
|
12
|
+
var _react = _interopRequireDefault(require("react"));
|
|
13
|
+
|
|
14
|
+
var _reactLoadingSkeleton = _interopRequireWildcard(require("react-loading-skeleton"));
|
|
15
|
+
|
|
16
|
+
require("react-loading-skeleton/dist/skeleton.css");
|
|
17
|
+
|
|
18
|
+
var Skeleton = function Skeleton(props) {
|
|
19
|
+
return /*#__PURE__*/_react.default.createElement(_reactLoadingSkeleton.SkeletonTheme, {
|
|
20
|
+
baseColor: "var(--mdc-theme-background)",
|
|
21
|
+
highlightColor: "var(--mdc-theme-surface)"
|
|
22
|
+
}, /*#__PURE__*/_react.default.createElement(_reactLoadingSkeleton.default, props));
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
exports.Skeleton = Skeleton;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Skeleton","props"],"sources":["Skeleton.tsx"],"sourcesContent":["import React, { ReactElement } from \"react\";\nimport ReactLoadingSkeleton, { SkeletonProps, SkeletonTheme } from \"react-loading-skeleton\";\n\nimport \"react-loading-skeleton/dist/skeleton.css\";\n\nexport const Skeleton = (props: SkeletonProps): ReactElement => {\n return (\n <SkeletonTheme\n baseColor={\"var(--mdc-theme-background)\"}\n highlightColor={\"var(--mdc-theme-surface)\"}\n >\n <ReactLoadingSkeleton {...props} />\n </SkeletonTheme>\n );\n};\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AAEO,IAAMA,QAAQ,GAAG,SAAXA,QAAW,CAACC,KAAD,EAAwC;EAC5D,oBACI,6BAAC,mCAAD;IACI,SAAS,EAAE,6BADf;IAEI,cAAc,EAAE;EAFpB,gBAII,6BAAC,6BAAD,EAA0BA,KAA1B,CAJJ,CADJ;AAQH,CATM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
|
6
|
+
|
|
7
|
+
var _react2 = require("@storybook/react");
|
|
8
|
+
|
|
9
|
+
var _Story = require("@webiny/storybook-utils/Story");
|
|
10
|
+
|
|
11
|
+
var _README = _interopRequireDefault(require("./../Skeleton/README.md"));
|
|
12
|
+
|
|
13
|
+
var _Skeleton = require("./Skeleton");
|
|
14
|
+
|
|
15
|
+
var story = (0, _react2.storiesOf)("Components/Skeleton", module);
|
|
16
|
+
story.add("usage", function () {
|
|
17
|
+
return /*#__PURE__*/_react.default.createElement(_Story.Story, null, /*#__PURE__*/_react.default.createElement(_Story.StoryReadme, null, _README.default), /*#__PURE__*/_react.default.createElement(_Story.StorySandbox, {
|
|
18
|
+
title: "A simple loading Skeleton, single line"
|
|
19
|
+
}, /*#__PURE__*/_react.default.createElement(_Skeleton.Skeleton, null)), /*#__PURE__*/_react.default.createElement(_Story.StorySandbox, {
|
|
20
|
+
title: "A loading Skeleton, with 3 lines"
|
|
21
|
+
}, /*#__PURE__*/_react.default.createElement(_Skeleton.Skeleton, {
|
|
22
|
+
count: 3
|
|
23
|
+
})));
|
|
24
|
+
}, {
|
|
25
|
+
info: {
|
|
26
|
+
propTables: [_Skeleton.Skeleton]
|
|
27
|
+
}
|
|
28
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["story","storiesOf","module","add","readme","info","propTables","Skeleton"],"sources":["Skeleton.stories.tsx"],"sourcesContent":["import React from \"react\";\nimport { storiesOf } from \"@storybook/react\";\nimport { Story, StoryReadme, StorySandbox } from \"@webiny/storybook-utils/Story\";\nimport readme from \"./../Skeleton/README.md\";\nimport { Skeleton } from \"./Skeleton\";\n\nconst story = storiesOf(\"Components/Skeleton\", module);\n\nstory.add(\n \"usage\",\n () => {\n return (\n <Story>\n <StoryReadme>{readme}</StoryReadme>\n <StorySandbox title={\"A simple loading Skeleton, single line\"}>\n <Skeleton />\n </StorySandbox>\n <StorySandbox title={\"A loading Skeleton, with 3 lines\"}>\n <Skeleton count={3} />\n </StorySandbox>\n </Story>\n );\n },\n { info: { propTables: [Skeleton] } }\n);\n"],"mappings":";;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA,IAAMA,KAAK,GAAG,IAAAC,iBAAA,EAAU,qBAAV,EAAiCC,MAAjC,CAAd;AAEAF,KAAK,CAACG,GAAN,CACI,OADJ,EAEI,YAAM;EACF,oBACI,6BAAC,YAAD,qBACI,6BAAC,kBAAD,QAAcC,eAAd,CADJ,eAEI,6BAAC,mBAAD;IAAc,KAAK,EAAE;EAArB,gBACI,6BAAC,kBAAD,OADJ,CAFJ,eAKI,6BAAC,mBAAD;IAAc,KAAK,EAAE;EAArB,gBACI,6BAAC,kBAAD;IAAU,KAAK,EAAE;EAAjB,EADJ,CALJ,CADJ;AAWH,CAdL,EAeI;EAAEC,IAAI,EAAE;IAAEC,UAAU,EAAE,CAACC,kBAAD;EAAd;AAAR,CAfJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Skeleton";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
var _Skeleton = require("./Skeleton");
|
|
8
|
+
|
|
9
|
+
Object.keys(_Skeleton).forEach(function (key) {
|
|
10
|
+
if (key === "default" || key === "__esModule") return;
|
|
11
|
+
if (key in exports && exports[key] === _Skeleton[key]) return;
|
|
12
|
+
Object.defineProperty(exports, key, {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _Skeleton[key];
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./Skeleton\";\n"],"mappings":";;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
package/Switch/Switch.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { SwitchProps } from "@rmwc/switch";
|
|
4
4
|
import { FormComponentProps } from "../types";
|
|
5
|
-
declare type Props =
|
|
5
|
+
declare type Props = Omit<SwitchProps, "value"> & FormComponentProps<boolean> & {
|
|
6
6
|
description?: string;
|
|
7
7
|
className?: string;
|
|
8
8
|
};
|
package/Switch/Switch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Switch","e","props","onChange","target","checked","value","description","validation","validationIsValid","isValid","validationMessage","message","getClasses","pick","rmwcProps","Boolean","React","Component"],"sources":["Switch.tsx"],"sourcesContent":["import React from \"react\";\nimport { Switch as RmwcSwitch, SwitchProps } from \"@rmwc/switch\";\nimport { FormComponentProps } from \"~/types\";\nimport pick from \"lodash/pick\";\nimport { FormElementMessage } from \"~/FormElementMessage\";\nimport { getClasses } from \"~/Helpers\";\n\ntype Props =
|
|
1
|
+
{"version":3,"names":["Switch","e","props","onChange","target","checked","value","description","validation","validationIsValid","isValid","validationMessage","message","getClasses","pick","rmwcProps","Boolean","React","Component"],"sources":["Switch.tsx"],"sourcesContent":["import React from \"react\";\nimport { Switch as RmwcSwitch, SwitchProps } from \"@rmwc/switch\";\nimport { FormComponentProps } from \"~/types\";\nimport pick from \"lodash/pick\";\nimport { FormElementMessage } from \"~/FormElementMessage\";\nimport { getClasses } from \"~/Helpers\";\n\ntype Props = Omit<SwitchProps, \"value\"> &\n FormComponentProps<boolean> & {\n // Description beneath the switch.\n description?: string;\n\n // Optional class name.\n className?: string;\n };\n\n/**\n * Switch component can be used to store simple boolean values.\n */\nclass Switch extends React.Component<Props> {\n static rmwcProps = [\"id\", \"disabled\", \"checked\", \"label\", \"rootProps\", \"className\"];\n\n onChange = (e: React.SyntheticEvent<HTMLElement>) => {\n this.props.onChange && this.props.onChange((e.target as any).checked);\n };\n\n public override render() {\n const { value, description, validation } = this.props;\n\n const { isValid: validationIsValid, message: validationMessage } = validation || {};\n\n return (\n <React.Fragment>\n <RmwcSwitch\n {...getClasses({ ...pick(this.props, Switch.rmwcProps) }, \"webiny-ui-switch\")}\n checked={Boolean(value)}\n onChange={this.onChange}\n />\n\n {validationIsValid === false && (\n <FormElementMessage error>{validationMessage}</FormElementMessage>\n )}\n\n {validationIsValid !== false && description && (\n <FormElementMessage>{description}</FormElementMessage>\n )}\n </React.Fragment>\n );\n }\n}\n\nexport { Switch };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AAWA;AACA;AACA;IACMA,M;;;;;;;;;;;;;;;2FAGS,UAACC,CAAD,EAA0C;MACjD,MAAKC,KAAL,CAAWC,QAAX,IAAuB,MAAKD,KAAL,CAAWC,QAAX,CAAqBF,CAAC,CAACG,MAAH,CAAkBC,OAAtC,CAAvB;IACH,C;;;;;;WAED,kBAAyB;MACrB,kBAA2C,KAAKH,KAAhD;MAAA,IAAQI,KAAR,eAAQA,KAAR;MAAA,IAAeC,WAAf,eAAeA,WAAf;MAAA,IAA4BC,UAA5B,eAA4BA,UAA5B;;MAEA,WAAmEA,UAAU,IAAI,EAAjF;MAAA,IAAiBC,iBAAjB,QAAQC,OAAR;MAAA,IAA6CC,iBAA7C,QAAoCC,OAApC;;MAEA,oBACI,6BAAC,cAAD,CAAO,QAAP,qBACI,6BAAC,cAAD,oBACQ,IAAAC,mBAAA,kCAAgB,IAAAC,aAAA,EAAK,KAAKZ,KAAV,EAAiBF,MAAM,CAACe,SAAxB,CAAhB,GAAsD,kBAAtD,CADR;QAEI,OAAO,EAAEC,OAAO,CAACV,KAAD,CAFpB;QAGI,QAAQ,EAAE,KAAKH;MAHnB,GADJ,EAOKM,iBAAiB,KAAK,KAAtB,iBACG,6BAAC,sCAAD;QAAoB,KAAK;MAAzB,GAA2BE,iBAA3B,CARR,EAWKF,iBAAiB,KAAK,KAAtB,IAA+BF,WAA/B,iBACG,6BAAC,sCAAD,QAAqBA,WAArB,CAZR,CADJ;IAiBH;;;EA7BgBU,cAAA,CAAMC,S;;;8BAArBlB,M,eACiB,CAAC,IAAD,EAAO,UAAP,EAAmB,SAAnB,EAA8B,OAA9B,EAAuC,WAAvC,EAAoD,WAApD,C"}
|
package/Tabs/Tab.d.ts
CHANGED
package/Tabs/Tab.js
CHANGED
|
@@ -21,8 +21,11 @@ var Tab = /*#__PURE__*/_react.default.memo(function (props) {
|
|
|
21
21
|
var tabsContext = (0, _react.useContext)(_Tabs.TabsContext);
|
|
22
22
|
var idRef = (0, _react.useRef)(_shortid.default.generate());
|
|
23
23
|
(0, _react.useEffect)(function () {
|
|
24
|
+
var _props$visible;
|
|
25
|
+
|
|
24
26
|
tabsContext.addTab((0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
|
|
25
|
-
id: idRef.current
|
|
27
|
+
id: idRef.current,
|
|
28
|
+
visible: (_props$visible = props.visible) !== null && _props$visible !== void 0 ? _props$visible : true
|
|
26
29
|
}));
|
|
27
30
|
}, [props]);
|
|
28
31
|
(0, _react.useEffect)(function () {
|
package/Tabs/Tab.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Tab","React","memo","props","tabsContext","useContext","TabsContext","idRef","useRef","shortid","generate","useEffect","addTab","id","current","removeTab","displayName"],"sources":["Tab.tsx"],"sourcesContent":["import React, { useContext, useEffect, useRef } from \"react\";\nimport { TabProps as RmwcTabProps } from \"@rmwc/tabs\";\nimport shortid from \"shortid\";\nimport { TabsContext } from \"./Tabs\";\n\nexport type TabProps = RmwcTabProps & {\n tag?: string;\n /**\n * Is tab disabled?\n */\n disabled?: boolean;\n /**\n * Style object\n */\n style?: React.CSSProperties;\n /**\n * Tab ID for the testing.\n */\n \"data-testid\"?: string;\n};\n\nexport const Tab: React.FC<TabProps> = React.memo(props => {\n const tabsContext = useContext(TabsContext);\n const idRef = useRef(shortid.generate());\n\n useEffect(() => {\n tabsContext!.addTab({ ...props, id: idRef.current });\n }, [props]);\n\n useEffect(() => {\n return () => {\n return tabsContext!.removeTab(idRef.current);\n };\n }, []);\n\n return null;\n});\n\nTab.displayName = \"Tab\";\n"],"mappings":";;;;;;;;;;;;;AAAA;;AAEA;;AACA;;
|
|
1
|
+
{"version":3,"names":["Tab","React","memo","props","tabsContext","useContext","TabsContext","idRef","useRef","shortid","generate","useEffect","addTab","id","current","visible","removeTab","displayName"],"sources":["Tab.tsx"],"sourcesContent":["import React, { useContext, useEffect, useRef } from \"react\";\nimport { TabProps as RmwcTabProps } from \"@rmwc/tabs\";\nimport shortid from \"shortid\";\nimport { TabsContext } from \"./Tabs\";\n\nexport type TabProps = RmwcTabProps & {\n visible?: boolean;\n\n tag?: string;\n /**\n * Is tab disabled?\n */\n disabled?: boolean;\n /**\n * Style object\n */\n style?: React.CSSProperties;\n /**\n * Tab ID for the testing.\n */\n \"data-testid\"?: string;\n};\n\nexport const Tab: React.FC<TabProps> = React.memo(props => {\n const tabsContext = useContext(TabsContext);\n const idRef = useRef(shortid.generate());\n\n useEffect(() => {\n tabsContext!.addTab({ ...props, id: idRef.current, visible: props.visible ?? true });\n }, [props]);\n\n useEffect(() => {\n return () => {\n return tabsContext!.removeTab(idRef.current);\n };\n }, []);\n\n return null;\n});\n\nTab.displayName = \"Tab\";\n"],"mappings":";;;;;;;;;;;;;AAAA;;AAEA;;AACA;;AAoBO,IAAMA,GAAuB,gBAAGC,cAAA,CAAMC,IAAN,CAAW,UAAAC,KAAK,EAAI;EACvD,IAAMC,WAAW,GAAG,IAAAC,iBAAA,EAAWC,iBAAX,CAApB;EACA,IAAMC,KAAK,GAAG,IAAAC,aAAA,EAAOC,gBAAA,CAAQC,QAAR,EAAP,CAAd;EAEA,IAAAC,gBAAA,EAAU,YAAM;IAAA;;IACZP,WAAW,CAAEQ,MAAb,6DAAyBT,KAAzB;MAAgCU,EAAE,EAAEN,KAAK,CAACO,OAA1C;MAAmDC,OAAO,oBAAEZ,KAAK,CAACY,OAAR,2DAAmB;IAA7E;EACH,CAFD,EAEG,CAACZ,KAAD,CAFH;EAIA,IAAAQ,gBAAA,EAAU,YAAM;IACZ,OAAO,YAAM;MACT,OAAOP,WAAW,CAAEY,SAAb,CAAuBT,KAAK,CAACO,OAA7B,CAAP;IACH,CAFD;EAGH,CAJD,EAIG,EAJH;EAMA,OAAO,IAAP;AACH,CAfsC,CAAhC;;;AAiBPd,GAAG,CAACiB,WAAJ,GAAkB,KAAlB"}
|
package/Tabs/Tabs.d.ts
CHANGED
|
@@ -32,6 +32,7 @@ interface TabsContext {
|
|
|
32
32
|
export declare const TabsContext: React.Context<TabsContext | undefined>;
|
|
33
33
|
export interface TabsImperativeApi {
|
|
34
34
|
switchTab(index: number): void;
|
|
35
|
+
getActiveIndex(): number;
|
|
35
36
|
}
|
|
36
37
|
/**
|
|
37
38
|
* Use Tabs component to display a list of choices, once the handler is triggered.
|
package/Tabs/Tabs.js
CHANGED
|
@@ -51,6 +51,9 @@ var Tabs = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
|
51
51
|
}, []);
|
|
52
52
|
(0, _react.useImperativeHandle)(ref, function () {
|
|
53
53
|
return {
|
|
54
|
+
getActiveIndex: function getActiveIndex() {
|
|
55
|
+
return activeIndex;
|
|
56
|
+
},
|
|
54
57
|
switchTab: function switchTab(tabIndex) {
|
|
55
58
|
activateTabIndex(tabIndex);
|
|
56
59
|
}
|
|
@@ -85,6 +88,10 @@ var Tabs = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
|
85
88
|
props.onActivate && props.onActivate(evt.detail.index);
|
|
86
89
|
}
|
|
87
90
|
}, tabs.map(function (item) {
|
|
91
|
+
if (!item.visible) {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
|
|
88
95
|
var style = item.style || {};
|
|
89
96
|
|
|
90
97
|
if (item.disabled) {
|
|
@@ -101,7 +108,7 @@ var Tabs = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
|
101
108
|
} : {}), item.label);
|
|
102
109
|
}));
|
|
103
110
|
|
|
104
|
-
var content = tabs.map(function (tab, index) {
|
|
111
|
+
var content = tabs.filter(Boolean).map(function (tab, index) {
|
|
105
112
|
if (activeIndex === index) {
|
|
106
113
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
107
114
|
key: index
|
package/Tabs/Tabs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["disabledStyles","opacity","pointerEvents","TabsContext","createContext","undefined","Tabs","forwardRef","props","ref","useState","activeTabIndex","setActiveIndex","tabs","setTabs","activeIndex","value","activateTabIndex","useCallback","index","updateValue","useImperativeHandle","switchTab","tabIndex","useEffect","disabled","tabBar","map","tab","id","join","evt","detail","onActivate","item","style","Object","assign","icon","label","content","children","display","context","useMemo","addTab","existingIndex","findIndex","slice","removeTab","
|
|
1
|
+
{"version":3,"names":["disabledStyles","opacity","pointerEvents","TabsContext","createContext","undefined","Tabs","forwardRef","props","ref","useState","activeTabIndex","setActiveIndex","tabs","setTabs","activeIndex","value","activateTabIndex","useCallback","index","updateValue","useImperativeHandle","getActiveIndex","switchTab","tabIndex","useEffect","disabled","tabBar","map","tab","id","join","evt","detail","onActivate","item","visible","style","Object","assign","icon","label","content","filter","Boolean","children","display","context","useMemo","addTab","existingIndex","findIndex","slice","removeTab","classNames","className","displayName"],"sources":["Tabs.tsx"],"sourcesContent":["import React, {\n createContext,\n forwardRef,\n PropsWithChildren,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState\n} from \"react\";\nimport classNames from \"classnames\";\nimport { TabBar, Tab as RmwcTab } from \"@rmwc/tabs\";\nimport { TabProps } from \"./Tab\";\n\nexport type TabsProps = PropsWithChildren<{\n /**\n * Append a class name.\n */\n className?: string;\n\n /**\n * Callback to execute when a tab is changed.\n */\n onActivate?: (index: number) => void;\n\n /**\n * Active tab index value.\n */\n value?: number;\n\n /**\n * Function to change active tab.\n */\n updateValue?: (index: number) => void;\n /**\n * Tab ID for the testing.\n */\n \"data-testid\"?: string;\n}>;\n\nconst disabledStyles: Record<string, string | number> = {\n opacity: 0.5,\n pointerEvents: \"none\"\n};\n\ninterface TabItem extends TabProps {\n id: string;\n}\n\ninterface TabsContext {\n addTab(props: TabItem): void;\n removeTab(id: string): void;\n}\n\nexport const TabsContext = createContext<TabsContext | undefined>(undefined);\n\nexport interface TabsImperativeApi {\n switchTab(index: number): void;\n getActiveIndex(): number;\n}\n/**\n * Use Tabs component to display a list of choices, once the handler is triggered.\n */\nexport const Tabs = forwardRef<TabsImperativeApi | undefined, TabsProps>((props, ref) => {\n const [activeTabIndex, setActiveIndex] = useState(0);\n const [tabs, setTabs] = useState<TabItem[]>([]);\n\n const activeIndex = props.value !== undefined ? props.value : activeTabIndex;\n\n const activateTabIndex = useCallback((index: number) => {\n if (typeof props.updateValue === \"function\") {\n props.updateValue(index);\n return;\n }\n\n setActiveIndex(index);\n }, []);\n\n useImperativeHandle(ref, () => ({\n getActiveIndex() {\n return activeIndex;\n },\n switchTab(tabIndex: number) {\n activateTabIndex(tabIndex);\n }\n }));\n\n /**\n * This effect will make sure that disabled tabs automatically switch to the first tab.\n */\n useEffect(() => {\n if (tabs[activeIndex]?.disabled) {\n activateTabIndex(0);\n }\n });\n\n /* We need to generate a key like this to trigger a proper component re-render when child tabs change. */\n const tabBar = (\n <TabBar\n key={tabs.map(tab => tab.id).join(\";\")}\n className=\"webiny-ui-tabs__tab-bar\"\n activeTabIndex={activeIndex}\n onActivate={evt => {\n if (typeof props.updateValue === \"function\") {\n props.updateValue(evt.detail.index);\n } else {\n setActiveIndex(evt.detail.index);\n }\n props.onActivate && props.onActivate(evt.detail.index);\n }}\n >\n {tabs.map(item => {\n if (!item.visible) {\n return null;\n }\n\n const style = item.style || {};\n if (item.disabled) {\n Object.assign(style, disabledStyles);\n }\n\n return (\n <RmwcTab\n tag={\"div\"}\n style={style}\n key={item.id}\n data-testid={item[\"data-testid\"]}\n {...(item.icon ? { icon: item.icon } : {})}\n >\n {item.label}\n </RmwcTab>\n );\n })}\n </TabBar>\n );\n\n const content = tabs.filter(Boolean).map((tab, index) => {\n if (activeIndex === index) {\n return <div key={index}>{tab.children}</div>;\n } else {\n return (\n <div key={index} style={{ display: \"none\" }}>\n {tab.children}\n </div>\n );\n }\n });\n\n const context: TabsContext = useMemo(\n () => ({\n addTab(props) {\n setTabs(tabs => {\n const existingIndex = tabs.findIndex(tab => tab.id === props.id);\n if (existingIndex > -1) {\n return [\n ...tabs.slice(0, existingIndex),\n props,\n ...tabs.slice(existingIndex + 1)\n ];\n }\n return [...tabs, props];\n });\n },\n removeTab(id) {\n setTabs(tabs => tabs.filter(tab => tab.id === id));\n }\n }),\n [setTabs]\n );\n\n return (\n <div className={classNames(\"webiny-ui-tabs\", props.className)}>\n {tabBar}\n <div className={\"webiny-ui-tabs__content mdc-tab-content\"}>{content}</div>\n <TabsContext.Provider value={context}>{props.children}</TabsContext.Provider>\n </div>\n );\n});\n\nTabs.displayName = \"Tabs\";\n"],"mappings":"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"}
|
package/Tags/Tags.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { FormComponentProps } from "../types";
|
|
3
|
-
|
|
3
|
+
interface TagsProps extends FormComponentProps {
|
|
4
4
|
/**
|
|
5
5
|
* Component label.
|
|
6
6
|
*/
|
|
@@ -22,12 +22,9 @@ declare type TagsProps = FormComponentProps & {
|
|
|
22
22
|
*/
|
|
23
23
|
className?: string;
|
|
24
24
|
/**
|
|
25
|
-
*
|
|
25
|
+
* A list of tags.
|
|
26
26
|
*/
|
|
27
|
-
value?:
|
|
28
|
-
id: string;
|
|
29
|
-
name: string;
|
|
30
|
-
};
|
|
27
|
+
value?: string[];
|
|
31
28
|
/**
|
|
32
29
|
* Callback that gets executed on change of input value.
|
|
33
30
|
*/
|
|
@@ -40,14 +37,10 @@ declare type TagsProps = FormComponentProps & {
|
|
|
40
37
|
* Automatically focus on the tags input.
|
|
41
38
|
*/
|
|
42
39
|
autoFocus?: boolean;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
export declare class Tags extends React.Component<TagsProps, TagsState> {
|
|
48
|
-
state: {
|
|
49
|
-
inputValue: string;
|
|
50
|
-
};
|
|
51
|
-
render(): JSX.Element;
|
|
40
|
+
/**
|
|
41
|
+
* Protected tags cannot be removed by the user.
|
|
42
|
+
*/
|
|
43
|
+
protectedTags?: string[];
|
|
52
44
|
}
|
|
45
|
+
export declare const Tags: React.FC<TagsProps>;
|
|
53
46
|
export default Tags;
|
package/Tags/Tags.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
6
|
+
|
|
5
7
|
Object.defineProperty(exports, "__esModule", {
|
|
6
8
|
value: true
|
|
7
9
|
});
|
|
@@ -13,33 +15,25 @@ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/obje
|
|
|
13
15
|
|
|
14
16
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
15
17
|
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
18
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
21
21
|
|
|
22
|
-
var
|
|
23
|
-
|
|
24
|
-
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
|
|
22
|
+
var _emotion = require("emotion");
|
|
25
23
|
|
|
26
|
-
var
|
|
24
|
+
var _keycode = _interopRequireDefault(require("keycode"));
|
|
27
25
|
|
|
28
|
-
var
|
|
26
|
+
var _minimatch = _interopRequireDefault(require("minimatch"));
|
|
29
27
|
|
|
30
28
|
var _Input = require("../Input");
|
|
31
29
|
|
|
32
30
|
var _Chips = require("../Chips");
|
|
33
31
|
|
|
34
|
-
var _emotion = require("emotion");
|
|
35
|
-
|
|
36
|
-
var _keycode = _interopRequireDefault(require("keycode"));
|
|
37
|
-
|
|
38
32
|
var _baselineClose24px = require("./icons/baseline-close-24px.svg");
|
|
39
33
|
|
|
40
34
|
var _FormElementMessage = require("../FormElementMessage");
|
|
41
35
|
|
|
42
|
-
var _excluded = ["validation", "value", "disabled", "onChange", "description"];
|
|
36
|
+
var _excluded = ["validation", "value", "disabled", "onChange", "description", "protectedTags"];
|
|
43
37
|
var tagsStyle = /*#__PURE__*/(0, _emotion.css)({
|
|
44
38
|
position: "relative",
|
|
45
39
|
".mdc-elevation--z1": {
|
|
@@ -62,110 +56,87 @@ var tagsStyle = /*#__PURE__*/(0, _emotion.css)({
|
|
|
62
56
|
}
|
|
63
57
|
}, "label:tagsStyle;");
|
|
64
58
|
|
|
65
|
-
var Tags =
|
|
66
|
-
(0,
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
59
|
+
var Tags = function Tags(props) {
|
|
60
|
+
var _useState = (0, _react.useState)(""),
|
|
61
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
62
|
+
inputValue = _useState2[0],
|
|
63
|
+
setInputValue = _useState2[1];
|
|
64
|
+
|
|
65
|
+
var validation = props.validation,
|
|
66
|
+
value = props.value,
|
|
67
|
+
disabled = props.disabled,
|
|
68
|
+
onChange = props.onChange,
|
|
69
|
+
description = props.description,
|
|
70
|
+
_props$protectedTags = props.protectedTags,
|
|
71
|
+
protectedTags = _props$protectedTags === void 0 ? [] : _props$protectedTags,
|
|
72
|
+
otherInputProps = (0, _objectWithoutProperties2.default)(props, _excluded);
|
|
73
|
+
var isProtected = (0, _react.useCallback)(function (tag) {
|
|
74
|
+
return protectedTags.some(function (pattern) {
|
|
75
|
+
return (0, _minimatch.default)(tag, pattern);
|
|
82
76
|
});
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
inputValue
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
onKeyDown: function onKeyDown(ev) {
|
|
106
|
-
if (!onChange) {
|
|
107
|
-
return;
|
|
77
|
+
}, [protectedTags]);
|
|
78
|
+
var inputProps = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, otherInputProps), {}, {
|
|
79
|
+
value: inputValue,
|
|
80
|
+
onChange: function onChange(inputValue) {
|
|
81
|
+
setInputValue(inputValue);
|
|
82
|
+
},
|
|
83
|
+
onKeyDown: function onKeyDown(ev) {
|
|
84
|
+
if (!onChange) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
var newValue = Array.isArray(value) ? (0, _toConsumableArray2.default)(value) : [];
|
|
89
|
+
/**
|
|
90
|
+
* We must cast as keycode only works with Event | string type.
|
|
91
|
+
*/
|
|
92
|
+
|
|
93
|
+
switch ((0, _keycode.default)(ev)) {
|
|
94
|
+
case "enter":
|
|
95
|
+
if (inputValue) {
|
|
96
|
+
newValue.push(inputValue);
|
|
97
|
+
onChange(newValue);
|
|
98
|
+
setInputValue("");
|
|
108
99
|
}
|
|
109
100
|
|
|
110
|
-
|
|
111
|
-
var inputValue = _this2.state.inputValue || "";
|
|
112
|
-
/**
|
|
113
|
-
* We must cast as keycode only works with Event | string type.
|
|
114
|
-
*/
|
|
115
|
-
|
|
116
|
-
switch ((0, _keycode.default)(ev)) {
|
|
117
|
-
case "enter":
|
|
118
|
-
if (inputValue) {
|
|
119
|
-
newValue.push(inputValue);
|
|
120
|
-
onChange(newValue);
|
|
121
|
-
|
|
122
|
-
_this2.setState({
|
|
123
|
-
inputValue: ""
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
break;
|
|
101
|
+
break;
|
|
128
102
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
var _ref = validation || {},
|
|
141
|
-
validationIsValid = _ref.isValid,
|
|
142
|
-
validationMessage = _ref.message;
|
|
143
|
-
|
|
144
|
-
return /*#__PURE__*/_react.default.createElement("div", {
|
|
145
|
-
className: tagsStyle
|
|
146
|
-
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_Input.Input, inputProps), validationIsValid === false && /*#__PURE__*/_react.default.createElement(_FormElementMessage.FormElementMessage, {
|
|
147
|
-
error: true
|
|
148
|
-
}, validationMessage), validationIsValid !== false && description && /*#__PURE__*/_react.default.createElement(_FormElementMessage.FormElementMessage, null, description), Array.isArray(value) && value.length ? /*#__PURE__*/_react.default.createElement(_Chips.Chips, {
|
|
149
|
-
disabled: disabled
|
|
150
|
-
}, value.map(function (item, index) {
|
|
151
|
-
return /*#__PURE__*/_react.default.createElement(_Chips.Chip, {
|
|
152
|
-
label: item,
|
|
153
|
-
trailingIcon: /*#__PURE__*/_react.default.createElement(_baselineClose24px.ReactComponent, null),
|
|
154
|
-
key: "".concat(item, "-").concat(index),
|
|
155
|
-
onRemove: function onRemove() {
|
|
156
|
-
// On removal, let's update the value and call "onChange" callback.
|
|
157
|
-
if (onChange) {
|
|
158
|
-
var newValue = (0, _toConsumableArray2.default)(value);
|
|
159
|
-
newValue.splice(index, 1);
|
|
160
|
-
onChange(newValue);
|
|
161
|
-
}
|
|
103
|
+
case "backspace":
|
|
104
|
+
if (newValue.length && !inputValue) {
|
|
105
|
+
newValue.splice(-1, 1);
|
|
106
|
+
onChange(newValue);
|
|
107
|
+
break;
|
|
162
108
|
}
|
|
163
|
-
|
|
164
|
-
}
|
|
109
|
+
|
|
110
|
+
}
|
|
165
111
|
}
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
}
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
var _ref = validation || {},
|
|
115
|
+
validationIsValid = _ref.isValid,
|
|
116
|
+
validationMessage = _ref.message;
|
|
117
|
+
|
|
118
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
119
|
+
className: tagsStyle
|
|
120
|
+
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_Input.Input, inputProps), validationIsValid === false && /*#__PURE__*/_react.default.createElement(_FormElementMessage.FormElementMessage, {
|
|
121
|
+
error: true
|
|
122
|
+
}, validationMessage), validationIsValid !== false && description && /*#__PURE__*/_react.default.createElement(_FormElementMessage.FormElementMessage, null, description), Array.isArray(value) && value.length ? /*#__PURE__*/_react.default.createElement(_Chips.Chips, {
|
|
123
|
+
disabled: disabled
|
|
124
|
+
}, value.map(function (item, index) {
|
|
125
|
+
return /*#__PURE__*/_react.default.createElement(_Chips.Chip, {
|
|
126
|
+
label: item,
|
|
127
|
+
trailingIcon: isProtected(item) ? null : /*#__PURE__*/_react.default.createElement(_baselineClose24px.ReactComponent, null),
|
|
128
|
+
key: "".concat(item, "-").concat(index),
|
|
129
|
+
onRemove: function onRemove() {
|
|
130
|
+
// On removal, let's update the value and call "onChange" callback.
|
|
131
|
+
if (onChange) {
|
|
132
|
+
var newValue = (0, _toConsumableArray2.default)(value);
|
|
133
|
+
newValue.splice(index, 1);
|
|
134
|
+
onChange(newValue);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
})) : null));
|
|
139
|
+
};
|
|
169
140
|
|
|
170
141
|
exports.Tags = Tags;
|
|
171
142
|
var _default = Tags;
|