playbook_ui 7.3.0 → 7.4.0.pre.test3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c9b11071227a394af722c14bca8f59f2abc059a816353af4ffa8b5a7694a5eaf
4
- data.tar.gz: b5eab2ae50132399b89d2a55f6b958148c4e6fbacbe9dbabc9f2ae3311052fc4
3
+ metadata.gz: f4211d32c465852e435e15c2ef8f84f09eb8c3b7a1688fe716cd8e5a7dbe3010
4
+ data.tar.gz: aa2b0edb1d453cfa833e456d05ba66cd3d673c03aefb489e1354f30fbf896a95
5
5
  SHA512:
6
- metadata.gz: 9824c9204448f3108c5fdd315aad2572768122ec6f3d3643bb7428d98a5fda418bb6dcd9b1b1853e674e3975323894de257c381293122382022aca10a7a4e150
7
- data.tar.gz: '09955236a98e1b3da1beb51c977f49c94dd99cf6fa74784d8d3d2f7dc670941c5a8a09a5e10ce9a9a889f3702fe1d30bdd1b78985d037e29edce9b466155b93b'
6
+ metadata.gz: b485cc3abd09ab954532ac9dd39a97c841b58be95a35b1e2ae1d6fc985d081131431f552eb50be5e9254257895041b0f278941f0a7d17810244d6742f5d34024
7
+ data.tar.gz: fc0c06ccb718a5b0b77ac77080836a3865f27f98ad63ed5cb4cf7e584114de508e95384307d535855aef5214cbb6e74bc9415f37049c1e3117ba193a2de2297d
@@ -6,6 +6,7 @@ import AsyncSelect from 'react-select/async'
6
6
  import { get } from 'lodash'
7
7
 
8
8
  import Control from './components/Control'
9
+ import ClearIndicator from './components/ClearIndicator'
9
10
  import IndicatorsContainer from './components/IndicatorsContainer'
10
11
  import MenuList from './components/MenuList'
11
12
  import MultiValue from './components/MultiValue'
