foxit-component 0.0.1-alpha.4 → 0.0.1-alpha.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/es/Alert/Alert.d.ts +12 -0
  2. package/es/Alert/Alert.js +24 -0
  3. package/es/Button/Button.d.ts +2 -1
  4. package/es/Button/Button.js +4 -4
  5. package/es/Checkbox/Checkbox.d.ts +10 -2
  6. package/es/Checkbox/Checkbox.js +35 -5
  7. package/es/Drawer/Drawer.d.ts +10 -0
  8. package/es/Drawer/Drawer.js +14 -0
  9. package/es/Empty/Empty.js +0 -1
  10. package/es/Form/Form.d.ts +2 -1
  11. package/es/Form/Form.js +3 -3
  12. package/es/Form/Form.types.d.ts +9 -0
  13. package/es/Form/FormItem.d.ts +2 -1
  14. package/es/Form/FormItem.js +3 -4
  15. package/es/Form/FormProvider.js +148 -115
  16. package/es/Form/useFormWatch.d.ts +3 -0
  17. package/es/Form/useFormWatch.js +37 -0
  18. package/es/Input/Input.js +3 -3
  19. package/es/Menu/Menu.d.ts +2 -0
  20. package/es/Menu/Menu.js +128 -11
  21. package/es/Modal/Modal.d.ts +2 -0
  22. package/es/Modal/Modal.js +88 -17
  23. package/es/Modal/ModalTemp.js +4 -1
  24. package/es/Pagination/Pagination.d.ts +2 -0
  25. package/es/Pagination/Pagination.js +25 -12
  26. package/es/Quantity/Quantity.d.ts +10 -0
  27. package/es/Quantity/Quantity.js +45 -0
  28. package/es/Radio/Radio.js +0 -1
  29. package/es/Select/Select.d.ts +10 -0
  30. package/es/Select/Select.js +16 -10
  31. package/es/Spin/Spin.d.ts +10 -0
  32. package/es/Spin/Spin.js +23 -0
  33. package/es/Switch/Switch.d.ts +9 -0
  34. package/es/Switch/Switch.js +20 -0
  35. package/es/Table/Table.d.ts +4 -1
  36. package/es/Table/Table.js +22 -8
  37. package/es/Tabs/Tabs.js +0 -1
  38. package/es/Tag/Tag.d.ts +1 -1
  39. package/es/Tag/Tag.js +1 -2
  40. package/es/Toast/Toast.js +0 -1
  41. package/es/Toast/ToastContainer.js +0 -1
  42. package/es/Tooltip/Tooltip.d.ts +2 -0
  43. package/es/Tooltip/Tooltip.js +56 -19
  44. package/es/constants/icons.d.ts +16 -0
  45. package/es/constants/icons.js +17 -1
  46. package/es/index.css +1 -0
  47. package/es/index.d.ts +7 -2
  48. package/es/index.js +6 -0
  49. package/es/node_modules/tslib/tslib.es6.js +39 -1
  50. package/package.json +3 -3
  51. package/es/Button/button.css.js +0 -6
  52. package/es/Checkbox/checkbox.css.js +0 -6
  53. package/es/Empty/empty.css.js +0 -6
  54. package/es/Form/form.css.js +0 -6
  55. package/es/Input/input.css.js +0 -6
  56. package/es/Menu/menu.css.js +0 -6
  57. package/es/Modal/modal.css.js +0 -6
  58. package/es/Pagination/pagination.css.js +0 -6
  59. package/es/Radio/radio.css.js +0 -6
  60. package/es/Table/table.css.js +0 -6
  61. package/es/Tabs/tabs.css.js +0 -6
  62. package/es/Tag/tag.css.js +0 -6
  63. package/es/Toast/toast.css.js +0 -6
  64. package/es/Tooltip/tooltip.css.js +0 -6
  65. package/es/node_modules/style-inject/dist/style-inject.es.js +0 -28
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @name Alert
3
+ */
4
+ import React from 'react';
5
+ import './alert.css';
6
+ interface AlertProps {
7
+ message: string | React.ReactNode;
8
+ showIcon?: boolean;
9
+ type?: 'success' | 'warning' | 'error' | 'gradient';
10
+ }
11
+ declare const Alert: React.FC<AlertProps>;
12
+ export { Alert };
@@ -0,0 +1,24 @@
1
+ import { __assign } from '../node_modules/tslib/tslib.es6.js';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { Icon } from '../Icon/index.js';
4
+
5
+ var Alert = function (_a) {
6
+ var message = _a.message, _b = _a.showIcon, showIcon = _b === void 0 ? true : _b, _c = _a.type, type = _c === void 0 ? 'success' : _c;
7
+ var getIconName = function (type) {
8
+ switch (type) {
9
+ case 'success':
10
+ return 'SuccessColoursOutlined';
11
+ case 'error':
12
+ return 'ErrorColoursOutlined';
13
+ case 'warning':
14
+ return 'WarningColoursOutlined';
15
+ case 'loading':
16
+ return 'LoadingOutlined';
17
+ default:
18
+ return 'WarningColoursOutlined';
19
+ }
20
+ };
21
+ return (jsxs("div", __assign({ className: "foxit-alert foxit-alert-".concat(type) }, { children: [showIcon && (jsx("div", __assign({ className: "foxit-alert-icon-container" }, { children: jsx(Icon, { name: getIconName(type), className: "foxit-alert-icon" }) }))), jsx("div", __assign({ className: "foxit-alert-message" }, { children: message }))] })));
22
+ };
23
+
24
+ export { Alert };
@@ -8,5 +8,6 @@ export interface ButtonProps {
8
8
  className?: string;
9
9
  style?: React.CSSProperties;
10
10
  [key: string]: unknown;
11
+ loading?: boolean;
11
12
  }
