@pareto-engineering/design-system 4.0.0-alpha.73 → 4.0.0-alpha.75

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 (46) hide show
  1. package/dist/cjs/a/DatePicker/DatePicker.js +162 -0
  2. package/dist/cjs/a/DatePicker/index.js +13 -0
  3. package/dist/cjs/a/DatePicker/styles.scss +380 -0
  4. package/dist/cjs/a/XMLEditor/XMLEditor.js +5 -0
  5. package/dist/cjs/a/index.js +8 -1
  6. package/dist/cjs/f/fields/SelectInput/SelectInput.js +33 -42
  7. package/dist/cjs/f/fields/SelectInput/common/Menu/Menu.js +83 -0
  8. package/dist/cjs/f/fields/SelectInput/common/Menu/index.js +13 -0
  9. package/dist/cjs/f/fields/SelectInput/common/Multiple/Multiple.js +244 -0
  10. package/dist/cjs/f/fields/SelectInput/common/Multiple/index.js +13 -0
  11. package/dist/cjs/f/fields/SelectInput/common/Single/Single.js +104 -0
  12. package/dist/cjs/f/fields/SelectInput/common/Single/index.js +13 -0
  13. package/dist/cjs/f/fields/SelectInput/common/index.js +26 -0
  14. package/dist/cjs/f/fields/SelectInput/styles.scss +149 -45
  15. package/dist/es/a/DatePicker/DatePicker.js +154 -0
  16. package/dist/es/a/DatePicker/index.js +2 -0
  17. package/dist/es/a/DatePicker/styles.scss +380 -0
  18. package/dist/es/a/XMLEditor/XMLEditor.js +5 -0
  19. package/dist/es/a/index.js +2 -1
  20. package/dist/es/f/fields/SelectInput/SelectInput.js +31 -42
  21. package/dist/es/f/fields/SelectInput/common/Menu/Menu.js +73 -0
  22. package/dist/es/f/fields/SelectInput/common/Menu/index.js +2 -0
  23. package/dist/es/f/fields/SelectInput/common/Multiple/Multiple.js +235 -0
  24. package/dist/es/f/fields/SelectInput/common/Multiple/index.js +2 -0
  25. package/dist/es/f/fields/SelectInput/common/Single/Single.js +96 -0
  26. package/dist/es/f/fields/SelectInput/common/Single/index.js +2 -0
  27. package/dist/es/f/fields/SelectInput/common/index.js +3 -0
  28. package/dist/es/f/fields/SelectInput/styles.scss +149 -45
  29. package/package.json +3 -2
  30. package/src/stories/a/DatePicker.stories.jsx +88 -0
  31. package/src/stories/f/SelectInput.stories.jsx +15 -0
  32. package/src/ui/a/DatePicker/DatePicker.jsx +201 -0
  33. package/src/ui/a/DatePicker/index.js +2 -0
  34. package/src/ui/a/DatePicker/styles.scss +380 -0
  35. package/src/ui/a/XMLEditor/XMLEditor.jsx +6 -0
  36. package/src/ui/a/index.js +1 -0
  37. package/src/ui/f/fields/SelectInput/SelectInput.jsx +34 -47
  38. package/src/ui/f/fields/SelectInput/common/Menu/Menu.jsx +103 -0
  39. package/src/ui/f/fields/SelectInput/common/Menu/index.js +2 -0
  40. package/src/ui/f/fields/SelectInput/common/Multiple/Multiple.jsx +288 -0
  41. package/src/ui/f/fields/SelectInput/common/Multiple/index.js +2 -0
  42. package/src/ui/f/fields/SelectInput/common/Single/Single.jsx +125 -0
  43. package/src/ui/f/fields/SelectInput/common/Single/index.js +2 -0
  44. package/src/ui/f/fields/SelectInput/common/index.js +3 -0
  45. package/src/ui/f/fields/SelectInput/styles.scss +149 -45
  46. package/tests/__snapshots__/Storyshots.test.js.snap +7559 -398
