@qoretechnologies/reqraft 0.0.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/.eslintrc.js +40 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- package/.github/ISSUE_TEMPLATE/new-component.md +20 -0
- package/.github/ISSUE_TEMPLATE/visual-bug-report.md +38 -0
- package/.github/workflows/beta_release.yml +108 -0
- package/.github/workflows/tests.yml +120 -0
- package/.prettierrc +7 -0
- package/CODE_OF_CONDUCT.md +105 -0
- package/CONTRIBUTING.MD +78 -0
- package/LICENSE +21 -0
- package/README.md +43 -0
- package/SECURITY.md +3 -0
- package/__tests__/setup.js +8 -0
- package/build-storybook.log +28 -0
- package/dist/components/form/string/String.d.ts +15 -0
- package/dist/components/form/string/String.d.ts.map +1 -0
- package/dist/components/form/string/String.js +52 -0
- package/dist/components/form/string/String.js.map +1 -0
- package/dist/components/form/string/String.stories.d.ts +10 -0
- package/dist/components/form/string/String.stories.d.ts.map +1 -0
- package/dist/components/form/string/String.stories.js +21 -0
- package/dist/components/form/string/String.stories.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +116 -0
- package/public/logo-dark.png +0 -0
- package/public/logo.png +0 -0
- package/public/q-symbol-small.png +0 -0
- package/public/q-symbol.png +0 -0
- package/public/qoreLogo-dark.png +0 -0
- package/public/qoreLogo.png +0 -0
- package/src/components/form/string/String.stories.tsx +23 -0
- package/src/components/form/string/String.tsx +67 -0
- package/src/icons.json +2295 -0
- package/src/index.tsx +1 -0
- package/src/types.ts +12 -0
- package/tests.json +1 -0
- package/tsconfig.prod.json +26 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
yarn run v1.22.21
|
|
2
|
+
$ storybook build --output-dir /var/folders/xj/ffsl9ps93hl3d6bm37h33dkw0000gn/T/chromatic--83502-xKwU3laktthx
|
|
3
|
+
@storybook/cli v8.0.9
|
|
4
|
+
|
|
5
|
+
info => Cleaning outputDir: ../../../../var/folders/xj/ffsl9ps93hl3d6bm37h33dkw0000gn/T/chromatic--83502-xKwU3laktthx
|
|
6
|
+
info => Loading presets
|
|
7
|
+
info => Building manager..
|
|
8
|
+
info => Manager built (1.84 s)
|
|
9
|
+
info => Building preview..
|
|
10
|
+
info Addon-docs: using MDX3
|
|
11
|
+
info => Using implicit CSS loaders
|
|
12
|
+
info => Using default Webpack5 setup
|
|
13
|
+
info Using tsconfig paths for react-docgen
|
|
14
|
+
WARN asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
|
|
15
|
+
WARN This can impact web performance.
|
|
16
|
+
WARN Assets:
|
|
17
|
+
WARN 407.cab165a6.iframe.bundle.js (4.33 MiB)
|
|
18
|
+
WARN 487.5427d68c.iframe.bundle.js (603 KiB)
|
|
19
|
+
WARN entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
|
|
20
|
+
WARN Entrypoints:
|
|
21
|
+
WARN main (4.34 MiB)
|
|
22
|
+
WARN runtime~main.a1ebc5b5.iframe.bundle.js
|
|
23
|
+
WARN 407.cab165a6.iframe.bundle.js
|
|
24
|
+
WARN main.95e9d9d8.iframe.bundle.js
|
|
25
|
+
WARN
|
|
26
|
+
info => Preview built (10 s)
|
|
27
|
+
info => Output directory: /var/folders/xj/ffsl9ps93hl3d6bm37h33dkw0000gn/T/chromatic--83502-xKwU3laktthx
|
|
28
|
+
Done in 14.89s.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { IReqoreControlGroupProps } from '@qoretechnologies/reqore/dist/components/ControlGroup';
|
|
2
|
+
import { IReqoreInputProps } from '@qoretechnologies/reqore/dist/components/Input';
|
|
3
|
+
import { IReqoreTagProps } from '@qoretechnologies/reqore/dist/components/Tag';
|
|
4
|
+
import { ChangeEvent } from 'react';
|
|
5
|
+
export interface IStringFormFieldProps extends Omit<IReqoreInputProps, 'onChange' | 'value'> {
|
|
6
|
+
sensitive?: boolean;
|
|
7
|
+
value?: string;
|
|
8
|
+
label?: IReqoreTagProps['label'];
|
|
9
|
+
labelPosition?: 'top' | 'left' | 'right' | 'bottom';
|
|
10
|
+
labelProps?: IReqoreTagProps;
|
|
11
|
+
wrapperProps?: IReqoreControlGroupProps;
|
|
12
|
+
onChange?: (value?: string, event?: ChangeEvent<HTMLInputElement>) => void;
|
|
13
|
+
}
|
|
14
|
+
export declare const FormStringField: ({ onChange, wrapperProps, labelProps, label, labelPosition, sensitive, ...rest }: IStringFormFieldProps) => import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=String.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"String.d.ts","sourceRoot":"","sources":["../../../../src/components/form/string/String.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uDAAuD,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAe,MAAM,OAAO,CAAC;AAEjD,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,OAAO,CAAC;IAC1F,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACjC,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,YAAY,CAAC,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;CAC5E;AAED,eAAO,MAAM,eAAe,qFAQzB,qBAAqB,4CA0CvB,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
14
|
+
var t = {};
|
|
15
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
16
|
+
t[p] = s[p];
|
|
17
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
18
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
19
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
20
|
+
t[p[i]] = s[p[i]];
|
|
21
|
+
}
|
|
22
|
+
return t;
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.FormStringField = void 0;
|
|
26
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
27
|
+
var reqore_1 = require("@qoretechnologies/reqore");
|
|
28
|
+
var react_1 = require("react");
|
|
29
|
+
var FormStringField = function (_a) {
|
|
30
|
+
var onChange = _a.onChange, wrapperProps = _a.wrapperProps, labelProps = _a.labelProps, label = _a.label, _b = _a.labelPosition, labelPosition = _b === void 0 ? 'top' : _b, sensitive = _a.sensitive, rest = __rest(_a, ["onChange", "wrapperProps", "labelProps", "label", "labelPosition", "sensitive"]);
|
|
31
|
+
// When input value changes
|
|
32
|
+
var handleChange = (0, react_1.useCallback)(function (event) {
|
|
33
|
+
var _a;
|
|
34
|
+
event.persist();
|
|
35
|
+
onChange((_a = event.target.value) === null || _a === void 0 ? void 0 : _a.toString(), event);
|
|
36
|
+
}, []);
|
|
37
|
+
// Clear the input on reset click
|
|
38
|
+
var handleClearClick = (0, react_1.useCallback)(function () {
|
|
39
|
+
onChange('');
|
|
40
|
+
}, []);
|
|
41
|
+
return ((0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, __assign({ stack: true }, wrapperProps, { vertical: labelPosition === 'bottom' || labelPosition === 'top', children: [(label || label === 0) && (labelPosition === 'top' || labelPosition === 'left') ? ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreTag, __assign({ label: label, fluid: true }, labelProps))) : null, (0, jsx_runtime_1.jsx)(reqore_1.ReqoreInput, __assign({ fluid: true, onFocus: function (event) {
|
|
42
|
+
var _a;
|
|
43
|
+
event.stopPropagation();
|
|
44
|
+
(_a = rest === null || rest === void 0 ? void 0 : rest.onFocus) === null || _a === void 0 ? void 0 : _a.call(rest, event);
|
|
45
|
+
}, onClick: function (event) {
|
|
46
|
+
var _a;
|
|
47
|
+
event.stopPropagation();
|
|
48
|
+
(_a = rest === null || rest === void 0 ? void 0 : rest.onClick) === null || _a === void 0 ? void 0 : _a.call(rest, event);
|
|
49
|
+
}, onChange: handleChange, type: sensitive ? 'password' : 'text', onClearClick: handleClearClick }, rest)), (label || label === 0) && (labelPosition === 'bottom' || labelPosition === 'right') ? ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreTag, __assign({ label: label, fluid: true }, labelProps))) : null] })));
|
|
50
|
+
};
|
|
51
|
+
exports.FormStringField = FormStringField;
|
|
52
|
+
//# sourceMappingURL=String.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"String.js","sourceRoot":"","sources":["../../../../src/components/form/string/String.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAsF;AAItF,+BAAiD;AAY1C,IAAM,eAAe,GAAG,UAAC,EAQR;IAPtB,IAAA,QAAQ,cAAA,EACR,YAAY,kBAAA,EACZ,UAAU,gBAAA,EACV,KAAK,WAAA,EACL,qBAAqB,EAArB,aAAa,mBAAG,KAAK,KAAA,EACrB,SAAS,eAAA,EACN,IAAI,cAPuB,iFAQ/B,CADQ;IAEP,2BAA2B;IAC3B,IAAM,YAAY,GAAG,IAAA,mBAAW,EAAC,UAAC,KAAoC;;QACpE,KAAK,CAAC,OAAO,EAAE,CAAC;QAEhB,QAAQ,CAAC,MAAA,KAAK,CAAC,MAAM,CAAC,KAAK,0CAAE,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,iCAAiC;IACjC,IAAM,gBAAgB,GAAG,IAAA,mBAAW,EAAC;QACnC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACf,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,wBAAC,2BAAkB,aACjB,KAAK,UACD,YAAY,IAChB,QAAQ,EAAE,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,KAAK,aAE9D,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,KAAK,KAAK,IAAI,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CACjF,uBAAC,kBAAS,aAAC,KAAK,EAAE,KAAK,EAAE,KAAK,UAAK,UAAU,EAAI,CAClD,CAAC,CAAC,CAAC,IAAI,EACR,uBAAC,oBAAW,aACV,KAAK,QACL,OAAO,EAAE,UAAC,KAAK;;oBACb,KAAK,CAAC,eAAe,EAAE,CAAC;oBACxB,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,qDAAG,KAAK,CAAC,CAAC;gBACzB,CAAC,EACD,OAAO,EAAE,UAAC,KAAK;;oBACb,KAAK,CAAC,eAAe,EAAE,CAAC;oBACxB,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,qDAAG,KAAK,CAAC,CAAC;gBACzB,CAAC,EACD,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EACrC,YAAY,EAAE,gBAAgB,IAC1B,IAAI,EACR,EACD,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CACrF,uBAAC,kBAAS,aAAC,KAAK,EAAE,KAAK,EAAE,KAAK,UAAK,UAAU,EAAI,CAClD,CAAC,CAAC,CAAC,IAAI,KACW,CACtB,CAAC;AACJ,CAAC,CAAC;AAlDW,QAAA,eAAe,mBAkD1B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
|
+
declare const meta: import("@storybook/types").ComponentAnnotations<import("@storybook/react").ReactRenderer, import("./String").IStringFormFieldProps & Record<string, any> & {
|
|
3
|
+
reqoreOptions: import("@qoretechnologies/reqore/dist/containers/UIProvider").IReqoreOptions;
|
|
4
|
+
}>;
|
|
5
|
+
export default meta;
|
|
6
|
+
type Story = StoryObj<typeof meta>;
|
|
7
|
+
export declare const Default: Story;
|
|
8
|
+
export declare const Value: Story;
|
|
9
|
+
export declare const WithLabel: Story;
|
|
10
|
+
//# sourceMappingURL=String.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"String.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/form/string/String.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAI5C,QAAA,MAAM,IAAI;;EAG4B,CAAC;AAEvC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AACjC,eAAO,MAAM,KAAK,EAAE,KAInB,CAAC;AACF,eAAO,MAAM,SAAS,EAAE,KAIvB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WithLabel = exports.Value = exports.Default = void 0;
|
|
4
|
+
var String_1 = require("./String");
|
|
5
|
+
var meta = {
|
|
6
|
+
component: String_1.FormStringField,
|
|
7
|
+
title: 'Components/Form/String',
|
|
8
|
+
};
|
|
9
|
+
exports.default = meta;
|
|
10
|
+
exports.Default = {};
|
|
11
|
+
exports.Value = {
|
|
12
|
+
args: {
|
|
13
|
+
value: 'Hello, World!',
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
exports.WithLabel = {
|
|
17
|
+
args: {
|
|
18
|
+
label: 'Label',
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=String.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"String.stories.js","sourceRoot":"","sources":["../../../../src/components/form/string/String.stories.tsx"],"names":[],"mappings":";;;AAEA,mCAA2C;AAE3C,IAAM,IAAI,GAAG;IACX,SAAS,EAAE,wBAAe;IAC1B,KAAK,EAAE,wBAAwB;CACK,CAAC;AAEvC,kBAAe,IAAI,CAAC;AAGP,QAAA,OAAO,GAAU,EAAE,CAAC;AACpB,QAAA,KAAK,GAAU;IAC1B,IAAI,EAAE;QACJ,KAAK,EAAE,eAAe;KACvB;CACF,CAAC;AACW,QAAA,SAAS,GAAU;IAC9B,IAAI,EAAE;QACJ,KAAK,EAAE,OAAO;KACf;CACF,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FormStringField = void 0;
|
|
4
|
+
var String_1 = require("./components/form/string/String");
|
|
5
|
+
Object.defineProperty(exports, "FormStringField", { enumerable: true, get: function () { return String_1.FormStringField; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";;;AAAA,0DAAyF;AAAhF,yGAAA,eAAe,OAAA"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { IReqoreUIProviderProps } from '@qoretechnologies/reqore/dist/containers/UIProvider';
|
|
3
|
+
import { Meta } from '@storybook/react';
|
|
4
|
+
export type StoryMeta<Component extends keyof JSX.IntrinsicElements | React.JSXElementConstructor<any>, AdditionalArgs = Record<string, any>> = Meta<React.ComponentProps<Component> & AdditionalArgs & {
|
|
5
|
+
reqoreOptions: IReqoreUIProviderProps['options'];
|
|
6
|
+
}>;
|
|
7
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAC7F,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,MAAM,MAAM,SAAS,CACnB,SAAS,SAAS,MAAM,GAAG,CAAC,iBAAiB,GAAG,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAChF,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAClC,IAAI,CACN,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,GAC7B,cAAc,GAAG;IACf,aAAa,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;CAClD,CACJ,CAAC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@qoretechnologies/reqraft",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "ReQraft is a collection of React components and hooks that are used across Qore Technologies' products made using the ReQore component library from Qore.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"source": "source ~/.profile",
|
|
9
|
+
"test": "./node_modules/.bin/jest --passWithNoTests",
|
|
10
|
+
"test:watch": "./node_modules/.bin/jest --watch --passWithNoTests",
|
|
11
|
+
"test:ci": "./node_modules/.bin/jest --silent --json --outputFile=tests.json --passWithNoTests",
|
|
12
|
+
"build": "./node_modules/typescript/bin/tsc --project tsconfig.prod.json",
|
|
13
|
+
"build:test": "./node_modules/typescript/bin/tsc --noEmit",
|
|
14
|
+
"build:test:prod": "./node_modules/typescript/bin/tsc --project tsconfig.prod.json --noEmit",
|
|
15
|
+
"lint": "yarn run eslint ./src/",
|
|
16
|
+
"storybook": "storybook dev -p 6008",
|
|
17
|
+
"test-storybook": "DEBUG_PRINT_LIMIT=0 test-storybook --url http://localhost:6008",
|
|
18
|
+
"install-playwright": "npx playwright install --with-deps",
|
|
19
|
+
"build-storybook": "storybook build",
|
|
20
|
+
"chromatic": "npx chromatic"
|
|
21
|
+
},
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "git+https://github.com/qoretechnologies/toolkit-react.git"
|
|
25
|
+
},
|
|
26
|
+
"keywords": [
|
|
27
|
+
"library",
|
|
28
|
+
"ui",
|
|
29
|
+
"react",
|
|
30
|
+
"toolkit",
|
|
31
|
+
"qore",
|
|
32
|
+
"qorus"
|
|
33
|
+
],
|
|
34
|
+
"pre-push": [
|
|
35
|
+
"source",
|
|
36
|
+
"build:test:prod",
|
|
37
|
+
"lint",
|
|
38
|
+
"test"
|
|
39
|
+
],
|
|
40
|
+
"author": {
|
|
41
|
+
"name": "Qore Technologies"
|
|
42
|
+
},
|
|
43
|
+
"license": "ISC",
|
|
44
|
+
"bugs": {
|
|
45
|
+
"url": "https://github.com/qoretechnologies/toolkit-react/issues"
|
|
46
|
+
},
|
|
47
|
+
"homepage": "https://github.com/qoretechnologies/toolkit-react#readme",
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@babel/core": "^7.12.10",
|
|
50
|
+
"@babel/preset-env": "^7.12.11",
|
|
51
|
+
"@babel/preset-react": "^7.12.10",
|
|
52
|
+
"@babel/preset-typescript": "^7.12.7",
|
|
53
|
+
"@chromatic-com/storybook": "^1",
|
|
54
|
+
"@qoretechnologies/reqore": "^0.41.0",
|
|
55
|
+
"@storybook/addon-actions": "^8.0.9",
|
|
56
|
+
"@storybook/addon-essentials": "^8.0.9",
|
|
57
|
+
"@storybook/addon-interactions": "^8.0.9",
|
|
58
|
+
"@storybook/addon-links": "^8.0.9",
|
|
59
|
+
"@storybook/addon-webpack5-compiler-babel": "^3.0.3",
|
|
60
|
+
"@storybook/manager-api": "^8.0.9",
|
|
61
|
+
"@storybook/react": "^8.0.9",
|
|
62
|
+
"@storybook/react-webpack5": "^8.0.9",
|
|
63
|
+
"@storybook/test": "^8.0.9",
|
|
64
|
+
"@storybook/test-runner": "^0.17.0",
|
|
65
|
+
"@storybook/theming": "^8.0.9",
|
|
66
|
+
"@storybook/types": "^8.0.9",
|
|
67
|
+
"@testing-library/jest-dom": "^5.16.5",
|
|
68
|
+
"@testing-library/react": "^13.4.0",
|
|
69
|
+
"@types/jest": "^26.0.19",
|
|
70
|
+
"@types/lodash": "^4.14.166",
|
|
71
|
+
"@types/node": "^14.14.14",
|
|
72
|
+
"@types/react": "^18.3.1",
|
|
73
|
+
"@types/react-dom": "^18.3.0",
|
|
74
|
+
"@typescript-eslint/eslint-plugin": "^7.8.0",
|
|
75
|
+
"@typescript-eslint/parser": "^7.8.0",
|
|
76
|
+
"babel-jest": "^29.7.0",
|
|
77
|
+
"babel-loader": "^9.1.3",
|
|
78
|
+
"chromatic": "^11.3.0",
|
|
79
|
+
"eslint": "^8.46.0",
|
|
80
|
+
"eslint-plugin-react": "^7.33.1",
|
|
81
|
+
"jest": "^29.4.3",
|
|
82
|
+
"jest-environment-jsdom": "^29.4.3",
|
|
83
|
+
"jest-github-actions-reporter": "^1.0.2",
|
|
84
|
+
"npm-cli-login": "^0.1.1",
|
|
85
|
+
"playwright": "^1.16.3",
|
|
86
|
+
"pre-push": "^0.1.4",
|
|
87
|
+
"react": "^18.3.1",
|
|
88
|
+
"react-dom": "^18.3.1",
|
|
89
|
+
"react-intersection-observer": "^9.4.2",
|
|
90
|
+
"react-test-renderer": "^18.2.0",
|
|
91
|
+
"storybook": "^8.0.9",
|
|
92
|
+
"ts-jest": "^29.1.2",
|
|
93
|
+
"ts-node": "^9.1.1",
|
|
94
|
+
"typescript": "^5.4.5"
|
|
95
|
+
},
|
|
96
|
+
"peerDependencies": {
|
|
97
|
+
"@qoretechnologies/reqore": "^0.41.0",
|
|
98
|
+
"react": "^18.3.1",
|
|
99
|
+
"react-dom": "^18.3.1"
|
|
100
|
+
},
|
|
101
|
+
"dependencies": {
|
|
102
|
+
"classnames": "^2.2.6",
|
|
103
|
+
"epoch-timeago": "^1.1.9",
|
|
104
|
+
"lodash": "^4.17.21",
|
|
105
|
+
"polished": "^4.2.2",
|
|
106
|
+
"react-use": "^17.4.0",
|
|
107
|
+
"scheduler": "^0.23.0",
|
|
108
|
+
"shortid": "^2.2.16",
|
|
109
|
+
"styled-components": "^5.3.6",
|
|
110
|
+
"thenby": "^1.3.4",
|
|
111
|
+
"use-context-selector": "^1.4.1"
|
|
112
|
+
},
|
|
113
|
+
"resolutions": {
|
|
114
|
+
"jackspeak": "2.1.1"
|
|
115
|
+
}
|
|
116
|
+
}
|
|
Binary file
|
package/public/logo.png
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
|
+
import { StoryMeta } from '../../../types';
|
|
3
|
+
import { FormStringField } from './String';
|
|
4
|
+
|
|
5
|
+
const meta = {
|
|
6
|
+
component: FormStringField,
|
|
7
|
+
title: 'Components/Form/String',
|
|
8
|
+
} as StoryMeta<typeof FormStringField>;
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
11
|
+
type Story = StoryObj<typeof meta>;
|
|
12
|
+
|
|
13
|
+
export const Default: Story = {};
|
|
14
|
+
export const Value: Story = {
|
|
15
|
+
args: {
|
|
16
|
+
value: 'Hello, World!',
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
export const WithLabel: Story = {
|
|
20
|
+
args: {
|
|
21
|
+
label: 'Label',
|
|
22
|
+
},
|
|
23
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { ReqoreControlGroup, ReqoreInput, ReqoreTag } from '@qoretechnologies/reqore';
|
|
2
|
+
import { IReqoreControlGroupProps } from '@qoretechnologies/reqore/dist/components/ControlGroup';
|
|
3
|
+
import { IReqoreInputProps } from '@qoretechnologies/reqore/dist/components/Input';
|
|
4
|
+
import { IReqoreTagProps } from '@qoretechnologies/reqore/dist/components/Tag';
|
|
5
|
+
import { ChangeEvent, useCallback } from 'react';
|
|
6
|
+
|
|
7
|
+
export interface IStringFormFieldProps extends Omit<IReqoreInputProps, 'onChange' | 'value'> {
|
|
8
|
+
sensitive?: boolean;
|
|
9
|
+
value?: string;
|
|
10
|
+
label?: IReqoreTagProps['label'];
|
|
11
|
+
labelPosition?: 'top' | 'left' | 'right' | 'bottom';
|
|
12
|
+
labelProps?: IReqoreTagProps;
|
|
13
|
+
wrapperProps?: IReqoreControlGroupProps;
|
|
14
|
+
onChange?: (value?: string, event?: ChangeEvent<HTMLInputElement>) => void;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const FormStringField = ({
|
|
18
|
+
onChange,
|
|
19
|
+
wrapperProps,
|
|
20
|
+
labelProps,
|
|
21
|
+
label,
|
|
22
|
+
labelPosition = 'top',
|
|
23
|
+
sensitive,
|
|
24
|
+
...rest
|
|
25
|
+
}: IStringFormFieldProps) => {
|
|
26
|
+
// When input value changes
|
|
27
|
+
const handleChange = useCallback((event: ChangeEvent<HTMLInputElement>): void => {
|
|
28
|
+
event.persist();
|
|
29
|
+
|
|
30
|
+
onChange(event.target.value?.toString(), event);
|
|
31
|
+
}, []);
|
|
32
|
+
|
|
33
|
+
// Clear the input on reset click
|
|
34
|
+
const handleClearClick = useCallback((): void => {
|
|
35
|
+
onChange('');
|
|
36
|
+
}, []);
|
|
37
|
+
|
|
38
|
+
return (
|
|
39
|
+
<ReqoreControlGroup
|
|
40
|
+
stack
|
|
41
|
+
{...wrapperProps}
|
|
42
|
+
vertical={labelPosition === 'bottom' || labelPosition === 'top'}
|
|
43
|
+
>
|
|
44
|
+
{(label || label === 0) && (labelPosition === 'top' || labelPosition === 'left') ? (
|
|
45
|
+
<ReqoreTag label={label} fluid {...labelProps} />
|
|
46
|
+
) : null}
|
|
47
|
+
<ReqoreInput
|
|
48
|
+
fluid
|
|
49
|
+
onFocus={(event) => {
|
|
50
|
+
event.stopPropagation();
|
|
51
|
+
rest?.onFocus?.(event);
|
|
52
|
+
}}
|
|
53
|
+
onClick={(event) => {
|
|
54
|
+
event.stopPropagation();
|
|
55
|
+
rest?.onClick?.(event);
|
|
56
|
+
}}
|
|
57
|
+
onChange={handleChange}
|
|
58
|
+
type={sensitive ? 'password' : 'text'}
|
|
59
|
+
onClearClick={handleClearClick}
|
|
60
|
+
{...rest}
|
|
61
|
+
/>
|
|
62
|
+
{(label || label === 0) && (labelPosition === 'bottom' || labelPosition === 'right') ? (
|
|
63
|
+
<ReqoreTag label={label} fluid {...labelProps} />
|
|
64
|
+
) : null}
|
|
65
|
+
</ReqoreControlGroup>
|
|
66
|
+
);
|
|
67
|
+
};
|