12
- export declare const Button: ({ primary, size, children, className, style, ...props }: ButtonProps) => import("react/jsx-runtime").JSX.Element;
13
+ export declare const Button: ({ primary, size, children, className, style, loading, ...props }: ButtonProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,12 +1,12 @@
1
1
  import { __rest, __assign } from '../node_modules/tslib/tslib.es6.js';
2
- import { jsx } from 'react/jsx-runtime';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import classNames from 'classnames';
4
- import './button.css.js';
4
+ import { Icon } from '../Icon/index.js';
5
5
 
6
6
  var Button = function (_a) {
7
- var _b = _a.primary, primary = _b === void 0 ? false : _b, _c = _a.size, size = _c === void 0 ? 'large' : _c, _d = _a.children, children = _d === void 0 ? '' : _d, className = _a.className, style = _a.style, props = __rest(_a, ["primary", "size", "children", "className", "style"]);
7
+ var _b = _a.primary, primary = _b === void 0 ? false : _b, _c = _a.size, size = _c === void 0 ? 'large' : _c, _d = _a.children, children = _d === void 0 ? '' : _d, className = _a.className, style = _a.style, loading = _a.loading, props = __rest(_a, ["primary", "size", "children", "className", "style", "loading"]);
8
8
  var mode = primary ? 'foxit-button-primary' : 'foxit-button-secondary';
9
- return (jsx("button", __assign({ type: "button", className: classNames('foxit-button', "foxit-button-".concat(size), mode, className), style: style }, props, { children: children })));
9
+ return (jsxs("button", __assign({ type: "button", className: classNames('foxit-button', "foxit-button-".concat(size), mode, className, loading && 'foxit-button-prevent-click'), style: style }, props, { children: [loading && jsx(Icon, { name: "LoadingOutlined", className: "foxit-button-loading" }), children] })));
10
10
  };
11
11
 
12
12
  export { Button };
@@ -1,10 +1,18 @@
1
- import React from 'react';
1
+ import React, { FC } from 'react';
2
2
  import './checkbox.css';
3
3
  interface CheckboxProps {
4
4
  onChange?: (checked: boolean) => void;
5
5
  checked?: boolean;
6
6
  disabled?: boolean;
7
+ value?: string;
7
8
  children: React.ReactNode;
8
9
  }
9
- declare const Checkbox: React.FC<CheckboxProps>;
10
+ interface CheckboxGroupProps {
11
+ value?: string[];
12
+ onChange?: (checkedValues: string[]) => void;
13
+ children: React.ReactNode;
14
+ }
15
+ declare const Checkbox: React.FC<CheckboxProps> & {
16
+ Group: FC<CheckboxGroupProps>;
17
+ };
10
18
  export default Checkbox;
@@ -1,19 +1,49 @@
1
- import { __assign } from '../node_modules/tslib/tslib.es6.js';
1
+ import { __assign, __spreadArray } from '../node_modules/tslib/tslib.es6.js';
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
- import { useState } from 'react';
4
- import './checkbox.css.js';
3
+ import { createContext, useContext, useState, useEffect } from 'react';
5
4
 
5
+ var CheckboxGroupContext = createContext(null);
6
6
  var Checkbox = function (_a) {
7
- var onChange = _a.onChange, checked = _a.checked, _b = _a.disabled, disabled = _b === void 0 ? false : _b, children = _a.children;
7
+ var onChange = _a.onChange, checked = _a.checked, _b = _a.disabled, disabled = _b === void 0 ? false : _b, value = _a.value, children = _a.children;
8
+ var groupContext = useContext(CheckboxGroupContext);
8
9
  var _c = useState(checked || false), internalChecked = _c[0], setInternalChecked = _c[1];
10
+ useEffect(function () {
11
+ if (checked !== undefined) {
12
+ setInternalChecked(checked);
13
+ }
14
+ }, [checked]);
9
15
  var handleChange = function (e) {
10
16
  var newChecked = e.target.checked;
11
17
  setInternalChecked(newChecked);
12
18
  if (onChange) {
13
19
  onChange(newChecked);
14
20
  }
21
+ if (groupContext && value) {
22
+ groupContext.onChange(value, newChecked);
23
+ }
24
+ };
25
+ var isChecked = groupContext ? groupContext.value.includes(value || '') : internalChecked;
26
+ return (jsxs("label", __assign({ className: "foxit-checkbox-container ".concat(disabled ? 'disabled' : '') }, { children: [jsx("input", { type: "checkbox", checked: isChecked, disabled: disabled, onChange: handleChange }), jsx("span", { className: "foxit-checkbox-checkmark ".concat(disabled ? 'disabled' : '') }), jsx("span", __assign({ className: "foxit-checkbox-content" }, { children: children }))] })));
27
+ };
28
+ var CheckboxGroup = function (_a) {
29
+ var value = _a.value, onChange = _a.onChange, children = _a.children;
30
+ var _b = useState([]), checkedValues = _b[0], setCheckedValues = _b[1];
31
+ useEffect(function () {
32
+ if (value !== undefined) {
33
+ setCheckedValues(value);
34
+ }
35
+ }, [value]);
36
+ var handleCheckboxChange = function (checkboxValue, checked) {
37
+ var newCheckedValues = checked
38
+ ? __spreadArray(__spreadArray([], checkedValues, true), [checkboxValue], false) : checkedValues.filter(function (v) { return v !== checkboxValue; });
39
+ setCheckedValues(newCheckedValues);
40
+ if (onChange) {
41
+ onChange(newCheckedValues);
42
+ }
15
43
  };
16
- return (jsxs("label", __assign({ className: "foxit-checkbox-container ".concat(disabled ? 'disabled' : '') }, { children: [jsx("input", { type: "checkbox", checked: checked !== undefined ? checked : internalChecked, disabled: disabled, onChange: handleChange }), jsx("span", { className: "foxit-checkbox-checkmark ".concat(disabled ? 'disabled' : '') }), jsx("span", __assign({ className: "foxit-checkbox-content" }, { children: children }))] })));
44
+ var currentValue = value !== undefined ? value : checkedValues;
45
+ return (jsx(CheckboxGroupContext.Provider, __assign({ value: { value: currentValue, onChange: handleCheckboxChange } }, { children: jsx("div", __assign({ className: "foxit-checkbox-group" }, { children: children })) })));
17
46
  };
47
+ Checkbox.Group = CheckboxGroup;
18
48
 
19
49
  export { Checkbox as default };
@@ -0,0 +1,10 @@
1
+ import React, { ReactNode } from 'react';
2
+ import './drawer.css';
3
+ interface DrawerProps {
4
+ open?: boolean;
5
+ width?: number | string;
6
+ onClose?: () => void;
7
+ children?: ReactNode;
8
+ }
9
+ declare const Drawer: React.FC<DrawerProps>;
10
+ export { Drawer };
@@ -0,0 +1,14 @@
1
+ import { __assign } from '../node_modules/tslib/tslib.es6.js';
2
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
3
+ import classNames from 'classnames';
4
+
5
+ var Drawer = function (_a) {
6
+ var open = _a.open, _b = _a.width, width = _b === void 0 ? 375 : _b, onClose = _a.onClose, children = _a.children;
7
+ return (jsxs(Fragment, { children: [jsx("div", { className: classNames('foxit-drawer-mask', {
8
+ 'foxit-drawer-mask-open': open
9
+ }), onClick: onClose, style: { display: open ? 'block' : 'none' } }), jsx("div", __assign({ className: classNames('foxit-drawer', {
10
+ 'foxit-drawer-open': open
11
+ }), style: { width: width, right: open ? 0 : -width } }, { children: jsx("div", __assign({ className: "foxit-drawer-content" }, { children: children })) }))] }));
12
+ };
13
+
14
+ export { Drawer };
package/es/Empty/Empty.js CHANGED
@@ -1,7 +1,6 @@
1
1
  import { __assign } from '../node_modules/tslib/tslib.es6.js';
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import { Icon } from '../Icon/index.js';
4
- import './empty.css.js';
5
4
 
6
5
  var Empty = function (_a) {
7
6
  var description = _a.description;
package/es/Form/Form.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import React, { ReactNode } from 'react';
2
2
  import { FormRefInstance } from './Form.types';
3
3
  import FormItem from './FormItem';
4
+ import { useFormWatch } from './useFormWatch';
4
5
  export type { FormRefInstance } from './Form.types';
5
6
  interface FormProps {
6
7
  children: ReactNode;
@@ -9,6 +10,6 @@ interface FormProps {
9
10
  [key: string]: unknown;
10
11
  };
11
12
  }
12
- export { FormItem };
13
+ export { FormItem, useFormWatch };
13
14
  declare const _default: React.ForwardRefExoticComponent<FormProps & React.RefAttributes<FormRefInstance>>;
14
15
  export default _default;
package/es/Form/Form.js CHANGED
@@ -3,7 +3,6 @@ import { jsx } from 'react/jsx-runtime';
3
3
  import { forwardRef, useRef, useCallback, useImperativeHandle } from 'react';
4
4
  import FormProvider from './FormProvider.js';
5
5
  import './FormContext.js';
6
- import './form.css.js';
7
6
 
8
7
  var Form = function (_a, ref) {
9
8
  var children = _a.children, onFinish = _a.onFinish, initialValues = _a.initialValues;
@@ -22,13 +21,14 @@ var Form = function (_a, ref) {
22
21
  }
23
22
  }, [onFinish]);
24
23
  useImperativeHandle(ref, function () {
25
- var _a, _b, _c, _d, _e;
24
+ var _a, _b, _c, _d, _e, _f;
26
25
  return ({
27
26
  setFieldsValue: (_a = formRef.current) === null || _a === void 0 ? void 0 : _a.setFieldsValue,
28
27
  getFieldsValue: (_b = formRef.current) === null || _b === void 0 ? void 0 : _b.getFieldsValue,
29
28
  resetFields: (_c = formRef.current) === null || _c === void 0 ? void 0 : _c.resetFields,
30
29
  validateFields: (_d = formRef.current) === null || _d === void 0 ? void 0 : _d.validateFields,
31
- setFieldsStatus: (_e = formRef.current) === null || _e === void 0 ? void 0 : _e.setFieldsStatus
30
+ setFieldsStatus: (_e = formRef.current) === null || _e === void 0 ? void 0 : _e.setFieldsStatus,
31
+ subscribe: (_f = formRef.current) === null || _f === void 0 ? void 0 : _f.subscribe
32
32
  });
33
33
  });
34
34
  return (jsx(FormProvider, __assign({ initialValues: initialValues, ref: formRef }, { children: jsx("form", __assign({ onSubmit: handleSubmit }, { children: children })) })));
@@ -11,6 +11,12 @@ export interface ValidationRule {
11
11
  min?: number;
12
12
  max?: number;
13
13
  }
14
+ export interface FieldSubscriber {
15
+ fieldNames: string[];
16
+ callback: (values: {
17
+ [key: string]: unknown;
18
+ }) => void;
19
+ }
14
20
  export interface FormInstance {
15
21
  setFieldsValue: (values: {
16
22
  [key: string]: unknown;
@@ -29,6 +35,9 @@ export interface FormInstance {
29
35
  }[]) => void;
30
36
  registerField: (name: string, rules: ValidationRule[]) => void;
31
37
  unregisterField: (name: string) => void;
38
+ subscribe: (fieldNames: string[], callback: (values: {
39
+ [key: string]: unknown;
40
+ }) => void) => () => void;
32
41
  }
33
42
  export type FormRefInstance = Omit<FormInstance, 'registerField' | 'unregisterField'>;
34
43
  export interface FormContextProps {
@@ -2,7 +2,8 @@ import React, { ReactNode } from 'react';
2
2
  import './form.css';
3
3
  interface FormItemProps {
4
4
  name: string;
5
- label?: string;
5
+ label?: string | ReactNode;
6
+ extra?: string | ReactNode;
6
7
  rules?: {
7
8
  required?: boolean;
8
9
  message?: string;
@@ -1,12 +1,11 @@
1
1
  import { __assign } from '../node_modules/tslib/tslib.es6.js';
2
- import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
3
3
  import React, { useContext, useEffect, useCallback } from 'react';
4
4
  import { FormContext } from './FormContext.js';
5
- import './form.css.js';
6
5
 
7
6
  var FormItem = function (_a) {
8
7
  var _b, _c, _d;
9
- var name = _a.name, label = _a.label, _e = _a.rules, rules = _e === void 0 ? [] : _e, children = _a.children;
8
+ var name = _a.name, label = _a.label, extra = _a.extra, _e = _a.rules, rules = _e === void 0 ? [] : _e, children = _a.children;
10
9
  var _f = useContext(FormContext), form = _f.form, formFields = _f.formFields;
11
10
  // Register field when component mounts
12
11
  useEffect(function () {
@@ -24,7 +23,7 @@ var FormItem = function (_a) {
24
23
  var newValue = ((_b = e === null || e === void 0 ? void 0 : e.target) === null || _b === void 0 ? void 0 : _b.value) !== undefined ? e.target.value : e;
25
24
  form.setFieldsValue((_a = {}, _a[name] = newValue, _a));
26
25
  }, [form, name]);
27
- return (jsxs("div", __assign({ className: "foxit-form-item" }, { children: [label && jsx("label", { children: label }), jsx("span", __assign({ className: "".concat(error ? 'foxit-form-error-component' : warning ? 'foxit-form-warning-component' : '') }, { children: React.Children.map(children, function (child) {
26
+ return (jsxs("div", __assign({ className: "foxit-form-item", style: error || warning ? { marginBottom: 0 } : {} }, { children: [label && (jsxs("label", { children: [label, rules.some(function (rule) { return rule.required; }) && jsx("span", __assign({ className: "foxit-form-required" }, { children: "*" })), extra && jsx(Fragment, { children: extra })] })), jsx("span", __assign({ className: "".concat(error ? 'foxit-form-error-component' : warning ? 'foxit-form-warning-component' : '') }, { children: React.Children.map(children, function (child) {
28
27
  return React.cloneElement(child, {
29
28
  value: value,
30
29
  onChange: handleChange