@@ -40,6 +41,7 @@ const Typeahead = (props: Props) => {
40
41
  defaultOptions: true,
41
42
  components: {
42
43
  Control,
44
+ ClearIndicator,
43
45
  IndicatorsContainer,
44
46
  IndicatorSeparator: null,
45
47
  MenuList,
@@ -58,7 +60,16 @@ const Typeahead = (props: Props) => {
58
60
 
59
61
  const Tag = props.async ? AsyncSelect : Select
60
62
 
61
- const handleOnChange = (data, { action }) => {
63
+ const handleOnChange = (data, { action, option, removedValue }) => {
64
+ if (action === 'select-option') {
65
+ if (selectProps.onMultiValueClick) selectProps.onMultiValueClick(option)
66
+ const multiValueClearEvent = new CustomEvent('pb-typeahead-kit-result-option-select', { detail: option })
67
+ document.dispatchEvent(multiValueClearEvent)
68
+ }
69
+ if (action === 'remove-value' || action === 'pop-value') {
70
+ const multiValueRemoveEvent = new CustomEvent('pb-typeahead-kit-result-option-remove', { detail: removedValue })
71
+ document.dispatchEvent(multiValueRemoveEvent)
72
+ }
62
73
  if (action === 'clear') {
63
74
  const multiValueClearEvent = new CustomEvent('pb-typeahead-kit-result-clear')
64
75
  document.dispatchEvent(multiValueClearEvent)
@@ -0,0 +1,19 @@
1
+ /* @flow */
2
+
3
+ import React, { useEffect } from 'react'
4
+ import { components } from 'react-select'
5
+
6
+ const ClearContainer = (props: any) => {
7
+ useEffect(() => {
8
+ document.addEventListener('pb-typeahead-kit:clear', props.clearValue)
9
+ }, true)
10
+
11
+ return (
12
+ <components.ClearIndicator
13
+ className="clear_indicator"
14
+ {...props}
15
+ />
16
+ )
17
+ }
18
+
19
+ export default ClearContainer
@@ -13,24 +13,17 @@ type Props = {
13
13
  }
14
14
 
15
15
  const MultiValue = (props: Props) => {
16
- const {
17
- data,
18
- removeProps,
19
- selectProps,
20
- } = props
16
+ const { removeProps } = props
17
+ const { imageUrl, label } = props.data
21
18
 
22
- const { imageUrl, label } = data
23
-
24
- const handleOnMultiValueRemove = () => {
25
- const multiValueRemoveEvent = new CustomEvent('pb-typeahead-kit-result-option-remove', { detail: data })
26
- document.dispatchEvent(multiValueRemoveEvent)
19
+ const formPillProps = {
20
+ marginRight: 'xs',
21
+ name: label,
27
22
  }
28
23
 
29
- const handleOnClick = () => {
30
- if (selectProps.onMultiValueClick) selectProps.onMultiValueClick(data)
31
- handleOnMultiValueRemove()
32
- removeProps.onClick()
33
- }
24
+ if (typeof imageUrl === 'string') formPillProps.avatarUrl = imageUrl
25
+
26
+ const handleOnClick = removeProps.onClick
34
27
 
35
28
  return (
36
29
  <components.MultiValueContainer
@@ -13,14 +13,9 @@ const Option = (props: any) => {
13
13
  label,
14
14
  } = props.data
15
15
 
16
- const handleOptionClicked = () => {
17
- const resultSelectedEvent = new CustomEvent('pb-typeahead-kit-result-option-select', { detail: props.data })
18
- document.dispatchEvent(resultSelectedEvent)
19
- }
20
-
21
16
  return (
22
17
  <components.Option {...props}>
23
- <div onClick={handleOptionClicked}>
18
+ <div>
24
19
  <Choose>
25
20
  <When condition={imageUrl}>
26
21
  <User
@@ -7,7 +7,9 @@
7
7
  ]
8
8
  %>
9
9
 
10
- <%= pb_rails("typeahead", props: { options: options, label: "Colors", name: :foo, pills: true }) %>
10
+ <%= pb_rails("typeahead", props: { default_options: [options.first], options: options, label: "Colors", name: :foo, pills: true }) %>
11
+
12
+ <%= pb_rails("button", props: {id: "clear-pills", text: "Clear All Options", variant: "secondary"}) %>
11
13
 
12
14
  <!-- This section is an example of the available JavaScript event hooks -->
13
15
  <%= javascript_tag defer: "defer" do %>
@@ -22,4 +24,8 @@
22
24
  document.addEventListener("pb-typeahead-kit-result-clear", function() {
23
25
  console.log('All options cleared')
24
26
  })
27
+
28
+ document.querySelector('#clear-pills').addEventListener('click', function() {
29
+ document.dispatchEvent(new CustomEvent('pb-typeahead-kit:clear'))
30
+ })
25
31
  <% end %>
@@ -1,8 +1,17 @@
1
1
  Typeahead kit is data-driven. The minimum default fields are `label` and `value`.
2
2
 
3
- `{ label: "Foo", value: "bar" }`
3
+ This is an example of an option: `{ label: 'Windows', value: '#FFA500' }`
4
+
5
+ #### Rails: Default Options
6
+
7
+ You can also pass `default_options` which will populate the initial pill selections:
8
+
9
+ `default_options: [{ label: 'Windows', value: '#FFA500' }]`
4
10
 
5
11
  #### Rails: Subscribing to JS Events
6
12
  `pb-typeahead-kit-result-option-select` event to perform custom work when an option is clicked.
7
13
  `pb-typeahead-kit-result-option-remove` event to perform custom work when a pill is clicked.
8
14
  `pb-typeahead-kit-result-option-clear` event to perform custom work when all pills are removed upon clicking the X.
15
+
16
+ #### Rails: Publishing JS Events
17
+ `pb-typeahead-kit:clear` event to clear all options.
@@ -7,6 +7,7 @@ module Playbook
7
7
 
8
8
  prop :async, type: Playbook::Props::Boolean,
9
9
  default: false
10
+ prop :default_options, type: Playbook::Props::HashArray, default: []
10
11
  prop :label
11
12
  prop :load_options
12
13
  prop :name
@@ -35,6 +36,7 @@ module Playbook
35
36
 
36
37
  def typeahead_with_pills_options
37
38
  base_options = {
39
+ defaultValue: default_options,
38
40
  isMulti: true,
39
41
  label: label,
40
42
  options: options,
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playbook
4
- VERSION = "7.3.0"
4
+ VERSION = "7.4.0.pre.test3"
5
5
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playbook_ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.3.0
4
+ version: 7.4.0.pre.test3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Power UX
8
8
  - Power Devs
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-10-23 00:00:00.000000000 Z
12
+ date: 2020-10-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -1770,6 +1770,7 @@ files:
1770
1770
  - app/pb_kits/playbook/pb_typeahead/_typeahead.html.erb
1771
1771
  - app/pb_kits/playbook/pb_typeahead/_typeahead.jsx
1772
1772
  - app/pb_kits/playbook/pb_typeahead/_typeahead.scss
1773
+ - app/pb_kits/playbook/pb_typeahead/components/ClearIndicator.jsx
1773
1774
  - app/pb_kits/playbook/pb_typeahead/components/Control.jsx
1774
1775
  - app/pb_kits/playbook/pb_typeahead/components/IndicatorsContainer.jsx
1775
1776
  - app/pb_kits/playbook/pb_typeahead/components/MenuList.jsx
@@ -1889,7 +1890,7 @@ homepage: http://playbook.powerapp.cloud
1889
1890
  licenses:
1890
1891
  - MIT
1891
1892
  metadata: {}
1892
- post_install_message:
1893
+ post_install_message:
1893
1894
  rdoc_options: []
1894
1895
  require_paths:
1895
1896
  - lib
@@ -1900,13 +1901,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
1900
1901
  version: '0'
1901
1902
  required_rubygems_version: !ruby/object:Gem::Requirement
1902
1903
  requirements:
1903
- - - ">="
1904
+ - - ">"
1904
1905
  - !ruby/object:Gem::Version
1905
- version: '0'
1906
+ version: 1.3.1
1906
1907
  requirements: []
1907
- rubyforge_project:
1908
+ rubyforge_project:
1908
1909
  rubygems_version: 2.7.3
1909
- signing_key:
1910
+ signing_key:
1910
1911
  specification_version: 4
1911
1912
  summary: Playbook Design System
1912
1913
  test_files: []