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.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/_playbook.scss +1 -0
- data/app/pb_kits/playbook/pb_button/button.html.erb +2 -2
- data/app/pb_kits/playbook/pb_button/button.rb +3 -0
- data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleMain.tsx +5 -1
- data/app/pb_kits/playbook/pb_kit/dateTime.ts +54 -23
- data/app/pb_kits/playbook/pb_table/docs/_table_two_actions.jsx +3 -3
- data/app/pb_kits/playbook/pb_timestamp/_timestamp.tsx +14 -7
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_unstyled.html.erb +21 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_unstyled.jsx +36 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_unstyled.md +1 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/example.yml +3 -1
- data/app/pb_kits/playbook/pb_timestamp/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_timestamp/timestamp.html.erb +5 -1
- data/app/pb_kits/playbook/pb_timestamp/timestamp.rb +3 -1
- data/app/pb_kits/playbook/pb_title/_title.scss +3 -4
- data/app/pb_kits/playbook/tokens/_spacing.scss +1 -1
- data/app/pb_kits/playbook/tokens/_text_align.scss +18 -0
- data/app/pb_kits/playbook/utilities/_hover.scss +4 -0
- data/app/pb_kits/playbook/utilities/_max_width.scss +4 -0
- data/app/pb_kits/playbook/utilities/_spacing.scss +92 -49
- data/app/pb_kits/playbook/utilities/_text_align.scss +3 -0
- data/app/pb_kits/playbook/utilities/globalProps.ts +30 -2
- data/dist/playbook-rails.js +5 -5
- data/lib/playbook/classnames.rb +1 -0
- data/lib/playbook/hover.rb +6 -2
- data/lib/playbook/kit_base.rb +2 -0
- data/lib/playbook/spacing.rb +13 -4
- data/lib/playbook/text_align.rb +37 -0
- data/lib/playbook/version.rb +2 -2
- 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
|
-
|
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>
|