playbook_ui 14.12.0.pre.alpha.PBNTR779railsdraggablecrosscontainer5863 → 14.12.0.pre.alpha.PBNTR834advtablemaxHeightstickyheader5932

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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +10 -3
  3. data/app/pb_kits/playbook/pb_advanced_table/Utilities/ActionBarAnimationHelper.ts +26 -0
  4. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +58 -7
  5. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +37 -21
  6. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props.jsx +1 -0
  7. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_react.md +3 -1
  8. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header.jsx +55 -0
  9. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header_react.md +3 -0
  10. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +1 -0
  11. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +2 -1
  12. data/app/pb_kits/playbook/pb_copy_button/_copy_button.scss +2 -1
  13. data/app/pb_kits/playbook/pb_copy_button/copy_button.html.erb +15 -0
  14. data/app/pb_kits/playbook/pb_copy_button/copy_button.rb +28 -0
  15. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_default.html.erb +2 -0
  16. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_from.html.erb +5 -0
  17. data/app/pb_kits/playbook/pb_copy_button/docs/example.yml +3 -3
  18. data/app/pb_kits/playbook/pb_copy_button/index.js +47 -0
  19. data/app/pb_kits/playbook/pb_draggable/docs/example.yml +5 -1
  20. data/app/pb_kits/playbook/pb_draggable/draggable_container.html.erb +2 -2
  21. data/app/pb_kits/playbook/pb_draggable/draggable_container.rb +0 -3
  22. data/app/pb_kits/playbook/pb_draggable/draggable_item.rb +0 -2
  23. data/app/pb_kits/playbook/pb_draggable/index.js +16 -88
  24. data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.tsx +7 -11
  25. data/app/pb_kits/playbook/pb_home_address_street/docs/example.yml +0 -2
  26. data/app/pb_kits/playbook/pb_home_address_street/docs/index.js +0 -1
  27. data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +2 -11
  28. data/app/pb_kits/playbook/pb_link/_link.tsx +18 -0
  29. data/app/pb_kits/playbook/pb_link/docs/_link_target.html.erb +15 -0
  30. data/app/pb_kits/playbook/pb_link/docs/_link_target.jsx +29 -0
  31. data/app/pb_kits/playbook/pb_link/docs/example.yml +5 -3
  32. data/app/pb_kits/playbook/pb_link/docs/index.js +2 -1
  33. data/app/pb_kits/playbook/pb_link/link.html.erb +1 -1
  34. data/app/pb_kits/playbook/pb_link/link.rb +6 -0
  35. data/app/pb_kits/playbook/pb_link/link.test.jsx +30 -0
  36. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_tooltip.html.erb +6 -6
  37. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_default.html.erb +1 -1
  38. data/app/pb_kits/playbook/pb_tooltip/index.js +45 -27
  39. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +5 -1
  40. data/dist/chunks/{_typeahead-W0hatdPs.js → _typeahead-CkemExmL.js} +1 -1
  41. data/dist/chunks/_weekday_stacked-DiNLeUtf.js +45 -0
  42. data/dist/chunks/{lib-kMuhBuU7.js → lib-DjpLC8uO.js} +1 -1
  43. data/dist/chunks/{pb_form_validation-DBJ0wZuS.js → pb_form_validation-S56UaHZl.js} +1 -1
  44. data/dist/chunks/vendor.js +1 -1
  45. data/dist/menu.yml +2 -2
  46. data/dist/playbook-doc.js +1 -1
  47. data/dist/playbook-rails-react-bindings.js +1 -1
  48. data/dist/playbook-rails.js +1 -1
  49. data/dist/playbook.css +1 -1
  50. data/lib/playbook/version.rb +1 -1
  51. metadata +16 -12
  52. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_multiple_containers_rails.html.erb +0 -193
  53. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_multiple_containers_rails.md +0 -1
  54. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_formatting.html.erb +0 -11
  55. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_formatting.jsx +0 -22
  56. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_formatting_rails.md +0 -1
  57. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_formatting_react.md +0 -1
  58. data/dist/chunks/_weekday_stacked-C98LOqgG.js +0 -45