@@ -14,72 +14,176 @@ $hover-border: var(--theme-hover-input-border);
14
14
  $focus-border: var(--theme-focus-input-border);
15
15
  $default-background: var(--background-inputs);
16
16
  $disabled-background: var(--background-inputs-30);
17
+ $default-gap: var(--gap);
17
18
 
18
- .#{bem.$base}.select-input {
19
- display: flex;
20
- flex-direction: column;
21
-
22
- > .#{bem.$base}.form-label {
23
- margin-bottom: var(--gap);
24
- }
25
19
 
26
- .select-wrapper {
27
- background-color: $default-background;
28
- border: $default-border;
29
- border-radius: $default-input-border-radius;
20
+ .#{bem.$base}.select-input {
21
+ > .#{bem.$base}.single {
30
22
  display: flex;
31
23
  flex-direction: column;
32
- padding: $default-padding;
33
- padding-right: 0;
34
- position: relative;
35
24
 
36
- &:not(.disabled) {
37
- &:hover,
38
- &:active {
39
- border: $hover-border;
25
+ > .#{bem.$base}.form-label {
26
+ margin-bottom: var(--gap);
27
+ }
28
+
29
+ .select-wrapper {
30
+ background-color: $default-background;
31
+ border: $default-border;
32
+ border-radius: $default-input-border-radius;
33
+ display: flex;
34
+ flex-direction: column;
35
+ padding: $default-padding;
36
+ padding-right: 0;
37
+ position: relative;
38
+
39
+ &:not(.disabled) {
40
+ &:hover,
41
+ &:active {
42
+ border: $hover-border;
43
+ }
44
+
45
+ &:focus {
46
+ border: $focus-border;
47
+ }
40
48
  }
41
49
 
42
- &:focus {
43
- border: $focus-border;
50
+ &.disabled {
51
+ background: $disabled-background;
44
52
  }
45
- }
46
53
 
47
- &.disabled {
48
- background: $disabled-background;
54
+ &::placeholder {
55
+ color: var(--metadata);
56
+ }
57
+
58
+ &::after {
59
+ border-radius: $default-input-border-radius;
60
+ }
61
+
62
+ >.#{bem.$base}.loading-circle {
63
+ position: absolute;
64
+ right: $default-spacing-size;
65
+ top: 50%;
66
+ transform: translateY(-50%);
67
+ }
68
+
69
+ select {
70
+ appearance: none;
71
+ background-color: $default-background;
72
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAyMCAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDEuNUwxMCAxMC41TDEgMS41IiBzdHJva2U9IiM0QzRENTMiIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4=");
73
+ background-position: calc(100% - $default-spacing-size);
74
+ background-repeat: no-repeat;
75
+ background-size: $default-spacing-size;
76
+ padding-right: $default-spacing-size;
77
+
78
+ &.input {
79
+ border: none;
80
+ color: var(--y);
81
+ outline: none;
82
+ width: 100%;
83
+
84
+ /* stylelint-disable-next-line max-nesting-depth -- required */
85
+ &:disabled {
86
+ opacity: 0%;
87
+ }
88
+ }
89
+ }
49
90
  }
91
+ }
50
92
 
51
- &::placeholder {
52
- color: var(--metadata);
93
+ > .#{bem.$base}.multiple {
94
+ display: flex;
95
+ flex-direction: column;
96
+ outline: none;
97
+ position: relative;
98
+
99
+ > .#{bem.$base}.form-label {
100
+ margin-bottom: var(--gap);
53
101
  }
54
102
 
55
- &::after {
103
+
104
+ .#{bem.$base}.popover {
105
+ border: $default-border;
56
106
  border-radius: $default-input-border-radius;
57
- }
107
+ width: 100%;
108
+
109
+ >.menu {
110
+ list-style: none;
111
+ margin: 0;
112
+ outline: 0;
113
+ padding: 0;
114
+
115
+ /* stylelint-disable selector-max-compound-selectors -- required */
116
+ >.item {
117
+ border-radius: $default-input-border-radius;
118
+ padding: $default-padding;
119
+
120
+ /* stylelint-disable max-nesting-depth -- required */
121
+ > p {
122
+ margin: 0;
123
+ }
58
124
 
59
- >.#{bem.$base}.loading-circle {
60
- position: absolute;
61
- right: $default-spacing-size;
62
- top: 50%;
63
- transform: translateY(-50%);
125
+ &.#{bem.$modifier-active} {
126
+ background-color: var(--y);
127
+
128
+ > p {
129
+ color: var(--on-y);
130
+ }
131
+ }
132
+ }
133
+ }
64
134
  }
