playbook_ui 16.1.0.pre.alpha.play2771passphraseaccessibility14033 → 16.1.0.pre.alpha.play264213817
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_card/docs/_card_light.html.erb +35 -3
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +5 -14
- data/app/pb_kits/playbook/pb_dialog/_dialog.scss +6 -8
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +0 -6
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +2 -37
- data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +0 -6
- data/app/pb_kits/playbook/pb_dropdown/docs/index.js +1 -4
- data/app/pb_kits/playbook/pb_dropdown/dropdown.html.erb +2 -2
- data/app/pb_kits/playbook/pb_dropdown/dropdown.rb +0 -6
- data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +0 -94
- data/app/pb_kits/playbook/pb_dropdown/dropdown_container.rb +1 -5
- data/app/pb_kits/playbook/pb_dropdown/index.js +4 -59
- data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownContainer.tsx +0 -3
- data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownTrigger.tsx +1 -2
- data/app/pb_kits/playbook/pb_filter/Filter/SortMenu.tsx +1 -1
- data/app/pb_kits/playbook/pb_filter/docs/_filter_default.html.erb +2 -2
- data/app/pb_kits/playbook/pb_filter/docs/_filter_default.jsx +9 -16
- data/app/pb_kits/playbook/pb_filter/filter.rb +2 -2
- data/app/pb_kits/playbook/pb_form/docs/_form_with_required_indicator.html.erb +0 -2
- data/app/pb_kits/playbook/pb_form/pb_form_validation.js +2 -9
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.html.erb +5 -5
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.jsx +4 -4
- data/app/pb_kits/playbook/pb_form_pill/form_pill.rb +0 -4
- data/app/pb_kits/playbook/pb_passphrase/_passphrase.tsx +7 -40
- data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.jsx +0 -1
- data/app/pb_kits/playbook/pb_passphrase/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_passphrase/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_passphrase/passphrase.rb +0 -2
- data/app/pb_kits/playbook/pb_passphrase/passphrase.test.jsx +1 -30
- data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +0 -3
- data/app/pb_kits/playbook/pb_phone_number_input/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_phone_number_input/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.rb +0 -3
- data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.test.js +3 -34
- data/app/pb_kits/playbook/pb_textarea/_textarea.tsx +0 -10
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.html.erb +3 -3
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.jsx +0 -3
- data/app/pb_kits/playbook/pb_textarea/textarea.html.erb +9 -25
- data/app/pb_kits/playbook/pb_textarea/textarea.rb +1 -7
- data/app/pb_kits/playbook/pb_time_picker/_time_picker.tsx +11 -97
- data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_on_handler.jsx +2 -5
- data/app/pb_kits/playbook/pb_time_picker/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_time_picker/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_time_picker/time_picker.rb +0 -3
- data/app/pb_kits/playbook/pb_time_picker/time_picker.test.jsx +1 -47
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.test.jsx +1 -24
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +1 -2
- data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.tsx +1 -4
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_truncated_text.html.erb +1 -1
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_truncated_text.jsx +1 -1
- data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +0 -4
- data/dist/chunks/_typeahead-B9a6ZsEP.js +1 -0
- data/dist/chunks/vendor.js +3 -3
- data/dist/menu.yml +1 -1
- 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/forms/builder/phone_number_field.rb +0 -9
- data/lib/playbook/truncate.rb +1 -1
- data/lib/playbook/version.rb +1 -1
- metadata +3 -26
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.md +0 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_blank_selection_rails.md +0 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_blank_selection_react.md +0 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_clearable.html.erb +0 -52
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_clearable.jsx +0 -72
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_clearable.md +0 -5
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height.jsx +0 -33
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height_rails.html.erb +0 -20
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height_rails.md +0 -8
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_constrain_height_react.md +0 -8
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_placeholder.html.erb +0 -9
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_placeholder.jsx +0 -33
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_placeholder.md +0 -3
- data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_required_indicator.html.erb +0 -7
- data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_required_indicator.jsx +0 -24
- data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_required_indicator.md +0 -3
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_required_indicator.html.erb +0 -5
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_required_indicator.jsx +0 -14
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_required_indicator.md +0 -3
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.md +0 -1
- data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_required_indicator.html.erb +0 -6
- data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_required_indicator.jsx +0 -16
- data/app/pb_kits/playbook/pb_time_picker/docs/_time_picker_required_indicator.md +0 -3
- data/dist/chunks/_typeahead-D-8xZ__X.js +0 -1
|
@@ -5,12 +5,12 @@ import { globalProps, GlobalProps } from '../utilities/globalProps'
|
|
|
5
5
|
import Caption from '../pb_caption/_caption'
|
|
6
6
|
import SelectableCard from '../pb_selectable_card/_selectable_card'
|
|
7
7
|
import TextInput from '../pb_text_input/_text_input'
|
|
8
|
-
import colors from '../tokens/exports/_colors.module.scss'
|
|
9
8
|
|
|
10
9
|
import {
|
|
11
10
|
parseTime,
|
|
12
11
|
parseTimeToMinutes,
|
|
13
12
|
isTimeInRange as isTimeInRangeHelper,
|
|
13
|
+
isHourDisabled as isHourDisabledHelper,
|
|
14
14
|
isAnyAMTimeValid as isAnyAMTimeValidHelper,
|
|
15
15
|
isAnyPMTimeValid as isAnyPMTimeValidHelper,
|
|
16
16
|
getDisplayTime,
|
|
@@ -48,7 +48,6 @@ type TimePickerProps = {
|
|
|
48
48
|
onChange?: (time: string) => void,
|
|
49
49
|
onClose?: (time: string) => void,
|
|
50
50
|
required?: boolean,
|
|
51
|
-
requiredIndicator?: boolean,
|
|
52
51
|
showTimezone?: boolean,
|
|
53
52
|
timeFormat?: TimeFormat,
|
|
54
53
|
validationMessage?: string,
|
|
@@ -73,7 +72,6 @@ const TimePicker = (props: TimePickerProps): JSX.Element => {
|
|
|
73
72
|
onChange,
|
|
74
73
|
onClose,
|
|
75
74
|
required = false,
|
|
76
|
-
requiredIndicator = false,
|
|
77
75
|
showTimezone = false,
|
|
78
76
|
timeFormat = 'AMPM',
|
|
79
77
|
validationMessage,
|
|
@@ -116,6 +114,10 @@ const TimePicker = (props: TimePickerProps): JSX.Element => {
|
|
|
116
114
|
return isTimeInRangeHelper(h, m, mer, timeFormat, minTimeMinutes, maxTimeMinutes)
|
|
117
115
|
}
|
|
118
116
|
|
|
117
|
+
const isHourDisabled = (h: number, mer?: 'AM' | 'PM'): boolean => {
|
|
118
|
+
return isHourDisabledHelper(h, mer, timeFormat, minTimeMinutes, maxTimeMinutes)
|
|
119
|
+
}
|
|
120
|
+
|
|
119
121
|
const isCurrentTimeValid = (h: number, m: number, mer: 'AM' | 'PM'): boolean => {
|
|
120
122
|
return isTimeInRange(h, m, mer)
|
|
121
123
|
}
|
|
@@ -185,28 +187,6 @@ const TimePicker = (props: TimePickerProps): JSX.Element => {
|
|
|
185
187
|
const [showHourDropdown, setShowHourDropdown] = useState(false)
|
|
186
188
|
const [showMinuteDropdown, setShowMinuteDropdown] = useState(false)
|
|
187
189
|
|
|
188
|
-
// Clicking the clock add-on opens the dropdown
|
|
189
|
-
useEffect(() => {
|
|
190
|
-
if (disabled) return
|
|
191
|
-
|
|
192
|
-
const addOnCard = document.querySelector(`#${uniqueId}-input`)?.closest('.text_input_wrapper_add_on')?.querySelector('.add-on-card') as HTMLElement
|
|
193
|
-
|
|
194
|
-
if (addOnCard) {
|
|
195
|
-
const handleAddOnClick = (e: Event) => {
|
|
196
|
-
e.preventDefault()
|
|
197
|
-
e.stopPropagation()
|
|
198
|
-
setShowDropdown(true)
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
addOnCard.addEventListener('click', handleAddOnClick)
|
|
202
|
-
addOnCard.style.cursor = 'pointer'
|
|
203
|
-
|
|
204
|
-
return () => {
|
|
205
|
-
addOnCard.removeEventListener('click', handleAddOnClick)
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
}, [uniqueId, disabled, setShowDropdown])
|
|
209
|
-
|
|
210
190
|
// Input dropdown scrolling
|
|
211
191
|
const scrollDropdownToSelected = (dropdownRef: React.RefObject<HTMLDivElement>) => {
|
|
212
192
|
if (dropdownRef.current) {
|
|
@@ -389,10 +369,6 @@ const TimePicker = (props: TimePickerProps): JSX.Element => {
|
|
|
389
369
|
}
|
|
390
370
|
}
|
|
391
371
|
|
|
392
|
-
const handleHourFocus = (e: React.FocusEvent<HTMLInputElement>) => {
|
|
393
|
-
e.target.select()
|
|
394
|
-
}
|
|
395
|
-
|
|
396
372
|
const handleHourBlur = () => {
|
|
397
373
|
const result = normalizeHourOnBlur(hourInputValue, hour, timeFormat)
|
|
398
374
|
setHour(result.hour)
|
|
@@ -417,10 +393,6 @@ const TimePicker = (props: TimePickerProps): JSX.Element => {
|
|
|
417
393
|
}
|
|
418
394
|
}
|
|
419
395
|
|
|
420
|
-
const handleMinuteFocus = (e: React.FocusEvent<HTMLInputElement>) => {
|
|
421
|
-
e.target.select()
|
|
422
|
-
}
|
|
423
|
-
|
|
424
396
|
const handleMinuteBlur = () => {
|
|
425
397
|
const result = normalizeMinuteOnBlur(minuteInputValue, minute)
|
|
426
398
|
setMinute(result.minute)
|
|
@@ -510,30 +482,6 @@ const TimePicker = (props: TimePickerProps): JSX.Element => {
|
|
|
510
482
|
e.preventDefault()
|
|
511
483
|
setShowHourDropdown(false)
|
|
512
484
|
closeDropdown()
|
|
513
|
-
} else if (e.key === 'ArrowDown') {
|
|
514
|
-
// ArrowDown increases value (like scrolling down a list)
|
|
515
|
-
e.preventDefault()
|
|
516
|
-
const { maxHour, minHour } = getHourConstraints(timeFormat)
|
|
517
|
-
const newHour = hour >= maxHour ? minHour : hour + 1
|
|
518
|
-
setHour(newHour)
|
|
519
|
-
setHourInputValue(timeFormat === '24hour' ? newHour.toString().padStart(2, '0') : newHour.toString())
|
|
520
|
-
setHasSelectedTime(true)
|
|
521
|
-
const timeString = get24HourTime(newHour, minute, meridiem, timeFormat)
|
|
522
|
-
if (onChange) {
|
|
523
|
-
onChange(timeString)
|
|
524
|
-
}
|
|
525
|
-
} else if (e.key === 'ArrowUp') {
|
|
526
|
-
// ArrowUp decreases value (like scrolling up a list)
|
|
527
|
-
e.preventDefault()
|
|
528
|
-
const { maxHour, minHour } = getHourConstraints(timeFormat)
|
|
529
|
-
const newHour = hour <= minHour ? maxHour : hour - 1
|
|
530
|
-
setHour(newHour)
|
|
531
|
-
setHourInputValue(timeFormat === '24hour' ? newHour.toString().padStart(2, '0') : newHour.toString())
|
|
532
|
-
setHasSelectedTime(true)
|
|
533
|
-
const timeString = get24HourTime(newHour, minute, meridiem, timeFormat)
|
|
534
|
-
if (onChange) {
|
|
535
|
-
onChange(timeString)
|
|
536
|
-
}
|
|
537
485
|
}
|
|
538
486
|
}
|
|
539
487
|
|
|
@@ -565,28 +513,6 @@ const TimePicker = (props: TimePickerProps): JSX.Element => {
|
|
|
565
513
|
e.preventDefault()
|
|
566
514
|
setShowMinuteDropdown(false)
|
|
567
515
|
closeDropdown()
|
|
568
|
-
} else if (e.key === 'ArrowDown') {
|
|
569
|
-
// ArrowDown increases value (like scrolling down a list)
|
|
570
|
-
e.preventDefault()
|
|
571
|
-
const newMinute = minute >= 59 ? 0 : minute + 1
|
|
572
|
-
setMinute(newMinute)
|
|
573
|
-
setMinuteInputValue(newMinute.toString().padStart(2, '0'))
|
|
574
|
-
setHasSelectedTime(true)
|
|
575
|
-
const timeString = get24HourTime(hour, newMinute, meridiem, timeFormat)
|
|
576
|
-
if (onChange) {
|
|
577
|
-
onChange(timeString)
|
|
578
|
-
}
|
|
579
|
-
} else if (e.key === 'ArrowUp') {
|
|
580
|
-
// ArrowUp decreases value (like scrolling up a list)
|
|
581
|
-
e.preventDefault()
|
|
582
|
-
const newMinute = minute <= 0 ? 59 : minute - 1
|
|
583
|
-
setMinute(newMinute)
|
|
584
|
-
setMinuteInputValue(newMinute.toString().padStart(2, '0'))
|
|
585
|
-
setHasSelectedTime(true)
|
|
586
|
-
const timeString = get24HourTime(hour, newMinute, meridiem, timeFormat)
|
|
587
|
-
if (onChange) {
|
|
588
|
-
onChange(timeString)
|
|
589
|
-
}
|
|
590
516
|
}
|
|
591
517
|
}
|
|
592
518
|
|
|
@@ -699,22 +625,12 @@ const TimePicker = (props: TimePickerProps): JSX.Element => {
|
|
|
699
625
|
>
|
|
700
626
|
{label && (
|
|
701
627
|
<label htmlFor={`${uniqueId}-input`}>
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
{label} <span style={{ color: `${colors.error}` }}>{'*'}</span>
|
|
709
|
-
</Caption>
|
|
710
|
-
) : (
|
|
711
|
-
<Caption
|
|
712
|
-
className="pb_time_picker_kit_label"
|
|
713
|
-
marginBottom="xs"
|
|
714
|
-
size="md"
|
|
715
|
-
text={label}
|
|
716
|
-
/>
|
|
717
|
-
)}
|
|
628
|
+
<Caption
|
|
629
|
+
className="pb_time_picker_kit_label"
|
|
630
|
+
marginBottom="xs"
|
|
631
|
+
size="md"
|
|
632
|
+
text={label}
|
|
633
|
+
/>
|
|
718
634
|
</label>
|
|
719
635
|
)}
|
|
720
636
|
<div className="time_picker_wrapper">
|
|
@@ -773,7 +689,6 @@ const TimePicker = (props: TimePickerProps): JSX.Element => {
|
|
|
773
689
|
onBlur={handleHourBlur}
|
|
774
690
|
onChange={handleHourChange}
|
|
775
691
|
onClick={() => { setShowHourDropdown(!showHourDropdown); setShowMinuteDropdown(false) }}
|
|
776
|
-
onFocus={handleHourFocus}
|
|
777
692
|
onKeyDown={handleHourKeyDown}
|
|
778
693
|
pattern="[0-9]*"
|
|
779
694
|
ref={hourInputRef}
|
|
@@ -819,7 +734,6 @@ const TimePicker = (props: TimePickerProps): JSX.Element => {
|
|
|
819
734
|
onBlur={handleMinuteBlur}
|
|
820
735
|
onChange={handleMinuteChange}
|
|
821
736
|
onClick={() => { setShowMinuteDropdown(!showMinuteDropdown); setShowHourDropdown(false) }}
|
|
822
|
-
onFocus={handleMinuteFocus}
|
|
823
737
|
onKeyDown={handleMinuteKeyDown}
|
|
824
738
|
pattern="[0-9]*"
|
|
825
739
|
ref={minuteInputRef}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React, { useState } from 'react'
|
|
2
2
|
import TimePicker from '../../pb_time_picker/_time_picker'
|
|
3
3
|
import Body from '../../pb_body/_body'
|
|
4
|
-
import Flex from '../../pb_flex/_flex'
|
|
5
4
|
|
|
6
5
|
const TimePickerOnHandler = (props) => {
|
|
7
6
|
const [selectedTime, setSelectedTime] = useState('')
|
|
@@ -18,9 +17,7 @@ const TimePickerOnHandler = (props) => {
|
|
|
18
17
|
return (
|
|
19
18
|
<div>
|
|
20
19
|
{(selectedTime || closedTime) && (
|
|
21
|
-
<
|
|
22
|
-
orientation="column"
|
|
23
|
-
>
|
|
20
|
+
<div style={{ marginBottom: '16px' }}>
|
|
24
21
|
{selectedTime && (
|
|
25
22
|
<Body
|
|
26
23
|
text={`onChange: ${selectedTime}`}
|
|
@@ -32,7 +29,7 @@ const TimePickerOnHandler = (props) => {
|
|
|
32
29
|
text={`onClose: ${closedTime}`}
|
|
33
30
|
/>
|
|
34
31
|
)}
|
|
35
|
-
</
|
|
32
|
+
</div>
|
|
36
33
|
)}
|
|
37
34
|
<TimePicker
|
|
38
35
|
id="time-picker-on-handler"
|
|
@@ -9,7 +9,6 @@ examples:
|
|
|
9
9
|
- time_picker_min_max_time: Min & Max Time
|
|
10
10
|
- time_picker_error: Error
|
|
11
11
|
- time_picker_disabled: Disabled
|
|
12
|
-
- time_picker_required_indicator: Required Indicator
|
|
13
12
|
- time_picker_input_options: Input Options
|
|
14
13
|
|
|
15
14
|
|
|
@@ -22,5 +21,4 @@ examples:
|
|
|
22
21
|
- time_picker_min_max_time: Min & Max Time
|
|
23
22
|
- time_picker_error: Error
|
|
24
23
|
- time_picker_disabled: Disabled
|
|
25
|
-
- time_picker_required_indicator: Required Indicator
|
|
26
24
|
- time_picker_on_handler: onChange & onClose Handlers
|
|
@@ -7,4 +7,3 @@ export { default as TimePickerOnHandler } from './_time_picker_on_handler.jsx'
|
|
|
7
7
|
export { default as TimePickerMinMaxTime } from './_time_picker_min_max_time.jsx'
|
|
8
8
|
export { default as TimePickerError } from './_time_picker_error.jsx'
|
|
9
9
|
export { default as TimePickerDisabled } from './_time_picker_disabled.jsx'
|
|
10
|
-
export { default as TimePickerRequiredIndicator } from './_time_picker_required_indicator.jsx'
|
|
@@ -16,8 +16,6 @@ module Playbook
|
|
|
16
16
|
prop :name, type: Playbook::Props::String
|
|
17
17
|
prop :required, type: Playbook::Props::Boolean,
|
|
18
18
|
default: false
|
|
19
|
-
prop :required_indicator, type: Playbook::Props::Boolean,
|
|
20
|
-
default: false
|
|
21
19
|
prop :show_timezone, type: Playbook::Props::Boolean,
|
|
22
20
|
default: false
|
|
23
21
|
prop :time_format, type: Playbook::Props::Enum,
|
|
@@ -70,7 +68,6 @@ module Playbook
|
|
|
70
68
|
minTime: min_time,
|
|
71
69
|
name: name,
|
|
72
70
|
required: required,
|
|
73
|
-
requiredIndicator: required_indicator,
|
|
74
71
|
showTimezone: show_timezone,
|
|
75
72
|
timeFormat: time_format,
|
|
76
73
|
validationMessage: validation_message,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
|
-
import { render, screen, fireEvent
|
|
2
|
+
import { render, screen, fireEvent } from '../utilities/test-utils'
|
|
3
3
|
|
|
4
4
|
import TimePicker from './_time_picker'
|
|
5
5
|
|
|
@@ -111,50 +111,4 @@ describe('TimePicker', () => {
|
|
|
111
111
|
expect(screen.getByText('AM')).toBeInTheDocument()
|
|
112
112
|
expect(screen.getByText('PM')).toBeInTheDocument()
|
|
113
113
|
})
|
|
114
|
-
|
|
115
|
-
test('renders required indicator asterisk when requiredIndicator is true', () => {
|
|
116
|
-
render(
|
|
117
|
-
<TimePicker
|
|
118
|
-
data={{ testid: 'required-indicator-picker' }}
|
|
119
|
-
label="Select Time"
|
|
120
|
-
requiredIndicator
|
|
121
|
-
/>
|
|
122
|
-
)
|
|
123
|
-
const kit = screen.getByTestId('required-indicator-picker')
|
|
124
|
-
const label = within(kit).getByText(/Select Time/)
|
|
125
|
-
|
|
126
|
-
expect(label).toBeInTheDocument()
|
|
127
|
-
expect(kit).toHaveTextContent('*')
|
|
128
|
-
})
|
|
129
|
-
|
|
130
|
-
test('requiredIndicator works independently of required prop', () => {
|
|
131
|
-
render(
|
|
132
|
-
<TimePicker
|
|
133
|
-
data={{ testid: 'indicator-without-required' }}
|
|
134
|
-
label="Select Time"
|
|
135
|
-
requiredIndicator
|
|
136
|
-
/>
|
|
137
|
-
)
|
|
138
|
-
const kit = screen.getByTestId('indicator-without-required')
|
|
139
|
-
|
|
140
|
-
expect(kit).toHaveTextContent('*')
|
|
141
|
-
const input = screen.getByPlaceholderText('Select Time')
|
|
142
|
-
expect(input).not.toHaveAttribute('required')
|
|
143
|
-
})
|
|
144
|
-
|
|
145
|
-
test('requiredIndicator and required can be used together', () => {
|
|
146
|
-
render(
|
|
147
|
-
<TimePicker
|
|
148
|
-
data={{ testid: 'both-props-picker' }}
|
|
149
|
-
label="Select Time"
|
|
150
|
-
required
|
|
151
|
-
requiredIndicator
|
|
152
|
-
/>
|
|
153
|
-
)
|
|
154
|
-
const kit = screen.getByTestId('both-props-picker')
|
|
155
|
-
const input = screen.getByPlaceholderText('Select Time')
|
|
156
|
-
|
|
157
|
-
expect(kit).toHaveTextContent('*')
|
|
158
|
-
expect(input).toHaveAttribute('required')
|
|
159
|
-
})
|
|
160
114
|
})
|
|
@@ -290,27 +290,4 @@ test('input display none shows number of selected items', () => {
|
|
|
290
290
|
const kit = screen.getByTestId('input-display-none-test')
|
|
291
291
|
const inputDisplayDiv = kit.querySelector(".pb_typeahead_selection_count")
|
|
292
292
|
expect(inputDisplayDiv).toHaveTextContent("2 items selected")
|
|
293
|
-
})
|
|
294
|
-
|
|
295
|
-
test('typeahead with pills that use name instead of label', () => {
|
|
296
|
-
const customOptions = [
|
|
297
|
-
{ name: 'Nihar', value: '1' },
|
|
298
|
-
{ name: 'kylehgousel', value: '2' },
|
|
299
|
-
]
|
|
300
|
-
|
|
301
|
-
render(
|
|
302
|
-
<Typeahead
|
|
303
|
-
data={{ testid: 'pills-custom-fields-test' }}
|
|
304
|
-
defaultValue={[{ name: 'Nihar', value: '1' }]}
|
|
305
|
-
getOptionLabel={(option) => option.name}
|
|
306
|
-
getOptionValue={(option) => option.value}
|
|
307
|
-
isMulti
|
|
308
|
-
options={customOptions}
|
|
309
|
-
/>
|
|
310
|
-
)
|
|
311
|
-
|
|
312
|
-
const kit = screen.getByTestId('pills-custom-fields-test')
|
|
313
|
-
const pill = kit.querySelector(".pb_form_pill_kit.pb_form_pill_primary")
|
|
314
|
-
expect(pill).toBeInTheDocument()
|
|
315
|
-
expect(pill).toHaveTextContent("Nihar")
|
|
316
|
-
})
|
|
293
|
+
})
|
|
@@ -18,12 +18,9 @@ type Props = {
|
|
|
18
18
|
|
|
19
19
|
const MultiValue = (props: Props) => {
|
|
20
20
|
const { removeProps, isFocused } = props
|
|
21
|
-
const { imageUrl } = props.data
|
|
21
|
+
const { imageUrl, label } = props.data
|
|
22
22
|
const { dark, multiKit, pillColor, truncate, wrapped, inputDisplay } = props.selectProps
|
|
23
23
|
|
|
24
|
-
// Extract label - use data.label or data.name if available, otherwise use empty string
|
|
25
|
-
const label = props.data.label || props.data.name || ''
|
|
26
|
-
|
|
27
24
|
// If inputDisplay is "none", don't render the pill/badge, just return null (the count handled in ValueContainer file)
|
|
28
25
|
if (inputDisplay === 'none') {
|
|
29
26
|
return null
|