playbook_ui 14.7.0.pre.rc.18 → 14.7.0.pre.rc.19

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ff95e6830d7c3a6d2ad6c69bd177579486ca0ceac9e75f827311089beeee445e
4
- data.tar.gz: 12abc183a5222f5e601530a455f77a39de018355c50d0d84b064871e0c406fb6
3
+ metadata.gz: 60f5cff6912e2865399cef73254a7b2dc0c44d6569424298bb634f68f32379cd
4
+ data.tar.gz: 83369d0166a9aa85827c3df19ed00880ad84d6b258c03dc2ff48f2de41c05c75
5
5
  SHA512:
6
- metadata.gz: 61fd7de49207a9766dbbcf14a08d0ec23a2a337b7aa1aaf28b17202893f41c9661c380302a096c399b5855521f44c3b715a8ccf08d9b78a58cfd698cba7c570c
7
- data.tar.gz: 6f7bd6331cbca3e289110278961cf96b6c5149465d70c5ca15ce8a0f098259da0b42dceea0745998fade1d97a44c7f12030f8de6655af5e51f9dcdf08c5816b7
6
+ metadata.gz: 9d9fc03ccd849622b9f5cc1bc47deb85a9733c42fbc986ebe01c3bdcc7ce7446a70f2c21f9da2da2bb3335ba826da717f76b1ccc8a9f5ef8e7aecd2414cb4bf4
7
+ data.tar.gz: 3f2825d50037ea12633a8ad29a02769e85796681ed3fbaa63b846384e8c50a99fafdaa78eb7bdaea4c20a88379d165d9b94d3f251458f2ab2c8b48c18ce9a2f2
@@ -5,7 +5,7 @@ import { get } from 'lodash'
5
5
  import classnames from 'classnames'
6
6
 
7
7
  import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from '../utilities/props'
8
- import { GlobalProps, globalProps } from '../utilities/globalProps'
8
+ import { GlobalProps, globalProps, globalInlineProps } from '../utilities/globalProps'
9
9
  import type { ProductColors, CategoryColors, BackgroundColors } from '../types/colors'
10
10
 
11
11
  import Icon from '../pb_icon/_icon'
@@ -49,6 +49,7 @@ type CardBodyProps = {
49
49
  padding?: string,
50
50
  } & GlobalProps
51
51
 
52
+
52
53
  // Header component
