playbook_ui 15.3.0.pre.alpha.PLAY2532flexboxdefaultresponsive12209 → 15.3.0.pre.alpha.PLAY2565formkitsubmitfix11681
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.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/pb_advanced_table/Components/RegularTableView.tsx +1 -2
- data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +1 -3
- data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableActions.ts +3 -18
- data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableState.ts +14 -71
- data/app/pb_kits/playbook/pb_advanced_table/SubKits/TableHeader.tsx +0 -3
- data/app/pb_kits/playbook/pb_advanced_table/Utilities/RowUtils.ts +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +4 -4
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +3 -12
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +5 -127
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_background_control_rails.html.erb +0 -4
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_background_control_rails.md +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_border_color.md +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_border_color_rails.md +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling.jsx +1 -3
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling.md +0 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_column_headers.jsx +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_rails.html.erb +0 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_rails.md +0 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_row_loading.jsx +0 -28
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_row_loading.md +2 -11
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control.jsx +1 -9
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control.md +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_pagination_with_props.jsx +1 -4
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_pagination_with_props.md +2 -3
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_columns_and_header.md +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header_rails.md +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header_react.md +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_multi_header.jsx +0 -16
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_rails.html.erb +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_advanced_table/flat_advanced_table.js +2 -2
- data/app/pb_kits/playbook/pb_advanced_table/index.js +7 -7
- data/app/pb_kits/playbook/pb_advanced_table/scss_partials/advanced_table_sticky_mixin.scss +2 -2
- data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +20 -90
- data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +3 -32
- data/app/pb_kits/playbook/pb_background/background.html.erb +2 -10
- data/app/pb_kits/playbook/pb_background/docs/_background_category.md +1 -1
- data/app/pb_kits/playbook/pb_badge/_badge.tsx +1 -4
- data/app/pb_kits/playbook/pb_badge/badge.test.js +0 -13
- data/app/pb_kits/playbook/pb_card/docs/_card_background.md +1 -1
- data/app/pb_kits/playbook/pb_card/docs/_card_header.md +1 -1
- data/app/pb_kits/playbook/pb_card/docs/_card_highlight.md +1 -1
- data/app/pb_kits/playbook/pb_card/docs/_card_light.md +1 -1
- data/app/pb_kits/playbook/pb_currency/_currency.tsx +7 -20
- data/app/pb_kits/playbook/pb_currency/currency.rb +8 -35
- data/app/pb_kits/playbook/pb_currency/currency.test.js +0 -47
- data/app/pb_kits/playbook/pb_currency/docs/_currency_variants.html.erb +1 -1
- data/app/pb_kits/playbook/pb_currency/docs/_currency_variants.jsx +1 -1
- data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +0 -2
- data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +4 -16
- data/app/pb_kits/playbook/pb_date_picker/docs/example.yml +1 -2
- data/app/pb_kits/playbook/pb_date_picker/docs/index.js +1 -2
- data/app/pb_kits/playbook/pb_date_picker/sass_partials/_quick_pick_styles.scss +30 -11
- data/app/pb_kits/playbook/pb_distribution_bar/docs/_distribution_bar_custom_colors.md +1 -1
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +0 -1
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +6 -111
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_active_style_options_react.md +1 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +0 -5
- data/app/pb_kits/playbook/pb_dropdown/docs/index.js +1 -5
- data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +2 -148
- data/app/pb_kits/playbook/pb_filter/docs/_filter_max_width.md +1 -1
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_auto_close.html.erb +1 -15
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_multi_line.html.erb +8 -9
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_positions.html.erb +10 -11
- data/app/pb_kits/playbook/pb_form/pb_form_validation.js +11 -44
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.tsx +1 -1
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text_rails.md +1 -1
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text_react.md +1 -1
- data/app/pb_kits/playbook/pb_icon/docs/_icon_color.md +1 -1
- data/app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_color.md +1 -1
- data/app/pb_kits/playbook/pb_icon_stat_value/docs/_icon_stat_value_color.html.erb +14 -7
- data/app/pb_kits/playbook/pb_icon_stat_value/docs/_icon_stat_value_color.jsx +15 -6
- data/app/pb_kits/playbook/pb_layout/docs/_layout_collection.md +1 -1
- data/app/pb_kits/playbook/pb_nav/docs/_collapsible_nav_item_spacing.md +1 -1
- data/app/pb_kits/playbook/pb_nav/docs/_nav_with_spacing_control.md +1 -1
- data/app/pb_kits/playbook/pb_overlay/docs/_overlay_layout.md +1 -1
- data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +17 -110
- data/app/pb_kits/playbook/pb_pill/docs/_description.md +1 -1
- data/app/pb_kits/playbook/pb_popover/_popover.tsx +34 -69
- data/app/pb_kits/playbook/pb_popover/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_popover/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_popover/popover.test.js +0 -80
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_description.md +1 -1
- data/app/pb_kits/playbook/pb_section_separator/docs/_description.md +1 -1
- data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +0 -29
- data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_border_radius_rails.md +1 -1
- data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_border_radius_react.md +1 -1
- data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_layout.md +1 -1
- data/app/pb_kits/playbook/pb_table/docs/_table_side_highlight.md +1 -1
- data/app/pb_kits/playbook/pb_table/docs/_table_sm.md +1 -1
- data/app/pb_kits/playbook/pb_table/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_table/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_text_input/text_input.rb +2 -2
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.scss +0 -7
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.test.jsx +1 -105
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +9 -23
- data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.tsx +1 -33
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_default_options.html.erb +1 -67
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_default_value.jsx +6 -68
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_truncated_text.md +1 -1
- data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_typeahead/docs/index.js +1 -2
- data/app/pb_kits/playbook/utilities/globalProps.ts +8 -26
- data/app/pb_kits/playbook/utilities/test/globalProps/alignContent.test.js +0 -18
- data/app/pb_kits/playbook/utilities/test/globalProps/alignItems.test.js +0 -18
- data/app/pb_kits/playbook/utilities/test/globalProps/alignSelf.test.js +0 -18
- data/app/pb_kits/playbook/utilities/test/globalProps/display.test.js +0 -18
- data/app/pb_kits/playbook/utilities/test/globalProps/flex.test.js +0 -18
- data/app/pb_kits/playbook/utilities/test/globalProps/flexDirection.test.js +0 -18
- data/app/pb_kits/playbook/utilities/test/globalProps/flexGrow.test.js +0 -18
- data/app/pb_kits/playbook/utilities/test/globalProps/flexShrink.test.js +0 -18
- data/app/pb_kits/playbook/utilities/test/globalProps/flexWrap.test.js +0 -18
- data/app/pb_kits/playbook/utilities/test/globalProps/justifyContent.test.js +0 -18
- data/app/pb_kits/playbook/utilities/test/globalProps/justifySelf.test.js +0 -18
- data/app/pb_kits/playbook/utilities/test/globalProps/order.test.js +0 -18
- data/dist/chunks/{_line_graph-9bI76O2f.js → _line_graph-h5H-imfn.js} +1 -1
- data/dist/chunks/_typeahead-U8AjZIIW.js +6 -0
- data/dist/chunks/_weekday_stacked-CbCUYuuZ.js +37 -0
- data/dist/chunks/{lib-BXBHAZMY.js → lib-CGxXTQ75.js} +1 -1
- data/dist/chunks/pb_form_validation-DebqlUKZ.js +1 -0
- data/dist/chunks/vendor.js +1 -1
- data/dist/playbook-doc.js +2 -2
- data/dist/playbook-rails-react-bindings.js +1 -1
- data/dist/playbook-rails.js +1 -1
- data/dist/playbook.css +1 -1
- data/lib/playbook/version.rb +1 -1
- metadata +8 -32
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_multi_header_rails.html.erb +0 -104
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_multi_header_rails.md +0 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_mock_data_inline_loading_empty_children.js +0 -42
- data/app/pb_kits/playbook/pb_currency/docs/_currency_variants.md +0 -1
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_and_dropdown_range.jsx +0 -38
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_and_dropdown_range.md +0 -14
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick.jsx +0 -18
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick.md +0 -4
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_default_dates.jsx +0 -18
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_default_dates.md +0 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_range_end.jsx +0 -19
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_range_end.md +0 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_with_date_pickers.jsx +0 -38
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_with_date_pickers.md +0 -14
- data/app/pb_kits/playbook/pb_dropdown/quickpick/index.ts +0 -60
- data/app/pb_kits/playbook/pb_popover/docs/_popover_append_to.jsx +0 -68
- data/app/pb_kits/playbook/pb_popover/docs/_popover_append_to_react.md +0 -1
- data/app/pb_kits/playbook/pb_table/docs/_table_with_dynamic_collapsible.html.erb +0 -63
- data/app/pb_kits/playbook/pb_table/docs/_table_with_dynamic_collapsible.jsx +0 -89
- data/app/pb_kits/playbook/pb_table/docs/_table_with_dynamic_collapsible_rails.md +0 -4
- data/app/pb_kits/playbook/pb_table/docs/_table_with_dynamic_collapsible_react.md +0 -3
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_custom_options.html.erb +0 -64
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_custom_options.jsx +0 -70
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_custom_options.md +0 -1
- data/dist/chunks/_typeahead-By0NwDwL.js +0 -6
- data/dist/chunks/_weekday_stacked-ClJbIaDx.js +0 -37
- data/dist/chunks/pb_form_validation-BNfSnIUF.js +0 -1
- /data/app/pb_kits/playbook/pb_popover/docs/{_popover_append_to_rails.md → _popover_append_to.md} +0 -0
|
@@ -99,8 +99,8 @@ module Playbook
|
|
|
99
99
|
# Convert camelCase (ex. notAllowed) to kebab-case (ex. not-allowed)
|
|
100
100
|
cursor.to_s.gsub(/([a-z\d])([A-Z])/, '\1-\2').downcase
|
|
101
101
|
else
|
|
102
|
-
# Default to '
|
|
103
|
-
"
|
|
102
|
+
# Default to 'pointer'
|
|
103
|
+
"pointer"
|
|
104
104
|
end
|
|
105
105
|
end
|
|
106
106
|
|
|
@@ -165,13 +165,6 @@
|
|
|
165
165
|
line-height: 16.5px;
|
|
166
166
|
letter-spacing: normal;
|
|
167
167
|
}
|
|
168
|
-
|
|
169
|
-
// Add focus indicator for multi-value pills
|
|
170
|
-
.pb_form_pill_or_badge_focused {
|
|
171
|
-
outline: $primary solid 2px;
|
|
172
|
-
outline-offset: -1px;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
168
|
&.inline {
|
|
176
169
|
&:not(:hover) {
|
|
177
170
|
.text_input {
|
|
@@ -171,108 +171,4 @@ test('typeahead with defaultValue with focus behavior', async () => {
|
|
|
171
171
|
expect(focusedOption).toBeInTheDocument()
|
|
172
172
|
expect(focusedOption).toHaveTextContent('Red')
|
|
173
173
|
})
|
|
174
|
-
})
|
|
175
|
-
|
|
176
|
-
test('typeahead with grouped options and defaultValue focus behavior', async () => {
|
|
177
|
-
const groupedOptions = [
|
|
178
|
-
{
|
|
179
|
-
label: "Warm Colors",
|
|
180
|
-
options: [
|
|
181
|
-
{ label: "Red", value: "#FF0000" },
|
|
182
|
-
{ label: "Orange", value: "#FFA500" },
|
|
183
|
-
{ label: "Yellow", value: "#FFFF00" }
|
|
184
|
-
]
|
|
185
|
-
},
|
|
186
|
-
{
|
|
187
|
-
label: "Cool Colors",
|
|
188
|
-
options: [
|
|
189
|
-
{ label: "Blue", value: "#0000FF" },
|
|
190
|
-
{ label: "Teal", value: "#008080" },
|
|
191
|
-
{ label: "Cyan", value: "#00FFFF" }
|
|
192
|
-
]
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
label: "Fun Shades",
|
|
196
|
-
options: [
|
|
197
|
-
{ label: "Pink", value: "#FFC0CB" },
|
|
198
|
-
{ label: "Magenta", value: "#FF00FF" },
|
|
199
|
-
{ label: "Purple", value: "#800080" }
|
|
200
|
-
]
|
|
201
|
-
}
|
|
202
|
-
]
|
|
203
|
-
|
|
204
|
-
render(
|
|
205
|
-
<Typeahead
|
|
206
|
-
data={{ testid: 'grouped-options-focus-test' }}
|
|
207
|
-
defaultValue={[{ label: "Pink", value: "#FFC0CB" }]}
|
|
208
|
-
options={groupedOptions}
|
|
209
|
-
/>
|
|
210
|
-
)
|
|
211
|
-
|
|
212
|
-
const kit = screen.getByTestId('grouped-options-focus-test')
|
|
213
|
-
const inputDiv = kit.querySelector(".typeahead-kit-select__single-value")
|
|
214
|
-
expect(inputDiv).toHaveTextContent("Pink")
|
|
215
|
-
})
|
|
216
|
-
|
|
217
|
-
test('multi-value pills have tabIndex for keyboard navigation', () => {
|
|
218
|
-
render(
|
|
219
|
-
<Typeahead
|
|
220
|
-
data={{ testid: 'pill-tabindex-test' }}
|
|
221
|
-
defaultValue={[options[0], options[1]]}
|
|
222
|
-
isMulti
|
|
223
|
-
options={options}
|
|
224
|
-
/>
|
|
225
|
-
)
|
|
226
|
-
|
|
227
|
-
const kit = screen.getByTestId('pill-tabindex-test')
|
|
228
|
-
const pills = kit.querySelectorAll('.pb_form_pill_kit')
|
|
229
|
-
|
|
230
|
-
expect(pills.length).toBe(2)
|
|
231
|
-
|
|
232
|
-
pills.forEach(pill => {
|
|
233
|
-
expect(pill).toHaveAttribute('tabIndex', '0')
|
|
234
|
-
})
|
|
235
|
-
})
|
|
236
|
-
|
|
237
|
-
test('multi-value pills show focus indicator when focused', async () => {
|
|
238
|
-
render(
|
|
239
|
-
<Typeahead
|
|
240
|
-
data={{ testid: 'pill-focus-indicator-test' }}
|
|
241
|
-
defaultValue={[options[0], options[1], options[2]]}
|
|
242
|
-
isMulti
|
|
243
|
-
options={options}
|
|
244
|
-
/>
|
|
245
|
-
)
|
|
246
|
-
|
|
247
|
-
const kit = screen.getByTestId('pill-focus-indicator-test')
|
|
248
|
-
const pills = kit.querySelectorAll('.pb_form_pill_kit')
|
|
249
|
-
|
|
250
|
-
expect(pills.length).toBe(3)
|
|
251
|
-
|
|
252
|
-
const firstPill = pills[0]
|
|
253
|
-
firstPill.focus()
|
|
254
|
-
|
|
255
|
-
expect(document.activeElement).toBe(firstPill)
|
|
256
|
-
})
|
|
257
|
-
|
|
258
|
-
test('multi-value badges have tabIndex and focus class when focused', () => {
|
|
259
|
-
render(
|
|
260
|
-
<Typeahead
|
|
261
|
-
data={{ testid: 'badge-focus-test' }}
|
|
262
|
-
defaultValue={[options[0], options[1]]}
|
|
263
|
-
isMulti
|
|
264
|
-
multiKit="badge"
|
|
265
|
-
options={options}
|
|
266
|
-
/>
|
|
267
|
-
)
|
|
268
|
-
|
|
269
|
-
const kit = screen.getByTestId('badge-focus-test')
|
|
270
|
-
const badges = kit.querySelectorAll('.pb_badge_kit_primary')
|
|
271
|
-
|
|
272
|
-
expect(badges.length).toBe(2)
|
|
273
|
-
|
|
274
|
-
badges.forEach(badge => {
|
|
275
|
-
expect(badge).toHaveAttribute('tabIndex', '0')
|
|
276
|
-
})
|
|
277
|
-
})
|
|
278
|
-
|
|
174
|
+
})
|
|
@@ -144,18 +144,6 @@ const Typeahead = forwardRef<HTMLInputElement, TypeaheadProps>(({
|
|
|
144
144
|
// Create a ref to access React Select instance
|
|
145
145
|
const selectRef = useRef<any>(null)
|
|
146
146
|
|
|
147
|
-
// Helper function to flatten grouped options if custom groups are used
|
|
148
|
-
const flattenOptions = (options: any[]): any[] => {
|
|
149
|
-
if (!options) return []
|
|
150
|
-
|
|
151
|
-
return options.reduce((acc, option) => {
|
|
152
|
-
if (option.options && Array.isArray(option.options)) {
|
|
153
|
-
return [...acc, ...option.options]
|
|
154
|
-
}
|
|
155
|
-
return [...acc, option]
|
|
156
|
-
}, [])
|
|
157
|
-
}
|
|
158
|
-
|
|
159
147
|
// Configure focus on selected option using React Select's API
|
|
160
148
|
const handleMenuOpen = () => {
|
|
161
149
|
setTimeout(() => {
|
|
@@ -171,18 +159,17 @@ const Typeahead = forwardRef<HTMLInputElement, TypeaheadProps>(({
|
|
|
171
159
|
|
|
172
160
|
const options = props.options
|
|
173
161
|
if (options) {
|
|
174
|
-
//
|
|
175
|
-
const
|
|
176
|
-
|
|
177
|
-
const targetOption = flatOptions.find((option: any) => {
|
|
162
|
+
// Find the index of the current value
|
|
163
|
+
const focusedIndex = options.findIndex((option: any) => {
|
|
178
164
|
const optionValue = props.getOptionValue ? props.getOptionValue(option) : option.value
|
|
179
165
|
const currentOptionValue = props.getOptionValue ? props.getOptionValue(currentValue) : currentValue.value
|
|
180
166
|
return optionValue === currentOptionValue
|
|
181
167
|
})
|
|
182
168
|
|
|
183
|
-
if (
|
|
169
|
+
if (focusedIndex >= 0 && options[focusedIndex]) {
|
|
184
170
|
// Use React Select's internal state to set focused option
|
|
185
171
|
if (selectRef.current && selectRef.current.setState) {
|
|
172
|
+
const targetOption = options[focusedIndex]
|
|
186
173
|
selectRef.current.setState({
|
|
187
174
|
focusedOption: targetOption,
|
|
188
175
|
focusedValue: null
|
|
@@ -192,12 +179,11 @@ const Typeahead = forwardRef<HTMLInputElement, TypeaheadProps>(({
|
|
|
192
179
|
setTimeout(() => {
|
|
193
180
|
if (selectRef.current && selectRef.current.menuListRef) {
|
|
194
181
|
const menuElement = selectRef.current.menuListRef
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
const
|
|
200
|
-
const optionHeight = focusedElement.offsetHeight
|
|
182
|
+
if (menuElement && menuElement.children && menuElement.children[focusedIndex]) {
|
|
183
|
+
// Calculate the position of the selected option and scroll the menu container
|
|
184
|
+
const optionElement = menuElement.children[focusedIndex] as HTMLElement
|
|
185
|
+
const optionTop = optionElement.offsetTop
|
|
186
|
+
const optionHeight = optionElement.offsetHeight
|
|
201
187
|
const menuHeight = menuElement.clientHeight
|
|
202
188
|
|
|
203
189
|
// Set the menu's scrollTop to position the selected option in the middle
|
|
@@ -12,12 +12,11 @@ type Props = {
|
|
|
12
12
|
pillColor?: "primary" | "neutral" | "success" | "warning" | "error" | "info" | "data_1" | "data_2" | "data_3" | "data_4" | "data_5" | "data_6" | "data_7" | "data_8" | "windows" | "siding" | "roofing" | "doors" | "gutters" | "solar" | "insulation" | "accessories",
|
|
13
13
|
removeProps: any,
|
|
14
14
|
selectProps: any,
|
|
15
|
-
isFocused?: boolean,
|
|
16
15
|
}
|
|
17
16
|
|
|
18
17
|
|
|
19
18
|
const MultiValue = (props: Props) => {
|
|
20
|
-
const { removeProps
|
|
19
|
+
const { removeProps } = props
|
|
21
20
|
const { imageUrl, label } = props.data
|
|
22
21
|
const { dark, multiKit, pillColor, truncate, wrapped } = props.selectProps
|
|
23
22
|
|
|
@@ -30,28 +29,6 @@ const MultiValue = (props: Props) => {
|
|
|
30
29
|
|
|
31
30
|
if (typeof imageUrl === 'string') formPillProps.avatarUrl = imageUrl
|
|
32
31
|
|
|
33
|
-
// Add className for focus state
|
|
34
|
-
const pillClassName = isFocused ? 'pb_form_pill_or_badge_focused' : ''
|
|
35
|
-
|
|
36
|
-
// Handle keyboard events on the pill itself to enable deletion when using tabIndex
|
|
37
|
-
const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {
|
|
38
|
-
if (event.key === 'Backspace' || event.key === 'Delete') {
|
|
39
|
-
event.preventDefault()
|
|
40
|
-
event.stopPropagation()
|
|
41
|
-
// Trigger the remove action from react-select
|
|
42
|
-
if (removeProps && removeProps.onClick) {
|
|
43
|
-
removeProps.onClick(event as any)
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
// if arrow keys used, transfer focus to input so react-select can take over
|
|
47
|
-
else if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {
|
|
48
|
-
const selectInput = event.currentTarget.closest('.pb_typeahead_kit')?.querySelector('input')
|
|
49
|
-
if (selectInput instanceof HTMLInputElement) {
|
|
50
|
-
selectInput.focus()
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
32
|
return (
|
|
56
33
|
<components.MultiValueContainer
|
|
57
34
|
className="text_input_multivalue_container"
|
|
@@ -59,11 +36,8 @@ const MultiValue = (props: Props) => {
|
|
|
59
36
|
>
|
|
60
37
|
{multiKit === 'badge' &&
|
|
61
38
|
<Badge
|
|
62
|
-
className={pillClassName}
|
|
63
39
|
closeProps={removeProps}
|
|
64
|
-
htmlOptions={{onKeyDown:handleKeyDown}}
|
|
65
40
|
removeIcon
|
|
66
|
-
tabIndex={0}
|
|
67
41
|
text={label}
|
|
68
42
|
variant="primary"
|
|
69
43
|
/>
|
|
@@ -72,15 +46,12 @@ const MultiValue = (props: Props) => {
|
|
|
72
46
|
{multiKit !== 'badge' && imageUrl &&
|
|
73
47
|
<FormPill
|
|
74
48
|
avatarUrl={imageUrl}
|
|
75
|
-
className={pillClassName}
|
|
76
49
|
closeProps={removeProps}
|
|
77
50
|
color={pillColor}
|
|
78
51
|
dark={dark}
|
|
79
|
-
htmlOptions={{onKeyDown:handleKeyDown}}
|
|
80
52
|
marginRight="xs"
|
|
81
53
|
name={label}
|
|
82
54
|
size={multiKit === 'smallPill' ? 'small' : ''}
|
|
83
|
-
tabIndex={0}
|
|
84
55
|
text=''
|
|
85
56
|
truncate={truncate}
|
|
86
57
|
wrapped={wrapped}
|
|
@@ -90,15 +61,12 @@ const MultiValue = (props: Props) => {
|
|
|
90
61
|
|
|
91
62
|
{multiKit !== 'badge' && !imageUrl &&
|
|
92
63
|
<FormPill
|
|
93
|
-
className={pillClassName}
|
|
94
64
|
closeProps={removeProps}
|
|
95
65
|
color={pillColor}
|
|
96
66
|
dark={dark}
|
|
97
|
-
htmlOptions={{onKeyDown:handleKeyDown}}
|
|
98
67
|
marginRight="xs"
|
|
99
68
|
name=''
|
|
100
69
|
size={multiKit === 'smallPill' ? 'small' : ''}
|
|
101
|
-
tabIndex={0}
|
|
102
70
|
text={label}
|
|
103
71
|
truncate={truncate}
|
|
104
72
|
wrapped={wrapped}
|
|
@@ -25,77 +25,11 @@
|
|
|
25
25
|
]
|
|
26
26
|
%>
|
|
27
27
|
|
|
28
|
-
<%
|
|
29
|
-
grouped_options = [
|
|
30
|
-
{
|
|
31
|
-
label: "Warm Colors",
|
|
32
|
-
options: [
|
|
33
|
-
{ label: "Red", value: "#FF0000" },
|
|
34
|
-
{ label: "Orange", value: "#FFA500" },
|
|
35
|
-
{ label: "Yellow", value: "#FFFF00" },
|
|
36
|
-
{ label: "Coral", value: "#FF7F50" },
|
|
37
|
-
{ label: "Gold", value: "#FFD700" }
|
|
38
|
-
]
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
label: "Cool Colors",
|
|
42
|
-
options: [
|
|
43
|
-
{ label: "Blue", value: "#0000FF" },
|
|
44
|
-
{ label: "Teal", value: "#008080" },
|
|
45
|
-
{ label: "Cyan", value: "#00FFFF" },
|
|
46
|
-
{ label: "Navy", value: "#000080" },
|
|
47
|
-
{ label: "Turquoise", value: "#40E0D0" }
|
|
48
|
-
]
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
label: "Neutrals",
|
|
52
|
-
options: [
|
|
53
|
-
{ label: "White", value: "#FFFFFF" },
|
|
54
|
-
{ label: "Black", value: "#000000" },
|
|
55
|
-
{ label: "Gray", value: "#808080" },
|
|
56
|
-
{ label: "Beige", value: "#F5F5DC" },
|
|
57
|
-
{ label: "Silver", value: "#C0C0C0" }
|
|
58
|
-
]
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
label: "Earth Tones",
|
|
62
|
-
options: [
|
|
63
|
-
{ label: "Brown", value: "#A52A2A" },
|
|
64
|
-
{ label: "Olive", value: "#808000" },
|
|
65
|
-
{ label: "Forest Green", value: "#228B22" },
|
|
66
|
-
{ label: "Tan", value: "#D2B48C" },
|
|
67
|
-
{ label: "Maroon", value: "#800000" }
|
|
68
|
-
]
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
label: "Fun Shades",
|
|
72
|
-
options: [
|
|
73
|
-
{ label: "Pink", value: "#FFC0CB" },
|
|
74
|
-
{ label: "Magenta", value: "#FF00FF" },
|
|
75
|
-
{ label: "Lime", value: "#00FF00" },
|
|
76
|
-
{ label: "Purple", value: "#800080" },
|
|
77
|
-
{ label: "Indigo", value: "#4B0082" }
|
|
78
|
-
]
|
|
79
|
-
}
|
|
80
|
-
]
|
|
81
|
-
%>
|
|
82
|
-
|
|
83
|
-
|
|
84
28
|
<%= pb_rails("typeahead", props: {
|
|
85
29
|
default_options: [{ label: 'Gray', value: '#808080' }],
|
|
86
30
|
id: "typeahead-default-value",
|
|
87
31
|
options: options,
|
|
88
|
-
label: "
|
|
89
|
-
name: :foo,
|
|
90
|
-
is_multi: false
|
|
91
|
-
})
|
|
92
|
-
%>
|
|
93
|
-
|
|
94
|
-
<%= pb_rails("typeahead", props: {
|
|
95
|
-
default_options:[{ label: "Pink", value: "#FFC0CB" }],
|
|
96
|
-
id: "typeahead-default-value-grouped-options",
|
|
97
|
-
options: grouped_options,
|
|
98
|
-
label: "Default Value with grouped options",
|
|
32
|
+
label: "Colors",
|
|
99
33
|
name: :foo,
|
|
100
34
|
is_multi: false
|
|
101
35
|
})
|
|
@@ -27,76 +27,14 @@ const options = [
|
|
|
27
27
|
{ label: 'Coral', value: '#FF7F50' }
|
|
28
28
|
]
|
|
29
29
|
|
|
30
|
-
const groupedOptions = [
|
|
31
|
-
{
|
|
32
|
-
label: "Warm Colors",
|
|
33
|
-
options: [
|
|
34
|
-
{ label: "Red", value: "#FF0000" },
|
|
35
|
-
{ label: "Orange", value: "#FFA500" },
|
|
36
|
-
{ label: "Yellow", value: "#FFFF00" },
|
|
37
|
-
{ label: "Coral", value: "#FF7F50" },
|
|
38
|
-
{ label: "Gold", value: "#FFD700" }
|
|
39
|
-
]
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
label: "Cool Colors",
|
|
43
|
-
options: [
|
|
44
|
-
{ label: "Blue", value: "#0000FF" },
|
|
45
|
-
{ label: "Teal", value: "#008080" },
|
|
46
|
-
{ label: "Cyan", value: "#00FFFF" },
|
|
47
|
-
{ label: "Navy", value: "#000080" },
|
|
48
|
-
{ label: "Turquoise", value: "#40E0D0" }
|
|
49
|
-
]
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
label: "Neutrals",
|
|
53
|
-
options: [
|
|
54
|
-
{ label: "White", value: "#FFFFFF" },
|
|
55
|
-
{ label: "Black", value: "#000000" },
|
|
56
|
-
{ label: "Gray", value: "#808080" },
|
|
57
|
-
{ label: "Beige", value: "#F5F5DC" },
|
|
58
|
-
{ label: "Silver", value: "#C0C0C0" }
|
|
59
|
-
]
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
label: "Earth Tones",
|
|
63
|
-
options: [
|
|
64
|
-
{ label: "Brown", value: "#A52A2A" },
|
|
65
|
-
{ label: "Olive", value: "#808000" },
|
|
66
|
-
{ label: "Forest Green", value: "#228B22" },
|
|
67
|
-
{ label: "Tan", value: "#D2B48C" },
|
|
68
|
-
{ label: "Maroon", value: "#800000" }
|
|
69
|
-
]
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
label: "Fun Shades",
|
|
73
|
-
options: [
|
|
74
|
-
{ label: "Pink", value: "#FFC0CB" },
|
|
75
|
-
{ label: "Magenta", value: "#FF00FF" },
|
|
76
|
-
{ label: "Lime", value: "#00FF00" },
|
|
77
|
-
{ label: "Purple", value: "#800080" },
|
|
78
|
-
{ label: "Indigo", value: "#4B0082" }
|
|
79
|
-
]
|
|
80
|
-
}
|
|
81
|
-
]
|
|
82
|
-
|
|
83
30
|
const TypeaheadDefaultValue = (props) => {
|
|
84
31
|
return (
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
/>
|
|
92
|
-
<br />
|
|
93
|
-
<Typeahead
|
|
94
|
-
defaultValue={{ label: "Pink", value: "#FFC0CB" }}
|
|
95
|
-
label="Default Value with grouped options"
|
|
96
|
-
options={groupedOptions}
|
|
97
|
-
{...props}
|
|
98
|
-
/>
|
|
99
|
-
</>
|
|
32
|
+
<Typeahead
|
|
33
|
+
defaultValue={options[10]}
|
|
34
|
+
label="Colors"
|
|
35
|
+
options={options}
|
|
36
|
+
{...props}
|
|
37
|
+
/>
|
|
100
38
|
)
|
|
101
39
|
}
|
|
102
40
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
For Form Pills with longer text, the `truncate` global prop can be used to truncate the label within each Form Pill. Hover over the truncated Form Pill and a Tooltip containing the text or tag section of the Form Pill will appear. See [here](https://playbook.powerapp.cloud/
|
|
1
|
+
For Form Pills with longer text, the `truncate` global prop can be used to truncate the label within each Form Pill. Hover over the truncated Form Pill and a Tooltip containing the text or tag section of the Form Pill will appear. See [here](https://playbook.powerapp.cloud/visual_guidelines/truncate) for more information on the truncate global prop.
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
examples:
|
|
2
2
|
rails:
|
|
3
3
|
- typeahead_default: Default
|
|
4
|
-
- typeahead_custom_options: With Grouped Options
|
|
5
4
|
- typeahead_default_options: With Default Options
|
|
6
5
|
- typeahead_with_context: With Context
|
|
7
6
|
- typeahead_with_pills: With Pills
|
|
@@ -21,7 +20,6 @@ examples:
|
|
|
21
20
|
|
|
22
21
|
react:
|
|
23
22
|
- typeahead_default: Default
|
|
24
|
-
- typeahead_custom_options: With Grouped Options
|
|
25
23
|
- typeahead_default_value: With Default Value
|
|
26
24
|
- typeahead_react_hook: React Hook
|
|
27
25
|
- typeahead_with_highlight: With Highlight
|
|
@@ -16,5 +16,4 @@ export { default as TypeaheadTruncatedText } from './_typeahead_truncated_text.j
|
|
|
16
16
|
export { default as TypeaheadReactHook } from './_typeahead_react_hook.jsx'
|
|
17
17
|
export { default as TypeaheadDisabled } from './_typeahead_disabled.jsx'
|
|
18
18
|
export { default as TypeaheadPreserveInput } from './_typeahead_preserve_input.jsx'
|
|
19
|
-
export { default as TypeaheadDefaultValue } from './_typeahead_default_value.jsx'
|
|
20
|
-
export { default as TypeaheadCustomOptions } from './_typeahead_custom_options.jsx'
|
|
19
|
+
export { default as TypeaheadDefaultValue } from './_typeahead_default_value.jsx'
|
|
@@ -213,24 +213,10 @@ export type GlobalProps = AlignContent & AlignItems & AlignSelf &
|
|
|
213
213
|
|
|
214
214
|
const getResponsivePropClasses = (prop: {[key: string]: string}, classPrefix: string) => {
|
|
215
215
|
const keys: string[] = Object.keys(prop)
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
if (prop.default !== undefined) {
|
|
221
|
-
const defaultValue: string = typeof(prop.default) === 'string' ? camelToSnakeCase(prop.default) : prop.default
|
|
222
|
-
classResult += `${classPrefix}_${defaultValue} `
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
// Handle responsive sizes (generates classes with size prefix)
|
|
226
|
-
keys.forEach((key) => {
|
|
227
|
-
if (screenSizeValues.includes(key)) {
|
|
228
|
-
const propValue: string = typeof(prop[key]) === 'string' ? camelToSnakeCase(prop[key]) : prop[key]
|
|
229
|
-
classResult += `${classPrefix}_${key}_${propValue} `
|
|
230
|
-
}
|
|
231
|
-
})
|
|
232
|
-
|
|
233
|
-
return classResult.trim()
|
|
216
|
+
return keys.map((size: Sizes) => {
|
|
217
|
+
const propValue: string = typeof(prop[size]) === 'string' ? camelToSnakeCase(prop[size]) : prop[size]
|
|
218
|
+
return `${classPrefix}_${size}_${propValue}`
|
|
219
|
+
}).join(" ")
|
|
234
220
|
}
|
|
235
221
|
|
|
236
222
|
//reusable function for top, bottom, right and left props
|
|
@@ -450,11 +436,9 @@ const PROP_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => string} =
|
|
|
450
436
|
if (typeof zIndexEntry[1] == "number") {
|
|
451
437
|
css += `z_index_${zIndexEntry[1]} `
|
|
452
438
|
} else if (typeof zIndexEntry[1] == "object") {
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
responsiveObj[key] = value.toString()
|
|
439
|
+
Object.entries(zIndexEntry[1]).forEach((zIndexObj) => {
|
|
440
|
+
css += `z_index_${zIndexObj[0]}_${zIndexObj[1]} `
|
|
456
441
|
})
|
|
457
|
-
css += getResponsivePropClasses(responsiveObj, 'z_index')
|
|
458
442
|
} else if (zIndexEntry[1] === 'max') {
|
|
459
443
|
css += `z_index_max `
|
|
460
444
|
}
|
|
@@ -479,11 +463,9 @@ const PROP_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => string} =
|
|
|
479
463
|
if (typeof displayEntry[1] == "string") {
|
|
480
464
|
css += `display_${displayEntry[1]} `
|
|
481
465
|
} else if (typeof displayEntry[1] == "object") {
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
responsiveObj[key] = typeof value === 'string' ? value : value.toString()
|
|
466
|
+
Object.entries(displayEntry[1]).forEach((displayObj) => {
|
|
467
|
+
css += `display_${displayObj[0]}_${displayObj[1]} `
|
|
485
468
|
})
|
|
486
|
-
css += getResponsivePropClasses(responsiveObj, 'display')
|
|
487
469
|
} else {
|
|
488
470
|
' '
|
|
489
471
|
}
|
|
@@ -35,21 +35,3 @@ test('Global Props: returns proper class name', () => {
|
|
|
35
35
|
})
|
|
36
36
|
}
|
|
37
37
|
})
|
|
38
|
-
|
|
39
|
-
test('Global Props: returns proper class name with default key', () => {
|
|
40
|
-
const testId = `${testSubject}-default-responsive`
|
|
41
|
-
render(
|
|
42
|
-
<Body
|
|
43
|
-
alignContent={{ default: "spaceAround", xs: "center", sm: "spaceAround", md: "center" }}
|
|
44
|
-
data={{ testid: testId }}
|
|
45
|
-
text="Hi"
|
|
46
|
-
/>
|
|
47
|
-
)
|
|
48
|
-
const kit = screen.getByTestId(testId)
|
|
49
|
-
// Should have base class for default value
|
|
50
|
-
expect(kit).toHaveClass(`align_content_space_around`)
|
|
51
|
-
// Should have responsive classes for screen sizes
|
|
52
|
-
expect(kit).toHaveClass(`align_content_xs_center`)
|
|
53
|
-
expect(kit).toHaveClass(`align_content_sm_space_around`)
|
|
54
|
-
expect(kit).toHaveClass(`align_content_md_center`)
|
|
55
|
-
})
|
|
@@ -34,21 +34,3 @@ test('Global Props: returns proper class name', () => {
|
|
|
34
34
|
})
|
|
35
35
|
}
|
|
36
36
|
})
|
|
37
|
-
|
|
38
|
-
test('Global Props: returns proper class name with default key', () => {
|
|
39
|
-
const testId = `${testSubject}-default-responsive`
|
|
40
|
-
render(
|
|
41
|
-
<Body
|
|
42
|
-
alignItems={{ default: "end", xs: "center", sm: "end", md: "center" }}
|
|
43
|
-
data={{ testid: testId }}
|
|
44
|
-
text="Hi"
|
|
45
|
-
/>
|
|
46
|
-
)
|
|
47
|
-
const kit = screen.getByTestId(testId)
|
|
48
|
-
// Should have base class for default value
|
|
49
|
-
expect(kit).toHaveClass(`align_items_end`)
|
|
50
|
-
// Should have responsive classes for screen sizes
|
|
51
|
-
expect(kit).toHaveClass(`align_items_xs_center`)
|
|
52
|
-
expect(kit).toHaveClass(`align_items_sm_end`)
|
|
53
|
-
expect(kit).toHaveClass(`align_items_md_center`)
|
|
54
|
-
})
|
|
@@ -35,21 +35,3 @@ test('Global Props: returns proper class name', () => {
|
|
|
35
35
|
})
|
|
36
36
|
}
|
|
37
37
|
})
|
|
38
|
-
|
|
39
|
-
test('Global Props: returns proper class name with default key', () => {
|
|
40
|
-
const testId = `${testSubject}-default-responsive`
|
|
41
|
-
render(
|
|
42
|
-
<Body
|
|
43
|
-
alignSelf={{ default: "end", xs: "center", sm: "end", md: "center" }}
|
|
44
|
-
data={{ testid: testId }}
|
|
45
|
-
text="Hi"
|
|
46
|
-
/>
|
|
47
|
-
)
|
|
48
|
-
const kit = screen.getByTestId(testId)
|
|
49
|
-
// Should have base class for default value
|
|
50
|
-
expect(kit).toHaveClass(`align_self_end`)
|
|
51
|
-
// Should have responsive classes for screen sizes
|
|
52
|
-
expect(kit).toHaveClass(`align_self_xs_center`)
|
|
53
|
-
expect(kit).toHaveClass(`align_self_sm_end`)
|
|
54
|
-
expect(kit).toHaveClass(`align_self_md_center`)
|
|
55
|
-
})
|
|
@@ -36,21 +36,3 @@ test('Global Props: returns proper class name', () => {
|
|
|
36
36
|
})
|
|
37
37
|
}
|
|
38
38
|
})
|
|
39
|
-
|
|
40
|
-
test('Global Props: returns proper class name with default key', () => {
|
|
41
|
-
const testId = `${testSubject}-default-responsive`
|
|
42
|
-
render(
|
|
43
|
-
<Body
|
|
44
|
-
data={{ testid: testId }}
|
|
45
|
-
display={{ default: "none", xs: "block", sm: "none", md: "block" }}
|
|
46
|
-
text="Hi"
|
|
47
|
-
/>
|
|
48
|
-
)
|
|
49
|
-
const kit = screen.getByTestId(testId)
|
|
50
|
-
// Should have base class for default value
|
|
51
|
-
expect(kit).toHaveClass(`display_none`)
|
|
52
|
-
// Should have responsive classes for screen sizes
|
|
53
|
-
expect(kit).toHaveClass(`display_xs_block`)
|
|
54
|
-
expect(kit).toHaveClass(`display_sm_none`)
|
|
55
|
-
expect(kit).toHaveClass(`display_md_block`)
|
|
56
|
-
})
|
|
@@ -62,21 +62,3 @@ test('Global Props: returns proper class name', () => {
|
|
|
62
62
|
})
|
|
63
63
|
}
|
|
64
64
|
})
|
|
65
|
-
|
|
66
|
-
test('Global Props: returns proper class name with default key', () => {
|
|
67
|
-
const testId = `${testSubject}-default-responsive`
|
|
68
|
-
render(
|
|
69
|
-
<Body
|
|
70
|
-
data={{ testid: testId }}
|
|
71
|
-
flex={{ default: "3", xs: "1", sm: "3", md: "1" }}
|
|
72
|
-
text="Hi"
|
|
73
|
-
/>
|
|
74
|
-
)
|
|
75
|
-
const kit = screen.getByTestId(testId)
|
|
76
|
-
// Should have base class for default value
|
|
77
|
-
expect(kit).toHaveClass(`flex_3`)
|
|
78
|
-
// Should have responsive classes for screen sizes
|
|
79
|
-
expect(kit).toHaveClass(`flex_xs_1`)
|
|
80
|
-
expect(kit).toHaveClass(`flex_sm_3`)
|
|
81
|
-
expect(kit).toHaveClass(`flex_md_1`)
|
|
82
|
-
})
|
|
@@ -35,21 +35,3 @@ test('Global Props: returns proper class name', () => {
|
|
|
35
35
|
})
|
|
36
36
|
}
|
|
37
37
|
})
|
|
38
|
-
|
|
39
|
-
test('Global Props: returns proper class name with default key', () => {
|
|
40
|
-
const testId = `${testSubject}-default-responsive`
|
|
41
|
-
render(
|
|
42
|
-
<Body
|
|
43
|
-
data={{ testid: testId }}
|
|
44
|
-
flexDirection={{ default: "column", xs: "row", sm: "column", md: "row" }}
|
|
45
|
-
text="Hi"
|
|
46
|
-
/>
|
|
47
|
-
)
|
|
48
|
-
const kit = screen.getByTestId(testId)
|
|
49
|
-
// Should have base class for default value
|
|
50
|
-
expect(kit).toHaveClass(`flex_direction_column`)
|
|
51
|
-
// Should have responsive classes for screen sizes
|
|
52
|
-
expect(kit).toHaveClass(`flex_direction_xs_row`)
|
|
53
|
-
expect(kit).toHaveClass(`flex_direction_sm_column`)
|
|
54
|
-
expect(kit).toHaveClass(`flex_direction_md_row`)
|
|
55
|
-
})
|