@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.
Files changed (41) hide show
  1. package/lib/cjs/components/ExpandableText/ExpandableText.d.ts +4 -0
  2. package/lib/cjs/components/ExpandableText/ExpandableText.js +136 -0
  3. package/lib/cjs/components/ExpandableText/ExpandableText.mdx +30 -0
  4. package/lib/cjs/components/ExpandableText/ExpandableText.stories.d.ts +5 -0
  5. package/lib/cjs/components/ExpandableText/ExpandableText.stories.js +33 -0
  6. package/lib/cjs/components/ExpandableText/ExpandableText.styles.d.ts +15 -0
  7. package/lib/cjs/components/ExpandableText/ExpandableText.styles.js +24 -0
  8. package/lib/cjs/components/ExpandableText/ExpandableText.test.d.ts +1 -0
  9. package/lib/cjs/components/ExpandableText/ExpandableText.test.js +115 -0
  10. package/lib/cjs/components/ExpandableText/index.d.ts +1 -0
  11. package/lib/cjs/components/ExpandableText/index.js +14 -0
  12. package/lib/cjs/components/Input/Input.styles.js +5 -0
  13. package/lib/cjs/components/TimeField/TimeField.js +9 -7
  14. package/lib/cjs/components/TimeField/TimeField.stories.d.ts +1 -0
  15. package/lib/cjs/components/TimeField/TimeField.stories.js +18 -2
  16. package/lib/cjs/components/TimeField/TimeField.styles.d.ts +3 -0
  17. package/lib/cjs/components/TimeField/TimeField.styles.js +3 -0
  18. package/lib/cjs/components/TimeField/TimeField.test.js +9 -0
  19. package/lib/cjs/index.d.ts +1 -0
  20. package/lib/cjs/index.js +8 -0
  21. package/lib/cjs/styles/variants/variants.js +2 -0
  22. package/lib/cjs/types/expandableText.d.ts +10 -0
  23. package/lib/cjs/types/expandableText.js +6 -0
  24. package/lib/cjs/types/index.d.ts +1 -0
  25. package/lib/cjs/types/index.js +55 -44
  26. package/lib/components/ExpandableText/ExpandableText.js +122 -0
  27. package/lib/components/ExpandableText/ExpandableText.mdx +30 -0
  28. package/lib/components/ExpandableText/ExpandableText.stories.js +23 -0
  29. package/lib/components/ExpandableText/ExpandableText.styles.js +16 -0
  30. package/lib/components/ExpandableText/ExpandableText.test.js +112 -0
  31. package/lib/components/ExpandableText/index.js +1 -0
  32. package/lib/components/Input/Input.styles.js +5 -0
  33. package/lib/components/TimeField/TimeField.js +9 -7
  34. package/lib/components/TimeField/TimeField.stories.js +15 -0
  35. package/lib/components/TimeField/TimeField.styles.js +3 -0
  36. package/lib/components/TimeField/TimeField.test.js +9 -0
  37. package/lib/index.js +1 -0
  38. package/lib/styles/variants/variants.js +2 -0
  39. package/lib/types/expandableText.js +1 -0
  40. package/lib/types/index.js +1 -0
  41. 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';
@@ -134,6 +134,11 @@ input.fieldControlWrapper = (_input$fieldControlWr = {
134
134
  opacity: 0.5
135
135
  }
136
136
  },
137
+ '&.is-invalid': {
138
+ '&:after': {
139
+ bg: 'critical.bright'
140
+ }
141
+ },
137
142
  '&.is-read-only': {
138
143
  '> input': {
139
144
  backgroundColor: 'accent.95',
@@ -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
  };
@@ -24,6 +24,9 @@ var inputField = _objectSpread(_objectSpread({}, input), {}, {
24
24
  },
25
25
  '&.is-24-hour': {
26
26
  minWidth: '0px'
27
+ },
28
+ '&.is-invalid': {
29
+ borderColor: 'critical.bright'
27
30
  }
28
31
  });
29
32
  var segment = {
@@ -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 {};
@@ -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';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pingux/astro",
3
- "version": "2.135.0-alpha.0",
3
+ "version": "2.135.0-alpha.2",
4
4
  "description": "React component library for Ping Identity's design system",
5
5
  "repository": {
6
6
  "type": "git",