@@ -1,5 +1,4 @@
1
1
  import PbEnhancedElement from '../pb_enhanced_element'
2
-
3
2
  import {
4
3
  createPopperLite as createPopper,
5
4
  flip,
@@ -17,27 +16,34 @@ export default class PbTooltip extends PbEnhancedElement {
17
16
 
18
17
  connect() {
19
18
  this.triggerElements.forEach((trigger) => {
20
- trigger.addEventListener('mouseenter', () => {
21
- this.mouseenterTimeout = setTimeout(() => {
22
- this.showTooltip(trigger)
23
- this.checkCloseTooltip(trigger)
24
- }, TOOLTIP_TIMEOUT)
19
+ const method = this.triggerMethod
25
20
 
26
- trigger.addEventListener('mouseleave', () => {
21
+ if (method === 'click') {
22
+ trigger.addEventListener('click', () => {
23
+ this.showTooltip(trigger)
24
+ })
25
+ } else {
26
+ trigger.addEventListener('mouseenter', () => {
27
+ this.mouseenterTimeout = setTimeout(() => {
28
+ this.showTooltip(trigger)
29
+ this.checkCloseTooltip(trigger)
30
+ }, TOOLTIP_TIMEOUT)
31
+
32
+ trigger.addEventListener('mouseleave', () => {
33
+ clearTimeout(this.mouseenterTimeout)
34
+ setTimeout(() => {
35
+ this.hideTooltip()
36
+ }, 0)
37
+ }, { once: true })
38
+ })
39
+
40
+ this.tooltip.addEventListener('mouseenter', () => {
27
41
  clearTimeout(this.mouseenterTimeout)
28
-
29
- setTimeout(() => {
30
- this.hideTooltip()
31
- }, 0)
32
- }, { once: true })
33
- })
34
- })
35
-
36
- this.tooltip.addEventListener('mouseenter', () => {
37
- clearTimeout(this.mouseenterTimeout)
38
- })
39
- this.tooltip.addEventListener('mouseleave', () => {
40
- this.hideTooltip()
42
+ })
43
+ this.tooltip.addEventListener('mouseleave', () => {
44
+ this.hideTooltip()
45
+ })
46
+ }
41
47
  })
42
48
  }
43
49
 
@@ -54,7 +60,7 @@ export default class PbTooltip extends PbEnhancedElement {
54
60
  }
55
61
 
56
62
  showTooltip(trigger) {
57
- if (this.shouldShowTooltip === "false") return
63
+ if (this.shouldShowTooltip === 'false') return
58
64
 
59
65
  this.popper = createPopper(trigger, this.tooltip, {
60
66
  placement: this.position,
@@ -78,6 +84,13 @@ export default class PbTooltip extends PbEnhancedElement {
78
84
  ],
79
85
  })
80
86
  this.tooltip.classList.add('show')
87
+
88
+ if (this.triggerMethod === 'click') {
89
+ clearTimeout(this.autoHideTimeout)
90
+ this.autoHideTimeout = setTimeout(() => {
91
+ this.hideTooltip()
92
+ }, 1000)
93
+ }
81
94
  }
82
95
 
83
96
  hideTooltip() {
@@ -94,25 +107,26 @@ export default class PbTooltip extends PbEnhancedElement {
94
107
  let triggerEl
95
108
 
96
109
  if (this.triggerElementId) {
97
- triggerEl = document.querySelector(`#${this.triggerElementId}`) //deprecated
110
+ triggerEl = document.querySelector(`#${this.triggerElementId}`)
98
111
  } else {
99
112
  const selectorIsId = this.triggerElementSelector.indexOf('#') > -1
100
- triggerEl = selectorIsId ? document.querySelector(`${this.triggerElementSelector}`) :
101
- document.querySelectorAll(`${this.triggerElementSelector}`)
113
+ triggerEl = selectorIsId
114
+ ? document.querySelector(`${this.triggerElementSelector}`)
115
+ : document.querySelectorAll(`${this.triggerElementSelector}`)
102
116
  }
103
117
 
104
118
  if (!triggerEl) {
105
- /* eslint no-console: ["error", { allow: ["warn", "error"] }] */
106
119
  console.error('Tooltip Kit: an invalid or unavailable DOM reference was provided!')
107
120
  return []
108
121
  }
109
122
 
110
123
  if (!triggerEl.length) triggerEl = [triggerEl]
111
- return this._triggerElements = (this._triggerElements || triggerEl)
124
+ return (this._triggerElements = this._triggerElements || triggerEl)
112
125
  }
113
126
 
114
127
  get tooltip() {
115
- return this._tooltip = (this._tooltip || this.element.querySelector(`#${this.tooltipId}`))
128
+ return (this._tooltip =
129
+ this._tooltip || this.element.querySelector(`#${this.tooltipId}`))
116
130
  }
117
131
 
118
132
  get position() {
@@ -134,4 +148,8 @@ export default class PbTooltip extends PbEnhancedElement {
134
148
  get shouldShowTooltip() {
135
149
  return this.element.dataset.pbTooltipShowTooltip
136
150
  }
151
+
152
+ get triggerMethod() {
153
+ return this.element.dataset.pbTooltipTriggerMethod || 'hover'
154
+ }
137
155
  }
@@ -9,6 +9,9 @@ module Playbook
9
9
  prop :tooltip_id
10
10
  prop :dark, type: Playbook::Props::Boolean,
11
11
  default: false
12
+ prop :trigger_method, type: Playbook::Props::Enum,
13
+ values: %w[hover click],
14
+ default: "hover"
12
15
 
13
16
  def classname
14
17
  generate_classname("pb_tooltip_kit", dark_class)
@@ -21,7 +24,8 @@ module Playbook
21
24
  pb_tooltip_trigger_element_selector: trigger_element_selector,
22
25
  pb_tooltip_trigger_element_id: trigger_element_id,
23
26
  pb_tooltip_tooltip_id: tooltip_id,
24
- pb_tooltip_show_tooltip: true
27
+ pb_tooltip_show_tooltip: true,
28
+ pb_tooltip_trigger_method: trigger_method
25
29
  )
26
30
  end
27
31
 
@@ -1,4 +1,4 @@
1
- import{jsx as jsx$1,Fragment,jsxs}from"react/jsx-runtime";import*as React from"react";import React__default,{createContext,useReducer,useEffect,useMemo,useContext,useRef,createElement,useState,useLayoutEffect,forwardRef,useCallback,useImperativeHandle,Component,Fragment as Fragment$1}from"react";import{r as getDefaultExportFromCjs,x as filter,y as omit,u as useCollapsible,z as get,j as getAllIcons,q as commonjsGlobal,w as colors$1,t as highchartsTheme,A as merge,s as highchartsDarkTheme,B as getAugmentedNamespace,C as createPopper,E as uniqueId,F as typography,G as cloneDeep,H as isString}from"./lib-kMuhBuU7.js";import*as ReactDOM from"react-dom";import ReactDOM__default,{createPortal}from"react-dom";import{TrixEditor}from"react-trix";import Trix from"trix";import require$$0 from"react-is";const initialState={items:[],dragData:{id:"",initialGroup:""},isDragging:"",activeContainer:""};const reducer=(state,action)=>{switch(action.type){case"SET_ITEMS":return Object.assign(Object.assign({},state),{items:action.payload});case"SET_DRAG_DATA":return Object.assign(Object.assign({},state),{dragData:action.payload});case"SET_IS_DRAGGING":return Object.assign(Object.assign({},state),{isDragging:action.payload});case"SET_ACTIVE_CONTAINER":return Object.assign(Object.assign({},state),{activeContainer:action.payload});case"CHANGE_CATEGORY":return Object.assign(Object.assign({},state),{items:state.items.map((item=>item.id===action.payload.itemId?Object.assign(Object.assign({},item),{container:action.payload.container}):item))});case"REORDER_ITEMS":{const{dragId:dragId,targetId:targetId}=action.payload;const newItems=[...state.items];const draggedItem=newItems.find((item=>item.id===dragId));const draggedIndex=newItems.indexOf(draggedItem);const targetIndex=newItems.findIndex((item=>item.id===targetId));newItems.splice(draggedIndex,1);newItems.splice(targetIndex,0,draggedItem);return Object.assign(Object.assign({},state),{items:newItems})}default:return state}};const DragContext=createContext({});const DraggableContext=()=>useContext(DragContext);const DraggableProvider=({children:children,initialItems:initialItems,onReorder:onReorder,onDragStart:onDragStart,onDragEnter:onDragEnter,onDragEnd:onDragEnd,onDrop:onDrop,onDragOver:onDragOver})=>{const[state,dispatch]=useReducer(reducer,initialState);useEffect((()=>{dispatch({type:"SET_ITEMS",payload:initialItems})}),[initialItems]);useEffect((()=>{onReorder(state.items)}),[state.items]);const handleDragStart=(id,container)=>{dispatch({type:"SET_DRAG_DATA",payload:{id:id,initialGroup:container}});dispatch({type:"SET_IS_DRAGGING",payload:id});if(onDragStart)onDragStart(id,container)};const handleDragEnter=(id,container)=>{if(state.dragData.id!==id){dispatch({type:"REORDER_ITEMS",payload:{dragId:state.dragData.id,targetId:id}});dispatch({type:"SET_DRAG_DATA",payload:{id:state.dragData.id,initialGroup:container}})}if(onDragEnter)onDragEnter(id,container)};const handleDragEnd=()=>{dispatch({type:"SET_IS_DRAGGING",payload:""});dispatch({type:"SET_ACTIVE_CONTAINER",payload:""});if(onDragEnd)onDragEnd()};const changeCategory=(itemId,container)=>{dispatch({type:"CHANGE_CATEGORY",payload:{itemId:itemId,container:container}})};const handleDrop=container=>{dispatch({type:"SET_IS_DRAGGING",payload:""});dispatch({type:"SET_ACTIVE_CONTAINER",payload:""});changeCategory(state.dragData.id,container);if(onDrop)onDrop(container)};const handleDragOver=(e,container)=>{e.preventDefault();dispatch({type:"SET_ACTIVE_CONTAINER",payload:container});if(onDragOver)onDragOver(e,container)};const contextValue=useMemo((()=>({items:state.items,dragData:state.dragData,isDragging:state.isDragging,activeContainer:state.activeContainer,handleDragStart:handleDragStart,handleDragEnter:handleDragEnter,handleDragEnd:handleDragEnd,handleDrop:handleDrop,handleDragOver:handleDragOver})),[state]);return jsx$1(DragContext.Provider,Object.assign({value:contextValue},{children:children}),void 0)};var classnames$1={exports:{}};
1
+ import{jsx as jsx$1,Fragment,jsxs}from"react/jsx-runtime";import*as React from"react";import React__default,{createContext,useReducer,useEffect,useMemo,useContext,useRef,createElement,useState,useLayoutEffect,forwardRef,useCallback,useImperativeHandle,Component,Fragment as Fragment$1}from"react";import{r as getDefaultExportFromCjs,x as filter,y as omit,u as useCollapsible,z as get,j as getAllIcons,q as commonjsGlobal,w as colors$1,t as highchartsTheme,A as merge,s as highchartsDarkTheme,B as getAugmentedNamespace,C as createPopper,E as uniqueId,F as typography,G as cloneDeep,H as isString}from"./lib-DjpLC8uO.js";import*as ReactDOM from"react-dom";import ReactDOM__default,{createPortal}from"react-dom";import{TrixEditor}from"react-trix";import Trix from"trix";import require$$0 from"react-is";const initialState={items:[],dragData:{id:"",initialGroup:""},isDragging:"",activeContainer:""};const reducer=(state,action)=>{switch(action.type){case"SET_ITEMS":return Object.assign(Object.assign({},state),{items:action.payload});case"SET_DRAG_DATA":return Object.assign(Object.assign({},state),{dragData:action.payload});case"SET_IS_DRAGGING":return Object.assign(Object.assign({},state),{isDragging:action.payload});case"SET_ACTIVE_CONTAINER":return Object.assign(Object.assign({},state),{activeContainer:action.payload});case"CHANGE_CATEGORY":return Object.assign(Object.assign({},state),{items:state.items.map((item=>item.id===action.payload.itemId?Object.assign(Object.assign({},item),{container:action.payload.container}):item))});case"REORDER_ITEMS":{const{dragId:dragId,targetId:targetId}=action.payload;const newItems=[...state.items];const draggedItem=newItems.find((item=>item.id===dragId));const draggedIndex=newItems.indexOf(draggedItem);const targetIndex=newItems.findIndex((item=>item.id===targetId));newItems.splice(draggedIndex,1);newItems.splice(targetIndex,0,draggedItem);return Object.assign(Object.assign({},state),{items:newItems})}default:return state}};const DragContext=createContext({});const DraggableContext=()=>useContext(DragContext);const DraggableProvider=({children:children,initialItems:initialItems,onReorder:onReorder,onDragStart:onDragStart,onDragEnter:onDragEnter,onDragEnd:onDragEnd,onDrop:onDrop,onDragOver:onDragOver})=>{const[state,dispatch]=useReducer(reducer,initialState);useEffect((()=>{dispatch({type:"SET_ITEMS",payload:initialItems})}),[initialItems]);useEffect((()=>{onReorder(state.items)}),[state.items]);const handleDragStart=(id,container)=>{dispatch({type:"SET_DRAG_DATA",payload:{id:id,initialGroup:container}});dispatch({type:"SET_IS_DRAGGING",payload:id});if(onDragStart)onDragStart(id,container)};const handleDragEnter=(id,container)=>{if(state.dragData.id!==id){dispatch({type:"REORDER_ITEMS",payload:{dragId:state.dragData.id,targetId:id}});dispatch({type:"SET_DRAG_DATA",payload:{id:state.dragData.id,initialGroup:container}})}if(onDragEnter)onDragEnter(id,container)};const handleDragEnd=()=>{dispatch({type:"SET_IS_DRAGGING",payload:""});dispatch({type:"SET_ACTIVE_CONTAINER",payload:""});if(onDragEnd)onDragEnd()};const changeCategory=(itemId,container)=>{dispatch({type:"CHANGE_CATEGORY",payload:{itemId:itemId,container:container}})};const handleDrop=container=>{dispatch({type:"SET_IS_DRAGGING",payload:""});dispatch({type:"SET_ACTIVE_CONTAINER",payload:""});changeCategory(state.dragData.id,container);if(onDrop)onDrop(container)};const handleDragOver=(e,container)=>{e.preventDefault();dispatch({type:"SET_ACTIVE_CONTAINER",payload:container});if(onDragOver)onDragOver(e,container)};const contextValue=useMemo((()=>({items:state.items,dragData:state.dragData,isDragging:state.isDragging,activeContainer:state.activeContainer,handleDragStart:handleDragStart,handleDragEnter:handleDragEnter,handleDragEnd:handleDragEnd,handleDrop:handleDrop,handleDragOver:handleDragOver})),[state]);return jsx$1(DragContext.Provider,Object.assign({value:contextValue},{children:children}),void 0)};var classnames$1={exports:{}};
2
2
  /*!
3
3
  Copyright (c) 2018 Jed Watson.
4
4
  Licensed under the MIT License (MIT), see