65
135
 
66
- select {
67
- appearance: none;
68
- background-color: $default-background;
69
- background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAyMCAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDEuNUwxMCAxMC41TDEgMS41IiBzdHJva2U9IiM0QzRENTMiIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4=");
70
- background-position: calc(100% - $default-spacing-size);
71
- background-repeat: no-repeat;
72
- background-size: $default-spacing-size;
73
- padding-right: $default-spacing-size;
74
-
75
- &.input {
76
- border: none;
77
- color: var(--y);
136
+
137
+ > .input-container {
138
+ position: relative;
139
+
140
+ > .input {
141
+ background: $default-background;
142
+ border: $default-border;
143
+ border-radius: calc(var(--theme-default-border-radius) / 2);
144
+ color: var(--paragraph);
78
145
  outline: none;
146
+ padding: $default-padding;
79
147
  width: 100%;
80
148
 
149
+ &::placeholder {
150
+ color: var(--metadata);
151
+ }
152
+
81
153
  &:disabled {
82
- opacity: 0%;
154
+ background-color: $disabled-background;
155
+ color: var(--paragraph);
156
+ }
157
+
158
+ &:not(:disabled) {
159
+ &:hover,
160
+ &:active {
161
+ border: $hover-border;
162
+ }
163
+
164
+ &:focus {
165
+ border: $focus-border;
166
+ }
167
+ }
168
+ }
169
+ }
170
+
171
+
172
+ >.selected-items {
173
+ display: flex;
174
+ flex-wrap: wrap;
175
+ gap: calc($default-gap / 2);
176
+ margin-bottom: calc($default-gap / 2);
177
+
178
+ >.item {
179
+ >.#{bem.$base}.button {
180
+ align-items: center;
181
+ display: flex;
182
+ gap: calc($default-gap / 2);
183
+ }
184
+
185
+ .close {
186
+ font-size: calc(var(--s-3) * 1em);
83
187
  }
84
188
  }
85
189
  }
@@ -0,0 +1,154 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+ /* @pareto-engineering/generator-front 1.0.12 */
3
+ import * as React from 'react';
4
+ import { DayPicker } from 'react-day-picker';
5
+ import { format } from 'date-fns';
6
+ import PropTypes from 'prop-types';
7
+ import styleNames from '@pareto-engineering/bem/exports';
8
+ import "./styles.scss";
9
+
10
+ // Local Definitions
11
+
12
+ const baseClassName = styleNames.base;
13
+ const componentClassName = 'date-picker';
14
+
15
+ /**
16
+ * This is the component description.
17
+ */
18
+ const DatePickerWrapper = ({
19
+ id,
20
+ className: userClassName,
21
+ style,
22
+ mode,
23
+ selected,
24
+ setSelection,
25
+ fromMonth,
26
+ toDate,
27
+ customFooter,
28
+ timeFrom,
29
+ setTimeFrom,
30
+ timeTo,
31
+ setTimeTo,
32
+ dateFormat,
33
+ showDebugger,
34
+ ...otherProps
35
+ }) => {
36
+ const convertFooterText = selection => {
37
+ if (mode === 'single') {
38
+ return format(selection, dateFormat);
39
+ }
40
+ if (mode === 'multiple') {
41
+ return selection.map(date => format(date, dateFormat)).join(', ');
42
+ }
43
+ if (mode === 'range') {
44
+ return selection.from && selection.to ? `${format(selection.from, dateFormat)} - ${format(selection.to, dateFormat)}` : 'Please pick an additional day.';
45
+ }
46
+ return null;
47
+ };
48
+ return /*#__PURE__*/React.createElement("div", {
49
+ id: id,
50
+ className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
51
+ style: style
52
+ }, /*#__PURE__*/React.createElement(DayPicker, _extends({
53
+ mode: mode,
54
+ selected: selected,
55
+ onSelect: setSelection,
56
+ fromMonth: fromMonth,
57
+ toDate: toDate,
58
+ showOutsideDays: true,
59
+ footer: customFooter || /*#__PURE__*/React.createElement("div", {
60
+ className: "default-footer"
61
+ }, timeFrom && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("p", {
62
+ className: "time-label s-1"
63
+ }, /*#__PURE__*/React.createElement("span", {
64
+ className: "icon"
65
+ }, "C"), "\xA0 Time"), /*#__PURE__*/React.createElement("div", {
66
+ className: `time-inputs${timeTo ? ' multiple' : ''}`
67
+ }, /*#__PURE__*/React.createElement("input", {
68
+ className: "s-1",
69
+ type: "time",
70
+ value: timeFrom,
71
+ onChange: e => setTimeFrom(e.target.value)
72
+ }), timeTo && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
73
+ className: "icon s-2"
74
+ }, "r"), /*#__PURE__*/React.createElement("input", {
75
+ className: "s-1",
76
+ type: "time",
77
+ value: timeTo,
78
+ onChange: e => setTimeTo(e.target.value)
79
+ })))), /*#__PURE__*/React.createElement("p", {
80
+ className: "s-1 footer-text"
81
+ }, selected && convertFooterText(selected)))
82
+ }, otherProps)), showDebugger && /*#__PURE__*/React.createElement("div", {
83
+ className: "debugger"
84
+ }, /*#__PURE__*/React.createElement("pre", null, JSON.stringify(selected, null, 2))));
85
+ };
86
+ DatePickerWrapper.propTypes = {
87
+ /**
88
+ * The HTML id for this element
89
+ */
90
+ id: PropTypes.string,
91
+ /**
92
+ * The HTML class names for this element
93
+ */
94
+ className: PropTypes.string,
95
+ /**
96
+ * The React-written, css properties for this element.
97
+ */
98
+ style: PropTypes.objectOf(PropTypes.string),
99
+ /**
100
+ * The mode for this date picker.
101
+ */
102
+ mode: PropTypes.oneOf(['single', 'multiple', 'range']),
103
+ /**
104
+ * The current selection.
105
+ */
106
+ // eslint-disable-next-line react/forbid-prop-types
107
+ selected: PropTypes.objectOf(PropTypes.any).isRequired,
108
+ /**
109
+ * The function to update the selection.
110
+ */
111
+ setSelection: PropTypes.func.isRequired,
112
+ /**
113
+ * The earliest month to display.
114
+ */
115
+ fromMonth: PropTypes.instanceOf(Date),
116
+ /**
117
+ * The latest month to display.
118
+ */
119
+ toDate: PropTypes.instanceOf(Date),
120
+ /**
121
+ * Custom footer component.
122
+ */
123
+ customFooter: PropTypes.node,
124
+ /**
125
+ * The start time.
126
+ */
127
+ timeFrom: PropTypes.string,
128
+ /**
129
+ * The function to update the start time.
130
+ */
131
+ setTimeFrom: PropTypes.func,
132
+ /**
133
+ * The end time.
134
+ */
135
+ timeTo: PropTypes.string,
136
+ /**
137
+ * The function to update the end time.
138
+ */
139
+ setTimeTo: PropTypes.func,
140
+ /**
141
+ * The date format.
142
+ */
143
+ dateFormat: PropTypes.string,
144
+ /**
145
+ * Show the debugger.
146
+ */
147
+ showDebugger: PropTypes.bool
148
+ };
149
+ DatePickerWrapper.defaultProps = {
150
+ mode: 'single',
151
+ dateFormat: 'PPP',
152
+ showDebugger: false
153
+ };
154
+ export default DatePickerWrapper;
@@ -0,0 +1,2 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ export { default as DatePicker } from "./DatePicker";