playbook_ui 14.9.0.pre.alpha.pbntr700newresettodefaultprop4736 → 14.9.0.pre.alpha.play1742globalheightfixes4766

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 (26) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +61 -17
  3. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_pagination.jsx +50 -0
  4. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_pagination.md +1 -0
  5. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_pagination_with_props.jsx +57 -0
  6. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_pagination_with_props.md +5 -0
  7. data/app/pb_kits/playbook/pb_advanced_table/docs/advanced_table_pagination_mock_data.json +5600 -0
  8. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +2 -0
  9. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +2 -0
  10. data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +0 -5
  11. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +0 -10
  12. data/app/pb_kits/playbook/pb_date_picker/docs/example.yml +0 -1
  13. data/app/pb_kits/playbook/pb_drawer/_drawer.tsx +2 -2
  14. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -2
  15. data/app/pb_kits/playbook/pb_layout/_layout.tsx +30 -11
  16. data/app/pb_kits/playbook/pb_pagination/_pagination.tsx +2 -2
  17. data/dist/chunks/{_typeahead-DU1QgR52.js → _typeahead-B8fkIeXA.js} +1 -1
  18. data/dist/chunks/{_weekday_stacked-BLOmRNnB.js → _weekday_stacked-DjRTXEi-.js} +3 -3
  19. data/dist/chunks/{lib-Ce7MLbJk.js → lib-SyD3buPZ.js} +1 -1
  20. data/dist/chunks/{pb_form_validation-kPWA1Z2g.js → pb_form_validation-Dt8UJgrJ.js} +1 -1
  21. data/dist/chunks/vendor.js +1 -1
  22. data/dist/playbook-doc.js +1 -1
  23. data/dist/playbook-rails-react-bindings.js +1 -1
  24. data/dist/playbook-rails.js +1 -1
  25. data/lib/playbook/version.rb +1 -1
  26. metadata +11 -6
@@ -18,3 +18,5 @@ examples:
18
18
  - advanced_table_inline_row_loading: Inline Row Loading
19
19
  - advanced_table_responsive: Responsive Tables
20
20
  - advanced_table_custom_cell: Custom Components for Cells
21
+ - advanced_table_pagination: Pagination
22
+ - advanced_table_pagination_with_props: Pagination Props
@@ -10,3 +10,5 @@ export { default as AdvancedTableTableProps } from './_advanced_table_table_prop
10
10
  export { default as AdvancedTableInlineRowLoading } from './_advanced_table_inline_row_loading.jsx'
11
11
  export { default as AdvancedTableResponsive } from './_advanced_table_responsive.jsx'
12
12
  export { default as AdvancedTableCustomCell } from './_advanced_table_custom_cell.jsx'
13
+ export { default as AdvancedTablePagination } from './_advanced_table_pagination.jsx'
14
+ export { default as AdvancedTablePaginationWithProps } from './_advanced_table_pagination_with_props.jsx'
@@ -40,8 +40,6 @@ module Playbook
40
40
  default: {}
41
41
  prop :input_data, type: Playbook::Props::HashProp,
42
42
  default: {}
43
- prop :input_options, type: Playbook::Props::HashProp,
44
- default: {}
45
43
  prop :max_date, type: Playbook::Props::String
46
44
  prop :min_date, type: Playbook::Props::String
47
45
  prop :name, type: Playbook::Props::String
@@ -57,8 +55,6 @@ module Playbook
57
55
  prop :position, type: Playbook::Props::String,
58
56
  default: "auto"
59
57
  prop :position_element, type: Playbook::Props::String
60
- prop :reset_to_default, type: Playbook::Props::Boolean,
61
- default: false
62
58
  prop :scroll_container, type: Playbook::Props::String
63
59
  prop :selection_type, type: Playbook::Props::Enum,
64
60
  values: %w[week month quickpick none],
@@ -102,7 +98,6 @@ module Playbook
102
98
  plugins: plugins,
103
99
  position: position,
104
100
  positionElement: position_element,
105
- resetToDefault: reset_to_default,
106
101
  required: required,
107
102
  selectionType: selection_type,
108
103
  showTimezone: show_timezone,
