@elliemae/ds-stepper 2.0.0-rc.18
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/cjs/Stepper.js +61 -0
- package/cjs/StepperButton.js +60 -0
- package/cjs/index.js +13 -0
- package/cjs/props.js +42 -0
- package/cjs/styled.js +29 -0
- package/esm/Stepper.js +50 -0
- package/esm/StepperButton.js +50 -0
- package/esm/index.js +2 -0
- package/esm/props.js +35 -0
- package/esm/styled.js +18 -0
- package/package.json +73 -0
- package/types/Stepper.d.ts +22 -0
- package/types/StepperButton.d.ts +48 -0
- package/types/index.d.ts +2 -0
- package/types/props.d.ts +90 -0
- package/types/styled.d.ts +34 -0
- package/types/tests/Stepper.test.d.ts +1 -0
package/cjs/Stepper.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
6
|
+
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
7
|
+
require('core-js/modules/esnext.async-iterator.map.js');
|
|
8
|
+
require('core-js/modules/esnext.iterator.map.js');
|
|
9
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
10
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
11
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
12
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
13
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
14
|
+
var React = require('react');
|
|
15
|
+
var uid = require('uid');
|
|
16
|
+
var reactDesc = require('react-desc');
|
|
17
|
+
var dsPropsHelpers = require('@elliemae/ds-props-helpers');
|
|
18
|
+
var props = require('./props.js');
|
|
19
|
+
var styled = require('./styled.js');
|
|
20
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
21
|
+
|
|
22
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
23
|
+
|
|
24
|
+
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
25
|
+
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
26
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
27
|
+
|
|
28
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
29
|
+
|
|
30
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
31
|
+
|
|
32
|
+
const DSStepper = props$1 => {
|
|
33
|
+
const propsWithDefaults = dsPropsHelpers.useMemoMergePropsWithDefault(props$1, props.defaultProps);
|
|
34
|
+
dsPropsHelpers.useValidateTypescriptPropTypes(propsWithDefaults, props.dsStepperProps);
|
|
35
|
+
const {
|
|
36
|
+
steps,
|
|
37
|
+
current,
|
|
38
|
+
visited
|
|
39
|
+
} = propsWithDefaults;
|
|
40
|
+
const stepsArray = React__default["default"].useMemo(() => new Array(steps).fill(1), [steps]);
|
|
41
|
+
return /*#__PURE__*/jsxRuntime.jsx(styled.StepperWrapper, _objectSpread(_objectSpread(_objectSpread({
|
|
42
|
+
steps: steps,
|
|
43
|
+
current: current,
|
|
44
|
+
visited: visited
|
|
45
|
+
}, dsPropsHelpers.getAriaProps(props$1)), dsPropsHelpers.getDataProps(props$1)), {}, {
|
|
46
|
+
children: stepsArray.map((item, index) => /*#__PURE__*/_jsx__default["default"](styled.Step // eslint-disable-next-line react/no-array-index-key
|
|
47
|
+
, {
|
|
48
|
+
active: current === index,
|
|
49
|
+
visited: visited.includes(index),
|
|
50
|
+
"data-testid": props$1['data-testid'] ? "".concat(props$1['data-testid'], "-step") : undefined,
|
|
51
|
+
"data-active": current === index,
|
|
52
|
+
"data-visited": visited.includes(index)
|
|
53
|
+
}, "".concat(uid.uid(4), "step-key-").concat(index)))
|
|
54
|
+
}));
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const StepperWithSchema = reactDesc.describe(DSStepper);
|
|
58
|
+
StepperWithSchema.propTypes = props.dsStepperProps;
|
|
59
|
+
|
|
60
|
+
exports.DSStepper = DSStepper;
|
|
61
|
+
exports.StepperWithSchema = StepperWithSchema;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
6
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
7
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
8
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
9
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
10
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
11
|
+
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
12
|
+
require('react');
|
|
13
|
+
var reactDesc = require('react-desc');
|
|
14
|
+
var dsPropsHelpers = require('@elliemae/ds-props-helpers');
|
|
15
|
+
var dsButton = require('@elliemae/ds-button');
|
|
16
|
+
var dsIcons = require('@elliemae/ds-icons');
|
|
17
|
+
var props = require('./props.js');
|
|
18
|
+
var styled = require('./styled.js');
|
|
19
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
20
|
+
|
|
21
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
22
|
+
|
|
23
|
+
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
24
|
+
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
25
|
+
|
|
26
|
+
var _ChevronLeft, _ChevronRight;
|
|
27
|
+
|
|
28
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
29
|
+
|
|
30
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
31
|
+
|
|
32
|
+
const DSStepperButton = props$1 => {
|
|
33
|
+
const propsWithDefaults = dsPropsHelpers.useMemoMergePropsWithDefault(props$1, props.defaultButtonProps);
|
|
34
|
+
dsPropsHelpers.useValidateTypescriptPropTypes(propsWithDefaults, props.dsStepperButtonProps);
|
|
35
|
+
const {
|
|
36
|
+
chevron,
|
|
37
|
+
fontSize,
|
|
38
|
+
label,
|
|
39
|
+
disabled,
|
|
40
|
+
onClick,
|
|
41
|
+
innerRef
|
|
42
|
+
} = propsWithDefaults;
|
|
43
|
+
return /*#__PURE__*/jsxRuntime.jsxs(styled.StyledButton, _objectSpread(_objectSpread(_objectSpread({
|
|
44
|
+
disabled: disabled,
|
|
45
|
+
onClick: onClick,
|
|
46
|
+
innerRef: innerRef,
|
|
47
|
+
buttonType: dsButton.BUTTON_TYPES.TEXT,
|
|
48
|
+
fontSize: fontSize
|
|
49
|
+
}, dsPropsHelpers.getAriaProps(props$1)), dsPropsHelpers.getDataProps(props$1)), {}, {
|
|
50
|
+
children: [chevron === 'left' ? _ChevronLeft || (_ChevronLeft = /*#__PURE__*/_jsx__default["default"](dsIcons.ChevronLeft, {})) : null, /*#__PURE__*/_jsx__default["default"](styled.Label, {
|
|
51
|
+
value: label
|
|
52
|
+
}), chevron === 'right' ? _ChevronRight || (_ChevronRight = /*#__PURE__*/_jsx__default["default"](dsIcons.ChevronRight, {})) : null]
|
|
53
|
+
}));
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const DSStepperButtonWithSchema = reactDesc.describe(DSStepperButton);
|
|
57
|
+
DSStepperButtonWithSchema.propTypes = props.dsStepperButtonProps;
|
|
58
|
+
|
|
59
|
+
exports.DSStepperButton = DSStepperButton;
|
|
60
|
+
exports.DSStepperButtonWithSchema = DSStepperButtonWithSchema;
|
package/cjs/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var Stepper = require('./Stepper.js');
|
|
6
|
+
var StepperButton = require('./StepperButton.js');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
exports.DSStepper = Stepper.DSStepper;
|
|
11
|
+
exports.StepperWithSchema = Stepper.StepperWithSchema;
|
|
12
|
+
exports.DSStepperButton = StepperButton.DSStepperButton;
|
|
13
|
+
exports.DSStepperButtonWithSchema = StepperButton.DSStepperButtonWithSchema;
|
package/cjs/props.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var lodash = require('lodash');
|
|
6
|
+
var reactDesc = require('react-desc');
|
|
7
|
+
|
|
8
|
+
const BUTTON_SIZES = {
|
|
9
|
+
normal: 'normal',
|
|
10
|
+
large: 'large'
|
|
11
|
+
};
|
|
12
|
+
const defaultProps = {
|
|
13
|
+
steps: 5,
|
|
14
|
+
current: undefined,
|
|
15
|
+
visited: []
|
|
16
|
+
};
|
|
17
|
+
const dsStepperProps = {
|
|
18
|
+
steps: reactDesc.PropTypes.number.description('Number of steps').isRequired,
|
|
19
|
+
current: reactDesc.PropTypes.number.description('Index of active step'),
|
|
20
|
+
visited: reactDesc.PropTypes.arrayOf(reactDesc.PropTypes.number).description('Array of visited steps').isRequired
|
|
21
|
+
};
|
|
22
|
+
const defaultButtonProps = {
|
|
23
|
+
chevron: undefined,
|
|
24
|
+
fontSize: BUTTON_SIZES.normal,
|
|
25
|
+
disabled: false,
|
|
26
|
+
onClick: lodash.noop
|
|
27
|
+
};
|
|
28
|
+
const dsStepperButtonProps = {
|
|
29
|
+
chevron: reactDesc.PropTypes.oneOf(['left', 'right', null]).description('Chevron icon position, if null/undefined no chevron will be shown').defaultValue(null),
|
|
30
|
+
fontSize: reactDesc.PropTypes.oneOf(['normal', 'large']).description('Label size, used for marking last step').defaultValue('normal'),
|
|
31
|
+
label: reactDesc.PropTypes.string.description('Text Label, this only accepts text, no custom JSX').isRequired,
|
|
32
|
+
disabled: reactDesc.PropTypes.bool.description('Adds disabled state.'),
|
|
33
|
+
onClick: reactDesc.PropTypes.func.description('OnClick callback handler.').defaultValue('()=>{}'),
|
|
34
|
+
innerRef: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.object, reactDesc.PropTypes.func]).description('Inner ref to button component.'),
|
|
35
|
+
'aria-': reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.string, reactDesc.PropTypes.bool]).description('accept all the aria-* props, MUST receive aria-label'),
|
|
36
|
+
'data-': reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.string, reactDesc.PropTypes.bool]).description('accept all the data-* props')
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
exports.defaultButtonProps = defaultButtonProps;
|
|
40
|
+
exports.defaultProps = defaultProps;
|
|
41
|
+
exports.dsStepperButtonProps = dsStepperButtonProps;
|
|
42
|
+
exports.dsStepperProps = dsStepperProps;
|
package/cjs/styled.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var styled = require('styled-components');
|
|
6
|
+
var dsButton = require('@elliemae/ds-button');
|
|
7
|
+
var dsTruncatedTooltipText = require('@elliemae/ds-truncated-tooltip-text');
|
|
8
|
+
|
|
9
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
10
|
+
|
|
11
|
+
var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
|
|
12
|
+
|
|
13
|
+
const StepperWrapper = /*#__PURE__*/styled__default["default"].div.withConfig({
|
|
14
|
+
componentId: "sc-fgtqnq-0"
|
|
15
|
+
})(["display:grid;align-items:flex-end;grid-template-columns repeat(", ",1fr);column-gap:", ";"], props => props.steps, props => props.theme.space.xxs);
|
|
16
|
+
const Step = /*#__PURE__*/styled__default["default"].div.withConfig({
|
|
17
|
+
componentId: "sc-fgtqnq-1"
|
|
18
|
+
})(["display:grid;border-radius:1px;height:", ";background:", ";"], props => props.active ? '5px' : '3px', props => props.active || props.visited ? props.theme.colors.brand[700] : props.theme.colors.neutral[400]);
|
|
19
|
+
const Label = /*#__PURE__*/styled__default["default"](dsTruncatedTooltipText.SimpleTruncatedTooltipText).withConfig({
|
|
20
|
+
componentId: "sc-fgtqnq-2"
|
|
21
|
+
})(["position:relative;top:1px;"]);
|
|
22
|
+
const StyledButton = /*#__PURE__*/styled__default["default"](dsButton.DSButtonV2).withConfig({
|
|
23
|
+
componentId: "sc-fgtqnq-3"
|
|
24
|
+
})(["white-space:nowrap;overflow:hidden;max-width:100%;padding-left:", ";padding-right:", ";& > span:not(.em-ds-icon){position:relative;top:", ";font-size:", ";}"], props => props.theme.space.xxs, props => props.theme.space.xxs, props => props.fontSize === 'large' ? '2px' : '1px', props => props.fontSize === 'large' ? '22px' : '18px');
|
|
25
|
+
|
|
26
|
+
exports.Label = Label;
|
|
27
|
+
exports.Step = Step;
|
|
28
|
+
exports.StepperWrapper = StepperWrapper;
|
|
29
|
+
exports.StyledButton = StyledButton;
|
package/esm/Stepper.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
2
|
+
import _jsx from '@babel/runtime/helpers/esm/jsx';
|
|
3
|
+
import 'core-js/modules/esnext.async-iterator.map.js';
|
|
4
|
+
import 'core-js/modules/esnext.iterator.map.js';
|
|
5
|
+
import 'core-js/modules/esnext.async-iterator.filter.js';
|
|
6
|
+
import 'core-js/modules/esnext.iterator.constructor.js';
|
|
7
|
+
import 'core-js/modules/esnext.iterator.filter.js';
|
|
8
|
+
import 'core-js/modules/esnext.async-iterator.for-each.js';
|
|
9
|
+
import 'core-js/modules/esnext.iterator.for-each.js';
|
|
10
|
+
import React from 'react';
|
|
11
|
+
import { uid } from 'uid';
|
|
12
|
+
import { describe } from 'react-desc';
|
|
13
|
+
import { useMemoMergePropsWithDefault, useValidateTypescriptPropTypes, getAriaProps, getDataProps } from '@elliemae/ds-props-helpers';
|
|
14
|
+
import { dsStepperProps, defaultProps } from './props.js';
|
|
15
|
+
import { StepperWrapper, Step } from './styled.js';
|
|
16
|
+
import { jsx } from 'react/jsx-runtime';
|
|
17
|
+
|
|
18
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
19
|
+
|
|
20
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
21
|
+
|
|
22
|
+
const DSStepper = props => {
|
|
23
|
+
const propsWithDefaults = useMemoMergePropsWithDefault(props, defaultProps);
|
|
24
|
+
useValidateTypescriptPropTypes(propsWithDefaults, dsStepperProps);
|
|
25
|
+
const {
|
|
26
|
+
steps,
|
|
27
|
+
current,
|
|
28
|
+
visited
|
|
29
|
+
} = propsWithDefaults;
|
|
30
|
+
const stepsArray = React.useMemo(() => new Array(steps).fill(1), [steps]);
|
|
31
|
+
return /*#__PURE__*/jsx(StepperWrapper, _objectSpread(_objectSpread(_objectSpread({
|
|
32
|
+
steps: steps,
|
|
33
|
+
current: current,
|
|
34
|
+
visited: visited
|
|
35
|
+
}, getAriaProps(props)), getDataProps(props)), {}, {
|
|
36
|
+
children: stepsArray.map((item, index) => /*#__PURE__*/_jsx(Step // eslint-disable-next-line react/no-array-index-key
|
|
37
|
+
, {
|
|
38
|
+
active: current === index,
|
|
39
|
+
visited: visited.includes(index),
|
|
40
|
+
"data-testid": props['data-testid'] ? "".concat(props['data-testid'], "-step") : undefined,
|
|
41
|
+
"data-active": current === index,
|
|
42
|
+
"data-visited": visited.includes(index)
|
|
43
|
+
}, "".concat(uid(4), "step-key-").concat(index)))
|
|
44
|
+
}));
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const StepperWithSchema = describe(DSStepper);
|
|
48
|
+
StepperWithSchema.propTypes = dsStepperProps;
|
|
49
|
+
|
|
50
|
+
export { DSStepper, StepperWithSchema };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import 'core-js/modules/esnext.async-iterator.filter.js';
|
|
2
|
+
import 'core-js/modules/esnext.iterator.constructor.js';
|
|
3
|
+
import 'core-js/modules/esnext.iterator.filter.js';
|
|
4
|
+
import 'core-js/modules/esnext.async-iterator.for-each.js';
|
|
5
|
+
import 'core-js/modules/esnext.iterator.for-each.js';
|
|
6
|
+
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
7
|
+
import _jsx from '@babel/runtime/helpers/esm/jsx';
|
|
8
|
+
import 'react';
|
|
9
|
+
import { describe } from 'react-desc';
|
|
10
|
+
import { useMemoMergePropsWithDefault, useValidateTypescriptPropTypes, getAriaProps, getDataProps } from '@elliemae/ds-props-helpers';
|
|
11
|
+
import { BUTTON_TYPES } from '@elliemae/ds-button';
|
|
12
|
+
import { ChevronLeft, ChevronRight } from '@elliemae/ds-icons';
|
|
13
|
+
import { dsStepperButtonProps, defaultButtonProps } from './props.js';
|
|
14
|
+
import { StyledButton, Label } from './styled.js';
|
|
15
|
+
import { jsxs } from 'react/jsx-runtime';
|
|
16
|
+
|
|
17
|
+
var _ChevronLeft, _ChevronRight;
|
|
18
|
+
|
|
19
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
20
|
+
|
|
21
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
22
|
+
|
|
23
|
+
const DSStepperButton = props => {
|
|
24
|
+
const propsWithDefaults = useMemoMergePropsWithDefault(props, defaultButtonProps);
|
|
25
|
+
useValidateTypescriptPropTypes(propsWithDefaults, dsStepperButtonProps);
|
|
26
|
+
const {
|
|
27
|
+
chevron,
|
|
28
|
+
fontSize,
|
|
29
|
+
label,
|
|
30
|
+
disabled,
|
|
31
|
+
onClick,
|
|
32
|
+
innerRef
|
|
33
|
+
} = propsWithDefaults;
|
|
34
|
+
return /*#__PURE__*/jsxs(StyledButton, _objectSpread(_objectSpread(_objectSpread({
|
|
35
|
+
disabled: disabled,
|
|
36
|
+
onClick: onClick,
|
|
37
|
+
innerRef: innerRef,
|
|
38
|
+
buttonType: BUTTON_TYPES.TEXT,
|
|
39
|
+
fontSize: fontSize
|
|
40
|
+
}, getAriaProps(props)), getDataProps(props)), {}, {
|
|
41
|
+
children: [chevron === 'left' ? _ChevronLeft || (_ChevronLeft = /*#__PURE__*/_jsx(ChevronLeft, {})) : null, /*#__PURE__*/_jsx(Label, {
|
|
42
|
+
value: label
|
|
43
|
+
}), chevron === 'right' ? _ChevronRight || (_ChevronRight = /*#__PURE__*/_jsx(ChevronRight, {})) : null]
|
|
44
|
+
}));
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const DSStepperButtonWithSchema = describe(DSStepperButton);
|
|
48
|
+
DSStepperButtonWithSchema.propTypes = dsStepperButtonProps;
|
|
49
|
+
|
|
50
|
+
export { DSStepperButton, DSStepperButtonWithSchema };
|
package/esm/index.js
ADDED
package/esm/props.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { noop } from 'lodash';
|
|
2
|
+
import { PropTypes } from 'react-desc';
|
|
3
|
+
|
|
4
|
+
const BUTTON_SIZES = {
|
|
5
|
+
normal: 'normal',
|
|
6
|
+
large: 'large'
|
|
7
|
+
};
|
|
8
|
+
const defaultProps = {
|
|
9
|
+
steps: 5,
|
|
10
|
+
current: undefined,
|
|
11
|
+
visited: []
|
|
12
|
+
};
|
|
13
|
+
const dsStepperProps = {
|
|
14
|
+
steps: PropTypes.number.description('Number of steps').isRequired,
|
|
15
|
+
current: PropTypes.number.description('Index of active step'),
|
|
16
|
+
visited: PropTypes.arrayOf(PropTypes.number).description('Array of visited steps').isRequired
|
|
17
|
+
};
|
|
18
|
+
const defaultButtonProps = {
|
|
19
|
+
chevron: undefined,
|
|
20
|
+
fontSize: BUTTON_SIZES.normal,
|
|
21
|
+
disabled: false,
|
|
22
|
+
onClick: noop
|
|
23
|
+
};
|
|
24
|
+
const dsStepperButtonProps = {
|
|
25
|
+
chevron: PropTypes.oneOf(['left', 'right', null]).description('Chevron icon position, if null/undefined no chevron will be shown').defaultValue(null),
|
|
26
|
+
fontSize: PropTypes.oneOf(['normal', 'large']).description('Label size, used for marking last step').defaultValue('normal'),
|
|
27
|
+
label: PropTypes.string.description('Text Label, this only accepts text, no custom JSX').isRequired,
|
|
28
|
+
disabled: PropTypes.bool.description('Adds disabled state.'),
|
|
29
|
+
onClick: PropTypes.func.description('OnClick callback handler.').defaultValue('()=>{}'),
|
|
30
|
+
innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).description('Inner ref to button component.'),
|
|
31
|
+
'aria-': PropTypes.oneOfType([PropTypes.string, PropTypes.bool]).description('accept all the aria-* props, MUST receive aria-label'),
|
|
32
|
+
'data-': PropTypes.oneOfType([PropTypes.string, PropTypes.bool]).description('accept all the data-* props')
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export { defaultButtonProps, defaultProps, dsStepperButtonProps, dsStepperProps };
|
package/esm/styled.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import styled from 'styled-components';
|
|
2
|
+
import { DSButtonV2 } from '@elliemae/ds-button';
|
|
3
|
+
import { SimpleTruncatedTooltipText } from '@elliemae/ds-truncated-tooltip-text';
|
|
4
|
+
|
|
5
|
+
const StepperWrapper = /*#__PURE__*/styled.div.withConfig({
|
|
6
|
+
componentId: "sc-fgtqnq-0"
|
|
7
|
+
})(["display:grid;align-items:flex-end;grid-template-columns repeat(", ",1fr);column-gap:", ";"], props => props.steps, props => props.theme.space.xxs);
|
|
8
|
+
const Step = /*#__PURE__*/styled.div.withConfig({
|
|
9
|
+
componentId: "sc-fgtqnq-1"
|
|
10
|
+
})(["display:grid;border-radius:1px;height:", ";background:", ";"], props => props.active ? '5px' : '3px', props => props.active || props.visited ? props.theme.colors.brand[700] : props.theme.colors.neutral[400]);
|
|
11
|
+
const Label = /*#__PURE__*/styled(SimpleTruncatedTooltipText).withConfig({
|
|
12
|
+
componentId: "sc-fgtqnq-2"
|
|
13
|
+
})(["position:relative;top:1px;"]);
|
|
14
|
+
const StyledButton = /*#__PURE__*/styled(DSButtonV2).withConfig({
|
|
15
|
+
componentId: "sc-fgtqnq-3"
|
|
16
|
+
})(["white-space:nowrap;overflow:hidden;max-width:100%;padding-left:", ";padding-right:", ";& > span:not(.em-ds-icon){position:relative;top:", ";font-size:", ";}"], props => props.theme.space.xxs, props => props.theme.space.xxs, props => props.fontSize === 'large' ? '2px' : '1px', props => props.fontSize === 'large' ? '22px' : '18px');
|
|
17
|
+
|
|
18
|
+
export { Label, Step, StepperWrapper, StyledButton };
|
package/package.json
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@elliemae/ds-stepper",
|
|
3
|
+
"version": "2.0.0-rc.18",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"description": "ICE MT - Dimsum - Stepper",
|
|
6
|
+
"module": "./esm/index.js",
|
|
7
|
+
"main": "./cjs/index.js",
|
|
8
|
+
"types": "./types/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./esm/index.js",
|
|
12
|
+
"require": "./cjs/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./styled": {
|
|
15
|
+
"import": "./esm/styled.js",
|
|
16
|
+
"require": "./cjs/styled.js"
|
|
17
|
+
},
|
|
18
|
+
"./StepperButton": {
|
|
19
|
+
"import": "./esm/StepperButton.js",
|
|
20
|
+
"require": "./cjs/StepperButton.js"
|
|
21
|
+
},
|
|
22
|
+
"./Stepper": {
|
|
23
|
+
"import": "./esm/Stepper.js",
|
|
24
|
+
"require": "./cjs/Stepper.js"
|
|
25
|
+
},
|
|
26
|
+
"./props": {
|
|
27
|
+
"import": "./esm/props.js",
|
|
28
|
+
"require": "./cjs/props.js"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"sideEffects": [
|
|
32
|
+
"*.css",
|
|
33
|
+
"*.scss"
|
|
34
|
+
],
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "https://git.elliemae.io/platform-ui/dimsum.git"
|
|
38
|
+
},
|
|
39
|
+
"engines": {
|
|
40
|
+
"npm": ">=7",
|
|
41
|
+
"node": ">=14"
|
|
42
|
+
},
|
|
43
|
+
"author": "ICE MT",
|
|
44
|
+
"scripts": {
|
|
45
|
+
"dev": "cross-env NODE_ENV=development && node ../../scripts/build/build.js -w",
|
|
46
|
+
"prebuild": "exit 0",
|
|
47
|
+
"predev": "exit 0",
|
|
48
|
+
"build": "node ../../scripts/build/build.js"
|
|
49
|
+
},
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"@elliemae/ds-button": "2.0.0-rc.18",
|
|
52
|
+
"@elliemae/ds-icons": "2.0.0-rc.18",
|
|
53
|
+
"@elliemae/ds-props-helpers": "2.0.0-rc.18",
|
|
54
|
+
"@elliemae/ds-truncated-tooltip-text": "2.0.0-rc.18",
|
|
55
|
+
"react-desc": "~4.1.3",
|
|
56
|
+
"uid": "~2.0.0"
|
|
57
|
+
},
|
|
58
|
+
"devDependencies": {
|
|
59
|
+
"styled-components": "~5.3.3",
|
|
60
|
+
"styled-system": "~5.1.5"
|
|
61
|
+
},
|
|
62
|
+
"peerDependencies": {
|
|
63
|
+
"react": "^17.0.2",
|
|
64
|
+
"react-dom": "^17.0.2",
|
|
65
|
+
"styled-components": "^5.3.3",
|
|
66
|
+
"styled-system": "^5.1.5"
|
|
67
|
+
},
|
|
68
|
+
"publishConfig": {
|
|
69
|
+
"access": "public",
|
|
70
|
+
"directory": "dist",
|
|
71
|
+
"generateSubmodules": true
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/// <reference path="../../../../shared/typings/react-desc.d.ts" />
|
|
2
|
+
/// <reference types="react" />
|
|
3
|
+
import { DSStepperInternalsT } from './props';
|
|
4
|
+
declare const DSStepper: {
|
|
5
|
+
(props: DSStepperInternalsT.StepperPropsT): JSX.Element;
|
|
6
|
+
propTypes: {
|
|
7
|
+
steps: import("react-desc").PropTypesDescValidator;
|
|
8
|
+
current: {
|
|
9
|
+
defaultValue<T = unknown>(arg: T): {
|
|
10
|
+
deprecated: import("react-desc").PropTypesDescValidator;
|
|
11
|
+
};
|
|
12
|
+
isRequired: import("react-desc").PropTypesDescValidator;
|
|
13
|
+
};
|
|
14
|
+
visited: import("react-desc").PropTypesDescValidator;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
declare const StepperWithSchema: {
|
|
18
|
+
(props?: DSStepperInternalsT.StepperPropsT | undefined): JSX.Element;
|
|
19
|
+
propTypes: unknown;
|
|
20
|
+
toTypescript: () => import("react-desc").TypescriptSchema;
|
|
21
|
+
};
|
|
22
|
+
export { DSStepper, StepperWithSchema };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/// <reference path="../../../../shared/typings/react-desc.d.ts" />
|
|
2
|
+
/// <reference types="react" />
|
|
3
|
+
import { DSStepperInternalsT } from './props';
|
|
4
|
+
declare const DSStepperButton: {
|
|
5
|
+
(props: DSStepperInternalsT.StepperButtonPropsT): JSX.Element;
|
|
6
|
+
propTypes: {
|
|
7
|
+
chevron: {
|
|
8
|
+
deprecated: import("react-desc").PropTypesDescValidator;
|
|
9
|
+
};
|
|
10
|
+
fontSize: {
|
|
11
|
+
deprecated: import("react-desc").PropTypesDescValidator;
|
|
12
|
+
};
|
|
13
|
+
label: import("react-desc").PropTypesDescValidator;
|
|
14
|
+
disabled: {
|
|
15
|
+
defaultValue<T = unknown>(arg: T): {
|
|
16
|
+
deprecated: import("react-desc").PropTypesDescValidator;
|
|
17
|
+
};
|
|
18
|
+
isRequired: import("react-desc").PropTypesDescValidator;
|
|
19
|
+
};
|
|
20
|
+
onClick: {
|
|
21
|
+
deprecated: import("react-desc").PropTypesDescValidator;
|
|
22
|
+
};
|
|
23
|
+
innerRef: {
|
|
24
|
+
defaultValue<T = unknown>(arg: T): {
|
|
25
|
+
deprecated: import("react-desc").PropTypesDescValidator;
|
|
26
|
+
};
|
|
27
|
+
isRequired: import("react-desc").PropTypesDescValidator;
|
|
28
|
+
};
|
|
29
|
+
'aria-': {
|
|
30
|
+
defaultValue<T = unknown>(arg: T): {
|
|
31
|
+
deprecated: import("react-desc").PropTypesDescValidator;
|
|
32
|
+
};
|
|
33
|
+
isRequired: import("react-desc").PropTypesDescValidator;
|
|
34
|
+
};
|
|
35
|
+
'data-': {
|
|
36
|
+
defaultValue<T = unknown>(arg: T): {
|
|
37
|
+
deprecated: import("react-desc").PropTypesDescValidator;
|
|
38
|
+
};
|
|
39
|
+
isRequired: import("react-desc").PropTypesDescValidator;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
declare const DSStepperButtonWithSchema: {
|
|
44
|
+
(props?: DSStepperInternalsT.StepperButtonPropsT | undefined): JSX.Element;
|
|
45
|
+
propTypes: unknown;
|
|
46
|
+
toTypescript: () => import("react-desc").TypescriptSchema;
|
|
47
|
+
};
|
|
48
|
+
export { DSStepperButton, DSStepperButtonWithSchema };
|
package/types/index.d.ts
ADDED
package/types/props.d.ts
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/// <reference path="../../../../shared/typings/react-desc.d.ts" />
|
|
2
|
+
/// <reference types="react" />
|
|
3
|
+
declare const BUTTON_SIZES: {
|
|
4
|
+
readonly normal: "normal";
|
|
5
|
+
readonly large: "large";
|
|
6
|
+
};
|
|
7
|
+
declare type ButtonSizesT = typeof BUTTON_SIZES[keyof typeof BUTTON_SIZES];
|
|
8
|
+
declare const CHEVRON_TYPE: {
|
|
9
|
+
readonly left: "left";
|
|
10
|
+
readonly right: "right";
|
|
11
|
+
};
|
|
12
|
+
declare type ChevronT = typeof CHEVRON_TYPE[keyof typeof CHEVRON_TYPE];
|
|
13
|
+
export declare namespace DSStepperInternalsT {
|
|
14
|
+
interface StepperPropsT {
|
|
15
|
+
[property: string]: unknown;
|
|
16
|
+
steps: number;
|
|
17
|
+
current: number | null;
|
|
18
|
+
visited: number[];
|
|
19
|
+
}
|
|
20
|
+
interface StepperButtonPropsT {
|
|
21
|
+
[property: string]: unknown;
|
|
22
|
+
chevron?: ChevronT;
|
|
23
|
+
fontSize?: ButtonSizesT;
|
|
24
|
+
label: string;
|
|
25
|
+
disabled?: boolean;
|
|
26
|
+
onClick: VoidFunction;
|
|
27
|
+
innerRef?: React.MutableRefObject<HTMLButtonElement> | ((_ref: HTMLButtonElement) => void);
|
|
28
|
+
'aria-label'?: string;
|
|
29
|
+
'aria-pressed'?: boolean;
|
|
30
|
+
'data-testid'?: string;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export declare const defaultProps: {
|
|
34
|
+
steps: number;
|
|
35
|
+
current: undefined;
|
|
36
|
+
visited: never[];
|
|
37
|
+
};
|
|
38
|
+
export declare const dsStepperProps: {
|
|
39
|
+
steps: import("react-desc").PropTypesDescValidator;
|
|
40
|
+
current: {
|
|
41
|
+
defaultValue<T = unknown>(arg: T): {
|
|
42
|
+
deprecated: import("react-desc").PropTypesDescValidator;
|
|
43
|
+
};
|
|
44
|
+
isRequired: import("react-desc").PropTypesDescValidator;
|
|
45
|
+
};
|
|
46
|
+
visited: import("react-desc").PropTypesDescValidator;
|
|
47
|
+
};
|
|
48
|
+
export declare const defaultButtonProps: {
|
|
49
|
+
chevron: undefined;
|
|
50
|
+
fontSize: "normal";
|
|
51
|
+
disabled: boolean;
|
|
52
|
+
onClick: (...args: any[]) => void;
|
|
53
|
+
};
|
|
54
|
+
export declare const dsStepperButtonProps: {
|
|
55
|
+
chevron: {
|
|
56
|
+
deprecated: import("react-desc").PropTypesDescValidator;
|
|
57
|
+
};
|
|
58
|
+
fontSize: {
|
|
59
|
+
deprecated: import("react-desc").PropTypesDescValidator;
|
|
60
|
+
};
|
|
61
|
+
label: import("react-desc").PropTypesDescValidator;
|
|
62
|
+
disabled: {
|
|
63
|
+
defaultValue<T = unknown>(arg: T): {
|
|
64
|
+
deprecated: import("react-desc").PropTypesDescValidator;
|
|
65
|
+
};
|
|
66
|
+
isRequired: import("react-desc").PropTypesDescValidator;
|
|
67
|
+
};
|
|
68
|
+
onClick: {
|
|
69
|
+
deprecated: import("react-desc").PropTypesDescValidator;
|
|
70
|
+
};
|
|
71
|
+
innerRef: {
|
|
72
|
+
defaultValue<T = unknown>(arg: T): {
|
|
73
|
+
deprecated: import("react-desc").PropTypesDescValidator;
|
|
74
|
+
};
|
|
75
|
+
isRequired: import("react-desc").PropTypesDescValidator;
|
|
76
|
+
};
|
|
77
|
+
'aria-': {
|
|
78
|
+
defaultValue<T = unknown>(arg: T): {
|
|
79
|
+
deprecated: import("react-desc").PropTypesDescValidator;
|
|
80
|
+
};
|
|
81
|
+
isRequired: import("react-desc").PropTypesDescValidator;
|
|
82
|
+
};
|
|
83
|
+
'data-': {
|
|
84
|
+
defaultValue<T = unknown>(arg: T): {
|
|
85
|
+
deprecated: import("react-desc").PropTypesDescValidator;
|
|
86
|
+
};
|
|
87
|
+
isRequired: import("react-desc").PropTypesDescValidator;
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { DSStepperInternalsT } from './props';
|
|
3
|
+
export declare const StepperWrapper: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, DSStepperInternalsT.StepperPropsT, never>;
|
|
4
|
+
interface StepProps {
|
|
5
|
+
active: boolean;
|
|
6
|
+
visited: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const Step: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, StepProps, never>;
|
|
9
|
+
export declare const Label: import("styled-components").StyledComponent<{
|
|
10
|
+
(props: any): JSX.Element;
|
|
11
|
+
propTypes: {
|
|
12
|
+
containerProps: import("prop-types").Requireable<object>;
|
|
13
|
+
tooltipOptions: import("prop-types").Requireable<object>;
|
|
14
|
+
textOptions: import("prop-types").Requireable<object>;
|
|
15
|
+
value: import("prop-types").Requireable<string | number | boolean | {} | import("prop-types").ReactElementLike | import("prop-types").ReactNodeArray>;
|
|
16
|
+
placement: import("prop-types").Requireable<string>;
|
|
17
|
+
tooltipDelay: import("prop-types").Requireable<number>;
|
|
18
|
+
zIndex: import("prop-types").Requireable<number>;
|
|
19
|
+
};
|
|
20
|
+
defaultProps: {
|
|
21
|
+
containerProps: {};
|
|
22
|
+
tooltipOptions: {};
|
|
23
|
+
textOptions: {};
|
|
24
|
+
value: string;
|
|
25
|
+
placement: string;
|
|
26
|
+
tooltipDelay: number;
|
|
27
|
+
zIndex: number;
|
|
28
|
+
};
|
|
29
|
+
}, import("styled-components").DefaultTheme, {}, never>;
|
|
30
|
+
export declare const StyledButton: import("styled-components").StyledComponent<{
|
|
31
|
+
(props: import("@elliemae/ds-button/types/v2/propTypes").DSButtonPropsT): JSX.Element;
|
|
32
|
+
propTypes: import("react").WeakValidationMap<unknown>;
|
|
33
|
+
}, import("styled-components").DefaultTheme, DSStepperInternalsT.StepperButtonPropsT, never>;
|
|
34
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|