playbook_ui 13.32.0.pre.alpha.PLAY14143272 → 13.32.0.pre.alpha.PLAY14143288
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +3 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default_value.html.erb +10 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default_value.jsx +31 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/index.js +2 -1
- data/app/pb_kits/playbook/pb_dropdown/dropdown.html.erb +2 -2
- data/app/pb_kits/playbook/pb_dropdown/dropdown.rb +5 -0
- data/app/pb_kits/playbook/pb_dropdown/index.js +25 -0
- data/dist/chunks/_typeahead.js +14 -32
- data/dist/chunks/_weekday_stacked.js +7 -7
- data/dist/chunks/vendor.js +1 -1
- data/dist/playbook-doc.js +83 -83
- 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 +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5618b32ebc83c42d8613bd4fa8b0a2744a51305118db04bfcf7ac130ea914db8
|
4
|
+
data.tar.gz: 54892a5dec259caa818c197140f0438179e1a9e3904438fe0f82aa5d317092b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a44280282310fbba58f3998a32eaa1a0f1979bdba5d28bafcc8de6c3e195295fe5acb1c71beef38666f8918af70f86286818a03250898d4d7d1bc158ef261ec9
|
7
|
+
data.tar.gz: 7afa46a34ac936970e8f0113cf2808b2ac56fac7e75c80ab3393c7ee844dbd304879070954e918f69a6281e23ff66f7f8be06fd10e97b3a446d833895813062c
|
@@ -26,6 +26,7 @@ type DropdownProps = {
|
|
26
26
|
className?: string;
|
27
27
|
dark?: boolean;
|
28
28
|
data?: { [key: string]: string };
|
29
|
+
defaultValue?: GenericObject;
|
29
30
|
error?: string;
|
30
31
|
htmlOptions?: { [key: string]: string | number | boolean | (() => void) },
|
31
32
|
id?: string;
|
@@ -44,6 +45,7 @@ const Dropdown = (props: DropdownProps) => {
|
|
44
45
|
className,
|
45
46
|
dark = false,
|
46
47
|
data = {},
|
48
|
+
defaultValue = {},
|
47
49
|
error,
|
48
50
|
htmlOptions = {},
|
49
51
|
id,
|
@@ -66,7 +68,7 @@ const Dropdown = (props: DropdownProps) => {
|
|
66
68
|
const [isDropDownClosed, setIsDropDownClosed, toggleDropdown] = useDropdown(isClosed);
|
67
69
|
|
68
70
|
const [filterItem, setFilterItem] = useState("");
|
69
|
-
const [selected, setSelected] = useState<GenericObject>(
|
71
|
+
const [selected, setSelected] = useState<GenericObject>(defaultValue);
|
70
72
|
const [isInputFocused, setIsInputFocused] = useState(false);
|
71
73
|
const [hasTriggerSubcomponent, setHasTriggerSubcomponent] = useState(true);
|
72
74
|
const [hasContainerSubcomponent, setHasContainerSubcomponent] =
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<%
|
2
|
+
options = [
|
3
|
+
{ label: 'United States', value: 'United States', id: 'us' },
|
4
|
+
{ label: 'Canada', value: 'Canada', id: 'ca' },
|
5
|
+
{ label: 'Pakistan', value: 'Pakistan', id: 'pk' },
|
6
|
+
]
|
7
|
+
|
8
|
+
%>
|
9
|
+
|
10
|
+
<%= pb_rails("dropdown", props: {options: options, default_value: options.last}) %>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { Dropdown } from 'playbook-ui'
|
3
|
+
|
4
|
+
const DropdownDefaultValue = (props) => {
|
5
|
+
const options = [
|
6
|
+
{
|
7
|
+
label: "United States",
|
8
|
+
value: "United States",
|
9
|
+
},
|
10
|
+
{
|
11
|
+
label: "Canada",
|
12
|
+
value: "Canada",
|
13
|
+
},
|
14
|
+
{
|
15
|
+
label: "Pakistan",
|
16
|
+
value: "Pakistan",
|
17
|
+
}
|
18
|
+
];
|
19
|
+
|
20
|
+
return (
|
21
|
+
<>
|
22
|
+
<Dropdown
|
23
|
+
defaultValue={options[2]}
|
24
|
+
options={options}
|
25
|
+
{...props}
|
26
|
+
/>
|
27
|
+
</>
|
28
|
+
)
|
29
|
+
}
|
30
|
+
|
31
|
+
export default DropdownDefaultValue
|
@@ -8,6 +8,7 @@ examples:
|
|
8
8
|
- dropdown_with_custom_trigger_rails: Custom Trigger
|
9
9
|
- dropdown_with_custom_padding: Custom Option Padding
|
10
10
|
- dropdown_error: Dropdown with Error
|
11
|
+
- dropdown_default_value: Default Value
|
11
12
|
|
12
13
|
react:
|
13
14
|
- dropdown_default: Default
|
@@ -18,6 +19,7 @@ examples:
|
|
18
19
|
- dropdown_with_custom_trigger: Custom Trigger
|
19
20
|
- dropdown_with_custom_padding: Custom Option Padding
|
20
21
|
- dropdown_error: Dropdown with Error
|
22
|
+
- dropdown_default_value: Default Value
|
21
23
|
# - dropdown_with_autocomplete: Autocomplete
|
22
24
|
# - dropdown_with_autocomplete_and_custom_display: Autocomplete with Custom Display
|
23
25
|
# - dropdown_with_external_control: useDropdown Hook
|
@@ -9,4 +9,5 @@ export { default as DropdownWithLabel } from './_dropdown_with_label.jsx'
|
|
9
9
|
export { default as DropdownWithExternalControl } from './_dropdown_with_external_control.jsx'
|
10
10
|
export { default as DropdownWithHook } from './_dropdown_with_hook.jsx'
|
11
11
|
export { default as DropdownSubcomponentStructure } from './_dropdown_subcomponent_structure.jsx'
|
12
|
-
export { default as DropdownError } from './_dropdown_error.jsx'
|
12
|
+
export { default as DropdownError } from './_dropdown_error.jsx'
|
13
|
+
export { default as DropdownDefaultValue } from './_dropdown_default_value.jsx'
|
@@ -8,8 +8,8 @@
|
|
8
8
|
<%= pb_rails("caption", props: {text: object.label, margin_bottom:"xs"}) %>
|
9
9
|
<% end %>
|
10
10
|
<div class="dropdown_wrapper<%= error_class %>" style="position: relative">
|
11
|
-
<input type="hidden" name="<%= object.name %>" id="dropdown-selected-option" value="" />
|
12
|
-
<input id="dropdown-form-validation" name="<%= object.name %>_form_validation" value="" style="display: none" <%= object.required ? "required" : ""%> />
|
11
|
+
<input type="hidden" name="<%= object.name %>" id="dropdown-selected-option" value="<%= input_default_value %>" />
|
12
|
+
<input id="dropdown-form-validation" name="<%= object.name %>_form_validation" value="<%= input_default_value %>" style="display: none" <%= object.required ? "required" : ""%> />
|
13
13
|
|
14
14
|
<% if content.present? %>
|
15
15
|
<%= content.presence %>
|
@@ -10,6 +10,7 @@ module Playbook
|
|
10
10
|
prop :error, type: Playbook::Props::String
|
11
11
|
prop :required, type: Playbook::Props::Boolean,
|
12
12
|
default: false
|
13
|
+
prop :default_value
|
13
14
|
|
14
15
|
def data
|
15
16
|
Hash(prop(:data)).merge(pb_dropdown: true)
|
@@ -24,6 +25,10 @@ module Playbook
|
|
24
25
|
def error_class
|
25
26
|
error.present? ? " error" : ""
|
26
27
|
end
|
28
|
+
|
29
|
+
def input_default_value
|
30
|
+
default_value.present? ? default_value.transform_keys(&:to_s) : ""
|
31
|
+
end
|
27
32
|
end
|
28
33
|
end
|
29
34
|
end
|
@@ -21,6 +21,7 @@ export default class PbDropdown extends PbEnhancedElement {
|
|
21
21
|
|
22
22
|
connect() {
|
23
23
|
this.keyboardHandler = new PbDropdownKeyboard(this);
|
24
|
+
this.setDefaultValue();
|
24
25
|
this.bindEventListeners();
|
25
26
|
this.updateArrowDisplay(false);
|
26
27
|
this.handleFormValidation();
|
@@ -179,4 +180,28 @@ export default class PbDropdown extends PbEnhancedElement {
|
|
179
180
|
}
|
180
181
|
}
|
181
182
|
}
|
183
|
+
|
184
|
+
setDefaultValue() {
|
185
|
+
const hiddenInput = this.element.querySelector("#dropdown-selected-option");
|
186
|
+
|
187
|
+
if (hiddenInput.value) {
|
188
|
+
const inputFormValidation = this.element.querySelector(INPUT_FORM_VALIDATION);
|
189
|
+
const defaultValue = JSON.parse(hiddenInput.value.replaceAll("=>", ":"));
|
190
|
+
const options = this.element.querySelectorAll(OPTION_SELECTOR);
|
191
|
+
|
192
|
+
options.forEach((option) => {
|
193
|
+
if (defaultValue.id === JSON.parse(option.dataset.dropdownOptionLabel).id) {
|
194
|
+
option.classList.add("pb_dropdown_option_selected");
|
195
|
+
}
|
196
|
+
});
|
197
|
+
|
198
|
+
const triggerElement = this.element.querySelector("#dropdown_trigger_display");
|
199
|
+
if (triggerElement) {
|
200
|
+
triggerElement.textContent = defaultValue.label;
|
201
|
+
}
|
202
|
+
|
203
|
+
hiddenInput.value = defaultValue.id;
|
204
|
+
inputFormValidation.value = defaultValue.id;
|
205
|
+
}
|
206
|
+
}
|
182
207
|
}
|