@pareto-engineering/design-system 4.0.0-alpha.61 → 4.0.0-alpha.63

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 (198) hide show
  1. package/dist/cjs/a/TextSteps/TextSteps.js +4 -4
  2. package/dist/cjs/a/TextSteps/styles.scss +1 -1
  3. package/dist/cjs/f/FormInput/FormInput.js +43 -13
  4. package/dist/cjs/f/common/V2/Description/Description.js +76 -0
  5. package/dist/cjs/f/common/V2/Description/index.js +13 -0
  6. package/dist/cjs/f/common/V2/Description/styles.scss +10 -0
  7. package/dist/cjs/f/common/V2/Label/Label.js +84 -0
  8. package/dist/cjs/f/common/V2/Label/index.js +13 -0
  9. package/dist/cjs/f/common/V2/Label/styles.scss +9 -0
  10. package/dist/cjs/f/common/V2/index.js +19 -0
  11. package/dist/cjs/f/common/index.js +12 -0
  12. package/dist/cjs/f/fields/V2/Checkbox/Checkbox.js +122 -0
  13. package/dist/cjs/f/fields/V2/Checkbox/index.js +13 -0
  14. package/dist/cjs/f/fields/V2/Checkbox/styles.scss +16 -0
  15. package/dist/cjs/f/fields/V2/ChoicesInput/ChoicesInput.js +154 -0
  16. package/dist/cjs/f/fields/V2/ChoicesInput/common/Choice/Choice.js +104 -0
  17. package/dist/cjs/f/fields/V2/ChoicesInput/common/Choice/index.js +13 -0
  18. package/dist/cjs/f/fields/V2/ChoicesInput/common/index.js +12 -0
  19. package/dist/cjs/f/fields/V2/ChoicesInput/index.js +13 -0
  20. package/dist/cjs/f/fields/V2/ChoicesInput/styles.scss +79 -0
  21. package/dist/cjs/f/fields/V2/EditorInput/EditorInput.js +197 -0
  22. package/dist/cjs/f/fields/V2/EditorInput/common/Toolbar.js +257 -0
  23. package/dist/cjs/f/fields/V2/EditorInput/common/TreeViewPlugin.js +18 -0
  24. package/dist/cjs/f/fields/V2/EditorInput/common/index.js +20 -0
  25. package/dist/cjs/f/fields/V2/EditorInput/index.js +13 -0
  26. package/dist/cjs/f/fields/V2/EditorInput/styles.scss +149 -0
  27. package/dist/cjs/f/fields/V2/LinkInput/LinkInput.js +156 -0
  28. package/dist/cjs/f/fields/V2/LinkInput/index.js +13 -0
  29. package/dist/cjs/f/fields/V2/LinkInput/styles.scss +90 -0
  30. package/dist/cjs/f/fields/V2/QueryChoices/QueryChoices.js +137 -0
  31. package/dist/cjs/f/fields/V2/QueryChoices/index.js +13 -0
  32. package/dist/cjs/f/fields/V2/QueryCombobox/QueryCombobox.js +229 -0
  33. package/dist/cjs/f/fields/V2/QueryCombobox/common/Combobox/Combobox.js +236 -0
  34. package/dist/cjs/f/fields/V2/QueryCombobox/common/Combobox/index.js +13 -0
  35. package/dist/cjs/f/fields/V2/QueryCombobox/common/Menu/Menu.js +83 -0
  36. package/dist/cjs/f/fields/V2/QueryCombobox/common/Menu/index.js +13 -0
  37. package/dist/cjs/f/fields/V2/QueryCombobox/common/MultipleCombobox/MultipleCombobox.js +300 -0
  38. package/dist/cjs/f/fields/V2/QueryCombobox/common/MultipleCombobox/index.js +13 -0
  39. package/dist/cjs/f/fields/V2/QueryCombobox/common/index.js +26 -0
  40. package/dist/cjs/f/fields/V2/QueryCombobox/index.js +13 -0
  41. package/dist/cjs/f/fields/V2/QueryCombobox/styles.scss +127 -0
  42. package/dist/cjs/f/fields/V2/QuerySelect/QuerySelect.js +198 -0
  43. package/dist/cjs/f/fields/V2/QuerySelect/index.js +13 -0
  44. package/dist/cjs/f/fields/V2/RatingsInput/RatingsInput.js +130 -0
  45. package/dist/cjs/f/fields/V2/RatingsInput/common/Rating/Rating.js +117 -0
  46. package/dist/cjs/f/fields/V2/RatingsInput/common/Rating/index.js +13 -0
  47. package/dist/cjs/f/fields/V2/RatingsInput/common/index.js +12 -0
  48. package/dist/cjs/f/fields/V2/RatingsInput/index.js +13 -0
  49. package/dist/cjs/f/fields/V2/RatingsInput/styles.scss +48 -0
  50. package/dist/cjs/f/fields/V2/SelectInput/SelectInput.js +154 -0
  51. package/dist/cjs/f/fields/V2/SelectInput/index.js +13 -0
  52. package/dist/cjs/f/fields/V2/SelectInput/styles.scss +87 -0
  53. package/dist/cjs/f/fields/V2/TextInput/TextInput.js +155 -0
  54. package/dist/cjs/f/fields/V2/TextInput/index.js +13 -0
  55. package/dist/cjs/f/fields/V2/TextInput/styles.scss +78 -0
  56. package/dist/cjs/f/fields/V2/TextareaInput/TextareaInput.js +152 -0
  57. package/dist/cjs/f/fields/V2/TextareaInput/index.js +13 -0
  58. package/dist/cjs/f/fields/V2/TextareaInput/styles.scss +53 -0
  59. package/dist/cjs/f/fields/V2/index.js +82 -0
  60. package/dist/cjs/f/fields/index.js +26 -1
  61. package/dist/es/a/TextSteps/TextSteps.js +4 -4
  62. package/dist/es/a/TextSteps/styles.scss +1 -1
  63. package/dist/es/f/FormInput/FormInput.js +33 -3
  64. package/dist/es/f/common/V2/Description/Description.js +68 -0
  65. package/dist/es/f/common/V2/Description/index.js +2 -0
  66. package/dist/es/f/common/V2/Description/styles.scss +10 -0
  67. package/dist/es/f/common/V2/Label/Label.js +76 -0
  68. package/dist/es/f/common/V2/Label/index.js +2 -0
  69. package/dist/es/f/common/V2/Label/styles.scss +9 -0
  70. package/dist/es/f/common/V2/index.js +2 -0
  71. package/dist/es/f/common/index.js +2 -1
  72. package/dist/es/f/fields/V2/Checkbox/Checkbox.js +114 -0
  73. package/dist/es/f/fields/V2/Checkbox/index.js +2 -0
  74. package/dist/es/f/fields/V2/Checkbox/styles.scss +16 -0
  75. package/dist/es/f/fields/V2/ChoicesInput/ChoicesInput.js +148 -0
  76. package/dist/es/f/fields/V2/ChoicesInput/common/Choice/Choice.js +97 -0
  77. package/dist/es/f/fields/V2/ChoicesInput/common/Choice/index.js +2 -0
  78. package/dist/es/f/fields/V2/ChoicesInput/common/index.js +1 -0
  79. package/dist/es/f/fields/V2/ChoicesInput/index.js +2 -0
  80. package/dist/es/f/fields/V2/ChoicesInput/styles.scss +79 -0
  81. package/dist/es/f/fields/V2/EditorInput/EditorInput.js +192 -0
  82. package/dist/es/f/fields/V2/EditorInput/common/Toolbar.js +246 -0
  83. package/dist/es/f/fields/V2/EditorInput/common/TreeViewPlugin.js +11 -0
  84. package/dist/es/f/fields/V2/EditorInput/common/index.js +2 -0
  85. package/dist/es/f/fields/V2/EditorInput/index.js +2 -0
  86. package/dist/es/f/fields/V2/EditorInput/styles.scss +149 -0
  87. package/dist/es/f/fields/V2/LinkInput/LinkInput.js +148 -0
  88. package/dist/es/f/fields/V2/LinkInput/index.js +2 -0
  89. package/dist/es/f/fields/V2/LinkInput/styles.scss +90 -0
  90. package/dist/es/f/fields/V2/QueryChoices/QueryChoices.js +126 -0
  91. package/dist/es/f/fields/V2/QueryChoices/index.js +2 -0
  92. package/dist/es/f/fields/V2/QueryCombobox/QueryCombobox.js +221 -0
  93. package/dist/es/f/fields/V2/QueryCombobox/common/Combobox/Combobox.js +229 -0
  94. package/dist/es/f/fields/V2/QueryCombobox/common/Combobox/index.js +2 -0
  95. package/dist/es/f/fields/V2/QueryCombobox/common/Menu/Menu.js +73 -0
  96. package/dist/es/f/fields/V2/QueryCombobox/common/Menu/index.js +2 -0
  97. package/dist/es/f/fields/V2/QueryCombobox/common/MultipleCombobox/MultipleCombobox.js +293 -0
  98. package/dist/es/f/fields/V2/QueryCombobox/common/MultipleCombobox/index.js +2 -0
  99. package/dist/es/f/fields/V2/QueryCombobox/common/index.js +3 -0
  100. package/dist/es/f/fields/V2/QueryCombobox/index.js +2 -0
  101. package/dist/es/f/fields/V2/QueryCombobox/styles.scss +127 -0
  102. package/dist/es/f/fields/V2/QuerySelect/QuerySelect.js +186 -0
  103. package/dist/es/f/fields/V2/QuerySelect/index.js +2 -0
  104. package/dist/es/f/fields/V2/RatingsInput/RatingsInput.js +124 -0
  105. package/dist/es/f/fields/V2/RatingsInput/common/Rating/Rating.js +109 -0
  106. package/dist/es/f/fields/V2/RatingsInput/common/Rating/index.js +2 -0
  107. package/dist/es/f/fields/V2/RatingsInput/common/index.js +1 -0
  108. package/dist/es/f/fields/V2/RatingsInput/index.js +2 -0
  109. package/dist/es/f/fields/V2/RatingsInput/styles.scss +48 -0
  110. package/dist/es/f/fields/V2/SelectInput/SelectInput.js +146 -0
  111. package/dist/es/f/fields/V2/SelectInput/index.js +2 -0
  112. package/dist/es/f/fields/V2/SelectInput/styles.scss +87 -0
  113. package/dist/es/f/fields/V2/TextInput/TextInput.js +147 -0
  114. package/dist/es/f/fields/V2/TextInput/index.js +2 -0
  115. package/dist/es/f/fields/V2/TextInput/styles.scss +78 -0
  116. package/dist/es/f/fields/V2/TextareaInput/TextareaInput.js +146 -0
  117. package/dist/es/f/fields/V2/TextareaInput/index.js +2 -0
  118. package/dist/es/f/fields/V2/TextareaInput/styles.scss +53 -0
  119. package/dist/es/f/fields/V2/index.js +11 -0
  120. package/dist/es/f/fields/index.js +2 -1
  121. package/package.json +3 -3
  122. package/src/stories/f/v2/Checkbox.stories.jsx +102 -0
  123. package/src/stories/f/v2/ChoicesInput.stories.jsx +139 -0
  124. package/src/stories/f/v2/EditorInput.stories.jsx +81 -0
  125. package/src/stories/f/v2/LinkInput.stories.jsx +93 -0
  126. package/src/stories/f/v2/QueryChoices.stories.jsx +144 -0
  127. package/src/stories/f/v2/QueryCombobox.stories.jsx +301 -0
  128. package/src/stories/f/v2/QuerySelect.stories.jsx +150 -0
  129. package/src/stories/f/v2/RatingsInput.stories.jsx +77 -0
  130. package/src/stories/f/v2/SelectInput.stories.jsx +95 -0
  131. package/src/stories/f/v2/TextInput.stories.jsx +120 -0
  132. package/src/stories/f/v2/TextareaInput.stories.jsx +107 -0
  133. package/src/stories/f/v2/__generated__/FormInputAllTaskStatusesQuery.graphql.js +122 -0
  134. package/src/stories/f/v2/__generated__/FormInputAllTeamsQuery.graphql.js +139 -0
  135. package/src/stories/f/v2/__generated__/QueryChoicesAllTaskStatusesQuery.graphql.js +122 -0
  136. package/src/stories/f/v2/__generated__/QueryComboboxAllTeamsQuery.graphql.js +139 -0
  137. package/src/stories/f/v2/__generated__/QuerySelectAllTaskStatusesQuery.graphql.js +122 -0
  138. package/src/ui/a/TextSteps/TextSteps.jsx +4 -4
  139. package/src/ui/a/TextSteps/styles.scss +1 -1
  140. package/src/ui/f/FormInput/FormInput.jsx +57 -12
  141. package/src/ui/f/common/V2/Description/Description.jsx +94 -0
  142. package/src/ui/f/common/V2/Description/index.js +2 -0
  143. package/src/ui/f/common/V2/Description/styles.scss +10 -0
  144. package/src/ui/f/common/V2/Label/Label.jsx +102 -0
  145. package/src/ui/f/common/V2/Label/index.js +2 -0
  146. package/src/ui/f/common/V2/Label/styles.scss +9 -0
  147. package/src/ui/f/common/V2/index.js +2 -0
  148. package/src/ui/f/common/index.js +1 -0
  149. package/src/ui/f/fields/V2/Checkbox/Checkbox.jsx +146 -0
  150. package/src/ui/f/fields/V2/Checkbox/index.js +2 -0
  151. package/src/ui/f/fields/V2/Checkbox/styles.scss +16 -0
  152. package/src/ui/f/fields/V2/ChoicesInput/ChoicesInput.jsx +183 -0
  153. package/src/ui/f/fields/V2/ChoicesInput/common/Choice/Choice.jsx +125 -0
  154. package/src/ui/f/fields/V2/ChoicesInput/common/Choice/index.js +2 -0
  155. package/src/ui/f/fields/V2/ChoicesInput/common/index.js +1 -0
  156. package/src/ui/f/fields/V2/ChoicesInput/index.js +2 -0
  157. package/src/ui/f/fields/V2/ChoicesInput/styles.scss +79 -0
  158. package/src/ui/f/fields/V2/EditorInput/EditorInput.jsx +244 -0
  159. package/src/ui/f/fields/V2/EditorInput/common/Toolbar.jsx +356 -0
  160. package/src/ui/f/fields/V2/EditorInput/common/TreeViewPlugin.jsx +16 -0
  161. package/src/ui/f/fields/V2/EditorInput/common/index.jsx +2 -0
  162. package/src/ui/f/fields/V2/EditorInput/index.js +2 -0
  163. package/src/ui/f/fields/V2/EditorInput/styles.scss +149 -0
  164. package/src/ui/f/fields/V2/LinkInput/LinkInput.jsx +187 -0
  165. package/src/ui/f/fields/V2/LinkInput/index.js +2 -0
  166. package/src/ui/f/fields/V2/LinkInput/styles.scss +90 -0
  167. package/src/ui/f/fields/V2/QueryChoices/QueryChoices.jsx +153 -0
  168. package/src/ui/f/fields/V2/QueryChoices/index.js +2 -0
  169. package/src/ui/f/fields/V2/QueryCombobox/QueryCombobox.jsx +254 -0
  170. package/src/ui/f/fields/V2/QueryCombobox/common/Combobox/Combobox.jsx +276 -0
  171. package/src/ui/f/fields/V2/QueryCombobox/common/Combobox/index.js +2 -0
  172. package/src/ui/f/fields/V2/QueryCombobox/common/Menu/Menu.jsx +103 -0
  173. package/src/ui/f/fields/V2/QueryCombobox/common/Menu/index.js +2 -0
  174. package/src/ui/f/fields/V2/QueryCombobox/common/MultipleCombobox/MultipleCombobox.jsx +362 -0
  175. package/src/ui/f/fields/V2/QueryCombobox/common/MultipleCombobox/index.js +2 -0
  176. package/src/ui/f/fields/V2/QueryCombobox/common/index.js +3 -0
  177. package/src/ui/f/fields/V2/QueryCombobox/index.js +2 -0
  178. package/src/ui/f/fields/V2/QueryCombobox/styles.scss +127 -0
  179. package/src/ui/f/fields/V2/QuerySelect/QuerySelect.jsx +220 -0
  180. package/src/ui/f/fields/V2/QuerySelect/index.js +2 -0
  181. package/src/ui/f/fields/V2/RatingsInput/RatingsInput.jsx +152 -0
  182. package/src/ui/f/fields/V2/RatingsInput/common/Rating/Rating.jsx +142 -0
  183. package/src/ui/f/fields/V2/RatingsInput/common/Rating/index.js +2 -0
  184. package/src/ui/f/fields/V2/RatingsInput/common/index.js +1 -0
  185. package/src/ui/f/fields/V2/RatingsInput/index.js +2 -0
  186. package/src/ui/f/fields/V2/RatingsInput/styles.scss +48 -0
  187. package/src/ui/f/fields/V2/SelectInput/SelectInput.jsx +187 -0
  188. package/src/ui/f/fields/V2/SelectInput/index.js +2 -0
  189. package/src/ui/f/fields/V2/SelectInput/styles.scss +87 -0
  190. package/src/ui/f/fields/V2/TextInput/TextInput.jsx +192 -0
  191. package/src/ui/f/fields/V2/TextInput/index.js +2 -0
  192. package/src/ui/f/fields/V2/TextInput/styles.scss +78 -0
  193. package/src/ui/f/fields/V2/TextareaInput/TextareaInput.jsx +180 -0
  194. package/src/ui/f/fields/V2/TextareaInput/index.js +2 -0
  195. package/src/ui/f/fields/V2/TextareaInput/styles.scss +53 -0
  196. package/src/ui/f/fields/V2/index.js +11 -0
  197. package/src/ui/f/fields/index.js +1 -0
  198. package/tests/__snapshots__/Storyshots.test.js.snap +5910 -1