53
54
  const Header = (props: CardHeaderProps) => {
54
55
  const { children, className, headerColor = 'category_1', headerColorStriped = false } = props
@@ -107,6 +108,10 @@ const Card = (props: CardPropTypes): React.ReactElement => {
107
108
 
108
109
  // coerce to array
109
110
  const cardChildren = React.Children.toArray(children)
111
+ const dynamicInlineProps = globalInlineProps(props);
112
+ const { style: htmlStyle = {}, ...restHtmlProps } = htmlProps as { style?: React.CSSProperties };
113
+ const mergedStyles: React.CSSProperties = { ...htmlStyle, ...dynamicInlineProps };
114
+
110
115
 
111
116
  const subComponentTags = (tagName: string) => {
112
117
  return cardChildren.filter((c: string) => (
@@ -122,7 +127,7 @@ const Card = (props: CardPropTypes): React.ReactElement => {
122
127
 
123
128
  const tagOptions = ['div', 'section', 'footer', 'header', 'article', 'aside', 'main', 'nav']
124
129
  const Tag = tagOptions.includes(tag) ? tag : 'div'
125
-
130
+
126
131
  return (
127
132
  <>
128
133
  {
@@ -133,8 +138,9 @@ const Card = (props: CardPropTypes): React.ReactElement => {
133
138
  <Tag
134
139
  {...ariaProps}
135
140
  {...dataProps}
136
- {...htmlProps}
137
141
  className={classnames(cardCss, globalProps(props), className)}
142
+ {...restHtmlProps}
143
+ style={mergedStyles}
138
144
  >
139
145
  {subComponentTags('Header')}
140
146
  {
@@ -161,8 +167,9 @@ const Card = (props: CardPropTypes): React.ReactElement => {
161
167
  <Tag
162
168
  {...ariaProps}
163
169
  {...dataProps}
164
- {...htmlProps}
165
170
  className={classnames(cardCss, globalProps(props), className)}
171
+ {...restHtmlProps}
172
+ style={mergedStyles}
166
173
  >
167
174
  {subComponentTags('Header')}
168
175
  {nonHeaderChildren}
@@ -6,7 +6,7 @@ import classnames from "classnames";
6
6
  import Modal from "react-modal";
7
7
 
8
8
  import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from "../utilities/props";
9
- import { globalProps } from "../utilities/globalProps";
9
+ import { globalProps, globalInlineProps } from "../utilities/globalProps";
10
10
 
11
11
  import Body from "../pb_body/_body";
12
12
  import Button from "../pb_button/_button";
@@ -91,6 +91,8 @@ const Dialog = (props: DialogProps): React.ReactElement => {
91
91
  beforeClose: "pb_dialog_overlay_before_close",
92
92
  };
93
93
 
94
+ const dynamicInlineProps = globalInlineProps(props);
95
+
94
96
  const classes = classnames(
95
97
  buildCss("pb_dialog_wrapper"),
96
98
  globalProps(props),
@@ -184,6 +186,7 @@ const Dialog = (props: DialogProps): React.ReactElement => {
184
186
  overlayClassName={overlayClassNames}
185
187
  portalClassName={portalClassName}
186
188
  shouldCloseOnOverlayClick={shouldCloseOnOverlayClick && !loading}
189
+ style={{ content: dynamicInlineProps }}
187
190
  >
188
191
  <>
189
192
  {title && !status ? <Dialog.Header>{title}</Dialog.Header> : null}
@@ -192,6 +195,7 @@ const Dialog = (props: DialogProps): React.ReactElement => {
192
195
  <Dialog.Body
193
196
  className="dialog_status_text_align"
194
197
  padding="md"
198
+
195
199
  >
196
200
  <Flex align="center"
197
201
  orientation="column"
@@ -1,7 +1,7 @@
1
1
  import React from 'react'
2
2
  import classnames from 'classnames'
3
3
  import { buildCss, buildDataProps, buildHtmlProps } from '../utilities/props'
4
- import { GlobalProps, globalProps } from '../utilities/globalProps'
4
+ import { GlobalProps, globalProps, globalInlineProps } from '../utilities/globalProps'
5
5
  import { GenericObject, Sizes } from '../types'
6
6
 
7
7
  type FlexProps = {
@@ -61,6 +61,7 @@ const Flex = (props: FlexProps): React.ReactElement => {
61
61
  const alignSelfClass = alignSelf !== 'none' ? `align_self_${alignSelf}` : ''
62
62
  const dataProps = buildDataProps(data)
63
63
  const htmlProps = buildHtmlProps(htmlOptions)
64
+ const dynamicInlineProps = globalInlineProps(props)
64
65
 
65
66
 
66
67
  return (
@@ -83,6 +84,7 @@ const Flex = (props: FlexProps): React.ReactElement => {
83
84
  globalProps(props),
84
85
  className
85
86
  )}
87
+ style={dynamicInlineProps}
86
88
  {...dataProps}
87
89
  {...htmlProps}
88
90
  >
@@ -1,7 +1,7 @@
1
1
  import React from 'react'
2
2
  import classnames from 'classnames'
3
3
  import { buildCss, buildHtmlProps } from '../utilities/props'
4
- import { globalProps, GlobalProps } from '../utilities/globalProps'
4
+ import { globalProps, GlobalProps, globalInlineProps} from '../utilities/globalProps'
5
5
  type FlexItemPropTypes = {
6
6
  children: React.ReactNode[] | React.ReactNode,
7
7
  fixedSize?: string,
@@ -35,14 +35,20 @@ const FlexItem = (props: FlexItemPropTypes): React.ReactElement => {
35
35
  const fixedStyle =
36
36
  fixedSize !== undefined ? { flexBasis: `${fixedSize}` } : null
37
37
  const orderClass = order !== 'none' ? `order_${order}` : null
38
+ const dynamicInlineProps = globalInlineProps(props)
39
+ const combinedStyles = {
40
+ ...fixedStyle,
41
+ ...dynamicInlineProps
42
+ }
38
43
 
39
44
  const htmlProps = buildHtmlProps(htmlOptions)
40
45
 
46
+
41
47
  return (
42
48
  <div
43
49
  {...htmlProps}
44
50
  className={classnames(buildCss('pb_flex_item_kit', growClass, shrinkClass, flexClass, displayFlexClass), orderClass, alignSelfClass, globalProps(props), className)}
45
- style={fixedStyle}
51
+ style={combinedStyles}
46
52
  >
47
53
  {children}
48
54
  </div>
@@ -1,8 +1,5 @@
1
- <%= content_tag(:div,
2
- id: object.id,
3
- data: object.data,
4
- class: object.classname,
5
- style: object.style_value,
6
- **combined_html_options) do %>
1
+ <%= pb_content_tag(:div,
2
+ style: object.inline_styles
3
+ ) do %>
7
4
  <%= content.presence %>
8
5
  <% end %>
@@ -20,8 +20,13 @@ module Playbook
20
20
  generate_classname("pb_flex_item_kit", fixed_size_class, grow_class, shrink_class, display_flex_class) + align_self_class
21
21
  end
22
22
 
23
- def style_value
24
- "flex-basis: #{fixed_size};" if fixed_size.present?
23
+ def inline_styles
24
+ styles = []
25
+ styles << "flex-basis: #{fixed_size};" if fixed_size.present?
26
+ styles << "height: #{height};" if height.present?
27
+ styles << "min-height: #{min_height};" if min_height.present?
28
+ styles << "max-height: #{max_height};" if max_height.present?
29
+ styles.join(" ")
25
30
  end
26
31
 
27
32
  private
@@ -21,7 +21,7 @@ import classnames from "classnames";
21
21
  import { globalProps, GlobalProps } from "../utilities/globalProps";
22
22
  import { uniqueId } from 'lodash';
23
23
 
24
- type ModifiedGlobalProps = Omit<GlobalProps, 'minWidth'>
24
+ type ModifiedGlobalProps = Omit<GlobalProps, 'minWidth' | 'maxHeight' | 'minHeight'>
25
25
 
26
26
  type PbPopoverProps = {
27
27
  aria?: { [key: string]: string };
@@ -1,4 +1,7 @@
1
1
  export default [
2
+ "minHeight",
3
+ "maxHeight",
4
+ "height",
2
5
  "left",
3
6
  "bottom",
4
7
  "right",
@@ -174,12 +174,24 @@ type ZIndex = {
174
174
  zIndex?: ZIndexType,
175
175
  } | ZIndexResponsiveType
176
176
 
177
+ type Height = {
178
+ height?: string
179
+ }
180
+
181
+ type MaxHeight = {
182
+ maxHeight?: string
183
+ }
184
+
185
+ type MinHeight = {
186
+ minHeight?: string
187
+ }
188
+
177
189
  // keep this as the last type definition
178
190
  export type GlobalProps = AlignContent & AlignItems & AlignSelf &
179
191
  BorderRadius & Cursor & Dark & Display & DisplaySizes & Flex & FlexDirection &
180
192
  FlexGrow & FlexShrink & FlexWrap & JustifyContent & JustifySelf &
181
193
  LineHeight & Margin & MinWidth & MaxWidth & NumberSpacing & Order & Overflow & Padding &
182
- Position & Shadow & TextAlign & Truncate & VerticalAlign & ZIndex & GroupHover & { hover?: string } & Top & Right & Bottom & Left;
194
+ Position & Shadow & TextAlign & Truncate & VerticalAlign & ZIndex & { hover?: string } & Top & Right & Bottom & Left & Height & MaxHeight & MinHeight;
183
195
 
184
196
  const getResponsivePropClasses = (prop: {[key: string]: string}, classPrefix: string) => {
185
197
  const keys: string[] = Object.keys(prop)
@@ -503,7 +515,22 @@ const PROP_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => string} =
503
515
  } else {
504
516
  return verticalAlign ? `vertical_align_${verticalAlign} ` : ''
505
517
  }
506
- }
518
+ },
519
+
520
+ }
521
+
522
+ const PROP_INLINE_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => {[key: string]: any}} = {
523
+ heightProps: ({ height }: Height) => {
524
+ return height ? { height } : {};
525
+ },
526
+
527
+ maxHeightProps: ({ maxHeight }: MaxHeight) => {
528
+ return maxHeight ? { maxHeight } : {};
529
+ },
530
+
531
+ minHeightProps: ({ minHeight }: MinHeight) => {
532
+ return minHeight ? { minHeight } : {};
533
+ },
507
534
  }
508
535
 
509
536
  type DefaultProps = {[key: string]: string} | Record<string, unknown>
@@ -515,6 +542,16 @@ export const globalProps = (props: GlobalProps, defaultProps: DefaultProps = {})
515
542
  }).filter((value) => value?.length > 0).join(" ")
516
543
  }
517
544
 
545
+ // New function for inline styles
546
+ export const globalInlineProps = (props: GlobalProps): React.CSSProperties => {
547
+ const styles = Object.keys(PROP_INLINE_CATEGORIES).reduce((acc, key) => {
548
+ const result = PROP_INLINE_CATEGORIES[key](props);
549
+ return { ...acc, ...(typeof result === 'object' ? result : {}) }; // Ensure result is an object before spreading
550
+ }, {});
551
+
552
+ return styles; // Return the styles object directly
553
+ }
554
+
518
555
 
519
556
  export const deprecatedProps = (): void => {
520
557
  // if (process.env.NODE_ENV === 'development') {