@pingux/astro 2.135.0-alpha.0 → 2.135.0-alpha.2
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/lib/cjs/components/ExpandableText/ExpandableText.d.ts +4 -0
- package/lib/cjs/components/ExpandableText/ExpandableText.js +136 -0
- package/lib/cjs/components/ExpandableText/ExpandableText.mdx +30 -0
- package/lib/cjs/components/ExpandableText/ExpandableText.stories.d.ts +5 -0
- package/lib/cjs/components/ExpandableText/ExpandableText.stories.js +33 -0
- package/lib/cjs/components/ExpandableText/ExpandableText.styles.d.ts +15 -0
- package/lib/cjs/components/ExpandableText/ExpandableText.styles.js +24 -0
- package/lib/cjs/components/ExpandableText/ExpandableText.test.d.ts +1 -0
- package/lib/cjs/components/ExpandableText/ExpandableText.test.js +115 -0
- package/lib/cjs/components/ExpandableText/index.d.ts +1 -0
- package/lib/cjs/components/ExpandableText/index.js +14 -0
- package/lib/cjs/components/Input/Input.styles.js +5 -0
- package/lib/cjs/components/TimeField/TimeField.js +9 -7
- package/lib/cjs/components/TimeField/TimeField.stories.d.ts +1 -0
- package/lib/cjs/components/TimeField/TimeField.stories.js +18 -2
- package/lib/cjs/components/TimeField/TimeField.styles.d.ts +3 -0
- package/lib/cjs/components/TimeField/TimeField.styles.js +3 -0
- package/lib/cjs/components/TimeField/TimeField.test.js +9 -0
- package/lib/cjs/index.d.ts +1 -0
- package/lib/cjs/index.js +8 -0
- package/lib/cjs/styles/variants/variants.js +2 -0
- package/lib/cjs/types/expandableText.d.ts +10 -0
- package/lib/cjs/types/expandableText.js +6 -0
- package/lib/cjs/types/index.d.ts +1 -0
- package/lib/cjs/types/index.js +55 -44
- package/lib/components/ExpandableText/ExpandableText.js +122 -0
- package/lib/components/ExpandableText/ExpandableText.mdx +30 -0
- package/lib/components/ExpandableText/ExpandableText.stories.js +23 -0
- package/lib/components/ExpandableText/ExpandableText.styles.js +16 -0
- package/lib/components/ExpandableText/ExpandableText.test.js +112 -0
- package/lib/components/ExpandableText/index.js +1 -0
- package/lib/components/Input/Input.styles.js +5 -0
- package/lib/components/TimeField/TimeField.js +9 -7
- package/lib/components/TimeField/TimeField.stories.js +15 -0
- package/lib/components/TimeField/TimeField.styles.js +3 -0
- package/lib/components/TimeField/TimeField.test.js +9 -0
- package/lib/index.js +1 -0
- package/lib/styles/variants/variants.js +2 -0
- package/lib/types/expandableText.js +1 -0
- package/lib/types/index.js +1 -0
- package/package.json +1 -1
@@ -0,0 +1,112 @@
|
|
1
|
+
import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
|
2
|
+
import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
|
3
|
+
import React from 'react';
|
4
|
+
import { fireEvent } from '@testing-library/react';
|
5
|
+
import { render, screen } from '../../utils/testUtils/testWrapper';
|
6
|
+
import { universalComponentTests } from '../../utils/testUtils/universalComponentTest';
|
7
|
+
import ExpandableText from './ExpandableText';
|
8
|
+
import { jsx as ___EmotionJSX } from "@emotion/react";
|
9
|
+
jest.mock('use-resize-observer', function () {
|
10
|
+
return jest.fn(function () {
|
11
|
+
return {
|
12
|
+
ref: jest.fn(),
|
13
|
+
// a stub ref callback
|
14
|
+
width: 300 // pretend container is 300px wide
|
15
|
+
};
|
16
|
+
});
|
17
|
+
});
|
18
|
+
|
19
|
+
var children = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.';
|
20
|
+
var testId = 'test-text';
|
21
|
+
var defaultProps = {
|
22
|
+
'data-testid': testId,
|
23
|
+
// children,
|
24
|
+
maxLines: 2
|
25
|
+
};
|
26
|
+
var getComponent = function getComponent() {
|
27
|
+
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
28
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
29
|
+
_ref$renderFn = _ref.renderFn,
|
30
|
+
renderFn = _ref$renderFn === void 0 ? render : _ref$renderFn;
|
31
|
+
return renderFn(___EmotionJSX(ExpandableText, _extends({}, defaultProps, props), children));
|
32
|
+
};
|
33
|
+
|
34
|
+
// Needs to be added to each components test file
|
35
|
+
universalComponentTests({
|
36
|
+
renderComponent: function renderComponent(props) {
|
37
|
+
return ___EmotionJSX(ExpandableText, _extends({}, defaultProps, props));
|
38
|
+
}
|
39
|
+
});
|
40
|
+
describe('ExpandableText', function () {
|
41
|
+
it('renders children', function () {
|
42
|
+
_Object$defineProperty(HTMLElement.prototype, 'offsetHeight', {
|
43
|
+
configurable: true,
|
44
|
+
get: function get() {
|
45
|
+
var text = this.innerText || '';
|
46
|
+
var lineHeight = 20;
|
47
|
+
var lines = Math.ceil(text.length / 50);
|
48
|
+
return lines * lineHeight;
|
49
|
+
}
|
50
|
+
});
|
51
|
+
_Object$defineProperty(window, 'getComputedStyle', {
|
52
|
+
value: function value() {
|
53
|
+
return {
|
54
|
+
lineHeight: '20px'
|
55
|
+
};
|
56
|
+
}
|
57
|
+
});
|
58
|
+
getComponent();
|
59
|
+
var button = screen.getByRole('button');
|
60
|
+
expect(button).toHaveTextContent(/View More/i);
|
61
|
+
fireEvent.click(button);
|
62
|
+
var expandableText = screen.getByText(children);
|
63
|
+
expect(expandableText).toBeInTheDocument();
|
64
|
+
expect(expandableText).toHaveAttribute('data-testid', testId);
|
65
|
+
});
|
66
|
+
it('expands and collapses text on button click', function () {
|
67
|
+
_Object$defineProperty(HTMLElement.prototype, 'offsetHeight', {
|
68
|
+
configurable: true,
|
69
|
+
get: function get() {
|
70
|
+
var text = this.innerText || '';
|
71
|
+
var lineHeight = 20;
|
72
|
+
var lines = Math.ceil(text.length / 50);
|
73
|
+
return lines * lineHeight;
|
74
|
+
}
|
75
|
+
});
|
76
|
+
_Object$defineProperty(window, 'getComputedStyle', {
|
77
|
+
value: function value() {
|
78
|
+
return {
|
79
|
+
lineHeight: '20px'
|
80
|
+
};
|
81
|
+
}
|
82
|
+
});
|
83
|
+
getComponent();
|
84
|
+
var button = screen.getByRole('button');
|
85
|
+
expect(button).toHaveTextContent(/View More/i);
|
86
|
+
fireEvent.click(button);
|
87
|
+
expect(button).toHaveTextContent(/View Less/i);
|
88
|
+
fireEvent.click(screen.getByRole('button'));
|
89
|
+
expect(button).toHaveTextContent(/View More/i);
|
90
|
+
});
|
91
|
+
it('it rests the expansion state when resized', function () {
|
92
|
+
getComponent();
|
93
|
+
var button = screen.getByRole('button');
|
94
|
+
fireEvent.click(button);
|
95
|
+
expect(button).toHaveTextContent(/View Less/i);
|
96
|
+
var originalInnerWidth = window.innerWidth;
|
97
|
+
window.innerWidth = originalInnerWidth + 100;
|
98
|
+
fireEvent(window, new Event('resize'));
|
99
|
+
expect(button).toHaveTextContent(/View More/i);
|
100
|
+
window.innerWidth = originalInnerWidth;
|
101
|
+
});
|
102
|
+
it('truncates the text on resize when button is not expanded', function () {
|
103
|
+
getComponent();
|
104
|
+
var button = screen.getByRole('button');
|
105
|
+
expect(button).toHaveTextContent(/View More/i);
|
106
|
+
var originalInnerWidth = window.innerWidth;
|
107
|
+
window.innerWidth = originalInnerWidth + 100;
|
108
|
+
fireEvent(window, new Event('resize'));
|
109
|
+
expect(button).toHaveTextContent(/View More/i);
|
110
|
+
window.innerWidth = originalInnerWidth;
|
111
|
+
});
|
112
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default } from './ExpandableText';
|
@@ -47,19 +47,21 @@ var TimeField = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
47
47
|
var state = useTimeFieldState(_objectSpread(_objectSpread(_objectSpread({}, props), parsedTimes), {}, {
|
48
48
|
locale: locale
|
49
49
|
}));
|
50
|
-
var _useStatusClasses = useStatusClasses(className, {
|
51
|
-
isDisabled: isDisabled,
|
52
|
-
isReadOnly: isReadOnly,
|
53
|
-
is24Hour: props.hourCycle === 24
|
54
|
-
}),
|
55
|
-
classNames = _useStatusClasses.classNames;
|
56
50
|
var _useTimeField = useTimeField(_objectSpread(_objectSpread({}, props), parsedTimes), state, fieldRef),
|
57
|
-
fieldProps = _useTimeField.fieldProps
|
51
|
+
fieldProps = _useTimeField.fieldProps,
|
52
|
+
isInvalid = _useTimeField.isInvalid;
|
58
53
|
var _useField = useField(_objectSpread(_objectSpread({}, others), {}, {
|
59
54
|
value: (state === null || state === void 0 || (_state$value = state.value) === null || _state$value === void 0 ? void 0 : _state$value.toString()) || ''
|
60
55
|
})),
|
61
56
|
fieldContainerProps = _useField.fieldContainerProps,
|
62
57
|
fieldLabelProps = _useField.fieldLabelProps;
|
58
|
+
var _useStatusClasses = useStatusClasses(className, {
|
59
|
+
isDisabled: isDisabled,
|
60
|
+
isReadOnly: isReadOnly,
|
61
|
+
isInvalid: isInvalid,
|
62
|
+
is24Hour: props.hourCycle === 24
|
63
|
+
}),
|
64
|
+
classNames = _useStatusClasses.classNames;
|
63
65
|
return ___EmotionJSX(Box, _extends({
|
64
66
|
variant: "forms.input.fieldContainer"
|
65
67
|
}, fieldContainerProps, {
|
@@ -77,4 +77,19 @@ export var WithLabel = function WithLabel(args) {
|
|
77
77
|
label: "Lorem Ipsum",
|
78
78
|
"aria-label": "timefield-default"
|
79
79
|
}));
|
80
|
+
};
|
81
|
+
export var Invalid = function Invalid() {
|
82
|
+
var _useState3 = useState('02:30'),
|
83
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
84
|
+
time = _useState4[0],
|
85
|
+
setTime = _useState4[1];
|
86
|
+
var onChangeHandler = function onChangeHandler(value) {
|
87
|
+
return setTime(value.toString());
|
88
|
+
};
|
89
|
+
return ___EmotionJSX(TimeField, {
|
90
|
+
"aria-label": "timefield-default",
|
91
|
+
value: time,
|
92
|
+
onChange: onChangeHandler,
|
93
|
+
isInvalid: true
|
94
|
+
});
|
80
95
|
};
|
@@ -90,6 +90,15 @@ test('renders TimeField component with isReadOnly', function () {
|
|
90
90
|
expect(segment).toHaveAttribute('aria-readonly', 'true');
|
91
91
|
});
|
92
92
|
});
|
93
|
+
test('renders TimeField component with isInvalid', function () {
|
94
|
+
getComponent({
|
95
|
+
isInvalid: true
|
96
|
+
});
|
97
|
+
var timeSegments = screen.getAllByRole('spinbutton');
|
98
|
+
_forEachInstanceProperty(timeSegments).call(timeSegments, function (segment) {
|
99
|
+
expect(segment).toHaveAttribute('aria-invalid', 'true');
|
100
|
+
});
|
101
|
+
});
|
93
102
|
test('should handle autofocus when deleting segments from left to right', function () {
|
94
103
|
var defaultValue = new Time(12, 30);
|
95
104
|
getComponent({
|
package/lib/index.js
CHANGED
@@ -80,6 +80,7 @@ export { default as DatePicker } from './components/DatePicker';
|
|
80
80
|
export { default as DateField } from './components/DatePicker/DateField';
|
81
81
|
export { default as EditButton } from './components/EditButton';
|
82
82
|
export { default as EnvironmentBreadcrumb } from './components/EnvironmentBreadcrumb';
|
83
|
+
export { default as ExpandableText } from './components/ExpandableText';
|
83
84
|
export { default as FieldHelperText } from './components/FieldHelperText';
|
84
85
|
export * from './components/FieldHelperText';
|
85
86
|
export { default as FileInputField } from './components/FileInputField';
|
@@ -23,6 +23,7 @@ import collapsiblePanel from '../../components/CollapsiblePanel/CollapsiblePanel
|
|
23
23
|
import copyText from '../../components/CopyText/CopyText.styles';
|
24
24
|
import dataTable from '../../components/DataTable/DataTable.styles';
|
25
25
|
import environmentBreadcrumb from '../../components/EnvironmentBreadcrumb/EnvironmentalBreadcrumb.styles';
|
26
|
+
import expandableText from '../../components/ExpandableText/ExpandableText.styles';
|
26
27
|
import fieldHelperText from '../../components/FieldHelperText/FieldHelperText.styles';
|
27
28
|
import footer from '../../components/Footer/Footer.styles';
|
28
29
|
import gridList from '../../components/GridList/GridList.styles';
|
@@ -76,6 +77,7 @@ export default _objectSpread(_objectSpread({
|
|
76
77
|
copyText: copyText,
|
77
78
|
dataTable: dataTable,
|
78
79
|
environmentBreadcrumb: environmentBreadcrumb,
|
80
|
+
expandableText: expandableText,
|
79
81
|
fieldHelperText: fieldHelperText,
|
80
82
|
footer: footer,
|
81
83
|
gridList: gridList,
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
package/lib/types/index.js
CHANGED
@@ -15,6 +15,7 @@ export * from './colorField';
|
|
15
15
|
export * from './copyText';
|
16
16
|
export * from './dataTable';
|
17
17
|
export * from './environmentBreadcrumb';
|
18
|
+
export * from './expandableText';
|
18
19
|
export * from './fieldHelperText';
|
19
20
|
export * from './footer';
|
20
21
|
export * from './grid';
|