playbook_ui 13.3.0 → 13.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +1 -0
  3. data/app/pb_kits/playbook/pb_button/button.html.erb +2 -2
  4. data/app/pb_kits/playbook/pb_button/button.rb +3 -0
  5. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleMain.tsx +5 -1
  6. data/app/pb_kits/playbook/pb_kit/dateTime.ts +54 -23
  7. data/app/pb_kits/playbook/pb_table/docs/_table_two_actions.jsx +3 -3
  8. data/app/pb_kits/playbook/pb_timestamp/_timestamp.tsx +14 -7
  9. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_unstyled.html.erb +21 -0
  10. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_unstyled.jsx +36 -0
  11. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_unstyled.md +1 -0
  12. data/app/pb_kits/playbook/pb_timestamp/docs/example.yml +3 -1
  13. data/app/pb_kits/playbook/pb_timestamp/docs/index.js +1 -0
  14. data/app/pb_kits/playbook/pb_timestamp/timestamp.html.erb +5 -1
  15. data/app/pb_kits/playbook/pb_timestamp/timestamp.rb +3 -1
  16. data/app/pb_kits/playbook/pb_title/_title.scss +3 -4
  17. data/app/pb_kits/playbook/tokens/_spacing.scss +1 -1
  18. data/app/pb_kits/playbook/tokens/_text_align.scss +18 -0
  19. data/app/pb_kits/playbook/utilities/_hover.scss +4 -0
  20. data/app/pb_kits/playbook/utilities/_max_width.scss +4 -0
  21. data/app/pb_kits/playbook/utilities/_spacing.scss +92 -49
  22. data/app/pb_kits/playbook/utilities/_text_align.scss +3 -0
  23. data/app/pb_kits/playbook/utilities/globalProps.ts +30 -2
  24. data/dist/playbook-rails.js +5 -5
  25. data/lib/playbook/classnames.rb +1 -0
  26. data/lib/playbook/hover.rb +6 -2
  27. data/lib/playbook/kit_base.rb +2 -0
  28. data/lib/playbook/spacing.rb +13 -4
  29. data/lib/playbook/text_align.rb +37 -0
  30. data/lib/playbook/version.rb +2 -2
  31. metadata +8 -2
@@ -62,6 +62,7 @@ type FlexWrap = {
62
62
 
63
63
  type Hover = Shadow & {
64
64
  background?: string,
65
+ color?: string,
65
66
  scale?: "sm" | "md" | "lg"
66
67
  }
67
68
 
@@ -85,6 +86,8 @@ type Margin = {
85
86
  marginX?: AllSizes,
86
87
  marginY?: AllSizes,
87
88
  margin?: AllSizes,
89
+ break?: string,
90
+ default?: string
88
91
  }
89
92
 
90
93
  type MaxWidth = {
@@ -107,6 +110,8 @@ type Padding = {
107
110
  paddingX?: AllSizes,
108
111
  paddingY?: AllSizes,
109
112
  padding?: AllSizes,
113
+ break?: string,
114
+ default?: string
110
115
  }
111
116
 
112
117
  type Position = {
@@ -119,6 +124,10 @@ type Shadow = {
119
124
 
120
125
  type Space = "spaceBetween" | "spaceAround" | "spaceEvenly"
121
126
 
127
+ type TextAlign = {
128
+ textAlign?: "start" | "end" | "left" | "right" | "center" | "justify" | "justifyAll" | "matchParent",
129
+ }
130
+
122
131
  type ZIndexType = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10
123
132
  type ZIndexResponsiveType = {[key: string]: ZIndexType}
124
133
  type ZIndex = {
@@ -130,7 +139,7 @@ export type GlobalProps = AlignContent & AlignItems & AlignSelf &
130
139
  BorderRadius & Cursor & Dark & Display & DisplaySizes & Flex & FlexDirection &
131
140
  FlexGrow & FlexShrink & FlexWrap & JustifyContent & JustifySelf &
132
141
  LineHeight & Margin & MaxWidth & NumberSpacing & Order & Padding &
133
- Position & Shadow & ZIndex & { hover?: string };
142
+ Position & Shadow & TextAlign & ZIndex & { hover?: string };
134
143
 
135
144
  const getResponsivePropClasses = (prop: {[key: string]: string}, classPrefix: string) => {
136
145
  const keys: string[] = Object.keys(prop)
@@ -149,6 +158,7 @@ const PROP_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => string} =
149
158
  css += hover.shadow ? `hover_shadow_${hover.shadow} ` : '';
150
159
  css += hover.background ? `hover_background_${hover.background } ` : '';
151
160
  css += hover.scale ? `hover_scale_${hover.scale} ` : '';
161
+ css += hover.color ? `hover_color_${hover.color } ` : '';
152
162
  return css;
153
163
  },
154
164
 
@@ -186,13 +196,24 @@ const PROP_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => string} =
186
196
  padding,
187
197
  };
188
198
 
199
+ const screenSizeValues = ["xs", "sm", "md", "lg", "xl"]
200
+
189
201
  function handleObjectValue(properties: Margin | Padding, prefix: string) {
190
202
  let classResult = '';
191
203
 
204
+ const breakValue = properties.break || "on";
205
+ const defaultValue = properties.default || null;
206
+
192
207
  Object.entries(properties).forEach(([key, value]) => {
193
- classResult += `${prefix}_${key}_${value} `;
208
+ if (screenSizeValues.includes(key)) {
209
+ classResult += `break_${breakValue}_${key}:${prefix}_${value} `;
210
+ }
194
211
  });
195
212
 
213
+ if (defaultValue) {
214
+ classResult += `${prefix}_${defaultValue} `;
215
+ }
216
+
196
217
  return classResult;
197
218
  }
198
219
 
@@ -377,6 +398,13 @@ const PROP_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => string} =
377
398
  css += position && position !== 'static' ? `position_${position}` : ''
378
399
  return css
379
400
  },
401
+ textAlignProps: ({ textAlign }: TextAlign) => {
402
+ if (typeof textAlign === 'object') {
403
+ return getResponsivePropClasses(textAlign, 'text_align')
404
+ } else {
405
+ return textAlign ? `text_align_${textAlign} ` : ''
406
+ }
407
+ }
380
408
  }
381
409
 
382
410
  type DefaultProps = {[key: string]: string} | Record<string, unknown>