playbook_ui 14.5.0.pre.alpha.PLAY1548intltelinputupdatelatest4037 → 14.5.0.pre.alpha.PLAY15814040

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 (29) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/index.js +60 -0
  3. data/app/pb_kits/playbook/pb_advanced_table/table_header.html.erb +1 -9
  4. data/app/pb_kits/playbook/pb_advanced_table/table_subrow_header.html.erb +1 -9
  5. data/app/pb_kits/playbook/pb_card/_card.tsx +5 -1
  6. data/app/pb_kits/playbook/pb_dialog/_dialog.tsx +5 -1
  7. data/app/pb_kits/playbook/pb_flex/_flex.tsx +3 -1
  8. data/app/pb_kits/playbook/pb_flex/_flex_item.tsx +8 -2
  9. data/app/pb_kits/playbook/pb_flex/flex_item.html.erb +3 -6
  10. data/app/pb_kits/playbook/pb_flex/flex_item.rb +5 -2
  11. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.scss +12 -61
  12. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +6 -15
  13. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_preferred_countries.md +1 -1
  14. data/app/pb_kits/playbook/pb_phone_number_input/intlTelInput.scss +0 -2
  15. data/app/pb_kits/playbook/pb_phone_number_input/types.d.ts +1 -4
  16. data/app/pb_kits/playbook/pb_popover/_popover.tsx +1 -1
  17. data/app/pb_kits/playbook/utilities/globalPropNames.mjs +3 -0
  18. data/app/pb_kits/playbook/utilities/globalProps.ts +39 -2
  19. data/dist/chunks/_typeahead-D8vYsn7T.js +22 -0
  20. data/dist/chunks/{_weekday_stacked-BxOdmCPF.js → _weekday_stacked-CaNCkN7U.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/dist/playbook.css +1 -1
  26. data/lib/playbook/kit_base.rb +17 -0
  27. data/lib/playbook/version.rb +1 -1
  28. metadata +3 -3
  29. data/dist/chunks/_typeahead-CvmA5XOD.js +0 -22
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a06ad76a5b0490f9a83f4327fd8a9dd388d2ed6fa1ee83dc72d6ca6a5071ae5c
4
- data.tar.gz: 42bfb4eb362d27094685c06ad868c9c5bfb8ebb70960b50df06da156125b9fc1
3
+ metadata.gz: a67ca5956ad8fb6abcfb9e5c95242c2ffd782f3f26ae0e9e49585d0d598bb139
4
+ data.tar.gz: edf1cfe77da72b9312f7f83334608744aa60b59687315f3aef6d0c7f7788a52d
5
5
  SHA512:
6
- metadata.gz: 4bafbfe0895af6e9f6548d7cced94e4c0b341f6a68957d81ea1d47c31ee00fd27b72e90e9028c27a23f6a990dbdc528651aca7e71fd81d0bcd996cc44537adbc
7
- data.tar.gz: e632b6fc5da05678aed09cd65a0cc4a6e772e1dcfc5d556546dbd5356644813da9210ac1ab2765bec1f4a38efc9187d7b9a1969cbf9d19ed410004041190dbfb
6
+ metadata.gz: 997a3aa11b0d1861e2f9e28fddadbf8b3f2e442b010d9439b168d2005d51153e543a4300bcb3ffb9e9c857b2ccc3041371c7a41f4ebf070982b2a91550e90df2
7
+ data.tar.gz: cd4ac6d1734f9aa82d47fe091cfdb67abdf22f92f613d3ce62e69481a78661ae8998657717feec7447392b3a514b56951d070d90266e53674dd9c0bfefde8252
@@ -13,9 +13,20 @@ export default class PbAdvancedTable extends PbEnhancedElement {
13
13
  get target() {
14
14
  return document.querySelector(CONTENT_SELECTOR.replace("id", this.element.id))
15
15
  }
16
+
17
+ static expandedRows = new Set()
18
+ static isCollapsing = false
16
19
 
17
20
  connect() {
18
21
  this.element.addEventListener('click', () => {
22
+ if (!PbAdvancedTable.isCollapsing) {
23
+ const isExpanded = this.element.querySelector(UP_ARROW_SELECTOR).style.display === 'inline-block'
24
+ if (!isExpanded) {
25
+ PbAdvancedTable.expandedRows.add(this.element.id)
26
+ } else {
27
+ PbAdvancedTable.expandedRows.delete(this.element.id)
28
+ }
29
+ }
19
30
  this.toggleElement(this.target)
20
31
  })
21
32
  }
@@ -75,4 +86,53 @@ export default class PbAdvancedTable extends PbEnhancedElement {
75
86
  this.element.querySelector(UP_ARROW_SELECTOR).style.display = 'inline-block'
76
87
  this.element.querySelector(DOWN_ARROW_SELECTOR).style.display = 'none'
77
88
  }
89
+
90
+ static handleToggleAllHeaders(element) {
91
+ const table = element.closest('.pb_table')
92
+ const firstLevelButtons = table.querySelectorAll('.pb_advanced_table_body > .pb_table_tr [data-advanced-table]')
93
+
94
+ const expandedRows = Array.from(firstLevelButtons).filter(button =>
95
+ button.querySelector(UP_ARROW_SELECTOR).style.display === 'inline-block'
96
+ )
97
+
98
+ if (expandedRows.length === firstLevelButtons.length) {
99
+ expandedRows.forEach(button => {
100
+ button.click()
101
+ })
102
+ this.expandedRows.clear()
103
+ } else {
104
+ firstLevelButtons.forEach(button => {
105
+ if (!this.expandedRows.has(button.id)) {
106
+ button.click()
107
+ }
108
+ })
109
+ }
110
+ }
111
+ static handleToggleAllSubRows(element, rowDepth) {
112
+ const parentElement = element.closest(".toggle-content")
113
+ const subrowButtons = parentElement.querySelectorAll('.depth-sub-row-' + rowDepth + ' [data-advanced-table]')
114
+
115
+ const expandedSubRows = Array.from(subrowButtons).filter(button =>
116
+ button.querySelector(UP_ARROW_SELECTOR).style.display === 'inline-block'
117
+ )
118
+
119
+ if (expandedSubRows.length === subrowButtons.length) {
120
+ expandedSubRows.forEach(button => {
121
+ button.click()
122
+ })
123
+ } else {
124
+ subrowButtons.forEach(button => {
125
+ if (!this.expandedRows.has(button.id)) {
126
+ button.click()
127
+ }
128
+ })
129
+ }
130
+ }
131
+ }
132
+
133
+ window.expandAllRows = (element) => {
134
+ PbAdvancedTable.handleToggleAllHeaders(element)
78
135
  }
136
+ window.expandAllSubRows = (element, rowDepth) => {
137
+ PbAdvancedTable.handleToggleAllSubRows(element, rowDepth)
138
+ }
@@ -13,12 +13,4 @@
13
13
  <% end %>
14
14
  <% end %>
15
15
  <% end %>
16
- <% end %>
17
-
18
- <script type="text/javascript">
19
- var expandAllRows = (element) => {
20
- element.closest('.pb_table').querySelectorAll('.pb_advanced_table_body > .pb_table_tr [data-advanced-table]').forEach((button) => {
21
- button.dispatchEvent(new Event('click'));
22
- });
23
- };
24
- </script>
16
+ <% end %>
@@ -23,12 +23,4 @@
23
23
  <% end %>
24
24
  <% end %>
25
25
  <% end %>
26
- <% end %>
27
-
28
- <script type="text/javascript">
29
- var expandAllSubRows = (element, rowDepth) => {
30
- element.closest(".toggle-content").querySelectorAll('.depth-sub-row-' + rowDepth + ' [data-advanced-table]').forEach((button) => {
31
- button.dispatchEvent(new Event('click'));
32
- });
33
- };
34
- </script>
26
+ <% end %>
@@ -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,7 @@ const Card = (props: CardPropTypes): React.ReactElement => {
107
108
 
108
109
  // coerce to array
109
110
  const cardChildren = React.Children.toArray(children)
111
+ const inlineStyles = globalInlineProps(props);
110
112
 
111
113
  const subComponentTags = (tagName: string) => {
112
114
  return cardChildren.filter((c: string) => (
@@ -135,6 +137,7 @@ const Card = (props: CardPropTypes): React.ReactElement => {
135
137
  {...dataProps}
136
138
  {...htmlProps}
137
139
  className={classnames(cardCss, globalProps(props), className)}
140
+ style={inlineStyles}
138
141
  >
139
142
  {subComponentTags('Header')}
140
143
  {
@@ -163,6 +166,7 @@ const Card = (props: CardPropTypes): React.ReactElement => {
163
166
  {...dataProps}
164
167
  {...htmlProps}
165
168
  className={classnames(cardCss, globalProps(props), className)}
169
+ style={inlineStyles}
166
170
  >
167
171
  {subComponentTags('Header')}
168
172
  {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 inlineStyles = 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: inlineStyles }}
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 inlineStyles = 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={inlineStyles}
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 inlineStyles = globalInlineProps(props)
39
+ const combinedStyles = {
40
+ ...fixedStyle,
41
+ ...inlineStyles
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,11 @@ 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.join(" ")
25
28
  end
26
29
 
27
30
  private
@@ -6,30 +6,6 @@ $dropdown-min-width: 340px;
6
6
  $flag-min-resolution: 192dpi;
7
7
 
8
8
  .pb_phone_number_input {
9
- .iti {
10
- width: 100%;
11
- }
12
-
13
- .iti__flag {
14
- margin-right: 6px;
15
- }
16
-
17
- .iti__a11y-text {
18
- display: none;
19
- }
20
-
21
- .iti__selected-dial-code {
22
- font-family: $font_family_base;
23
- font-size: $font_base;
24
- line-height: 1.5;
25
- letter-spacing: $lspace_normal;
26
- font-weight: $regular;
27
- font-style: normal;
28
- text-rendering: optimizeLegibility;
29
- -moz-font-feature-settings: "liga" on;
30
- color: $charcoal;
31
- }
32
-
33
9
  input::placeholder {
34
10
  color: $focus_input_light;
35
11
  }
@@ -39,7 +15,7 @@ $flag-min-resolution: 192dpi;
39
15
  border-color: $primary !important;
40
16
  }
41
17
 
42
- .iti__selected-country:focus-visible {
18
+ .iti__selected-flag:focus-visible {
43
19
  outline-style: none;
44
20
  }
45
21
  }
@@ -53,26 +29,7 @@ $flag-min-resolution: 192dpi;
53
29
  border-bottom: 1px solid $border_light !important;
54
30
  }
55
31
 
56
- .iti__selected-country-primary {
57
- display: flex;
58
- justify-content: center;
59
- align-items: center;
60
- margin-right: 10px;
61
- .iti__flag {
62
- margin-right: 0;
63
- }
64
- }
65
-
66
- .iti__selected-country {
67
- position: absolute;
68
- z-index: 2;
69
- top: 0;
70
- display: flex;
71
- height: 100%;
72
- justify-content: center;
73
- align-items: center;
74
- border-width: 0;
75
-
32
+ .iti__selected-flag {
76
33
  padding: 0 $space_xxs 0 $space_sm;
77
34
  border-radius: $space_xxs;
78
35
 
@@ -94,11 +51,11 @@ $flag-min-resolution: 192dpi;
94
51
  }
95
52
  }
96
53
 
97
- .iti--allow-dropdown .iti__country-container:hover .iti__selected-country {
54
+ .iti--allow-dropdown .iti__flag-container:hover .iti__selected-flag {
98
55
  background-color: $focus_input_light;
99
56
  }
100
57
 
101
- .iti__country-container:hover + .text_input {
58
+ .iti__flag-container:hover + .text_input {
102
59
  background-color: $focus_input_light;
103
60
  }
104
61
 
@@ -107,14 +64,11 @@ $flag-min-resolution: 192dpi;
107
64
  border-radius: 1px;
108
65
  }
109
66
 
110
- .iti__flag.iti__globe {
111
- background-image: url("https://unpkg.com/intl-tel-input@21.1.4/build/img/globe.png");
112
- background-position: center;
113
- height: 20px;
114
- background-size: 20px 20px;
67
+ .iti--separate-dial-code {
68
+ width: 100%;
115
69
  }
116
70
 
117
- .iti--show-flags .iti__selected-country {
71
+ .iti--separate-dial-code .iti__selected-flag {
118
72
  background-color: rgba($white, $opacity_1);
119
73
  }
120
74
 
@@ -141,14 +95,14 @@ $flag-min-resolution: 192dpi;
141
95
  position: relative;
142
96
  vertical-align: top;
143
97
  width: $space_xxs + 1px;
144
- top: $space_xs - 1px;
98
+ top: $space_xs + 2px;
145
99
  transform: rotate($transform-rotate-deg);
146
100
  color: $slate;
147
101
  }
148
102
 
149
103
  .iti__arrow.iti__arrow--up::before {
150
104
  transform: rotate(-($transform-rotate-deg/3));
151
- top: $space_xs + 1px;
105
+ top: $space_xs + 4px;
152
106
  color: $primary_action;
153
107
  }
154
108
 
@@ -182,13 +136,10 @@ $flag-min-resolution: 192dpi;
182
136
  .iti__dropdown-content {
183
137
  border-radius: $space_xs;
184
138
  border: 1px solid $border_light !important;
185
- position: absolute;
186
- z-index: 2;
187
- top: 100%;
188
139
  }
189
140
 
190
141
  &.dark {
191
- .iti--allow-dropdown .iti__country-container {
142
+ .iti--allow-dropdown .iti__flag-container {
192
143
  background-color: rgba($white, 0);
193
144
 
194
145
  &:hover {
@@ -198,13 +149,13 @@ $flag-min-resolution: 192dpi;
198
149
  background-color: rgba($white, 0.15);
199
150
  }
200
151
 
201
- .iti__selected-country {
152
+ .iti__selected-flag {
202
153
  background-color: rgba($white, 0);
203
154
  }
204
155
  }
205
156
  }
206
157
 
207
- .iti__selected-country {
158
+ .iti__selected-flag {
208
159
  background-color: rgba($white, 0);
209
160
  color: $white;
210
161
  }
@@ -1,7 +1,8 @@
1
1
  import React, { forwardRef, useEffect, useRef, useState, useImperativeHandle } from 'react'
2
2
  import classnames from 'classnames'
3
3
 
4
- import intlTelInput from 'intl-tel-input/build/js/intlTelInputWithUtils.js'
4
+ import intlTelInput from 'intl-tel-input'
5
+ import 'intl-tel-input/build/js/utils.js'
5
6
 
6
7
  import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from '../utilities/props'
7
8
  import { globalProps } from '../utilities/globalProps'
@@ -49,7 +50,7 @@ const formatToGlobalCountryName = (countryName: string) => {
49
50
  }
50
51
 
51
52
  const formatAllCountries = () => {
52
- const countryData = intlTelInput.getCountryData()
53
+ const countryData = window.intlTelInputGlobals.getCountryData()
53
54
 
54
55
  for (let i = 0; i < countryData.length; i++) {
55
56
  const country = countryData[i]
@@ -213,24 +214,14 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.MutableRefOb
213
214
  // This also Fixes things for our react_component rendering on the Rails Side
214
215
  useEffect(formatAllCountries, [])
215
216
 
216
- // If an initial country is not specified, the "globe" icon will show
217
- // Always set a country
218
- const fallbackCountry =
219
- preferredCountries.length > 0 ? preferredCountries[0] :
220
- onlyCountries.length > 0 ? onlyCountries.sort()[0] :
221
- "af";
222
-
223
217
  useEffect(() => {
224
218
  const telInputInit = intlTelInput(inputRef.current, {
225
219
  separateDialCode: true,
226
- countryOrder: preferredCountries,
220
+ preferredCountries,
227
221
  allowDropdown: !disabled,
228
222
  autoInsertDialCode: false,
229
- initialCountry: initialCountry || fallbackCountry,
230
- onlyCountries,
231
- countrySearch: false,
232
- fixDropdownWidth: false,
233
- formatAsYouType: false,
223
+ initialCountry,
224
+ onlyCountries
234
225
  })
235
226
 
236
227
  inputRef.current.addEventListener("countrychange", (evt: Event) => {
@@ -1 +1 @@
1
- Preferred countries will display in the order they are listed with the first country preselected, and all non-preferred countries listed alphabetically below in the remaining dropdown.
1
+ Preferred countries will display in the order they are listed with the first country preselected, and all non-preferred countries listed alphabetically below a section separator within the remaining dropdown.
@@ -1,6 +1,4 @@
1
1
  /* @import "intl-tel-input/build/css/intlTelInput.css"; */
2
- // Taken from 18.5.3, but with background-image replaced with PLAY-1527
3
- // https://unpkg.com/browse/intl-tel-input@18.5.3/build/css/intlTelInput.css
4
2
  .iti {
5
3
  position: relative;
6
4
  display: inline-block;
@@ -1,4 +1 @@
1
- declare module 'intl-tel-input/build/js/intlTelInputWithUtils.js' {
2
- const intlTelInput: any;
3
- export default intlTelInput;
4
- }
1
+ declare module 'intl-tel-input'
@@ -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",
@@ -170,12 +170,24 @@ type ZIndex = {
170
170
  zIndex?: ZIndexType,
171
171
  } | ZIndexResponsiveType
172
172
 
173
+ type Height = {
174
+ height?: string
175
+ }
176
+
177
+ type MaxHeight = {
178
+ maxHeight?: string
179
+ }
180
+
181
+ type MinHeight = {
182
+ minHeight?: string
183
+ }
184
+
173
185
  // keep this as the last type definition
174
186
  export type GlobalProps = AlignContent & AlignItems & AlignSelf &
175
187
  BorderRadius & Cursor & Dark & Display & DisplaySizes & Flex & FlexDirection &
176
188
  FlexGrow & FlexShrink & FlexWrap & JustifyContent & JustifySelf &
177
189
  LineHeight & Margin & MinWidth & MaxWidth & NumberSpacing & Order & Overflow & Padding &
178
- Position & Shadow & TextAlign & Truncate & VerticalAlign & ZIndex & { hover?: string } & Top & Right & Bottom & Left;
190
+ Position & Shadow & TextAlign & Truncate & VerticalAlign & ZIndex & { hover?: string } & Top & Right & Bottom & Left & Height & MaxHeight & MinHeight;
179
191
 
180
192
  const getResponsivePropClasses = (prop: {[key: string]: string}, classPrefix: string) => {
181
193
  const keys: string[] = Object.keys(prop)
@@ -498,7 +510,22 @@ const PROP_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => string} =
498
510
  } else {
499
511
  return verticalAlign ? `vertical_align_${verticalAlign} ` : ''
500
512
  }
501
- }
513
+ },
514
+
515
+ }
516
+
517
+ const PROP_INLINE_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => {[key: string]: any}} = {
518
+ heightProps: ({ height }: Height) => {
519
+ return height ? { height } : {};
520
+ },
521
+
522
+ maxHeightProps: ({ maxHeight }: MaxHeight) => {
523
+ return maxHeight ? { maxHeight } : {};
524
+ },
525
+
526
+ minHeightProps: ({ minHeight }: MinHeight) => {
527
+ return minHeight ? { minHeight } : {};
528
+ },
502
529
  }
503
530
 
504
531
  type DefaultProps = {[key: string]: string} | Record<string, unknown>
@@ -510,6 +537,16 @@ export const globalProps = (props: GlobalProps, defaultProps: DefaultProps = {})
510
537
  }).filter((value) => value?.length > 0).join(" ")
511
538
  }
512
539
 
540
+ // New function for inline styles
541
+ export const globalInlineProps = (props: GlobalProps): React.CSSProperties => {
542
+ const styles = Object.keys(PROP_INLINE_CATEGORIES).reduce((acc, key) => {
543
+ const result = PROP_INLINE_CATEGORIES[key](props);
544
+ return { ...acc, ...(typeof result === 'object' ? result : {}) }; // Ensure result is an object before spreading
545
+ }, {});
546
+
547
+ return styles; // Return the styles object directly
548
+ }
549
+
513
550
 
514
551
  export const deprecatedProps = (): void => {
515
552
  // if (process.env.NODE_ENV === 'development') {