@@ -24,11 +24,9 @@ type DatePickerConfig = {
24
24
  required: boolean,
25
25
  hideIcon?: boolean;
26
26
  inLine?: boolean,
27
- inputValue: string,
28
27
  onChange: (dateStr: string, selectedDates: Date[]) => void,
29
28
  selectionType?: "month" | "week" | "quickpick" | "",
30
29
  onClose: (dateStr: Date[] | string, selectedDates: Date[] | string) => void,
31
- resetToDefault?: boolean,
32
30
  showTimezone?: boolean,
33
31
  staticPosition: boolean,
34
32
  thisRangesEndToday?: boolean,
@@ -52,7 +50,6 @@ const datePickerHelper = (config: DatePickerConfig, scrollContainer: string | HT
52
50
  disableWeekdays,
53
51
  enableTime,
54
52
  format,
55
- inputValue,
56
53
  maxDate,
57
54
  minDate,
58
55
  mode,
@@ -62,7 +59,6 @@ const datePickerHelper = (config: DatePickerConfig, scrollContainer: string | HT
62
59
  plugins,
63
60
  position = "auto",
64
61
  positionElement,
65
- resetToDefault,
66
62
  required,
67
63
  selectionType,
68
64
  showTimezone,
@@ -246,12 +242,6 @@ const datePickerHelper = (config: DatePickerConfig, scrollContainer: string | HT
246
242
  picker.changeYear(Number(e.target.value))
247
243
  })
248
244
 
249
- // add data atrribute for reset to default
250
- const element = document.querySelector(`#${pickerId}`);
251
- if (resetToDefault && defaultDate && element) {
252
- element.setAttribute("data-pb-date-picker", defaultDate?.toString());
253
- }
254
-
255
245
  // Reverse month and year dropdown reset on form.reset()
256
246
  if (picker.input.form) {
257
247
  picker.input.form.addEventListener('reset', () => {
@@ -2,7 +2,6 @@ examples:
2
2
 
3
3
  rails:
4
4
  - date_picker_default: Default
5
- - date_picker_reset_to_default: Reset to Default
6
5
  - date_picker_hide_icon: Hide Input Icon
7
6
  - date_picker_default_date: Default Date
8
7
  - date_picker_allow_input: Allow Input
@@ -287,7 +287,6 @@ const Drawer = (props: DrawerProps): React.ReactElement => {
287
287
  {...ariaProps}
288
288
  {...dataProps}
289
289
  {...htmlProps}
290
- style={dynamicInlineProps}
291
290
  className={classnames(drawerClassNames.base, {
292
291
  [drawerClassNames.afterOpen]:
293
292
  animationState === "afterOpen",
@@ -296,6 +295,7 @@ const Drawer = (props: DrawerProps): React.ReactElement => {
296
295
  })}
297
296
  id={id}
298
297
  onClick={(e) => e.stopPropagation()}
298
+ style={dynamicInlineProps}
299
299
  >
300
300
  {children}
301
301
  </div>
@@ -306,7 +306,6 @@ const Drawer = (props: DrawerProps): React.ReactElement => {
306
306
  {...dataProps}
307
307
  {...htmlProps}
308
308
  className={classes}
309
- style={dynamicInlineProps}
310
309
  >
311
310
  {isModalVisible && (
312
311
  <div
@@ -327,6 +326,7 @@ const Drawer = (props: DrawerProps): React.ReactElement => {
327
326
  animationState === "beforeClose",
328
327
  })}
329
328
  onClick={(e) => e.stopPropagation()}
329
+ style={dynamicInlineProps}
330
330
  >
331
331
  {children}
332
332
  </div>
@@ -45,12 +45,11 @@
45
45
  class: "checkbox-class"
46
46
  %>
47
47
  <%= form.date_picker :example_date_picker_1, props: { label: true } %>
48
- <%= form.date_picker :example_date_picker_2, props: { label: true, reset_to_default: true, default_date: "06/09/1994" } %>
49
48
  <%= form.star_rating_field :example_star_rating, props: { variant: "interactive", label: true } %>
50
49
 
51
50
  <%= form.actions do |action| %>
52
51
  <%= action.submit %>
53
- <%= action.button props: { type: "reset", text: "Cancel", variant: "secondary", onclick: "resetDates()" } %>
52
+ <%= action.button props: { type: "reset", text: "Cancel", variant: "secondary" } %>
54
53
  <% end %>
55
54
  <% end %>
56
55
 
@@ -24,34 +24,37 @@ type LayoutPropTypes = {
24
24
  type LayoutSideProps = {
25
25
  children: React.ReactNode[] | React.ReactNode,
26
26
  className?: string,
27
- }
27
+ } & GlobalProps
28
28
 
29
29
  type LayoutBodyProps = {
30
30
  children: React.ReactNode[] | React.ReactNode,
31
31
  className?: string,
32
- }
32
+ } & GlobalProps
33
33
 
34
34
  type LayoutItemProps = {
35
35
  children: React.ReactNode[] | React.ReactNode,
36
36
  className?: string,
37
37
  size?: "sm" | "md" | "lg"
38
- }
38
+ } & GlobalProps
39
39
 
40
40
  type LayoutHeaderProps = {
41
41
  children: React.ReactNode[] | React.ReactNode,
42
42
  className?: string,
43
- }
43
+ } & GlobalProps
44
44
 
45
45
  type LayoutFooterProps = {
46
46
  children: React.ReactNode[] | React.ReactNode,
47
47
  className?: string,
48
- }
48
+ } & GlobalProps
49
49
 
50
- // Side component
51
50
  const Side = (props: LayoutSideProps) => {
52
51
  const { children, className } = props
52
+ const dynamicInlineProps = globalInlineProps(props)
53
53
  return (
54
- <div className={classnames('layout_sidebar', globalProps(props), className)}>
54
+ <div
55
+ className={classnames('layout_sidebar', globalProps(props), className)}
56
+ style={dynamicInlineProps}
57
+ >
55
58
  {children}
56
59
  </div>
57
60
  )
@@ -60,8 +63,12 @@ const Side = (props: LayoutSideProps) => {
60
63
  // Body component
61
64
  const Body = (props: LayoutBodyProps) => {
62
65
  const { children, className } = props
66
+ const dynamicInlineProps = globalInlineProps(props)
63
67
  return (
64
- <div className={classnames('layout_body', globalProps(props), className)}>
68
+ <div
69
+ className={classnames('layout_body', globalProps(props), className)}
70
+ style={dynamicInlineProps}
71
+ >
65
72
  {children}
66
73
  </div>
67
74
  )
@@ -71,8 +78,12 @@ const Body = (props: LayoutBodyProps) => {
71
78
  const Item = (props: LayoutItemProps) => {
72
79
  const { children, className, size = 'sm' } = props
73
80
  const sizeClass = `size_${size}`
81
+ const dynamicInlineProps = globalInlineProps(props)
74
82
  return (
75
- <div className={classnames('layout_item', sizeClass, globalProps(props), className)}>
83
+ <div
84
+ className={classnames('layout_item', sizeClass, globalProps(props), className)}
85
+ style={dynamicInlineProps}
86
+ >
76
87
  {children}
77
88
  </div>
78
89
  )
@@ -81,8 +92,12 @@ const Item = (props: LayoutItemProps) => {
81
92
  // Header component
82
93
  const Header = (props: LayoutHeaderProps) => {
83
94
  const { children, className } = props
95
+ const dynamicInlineProps = globalInlineProps(props)
84
96
  return (
85
- <div className={classnames('layout_header', globalProps(props), className)}>
97
+ <div
98
+ className={classnames('layout_header', globalProps(props), className)}
99
+ style={dynamicInlineProps}
100
+ >
86
101
  {children}
87
102
  </div>
88
103
  )
@@ -91,8 +106,12 @@ const Header = (props: LayoutHeaderProps) => {
91
106
  // Footer component
92
107
  const Footer = (props: LayoutFooterProps) => {
93
108
  const { children, className } = props
109
+ const dynamicInlineProps = globalInlineProps(props)
94
110
  return (
95
- <div className={classnames('layout_footer', globalProps(props), className)}>
111
+ <div
112
+ className={classnames('layout_footer', globalProps(props), className)}
113
+ style={dynamicInlineProps}
114
+ >
96
115
  {children}
97
116
  </div>
98
117
  )
@@ -1,6 +1,6 @@
1
1
  import React, { useState } from "react";
2
2
  import classnames from 'classnames'
3
- import { globalProps } from '../utilities/globalProps'
3
+ import { GlobalProps, globalProps } from '../utilities/globalProps'
4
4
  import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from '../utilities/props'
5
5
  import Icon from '../pb_icon/_icon';
6
6
 
@@ -14,7 +14,7 @@ type PaginationProps = {
14
14
  onChange?: (pageNumber: number) => void;
15
15
  range?: number;
16
16
  total?: number;
17
- };
17
+ } & GlobalProps;
18
18
 
19
19
  const Pagination = ( props: PaginationProps) => {
20
20
  const {
@@ -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,createElement,useState,useRef,forwardRef,useLayoutEffect,useCallback,useImperativeHandle,Component,Fragment as Fragment$1}from"react";import{q as getDefaultExportFromCjs,w as filter,x as omit,j as getAllIcons,y as get,n as commonjsGlobal,v as colors$1,s as highchartsTheme,z as merge,r as highchartsDarkTheme,A as useCollapsible,B as getAugmentedNamespace,C as createPopper,E as uniqueId,F as typography,G as cloneDeep,H as isString}from"./lib-Ce7MLbJk.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,createElement,useState,useRef,forwardRef,useLayoutEffect,useCallback,useImperativeHandle,Component,Fragment as Fragment$1}from"react";import{q as getDefaultExportFromCjs,w as filter,x as omit,j as getAllIcons,y as get,n as commonjsGlobal,v as colors$1,s as highchartsTheme,z as merge,r as highchartsDarkTheme,A as useCollapsible,B as getAugmentedNamespace,C as createPopper,E as uniqueId,F as typography,G as cloneDeep,H as isString}from"./lib-SyD3buPZ.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