playbook_ui 16.1.0.pre.alpha.play277814027 → 16.1.0.pre.rc.0
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 +2 -12
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.html.erb +2 -2
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +0 -4
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +0 -33
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_row_loading.md +2 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +1 -2
- data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +1 -51
- data/app/pb_kits/playbook/pb_advanced_table/table_header.html.erb +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +0 -34
- data/app/pb_kits/playbook/pb_advanced_table/table_row.html.erb +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +0 -19
- data/app/pb_kits/playbook/pb_background/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_background/docs/index.js +0 -1
- 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 +1 -5
- 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_icon/icon.rb +1 -6
- data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +33 -35
- data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_with_tooltip.jsx +1 -1
- data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_with_tooltip.md +1 -1
- data/app/pb_kits/playbook/pb_multiple_users/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_multiple_users/multiple_users.html.erb +7 -51
- data/app/pb_kits/playbook/pb_multiple_users/multiple_users.rb +0 -1
- data/app/pb_kits/playbook/pb_passphrase/_passphrase.tsx +5 -20
- 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_rich_text_editor/_rich_text_editor.tsx +6 -33
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/example.yml +0 -3
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/index.js +0 -2
- data/app/pb_kits/playbook/pb_rich_text_editor/rich_text_editor.rb +0 -5
- data/app/pb_kits/playbook/pb_rich_text_editor/rich_text_editor.test.js +18 -33
- data/app/pb_kits/playbook/pb_textarea/_textarea.tsx +11 -39
- 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/docs/example.yml +1 -4
- data/app/pb_kits/playbook/pb_textarea/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_textarea/index.ts +5 -12
- data/app/pb_kits/playbook/pb_textarea/textarea.html.erb +14 -30
- data/app/pb_kits/playbook/pb_textarea/textarea.rb +0 -36
- data/app/pb_kits/playbook/pb_textarea/textarea.test.js +1 -18
- 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/{_pb_line_graph-BgKF_zz1.js → _pb_line_graph-hxi01lk7.js} +1 -1
- data/dist/chunks/_typeahead-BgLnlhzP.js +1 -0
- data/dist/chunks/{globalProps-BhVYCqRf.js → globalProps-DgYwLYNx.js} +1 -1
- data/dist/chunks/{lib-DD34ZrWL.js → lib-NLxTo8OB.js} +1 -1
- data/dist/chunks/vendor.js +3 -3
- data/dist/menu.yml +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/align_content.rb +3 -13
- data/lib/playbook/align_items.rb +3 -13
- data/lib/playbook/align_self.rb +3 -13
- data/lib/playbook/display.rb +0 -5
- data/lib/playbook/flex.rb +3 -13
- data/lib/playbook/flex_direction.rb +3 -13
- data/lib/playbook/flex_grow.rb +3 -13
- data/lib/playbook/flex_shrink.rb +3 -13
- data/lib/playbook/flex_wrap.rb +3 -13
- data/lib/playbook/forms/builder/phone_number_field.rb +0 -9
- data/lib/playbook/justify_content.rb +3 -13
- data/lib/playbook/justify_self.rb +3 -13
- data/lib/playbook/order.rb +3 -13
- data/lib/playbook/spacing.rb +9 -39
- data/lib/playbook/text_align.rb +3 -13
- data/lib/playbook/truncate.rb +1 -1
- data/lib/playbook/version.rb +2 -2
- data/lib/playbook/vertical_align.rb +3 -13
- data/lib/playbook/z_index.rb +0 -5
- metadata +6 -72
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_background_custom.jsx +0 -71
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_background_custom.md +0 -4
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_row_loading_rails.html.erb +0 -64
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_row_loading_rails.md +0 -18
- data/app/pb_kits/playbook/pb_background/docs/_background_responsive.jsx +0 -30
- data/app/pb_kits/playbook/pb_background/docs/_background_responsive.md +0 -1
- 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_multi_level_select/docs/_multi_level_select_input_display.html.erb +0 -74
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_input_display.jsx +0 -87
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_input_display.md +0 -3
- data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_with_tooltip.html.erb +0 -30
- 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_rich_text_editor/docs/_rich_text_editor_advanced_required_indicator.jsx +0 -35
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_required_indicator.md +0 -3
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.html.erb +0 -10
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.jsx +0 -21
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_required_indicator.md +0 -3
- data/app/pb_kits/playbook/pb_table/docs/_sections.yml +0 -68
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default.md +0 -1
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_input_options.html.erb +0 -39
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_input_options.md +0 -3
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_required_indicator.html.erb +0 -5
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_required_indicator.jsx +0 -25
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_required_indicator.md +0 -3
- 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/app/pb_kits/playbook/utilities/test/globalProps/borderRadius.test.js +0 -33
- data/app/pb_kits/playbook/utilities/test/globalProps/bottom.test.js +0 -60
- data/app/pb_kits/playbook/utilities/test/globalProps/cursor.test.js +0 -42
- data/app/pb_kits/playbook/utilities/test/globalProps/dark.test.js +0 -33
- data/app/pb_kits/playbook/utilities/test/globalProps/gap.test.js +0 -87
- data/app/pb_kits/playbook/utilities/test/globalProps/globalProps.integration.test.js +0 -936
- data/app/pb_kits/playbook/utilities/test/globalProps/height.test.js +0 -68
- data/app/pb_kits/playbook/utilities/test/globalProps/htmlOptions.test.js +0 -510
- data/app/pb_kits/playbook/utilities/test/globalProps/left.test.js +0 -60
- data/app/pb_kits/playbook/utilities/test/globalProps/lineHeight.test.js +0 -33
- data/app/pb_kits/playbook/utilities/test/globalProps/margin.test.js +0 -95
- data/app/pb_kits/playbook/utilities/test/globalProps/numberSpacing.test.js +0 -33
- data/app/pb_kits/playbook/utilities/test/globalProps/overflow.test.js +0 -68
- data/app/pb_kits/playbook/utilities/test/globalProps/padding.test.js +0 -95
- data/app/pb_kits/playbook/utilities/test/globalProps/position.test.js +0 -33
- data/app/pb_kits/playbook/utilities/test/globalProps/right.test.js +0 -60
- data/app/pb_kits/playbook/utilities/test/globalProps/shadow.test.js +0 -33
- data/app/pb_kits/playbook/utilities/test/globalProps/textAlign.test.js +0 -41
- data/app/pb_kits/playbook/utilities/test/globalProps/top.test.js +0 -60
- data/app/pb_kits/playbook/utilities/test/globalProps/verticalAlign.test.js +0 -40
- data/app/pb_kits/playbook/utilities/test/globalProps/width.test.js +0 -66
- data/app/pb_kits/playbook/utilities/test/globalProps/zIndex.test.js +0 -50
- data/dist/chunks/_typeahead-CWA5wlah.js +0 -1
|
@@ -122,80 +122,6 @@ test('generated placeholder prop', () => {
|
|
|
122
122
|
|
|
123
123
|
})
|
|
124
124
|
|
|
125
|
-
test('placeholder prop passed directly to Dropdown', () => {
|
|
126
|
-
render(
|
|
127
|
-
<Dropdown
|
|
128
|
-
data={{ testid: testId }}
|
|
129
|
-
options={options}
|
|
130
|
-
placeholder="Choose a country"
|
|
131
|
-
/>
|
|
132
|
-
)
|
|
133
|
-
|
|
134
|
-
const kit = screen.getByTestId(testId)
|
|
135
|
-
const trigger = kit.querySelector('.pb_dropdown_trigger')
|
|
136
|
-
expect(trigger).toHaveTextContent('Choose a country')
|
|
137
|
-
})
|
|
138
|
-
|
|
139
|
-
test('placeholder works with default variant', () => {
|
|
140
|
-
render(
|
|
141
|
-
<Dropdown
|
|
142
|
-
data={{ testid: testId }}
|
|
143
|
-
options={options}
|
|
144
|
-
placeholder="Select an option"
|
|
145
|
-
variant="default"
|
|
146
|
-
/>
|
|
147
|
-
)
|
|
148
|
-
|
|
149
|
-
const kit = screen.getByTestId(testId)
|
|
150
|
-
const trigger = kit.querySelector('.pb_dropdown_trigger')
|
|
151
|
-
expect(trigger).toHaveTextContent('Select an option')
|
|
152
|
-
})
|
|
153
|
-
|
|
154
|
-
test('placeholder works with subtle variant', () => {
|
|
155
|
-
render(
|
|
156
|
-
<Dropdown
|
|
157
|
-
data={{ testid: testId }}
|
|
158
|
-
options={options}
|
|
159
|
-
placeholder="Pick an option"
|
|
160
|
-
separators={false}
|
|
161
|
-
variant="subtle"
|
|
162
|
-
/>
|
|
163
|
-
)
|
|
164
|
-
|
|
165
|
-
const kit = screen.getByTestId(testId)
|
|
166
|
-
expect(kit).toHaveClass('pb_dropdown_subtle_separators_hidden')
|
|
167
|
-
const trigger = kit.querySelector('.pb_dropdown_trigger')
|
|
168
|
-
expect(trigger).toHaveTextContent('Pick an option')
|
|
169
|
-
})
|
|
170
|
-
|
|
171
|
-
test('placeholder works with quickpick variant', () => {
|
|
172
|
-
render(
|
|
173
|
-
<Dropdown
|
|
174
|
-
data={{ testid: testId }}
|
|
175
|
-
placeholder="Select a date range"
|
|
176
|
-
variant="quickpick"
|
|
177
|
-
/>
|
|
178
|
-
)
|
|
179
|
-
|
|
180
|
-
const kit = screen.getByTestId(testId)
|
|
181
|
-
expect(kit).toHaveClass('pb_dropdown_quickpick')
|
|
182
|
-
const trigger = kit.querySelector('.pb_dropdown_trigger')
|
|
183
|
-
expect(trigger).toHaveTextContent('Select a date range')
|
|
184
|
-
})
|
|
185
|
-
|
|
186
|
-
test('placeholder shows default "Select..." when not provided', () => {
|
|
187
|
-
render(
|
|
188
|
-
<Dropdown
|
|
189
|
-
data={{ testid: testId }}
|
|
190
|
-
options={options}
|
|
191
|
-
/>
|
|
192
|
-
)
|
|
193
|
-
|
|
194
|
-
const kit = screen.getByTestId(testId)
|
|
195
|
-
const trigger = kit.querySelector('.pb_dropdown_trigger')
|
|
196
|
-
expect(trigger).toHaveTextContent('Select...')
|
|
197
|
-
})
|
|
198
|
-
|
|
199
125
|
test('generated label prop', () => {
|
|
200
126
|
render (
|
|
201
127
|
<Dropdown
|
|
@@ -540,27 +466,7 @@ test("quickpick clears selection when clicking X icon", () => {
|
|
|
540
466
|
expect(trigger).toHaveTextContent("Select...")
|
|
541
467
|
})
|
|
542
468
|
|
|
543
|
-
test("quickpick hides clear icon when clearable is false", () => {
|
|
544
|
-
render(
|
|
545
|
-
<Dropdown
|
|
546
|
-
clearable={false}
|
|
547
|
-
data={{ testid: testId }}
|
|
548
|
-
defaultValue="This Week"
|
|
549
|
-
variant="quickpick"
|
|
550
|
-
/>
|
|
551
|
-
)
|
|
552
|
-
|
|
553
|
-
const kit = screen.getByTestId(testId)
|
|
554
|
-
const trigger = kit.querySelector('.pb_dropdown_trigger')
|
|
555
|
-
|
|
556
|
-
expect(trigger).toHaveTextContent("This Week")
|
|
557
|
-
|
|
558
|
-
const clearIcon = kit.querySelector('[aria-label="times icon"]')
|
|
559
|
-
expect(clearIcon).not.toBeInTheDocument()
|
|
560
|
-
})
|
|
561
|
-
|
|
562
469
|
test("quickpick returns date array values when option selected", () => {
|
|
563
|
-
// eslint-disable-next-line react/no-multi-comp
|
|
564
470
|
const TestComponent = () => {
|
|
565
471
|
const [selected, setSelected] = useState(null)
|
|
566
472
|
return (
|
|
@@ -5,13 +5,9 @@ module Playbook
|
|
|
5
5
|
class DropdownContainer < Playbook::KitBase
|
|
6
6
|
prop :searchbar, type: Playbook::Props::Boolean,
|
|
7
7
|
default: false
|
|
8
|
-
prop :constrain_height, type: Playbook::Props::Boolean,
|
|
9
|
-
default: false
|
|
10
8
|
|
|
11
9
|
def classname
|
|
12
|
-
|
|
13
|
-
classes << "constrain_height" if constrain_height
|
|
14
|
-
generate_classname(*classes, separator: " ")
|
|
10
|
+
generate_classname("pb_dropdown_container", "close", separator: " ")
|
|
15
11
|
end
|
|
16
12
|
|
|
17
13
|
def data
|
|
@@ -48,7 +48,6 @@ export default class PbDropdown extends PbEnhancedElement {
|
|
|
48
48
|
this.updatePills();
|
|
49
49
|
|
|
50
50
|
this.clearBtn = this.element.querySelector(CLEAR_ICON_SELECTOR);
|
|
51
|
-
this.isClearable = this.element.dataset.pbDropdownClearable !== "false";
|
|
52
51
|
if (this.clearBtn) {
|
|
53
52
|
this.clearBtn.style.display = "none";
|
|
54
53
|
this.clearBtn.addEventListener("click", (e) => {
|
|
@@ -61,10 +60,6 @@ export default class PbDropdown extends PbEnhancedElement {
|
|
|
61
60
|
|
|
62
61
|
updateClearButton() {
|
|
63
62
|
if (!this.clearBtn) return;
|
|
64
|
-
if (!this.isClearable) {
|
|
65
|
-
this.clearBtn.style.display = "none";
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
63
|
const hasSelection = this.isMultiSelect
|
|
69
64
|
? this.selectedOptions.size > 0
|
|
70
65
|
: Boolean(this.element.querySelector(DROPDOWN_INPUT).value);
|
|
@@ -114,51 +109,15 @@ export default class PbDropdown extends PbEnhancedElement {
|
|
|
114
109
|
adjustDropdownHeight() {
|
|
115
110
|
if (this.target.classList.contains("open")) {
|
|
116
111
|
const el = this.target;
|
|
117
|
-
const shouldConstrain = el.classList.contains("constrain_height");
|
|
118
112
|
el.style.height = "auto";
|
|
119
113
|
requestAnimationFrame(() => {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
const maxHeight = fontSize * 18;
|
|
124
|
-
const scrollHeight = el.scrollHeight;
|
|
125
|
-
const newHeight = Math.min(scrollHeight, maxHeight);
|
|
126
|
-
el.offsetHeight; // force reflow
|
|
127
|
-
el.style.height = newHeight + "px";
|
|
128
|
-
} else {
|
|
129
|
-
el.offsetHeight; // force reflow
|
|
130
|
-
el.style.height = el.scrollHeight + "px";
|
|
131
|
-
}
|
|
114
|
+
const newHeight = el.scrollHeight + "px";
|
|
115
|
+
el.offsetHeight; // force reflow
|
|
116
|
+
el.style.height = newHeight;
|
|
132
117
|
});
|
|
133
118
|
}
|
|
134
119
|
}
|
|
135
120
|
|
|
136
|
-
adjustDropdownPosition(container) {
|
|
137
|
-
if (!container) return;
|
|
138
|
-
|
|
139
|
-
const wrapper = this.element.querySelector(".dropdown_wrapper");
|
|
140
|
-
if (!wrapper) return;
|
|
141
|
-
|
|
142
|
-
const wrapperRect = wrapper.getBoundingClientRect();
|
|
143
|
-
const h = container.getBoundingClientRect().height || container.scrollHeight;
|
|
144
|
-
const spaceBelow = window.innerHeight - wrapperRect.bottom;
|
|
145
|
-
const spaceAbove = wrapperRect.top;
|
|
146
|
-
|
|
147
|
-
// If not enough space below but enough space above, position above
|
|
148
|
-
if (spaceBelow < h + 10 && spaceAbove >= h + 10) {
|
|
149
|
-
container.style.top = "auto";
|
|
150
|
-
container.style.bottom = "calc(100% + 5px)";
|
|
151
|
-
container.style.marginTop = "0";
|
|
152
|
-
container.style.marginBottom = "0";
|
|
153
|
-
} else {
|
|
154
|
-
// Default: position below
|
|
155
|
-
container.style.top = "";
|
|
156
|
-
container.style.bottom = "";
|
|
157
|
-
container.style.marginTop = "";
|
|
158
|
-
container.style.marginBottom = "";
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
121
|
handleSearch(term = "") {
|
|
163
122
|
const lcTerm = term.toLowerCase();
|
|
164
123
|
let hasMatch = false
|
|
@@ -406,21 +365,7 @@ export default class PbDropdown extends PbEnhancedElement {
|
|
|
406
365
|
showElement(elem) {
|
|
407
366
|
elem.classList.remove("close");
|
|
408
367
|
elem.classList.add("open");
|
|
409
|
-
|
|
410
|
-
const shouldConstrain = elem.classList.contains("constrain_height");
|
|
411
|
-
if (shouldConstrain) {
|
|
412
|
-
// Calculate height respecting max-height constraint (18em)
|
|
413
|
-
const fontSize = parseFloat(getComputedStyle(elem).fontSize) || 16;
|
|
414
|
-
const maxHeight = fontSize * 18; // matches SCSS max-height: 18em
|
|
415
|
-
const scrollHeight = elem.scrollHeight;
|
|
416
|
-
const height = Math.min(scrollHeight, maxHeight);
|
|
417
|
-
elem.style.height = height + "px";
|
|
418
|
-
} else {
|
|
419
|
-
elem.style.height = elem.scrollHeight + "px";
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
// Auto-position dropdown above if not enough space below
|
|
423
|
-
this.adjustDropdownPosition(elem);
|
|
368
|
+
elem.style.height = elem.scrollHeight + "px";
|
|
424
369
|
}
|
|
425
370
|
|
|
426
371
|
hideElement(elem) {
|
|
@@ -19,7 +19,6 @@ type DropdownContainerProps = {
|
|
|
19
19
|
aria?: { [key: string]: string };
|
|
20
20
|
children?: React.ReactChild[] | React.ReactChild;
|
|
21
21
|
className?: string;
|
|
22
|
-
constrainHeight?: boolean;
|
|
23
22
|
dark?: boolean;
|
|
24
23
|
data?: { [key: string]: string };
|
|
25
24
|
htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
|
|
@@ -32,7 +31,6 @@ const DropdownContainer = (props: DropdownContainerProps) => {
|
|
|
32
31
|
aria = {},
|
|
33
32
|
children,
|
|
34
33
|
className,
|
|
35
|
-
constrainHeight = false,
|
|
36
34
|
dark = false,
|
|
37
35
|
data = {},
|
|
38
36
|
htmlOptions = {},
|
|
@@ -56,7 +54,6 @@ const DropdownContainer = (props: DropdownContainerProps) => {
|
|
|
56
54
|
const classes = classnames(
|
|
57
55
|
buildCss("pb_dropdown_container"),
|
|
58
56
|
`${isDropDownClosed ? "close" : "open"}`,
|
|
59
|
-
constrainHeight && "constrain_height",
|
|
60
57
|
globalProps(props),
|
|
61
58
|
className
|
|
62
59
|
);
|
|
@@ -44,7 +44,6 @@ const DropdownTrigger = (props: DropdownTriggerProps) => {
|
|
|
44
44
|
|
|
45
45
|
const {
|
|
46
46
|
autocomplete,
|
|
47
|
-
clearable,
|
|
48
47
|
filterItem,
|
|
49
48
|
handleBackspace,
|
|
50
49
|
handleChange,
|
|
@@ -226,7 +225,7 @@ const DropdownTrigger = (props: DropdownTriggerProps) => {
|
|
|
226
225
|
key={`${isDropDownClosed ? "chevron-down" : "chevron-up"}`}
|
|
227
226
|
>
|
|
228
227
|
{
|
|
229
|
-
|
|
228
|
+
selectedArray.length > 0 && (
|
|
230
229
|
<div onClick={(e)=>{e.stopPropagation();handleBackspace()}}>
|
|
231
230
|
<Icon
|
|
232
231
|
cursor="pointer"
|
|
@@ -21,7 +21,7 @@ const nextValue = (value: SortValue[], name: string): SortValue => {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
const directionIcon = (dir: Direction) => (
|
|
24
|
-
dir == 'asc' ? '
|
|
24
|
+
dir == 'asc' ? 'sort-amount-up' : 'sort-amount-down'
|
|
25
25
|
)
|
|
26
26
|
|
|
27
27
|
const renderOptions = (options: SortOptions, value: SortValue[], handleChange: (arg0: SortValue) => void) => (
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<%=
|
|
2
2
|
pb_rails("filter", props: {
|
|
3
3
|
min_width: "360px",
|
|
4
|
-
id: "
|
|
4
|
+
id: "1",
|
|
5
5
|
margin_bottom: "xl",
|
|
6
6
|
filters: [
|
|
7
7
|
{ name: "name", value: "John Wick" },
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
<%=
|
|
45
45
|
pb_rails("filter", props: {
|
|
46
46
|
min_width: "360px",
|
|
47
|
-
id: "
|
|
47
|
+
id: "def2",
|
|
48
48
|
sort_menu: [
|
|
49
49
|
{ item: "Popularity", link: "?q[sorts]=managers_popularity+asc", active: true, direction: "desc" },
|
|
50
50
|
{ item: "Mananger's Title", link: "?q[sorts]=managers_title+asc", active: false },
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react'
|
|
2
2
|
|
|
3
3
|
import Button from '../../pb_button/_button'
|
|
4
4
|
import Filter from '../../pb_filter/_filter'
|
|
@@ -6,18 +6,11 @@ import Flex from '../../pb_flex/_flex'
|
|
|
6
6
|
import Select from '../../pb_select/_select'
|
|
7
7
|
import TextInput from '../../pb_text_input/_text_input'
|
|
8
8
|
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const handleSortChange = (sortOptions) => {
|
|
14
|
-
setSortValue(sortOptions)
|
|
15
|
-
alert(JSON.stringify(sortOptions[0]))
|
|
16
|
-
}
|
|
9
|
+
const SortingChangeCallback = (sortOptions) => {
|
|
10
|
+
alert(JSON.stringify(sortOptions[0]))
|
|
11
|
+
}
|
|
17
12
|
|
|
18
|
-
|
|
19
|
-
setSortValue2(sortOptions)
|
|
20
|
-
}
|
|
13
|
+
const FilterDefault = (props) => {
|
|
21
14
|
const options = [
|
|
22
15
|
{ value: 'USA' },
|
|
23
16
|
{ value: 'Canada' },
|
|
@@ -36,7 +29,7 @@ const FilterDefault = (props) => {
|
|
|
36
29
|
}}
|
|
37
30
|
marginBottom="xl"
|
|
38
31
|
minWidth="375px"
|
|
39
|
-
onSortChange={
|
|
32
|
+
onSortChange={SortingChangeCallback}
|
|
40
33
|
results={1}
|
|
41
34
|
sortOptions={{
|
|
42
35
|
popularity: 'Popularity',
|
|
@@ -45,7 +38,7 @@ const FilterDefault = (props) => {
|
|
|
45
38
|
// eslint-disable-next-line
|
|
46
39
|
manager_name: 'Manager\'s Name',
|
|
47
40
|
}}
|
|
48
|
-
sortValue={
|
|
41
|
+
sortValue={[{ name: 'popularity', dir: 'desc' }]}
|
|
49
42
|
{...props}
|
|
50
43
|
>
|
|
51
44
|
{({ closePopover }) => (
|
|
@@ -89,7 +82,7 @@ const FilterDefault = (props) => {
|
|
|
89
82
|
<Filter
|
|
90
83
|
double
|
|
91
84
|
minWidth="375px"
|
|
92
|
-
onSortChange={
|
|
85
|
+
onSortChange={SortingChangeCallback}
|
|
93
86
|
results={0}
|
|
94
87
|
sortOptions={{
|
|
95
88
|
popularity: 'Popularity',
|
|
@@ -98,7 +91,7 @@ const FilterDefault = (props) => {
|
|
|
98
91
|
// eslint-disable-next-line
|
|
99
92
|
manager_name: 'Manager\'s Name',
|
|
100
93
|
}}
|
|
101
|
-
sortValue={
|
|
94
|
+
sortValue={[{ name: 'popularity', dir: 'desc' }]}
|
|
102
95
|
{...props}
|
|
103
96
|
>
|
|
104
97
|
{({ closePopover }) => (
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
<%= pb_form_with(scope: :example, url: "", method: :get, validate: true) do |form| %>
|
|
2
2
|
<%= form.text_field :example_text_field, props: { label: true, required: true, required_indicator: true } %>
|
|
3
3
|
<%= form.text_field :example_text_field_2, props: { label: "Text Field Custom Label", required: true, required_indicator: true } %>
|
|
4
|
-
<%= form.text_area :example_text_area, props: { label: true, required: true, required_indicator: true } %>
|
|
5
|
-
<%= form.text_area :example_text_area_2, props: { label: "Textarea Custom Label", required: true, required_indicator: true } %>
|
|
6
4
|
<%= form.email_field :example_email_field, props: { label: true, required: true, required_indicator: true } %>
|
|
7
5
|
<%= form.number_field :example_number_field, props: { label: true, required: true, required_indicator: true } %>
|
|
8
6
|
<%= form.search_field :example_search_field, props: { label: true, required: true, required_indicator: true } %>
|
|
9
7
|
<%= form.password_field :example_password_field, props: { label: true, required: true, required_indicator: true } %>
|
|
10
8
|
<%= form.url_field :example_url_field, props: { label: true, required: true, required_indicator: true } %>
|
|
11
|
-
<%= form.phone_number_field :example_phone_number_field, props: { label: true, required: true, required_indicator: true } %>
|
|
12
|
-
<%= form.time_picker :example_time_picker_required_indicator, props: { label: true, required: true, required_indicator: true } %>
|
|
13
9
|
|
|
14
10
|
<%= form.actions do |action| %>
|
|
15
11
|
<%= action.submit %>
|
|
16
12
|
<%= action.button props: { type: "reset", text: "Cancel", variant: "secondary" } %>
|
|
17
13
|
<% end %>
|
|
18
|
-
<% end %>
|
|
14
|
+
<% end %>
|
|
@@ -26,10 +26,6 @@ class PbFormValidation extends PbEnhancedElement {
|
|
|
26
26
|
const isPhoneNumberInput = field.closest('.pb_phone_number_input')
|
|
27
27
|
if (isPhoneNumberInput) return
|
|
28
28
|
|
|
29
|
-
// Skip TimePicker inputs - they handle their own validation
|
|
30
|
-
const isTimePickerInput = field.closest('.pb_time_picker')
|
|
31
|
-
if (isTimePickerInput) return
|
|
32
|
-
|
|
33
29
|
FIELD_EVENTS.forEach((e) => {
|
|
34
30
|
field.addEventListener(e, debounce((event) => {
|
|
35
31
|
this.validateFormField(event)
|
|
@@ -71,16 +67,13 @@ class PbFormValidation extends PbEnhancedElement {
|
|
|
71
67
|
|
|
72
68
|
// Check if this is a phone number input
|
|
73
69
|
const isPhoneNumberInput = kitElement.classList.contains('pb_phone_number_input')
|
|
74
|
-
|
|
75
|
-
// Check if this is a TimePicker input
|
|
76
|
-
const isTimePickerInput = kitElement.classList.contains('pb_time_picker')
|
|
77
70
|
|
|
78
71
|
// ensure clean error message state
|
|
79
72
|
this.clearError(target)
|
|
80
73
|
kitElement.classList.add('error')
|
|
81
74
|
|
|
82
|
-
// Only add error message if it's NOT a phone number input
|
|
83
|
-
if (!isPhoneNumberInput
|
|
75
|
+
// Only add error message if it's NOT a phone number input
|
|
76
|
+
if (!isPhoneNumberInput) {
|
|
84
77
|
// set the error message element
|
|
85
78
|
const errorMessageContainer = this.errorMessageContainer
|
|
86
79
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
options: names,
|
|
16
16
|
label: "Truncation Within Typeahead",
|
|
17
17
|
pills: true,
|
|
18
|
-
truncate:
|
|
18
|
+
truncate: 1,
|
|
19
19
|
}) %>
|
|
20
20
|
|
|
21
21
|
<%= pb_rails("caption", props: { text: "Form Pill Truncation" }) %>
|
|
@@ -24,19 +24,19 @@
|
|
|
24
24
|
name: "Princess Amelia Mignonette Grimaldi Thermopolis Renaldo",
|
|
25
25
|
avatar_url: "https://randomuser.me/api/portraits/women/44.jpg",
|
|
26
26
|
tabindex: 0,
|
|
27
|
-
truncate:
|
|
27
|
+
truncate: 1,
|
|
28
28
|
id: "truncation-1"
|
|
29
29
|
}) %>
|
|
30
30
|
<%= pb_rails("form_pill", props: {
|
|
31
31
|
icon: "badge-check",
|
|
32
32
|
text: "icon and a very long tag to show truncation",
|
|
33
33
|
tabindex: 0,
|
|
34
|
-
truncate:
|
|
34
|
+
truncate: 1,
|
|
35
35
|
id: "truncation-2"
|
|
36
36
|
}) %>
|
|
37
37
|
<%= pb_rails("form_pill", props: {
|
|
38
38
|
text: "form pill long tag no tooltip show truncation",
|
|
39
39
|
tabindex: 0,
|
|
40
|
-
truncate:
|
|
40
|
+
truncate: 1,
|
|
41
41
|
}) %>
|
|
42
|
-
<% end %>
|
|
42
|
+
<% end %>
|
|
@@ -21,7 +21,7 @@ const FormPillTruncatedText = (props) => {
|
|
|
21
21
|
isMulti
|
|
22
22
|
label="Truncation Within Typeahead"
|
|
23
23
|
options={names}
|
|
24
|
-
truncate={
|
|
24
|
+
truncate={1}
|
|
25
25
|
{...props}
|
|
26
26
|
/>
|
|
27
27
|
<Caption text="Form Pill Truncation"/>
|
|
@@ -31,20 +31,20 @@ const FormPillTruncatedText = (props) => {
|
|
|
31
31
|
name="Princess Amelia Mignonette Grimaldi Thermopolis Renaldo"
|
|
32
32
|
onClick={() => alert('Click!')}
|
|
33
33
|
tabIndex={0}
|
|
34
|
-
truncate={
|
|
34
|
+
truncate={1}
|
|
35
35
|
/>
|
|
36
36
|
<FormPill
|
|
37
37
|
icon="badge-check"
|
|
38
38
|
onClick={() => {alert('Click!')}}
|
|
39
39
|
tabIndex={0}
|
|
40
40
|
text="icon and a very long tag to show truncation"
|
|
41
|
-
truncate={
|
|
41
|
+
truncate={1}
|
|
42
42
|
/>
|
|
43
43
|
<FormPill
|
|
44
44
|
onClick={() => {alert('Click!')}}
|
|
45
45
|
tabIndex={0}
|
|
46
46
|
text="form pill with a very long tag to show truncation"
|
|
47
|
-
truncate={
|
|
47
|
+
truncate={1}
|
|
48
48
|
/>
|
|
49
49
|
</Card>
|
|
50
50
|
</>
|
|
@@ -109,18 +109,13 @@ module Playbook
|
|
|
109
109
|
|
|
110
110
|
svg["class"] = %w[pb_custom_icon svg-inline--fa].concat([object.custom_icon_classname]).join(" ")
|
|
111
111
|
svg["id"] = object.id
|
|
112
|
+
svg["data"] = object.data
|
|
112
113
|
svg["height"] = "auto"
|
|
113
114
|
svg["width"] = "auto"
|
|
114
115
|
svg["tabindex"] = object.tabindex
|
|
115
116
|
fill_color = object.color || "currentColor"
|
|
116
117
|
doc.at_css("path")["fill"] = fill_color
|
|
117
118
|
|
|
118
|
-
if object.data.present?
|
|
119
|
-
object.data.each do |key, value|
|
|
120
|
-
svg["data-#{key}"] = value
|
|
121
|
-
end
|
|
122
|
-
end
|
|
123
|
-
|
|
124
119
|
if object.aria.present?
|
|
125
120
|
object.aria.each do |key, value|
|
|
126
121
|
k = key.to_s
|
|
@@ -1,39 +1,37 @@
|
|
|
1
1
|
examples:
|
|
2
2
|
rails:
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
- multi_level_select_single_disabled: Disabled Options (Single Select)
|
|
3
|
+
- multi_level_select_default: Default
|
|
4
|
+
- multi_level_select_single: Single Select
|
|
5
|
+
- multi_level_select_single_children_only: Single Select w/ Hidden Radios
|
|
6
|
+
- multi_level_select_return_all_selected: Return All Selected
|
|
7
|
+
- multi_level_select_selected_ids: Selected Ids
|
|
8
|
+
- multi_level_select_with_form: With Form
|
|
9
|
+
- multi_level_select_color: With Pills (Custom Color)
|
|
10
|
+
- multi_level_select_reset: Reset Selection
|
|
11
|
+
- multi_level_select_label: With Label
|
|
12
|
+
- multi_level_select_error: Error
|
|
13
|
+
- multi_level_select_disabled: Disabled Input
|
|
14
|
+
- multi_level_select_disabled_options_default: Disabled Options (Default)
|
|
15
|
+
- multi_level_select_disabled_options: Disabled Options (Return All Selected)
|
|
16
|
+
- multi_level_select_disabled_options_parent_default: Disabled Parent Option (Default)
|
|
17
|
+
- multi_level_select_disabled_options_parent: Disabled Parent Option (Return All Selected)
|
|
18
|
+
- multi_level_select_single_disabled: Disabled Options (Single Select)
|
|
20
19
|
|
|
21
20
|
react:
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
- multi_level_select_single_disabled: Disabled Options (Single Select)
|
|
21
|
+
- multi_level_select_default: Default
|
|
22
|
+
- multi_level_select_react_hook: React Hook
|
|
23
|
+
- multi_level_select_single: Single Select
|
|
24
|
+
- multi_level_select_single_children_only: Single Select w/ Hidden Radios
|
|
25
|
+
- multi_level_select_return_all_selected: Return All Selected
|
|
26
|
+
- multi_level_select_selected_ids_react: Selected Ids
|
|
27
|
+
- multi_level_select_color: With Pills (Custom Color)
|
|
28
|
+
- multi_level_select_with_children: Checkboxes With Children
|
|
29
|
+
- multi_level_select_with_children_with_radios: Single Select With Children
|
|
30
|
+
- multi_level_select_label: With Label
|
|
31
|
+
- multi_level_select_error: Error
|
|
32
|
+
- multi_level_select_disabled: Disabled Input
|
|
33
|
+
- multi_level_select_disabled_options_default: Disabled Options (Default)
|
|
34
|
+
- multi_level_select_disabled_options: Disabled Options (Return All Selected)
|
|
35
|
+
- multi_level_select_disabled_options_parent_default: Disabled Parent Option (Default)
|
|
36
|
+
- multi_level_select_disabled_options_parent: Disabled Parent Option (Return All Selected)
|
|
37
|
+
- multi_level_select_single_disabled: Disabled Options (Single Select)
|
|
@@ -4,7 +4,6 @@ export { default as MultiLevelSelectSingleChildrenOnly } from './_multi_level_se
|
|
|
4
4
|
export { default as MultiLevelSelectReturnAllSelected } from './_multi_level_select_return_all_selected.jsx'
|
|
5
5
|
export { default as MultiLevelSelectSelectedIdsReact } from "./_multi_level_select_selected_ids_react.jsx"
|
|
6
6
|
export { default as MultiLevelSelectColor } from './_multi_level_select_color.jsx'
|
|
7
|
-
export { default as MultiLevelSelectInputDisplay } from './_multi_level_select_input_display.jsx'
|
|
8
7
|
export { default as MultiLevelSelectWithChildren } from './_multi_level_select_with_children.jsx'
|
|
9
8
|
export { default as MultiLevelSelectWithChildrenWithRadios } from './_multi_level_select_with_children_with_radios.jsx'
|
|
10
9
|
export { default as MultiLevelSelectDisabled } from './_multi_level_select_disabled.jsx'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Use the `withTooltip`
|
|
1
|
+
Use the `withTooltip` boolean prop to enable setting user-specific tooltip content via the `tooltip` property in the users array.
|