@@ -0,0 +1,149 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+
3
+ @use "@pareto-engineering/bem";
4
+ @use "@pareto-engineering/styles/src/mixins";
5
+ @use "@pareto-engineering/styles/src/globals" as *;
6
+
7
+ $default-gap: calc(var(--gap) / 2);
8
+ $default-padding: .55em .75em;
9
+ $default-border: 1px solid var(--outline-inputs);
10
+ $default-input-border-radius: var(--theme-default-input-border-radius);
11
+ $default-border: var(--theme-default-input-border);
12
+ $focus-border: var(--theme-focus-input-border);
13
+ $active-background: var(--hard-background-inputs);
14
+ $default-background: var(--background-inputs);
15
+ $default-icon-color: var(--on-background-inputs);
16
+ $disabled-background: var(--background-inputs-30);
17
+ $default-color-menu-padding: .5em .25em;
18
+
19
+ .#{bem.$base}.editor-input {
20
+ display: flex;
21
+ flex-direction: column;
22
+
23
+ > .#{bem.$base}.form-label {
24
+ margin-bottom: var(--gap);
25
+ }
26
+
27
+ > .#{bem.$base}.toolbar {
28
+ display: flex;
29
+ gap: $default-gap;
30
+ margin-bottom: .25em;
31
+
32
+ > .group {
33
+ > button {
34
+ background: $default-background;
35
+ border: $default-border;
36
+ color: $default-icon-color;
37
+ padding: $default-padding;
38
+
39
+ &.active {
40
+ background-color: $active-background;
41
+ }
42
+ }
43
+ }
44
+
45
+ .flip {
46
+ transform: scaleX(-1);
47
+ }
48
+ }
49
+
50
+ &:not(.disabled) {
51
+ &:hover,
52
+ &:focus,
53
+ &:active {
54
+ > .textarea {
55
+ border: $focus-border;
56
+ }
57
+ }
58
+ }
59
+
60
+ &.disabled {
61
+ > .textarea {
62
+ background: $disabled-background;
63
+ color: var(--metadata);
64
+ cursor: not-allowed;
65
+ }
66
+ }
67
+
68
+ .color-menu-button {
69
+ &:hover {
70
+ > .#{bem.$base}.popover {
71
+ display: block;
72
+ }
73
+ }
74
+
75
+ > .#{bem.$base}.popover {
76
+ padding: $default-color-menu-padding;
77
+
78
+ .color-menu {
79
+ display: flex;
80
+ flex-wrap: wrap;
81
+ gap: calc($default-gap / 2);
82
+ justify-content: center;
83
+ max-width: 10em;
84
+ min-width: 5em;
85
+ }
86
+
87
+ .color-option:hover {
88
+ opacity: .5;
89
+ }
90
+ }
91
+ }
92
+
93
+ > .content-editable {
94
+ background: $default-background;
95
+ border: $default-border;
96
+ border-radius: $default-input-border-radius;
97
+ color: var(--y);
98
+ height: var(--rows);
99
+ outline: none;
100
+ overflow: auto;
101
+ padding: $default-padding;
102
+ resize: var(--resize);
103
+ width: 100%;
104
+
105
+ li:has(ol, ul) {
106
+ list-style-type: none;
107
+ }
108
+
109
+ p,
110
+ span,
111
+ strong,
112
+ em,
113
+ li {
114
+ &.underlined {
115
+ text-decoration: underline;
116
+
117
+ &.strikethrough {
118
+ text-decoration: underline line-through;
119
+ }
120
+ }
121
+
122
+ &.strikethrough {
123
+ text-decoration: line-through;
124
+ }
125
+
126
+ &.italic {
127
+ font-style: italic;
128
+ }
129
+ }
130
+
131
+ :first-child {
132
+ margin-top: 0;
133
+ }
134
+
135
+ &::placeholder {
136
+ color: var(--metadata);
137
+ }
138
+ }
139
+
140
+
141
+ > .tree-view-output {
142
+ background: $default-background;
143
+ border: $default-border;
144
+ border-radius: $default-input-border-radius;
145
+ max-height: 20em;
146
+ overflow: auto;
147
+ padding: $default-padding;
148
+ }
149
+ }
@@ -0,0 +1,187 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ import * as React from 'react'
3
+
4
+ import { useInsertionEffect, memo } from 'react'
5
+
6
+ import PropTypes from 'prop-types'
7
+
8
+ import styleNames from '@pareto-engineering/bem/exports'
9
+
10
+ import { useField } from 'formik'
11
+
12
+ import { FormLabelV2, FormDescriptionV2 } from '../../../common'
13
+
14
+ // Local Definitions
15
+
16
+ const baseClassName = styleNames.base
17
+
18
+ const componentClassName = 'link-input'
19
+
20
+ /**
21
+ * This is the component description.
22
+ */
23
+ const LinkInput = ({
24
+ id,
25
+ className:userClassName,
26
+ style,
27
+ name,
28
+ label,
29
+ color,
30
+ labelColor,
31
+ validate,
32
+ description,
33
+ disabled,
34
+ placeholder,
35
+ optional,
36
+ autoComplete,
37
+ // ...otherProps
38
+ }) => {
39
+ useInsertionEffect(() => {
40
+ import('./styles.scss')
41
+ }, [])
42
+
43
+ const [field] = useField({ name, validate })
44
+
45
+ return (
46
+ <div
47
+ id={id}
48
+ className={[
49
+ baseClassName,
50
+ componentClassName,
51
+ userClassName,
52
+ `y-${color}`,
53
+ ]
54
+ .filter((e) => e)
55
+ .join(' ')}
56
+ style={style}
57
+ >
58
+ <FormLabelV2
59
+ name={name}
60
+ color={labelColor}
61
+ optional={optional}
62
+ // {...otherProps}
63
+ >
64
+ {label}
65
+ </FormLabelV2>
66
+ <div className="input-link-wrapper">
67
+ <input
68
+ id={name}
69
+ className="input"
70
+ type="text"
71
+ disabled={disabled}
72
+ placeholder={placeholder}
73
+ autoComplete={autoComplete}
74
+ {...field}
75
+ />
76
+ <a
77
+ href={field.value}
78
+ target="_blank"
79
+ rel="noopener noreferrer"
80
+ >
81
+ &#8594;
82
+ </a>
83
+ </div>
84
+ <FormDescriptionV2 className="s-1" description={description} name={name} />
85
+ </div>
86
+ )
87
+ }
88
+
89
+ LinkInput.propTypes = {
90
+ /**
91
+ * The HTML id for this element
92
+ */
93
+ id:PropTypes.string,
94
+
95
+ /**
96
+ * The HTML class names for this element
97
+ */
98
+ className:PropTypes.string,
99
+
100
+ /**
101
+ * The React-written, css properties for this element.
102
+ */
103
+ style:PropTypes.objectOf(PropTypes.string),
104
+
105
+ /**
106
+ * The input name (html - and Formik state)
107
+ */
108
+ name:PropTypes.string.isRequired,
109
+
110
+ /**
111
+ * The input label
112
+ */
113
+ label:PropTypes.string.isRequired,
114
+
115
+ /**
116
+ * The input label color
117
+ */
118
+ labelColor:PropTypes.string,
119
+
120
+ /**
121
+ * The input field validator function
122
+ */
123
+ validate:PropTypes.func,
124
+
125
+ /**
126
+ * If the slide will only have one input
127
+ */
128
+ oneInputLabel:PropTypes.bool,
129
+
130
+ /**
131
+ * Input description
132
+ */
133
+ description:PropTypes.string,
134
+
135
+ /**
136
+ * Whether the text input should be disabled
137
+ */
138
+ disabled:PropTypes.bool,
139
+
140
+ /**
141
+ * The placeholder text for the input
142
+ */
143
+ placeholder:PropTypes.string,
144
+
145
+ /**
146
+ * The text input color
147
+ */
148
+ color:PropTypes.string,
149
+
150
+ /**
151
+ * Whether the input is optional or not
152
+ */
153
+ optional:PropTypes.bool,
154
+
155
+ /**
156
+ * The autoComplete value that the browser should watch for the input
157
+ * `https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete`
158
+ */
159
+ autoComplete:PropTypes.string,
160
+
161
+ /**
162
+ * The number of columns the label should span
163
+ */
164
+ labelSpan:PropTypes.number,
165
+
166
+ /**
167
+ * The number of columns the input should span
168
+ */
169
+ inputSpan:PropTypes.number,
170
+
171
+ /**
172
+ * The number of columns the label should span on desktop
173
+ */
174
+ desktopLabelSpan:PropTypes.number,
175
+
176
+ /**
177
+ * The number of columns the input should span on desktop
178
+ */
179
+ desktopInputSpan:PropTypes.number,
180
+ }
181
+
182
+ LinkInput.defaultProps = {
183
+ color :'paragraph',
184
+ disabled:false,
185
+ }
186
+
187
+ export default memo(LinkInput)
@@ -0,0 +1,2 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ export { default as LinkInput } from './LinkInput'
@@ -0,0 +1,90 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+
3
+ @use "@pareto-engineering/bem";
4
+ @use "@pareto-engineering/styles/src/mixins";
5
+ @use "@pareto-engineering/styles/src/globals" as *;
6
+
7
+ $default-padding: .55em .75em;
8
+ $default-symbol-left: 1em;
9
+ $default-padding-with-symbol:
10
+ .55em
11
+ calc($default-symbol-left - 1em)
12
+ .55em
13
+ calc($default-symbol-left + 1em);
14
+ $default-input-border-radius: var(--theme-default-input-border-radius);
15
+ $default-border: var(--theme-default-input-border);
16
+ $hover-border: var(--theme-hover-input-border);
17
+ $focus-border: var(--theme-focus-input-border);
18
+ $default-background: var(--background-inputs);
19
+ $disabled-background: var(--background-inputs-30);
20
+
21
+ .#{bem.$base}.link-input {
22
+ display: flex;
23
+ flex-direction: column;
24
+ position: relative;
25
+
26
+ > .#{bem.$base}.form-label {
27
+ margin-bottom: var(--gap);
28
+ }
29
+
30
+ &.has-symbol {
31
+ &::before {
32
+ color: var(--y);
33
+ content: var(--symbol);
34
+ left: $default-symbol-left;
35
+ position: absolute;
36
+ top: 50%;
37
+ transform: translate(-50%, -50%);
38
+ }
39
+
40
+ input {
41
+ padding: $default-padding-with-symbol;
42
+ }
43
+ }
44
+
45
+ > .input-link-wrapper {
46
+ display: flex;
47
+ gap: calc(var(--gap) / 2);
48
+
49
+ > a {
50
+ align-self: center;
51
+ border: 1px solid var(--interactive);
52
+ border-radius: var(--theme-default-input-border-radius);
53
+ padding: .5em;
54
+
55
+ &:hover {
56
+ background-color: var(--interactive);
57
+ color: var(--on-interactive);
58
+ }
59
+ }
60
+
61
+ > input {
62
+ background-color: $default-background;
63
+ border: $default-border;
64
+ border-radius: $default-input-border-radius;
65
+ color: var(--y);
66
+ outline: none;
67
+ padding: $default-padding;
68
+ width: 100%;
69
+
70
+ &::placeholder {
71
+ color: var(--metadata);
72
+ }
73
+
74
+ &:disabled {
75
+ background-color: $disabled-background;
76
+ }
77
+
78
+ &:not(:disabled) {
79
+ &:hover,
80
+ &:active {
81
+ border: $hover-border;
82
+ }
83
+
84
+ &:focus {
85
+ border: $focus-border;
86
+ }
87
+ }
88
+ }
89
+ }
90
+ }
@@ -0,0 +1,153 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ import * as React from 'react'
3
+
4
+ import { useEffect, useState } from 'react'
5
+
6
+ import { useRelayEnvironment, fetchQuery } from 'react-relay'
7
+
8
+ import { useField } from 'formik'
9
+
10
+ import PropTypes from 'prop-types'
11
+
12
+ import { ChoicesInput } from '../ChoicesInput'
13
+
14
+ /**
15
+ * This is the component description.
16
+ */
17
+ const QueryChoices = ({
18
+ name,
19
+ optionsKeyMap,
20
+ query,
21
+ variables,
22
+ validate,
23
+ loadingOption,
24
+ extraVariables,
25
+ ...otherProps
26
+ }) => {
27
+ const [, , helpers] = useField({ name, validate })
28
+
29
+ const { setError } = helpers
30
+
31
+ const environment = useRelayEnvironment()
32
+
33
+ const [isFetching, setIsFetching] = useState(false)
34
+
35
+ const [options, setOptions] = useState([loadingOption])
36
+
37
+ const { graphql, accessor } = query
38
+
39
+ const getOptions = () => {
40
+ if (isFetching) return
41
+
42
+ let searchVariables = variables
43
+
44
+ if (extraVariables) {
45
+ searchVariables = {
46
+ ...variables,
47
+ ...extraVariables,
48
+ }
49
+ }
50
+
51
+ fetchQuery(
52
+ environment,
53
+ graphql,
54
+ searchVariables,
55
+ )
56
+ .subscribe({
57
+ start:() => {
58
+ setIsFetching(true)
59
+ },
60
+ complete:() => {
61
+ setIsFetching(false)
62
+ },
63
+ error:(fetchError) => {
64
+ setIsFetching(false)
65
+ if (setError) setError(fetchError.message)
66
+ },
67
+ next:(data) => {
68
+ setOptions([
69
+ ...data[accessor].edges.map(({ node }) => ({
70
+ value:node[optionsKeyMap.value],
71
+ label:optionsKeyMap.getLabel(node),
72
+ })),
73
+ ])
74
+ },
75
+ })
76
+ }
77
+
78
+ useEffect(() => {
79
+ getOptions()
80
+ }, [variables])
81
+
82
+ return (
83
+ <ChoicesInput
84
+ name={name}
85
+ validate={validate}
86
+ options={options}
87
+ {...otherProps}
88
+ />
89
+ )
90
+ }
91
+
92
+ QueryChoices.propTypes = {
93
+ /**
94
+ * The choices name
95
+ */
96
+ name:PropTypes.string.isRequired,
97
+
98
+ /**
99
+ * The select option keys to be used to map the data to the select options.
100
+ * i.e `{ value: 'id', label: 'name' }`
101
+ */
102
+ optionsKeyMap:PropTypes.shape({
103
+ value :PropTypes.string.isRequired,
104
+ getLabel:PropTypes.func.isRequired,
105
+ }).isRequired,
106
+
107
+ /**
108
+ * The graphql query to fetch the options and the accessor to destructure the results from
109
+ */
110
+ query:PropTypes.shape({
111
+ accessor:PropTypes.string,
112
+ graphql :PropTypes.oneOfType([
113
+ PropTypes.string,
114
+ PropTypes.object,
115
+ ]).isRequired,
116
+ }),
117
+
118
+ /**
119
+ * The variables that might be required to be used in the query to fetch
120
+ * select options.
121
+ */
122
+ variables:PropTypes.objectOf(PropTypes.string),
123
+
124
+ /**
125
+ * The option to displayed when the select options are being fetched
126
+ */
127
+ loadingOption:PropTypes.shape({
128
+ value :PropTypes.string.isRequired,
129
+ label :PropTypes.string.isRequired,
130
+ disabled:PropTypes.bool.isRequired,
131
+ }),
132
+
133
+ /**
134
+ * The input field validator function
135
+ */
136
+ validate:PropTypes.string,
137
+
138
+ /**
139
+ * The extra variables that might be required to be used in the query to fetch
140
+ * select options.
141
+ */
142
+ extraVariables:PropTypes.objectOf(PropTypes.string),
143
+ }
144
+
145
+ QueryChoices.defaultProps = {
146
+ loadingOption:{
147
+ value :'',
148
+ label :'Fetching Options',
149
+ disabled:true,
150
+ },
151
+ }
152
+
153
+ export default QueryChoices
@@ -0,0 +1,2 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ export { default as QueryChoices } from './QueryChoices'