playbook_ui 13.31.0.pre.alpha.play1262iconstyles3172 → 13.31.0.pre.alpha.play1416movealiaslogic3232
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 +4 -4
- data/app/pb_kits/playbook/pb_button/_button.scss +3 -3
- data/app/pb_kits/playbook/pb_button/_button_mixins.scss +3 -2
- data/app/pb_kits/playbook/pb_caption/_caption_mixin.scss +1 -1
- data/app/pb_kits/playbook/pb_collapsible/__snapshots__/collapsible.test.js.snap +1 -1
- data/app/pb_kits/playbook/pb_dashboard/commonSettings.js +1 -1
- data/app/pb_kits/playbook/pb_dashboard/pbChartsDarkTheme.ts +1 -1
- data/app/pb_kits/playbook/pb_dashboard/pbChartsLightTheme.ts +1 -1
- data/app/pb_kits/playbook/pb_date_year_stacked/docs/_date_year_stacked_default.jsx +4 -1
- data/app/pb_kits/playbook/pb_draggable/context/index.tsx +15 -1
- data/app/pb_kits/playbook/pb_draggable/context/types.ts +5 -0
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_default.jsx +14 -19
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_default.md +5 -3
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_cards.md +7 -3
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_list.md +3 -5
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_selectable_list.md +3 -5
- data/app/pb_kits/playbook/pb_dropdown/dropdown.html.erb +3 -1
- data/app/pb_kits/playbook/pb_dropdown/dropdown.rb +2 -0
- data/app/pb_kits/playbook/pb_dropdown/index.js +33 -4
- data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +9 -0
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +1 -1
- data/app/pb_kits/playbook/pb_icon/_icon.scss +1 -211
- data/app/pb_kits/playbook/pb_icon/_icon.tsx +7 -99
- data/app/pb_kits/playbook/pb_icon/icon.rb +25 -25
- data/app/pb_kits/playbook/pb_nav/_nav_item.test.js +2 -2
- data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.tsx +8 -23
- data/app/pb_kits/playbook/tokens/_titles.scss +4 -4
- data/app/pb_kits/playbook/tokens/_typography.scss +10 -10
- data/dist/menu.yml +566 -472
- data/dist/playbook-rails.js +6 -6
- data/dist/reset.css +1 -1
- data/lib/playbook/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 290a1034be7cf5e836f3da231ed2896d560d79080809f179a70a46d9c7ddef61
|
4
|
+
data.tar.gz: 35144f9c3c691719fc2374d63279d0fa43b3bc9cfcb8cf84c7d26b0416b351f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a7701d8e4f59e871068bc64d7b85bd84a25c5dbedfa9a7cfcbcaa8959fe46e92615cdfaab63cf1c4061ca22bbb2f8265ceb075e5c008fa3e01e6b1185eeff38c
|
7
|
+
data.tar.gz: 15a088787644d2b6eeeef831561819e06d8027f2145541d6a256a1185a6dd1a12f832eae5da700189c6195411242499d4dff03d370be2ef64c53edb572d0c1b9
|
@@ -9,7 +9,7 @@
|
|
9
9
|
|
10
10
|
$pb_button_size: 40px;
|
11
11
|
$pb_button_v_padding: 7px;
|
12
|
-
$pb_button_h_padding:
|
12
|
+
$pb_button_h_padding: 28px;
|
13
13
|
$pb_button_hover_darken: 4%;
|
14
14
|
$pb_button_border_width: 0px;
|
15
15
|
|
@@ -27,13 +27,14 @@ $pb_button_border_width: 0px;
|
|
27
27
|
text-rendering: optimizeLegibility;
|
28
28
|
font-size: $font_small;
|
29
29
|
font-weight: $bold;
|
30
|
+
letter-spacing: $lspace_loose;
|
30
31
|
text-align: center;
|
31
32
|
text-decoration: none;
|
32
33
|
vertical-align: middle;
|
33
34
|
text-transform: none;
|
34
35
|
border-width: $pb_button_border_width;
|
35
36
|
border-style: solid;
|
36
|
-
border-radius: $
|
37
|
+
border-radius: $border_rad_heavy;
|
37
38
|
min-height: $pb_button_size;
|
38
39
|
line-height: 1.5;
|
39
40
|
padding: $pb_button_v_padding $pb_button_h_padding;
|
@@ -28,7 +28,7 @@ exports[`html structure is correct 1`] = `
|
|
28
28
|
style="vertical-align: middle; color: rgb(193, 205, 214);"
|
29
29
|
>
|
30
30
|
<i
|
31
|
-
class="pb_icon_kit far
|
31
|
+
class="pb_icon_kit far fa-fw fa-lg fa-chevron-down"
|
32
32
|
/>
|
33
33
|
<span
|
34
34
|
aria-label="chevron-down icon"
|
@@ -53,7 +53,7 @@ const adjustAxisStyle = (axis) => {
|
|
53
53
|
/* Change axis label styles */
|
54
54
|
axis.labels.style.fontFamily = typography.font_family_base
|
55
55
|
axis.labels.style.color = colors.charcoal
|
56
|
-
axis.labels.style.fontWeight = typography.
|
56
|
+
axis.labels.style.fontWeight = typography.regular
|
57
57
|
axis.labels.style.fontSize = typography.font_small
|
58
58
|
}
|
59
59
|
|
@@ -4,7 +4,10 @@ import { DateYearStacked } from '../../'
|
|
4
4
|
const DateYearStackedDefault = (props) => {
|
5
5
|
return (
|
6
6
|
<div>
|
7
|
-
<DateYearStacked
|
7
|
+
<DateYearStacked
|
8
|
+
date={new Date()}
|
9
|
+
{...props}
|
10
|
+
/>
|
8
11
|
<DateYearStacked
|
9
12
|
align="center"
|
10
13
|
date={new Date()}
|
@@ -51,7 +51,16 @@ export const DraggableContext = () => {
|
|
51
51
|
return useContext(DragContext);
|
52
52
|
};
|
53
53
|
|
54
|
-
export const DraggableProvider = ({
|
54
|
+
export const DraggableProvider = ({
|
55
|
+
children,
|
56
|
+
initialItems,
|
57
|
+
onReorder,
|
58
|
+
onDragStart,
|
59
|
+
onDragEnter,
|
60
|
+
onDragEnd,
|
61
|
+
onDrop,
|
62
|
+
onDragOver
|
63
|
+
}: DraggableProviderType) => {
|
55
64
|
const [state, dispatch] = useReducer(reducer, initialState);
|
56
65
|
|
57
66
|
useEffect(() => {
|
@@ -65,6 +74,7 @@ export const DraggableProvider = ({ children, initialItems, onReorder }: Draggab
|
|
65
74
|
const handleDragStart = (id: string, container: string) => {
|
66
75
|
dispatch({ type: 'SET_DRAG_DATA', payload: { id: id, initialGroup: container } });
|
67
76
|
dispatch({ type: 'SET_IS_DRAGGING', payload: id });
|
77
|
+
if (onDragStart) onDragStart(id, container);
|
68
78
|
};
|
69
79
|
|
70
80
|
const handleDragEnter = (id: string, container: string) => {
|
@@ -72,11 +82,13 @@ export const DraggableProvider = ({ children, initialItems, onReorder }: Draggab
|
|
72
82
|
dispatch({ type: 'REORDER_ITEMS', payload: { dragId: state.dragData.id, targetId: id } });
|
73
83
|
dispatch({ type: 'SET_DRAG_DATA', payload: { id: state.dragData.id, initialGroup: container } });
|
74
84
|
}
|
85
|
+
if (onDragEnter) onDragEnter(id, container);
|
75
86
|
};
|
76
87
|
|
77
88
|
const handleDragEnd = () => {
|
78
89
|
dispatch({ type: 'SET_IS_DRAGGING', payload: "" });
|
79
90
|
dispatch({ type: 'SET_ACTIVE_CONTAINER', payload: "" });
|
91
|
+
if (onDragEnd) onDragEnd();
|
80
92
|
};
|
81
93
|
|
82
94
|
const changeCategory = (itemId: string, container: string) => {
|
@@ -87,11 +99,13 @@ export const DraggableProvider = ({ children, initialItems, onReorder }: Draggab
|
|
87
99
|
dispatch({ type: 'SET_IS_DRAGGING', payload: "" });
|
88
100
|
dispatch({ type: 'SET_ACTIVE_CONTAINER', payload: "" });
|
89
101
|
changeCategory(state.dragData.id, container);
|
102
|
+
if (onDrop) onDrop(container);
|
90
103
|
};
|
91
104
|
|
92
105
|
const handleDragOver = (e: Event, container: string) => {
|
93
106
|
e.preventDefault();
|
94
107
|
dispatch({ type: 'SET_ACTIVE_CONTAINER', payload: container });
|
108
|
+
if (onDragOver) onDragOver(e, container);
|
95
109
|
};
|
96
110
|
|
97
111
|
const contextValue = useMemo(() => ({
|
@@ -23,4 +23,9 @@ export interface ItemType {
|
|
23
23
|
children: React.ReactNode;
|
24
24
|
initialItems: ItemType[];
|
25
25
|
onReorder: (items: ItemType[]) => void;
|
26
|
+
onDragStart?: (id: string, container: string) => void;
|
27
|
+
onDragEnter?: (id: string, container: string) => void;
|
28
|
+
onDragEnd?: () => void;
|
29
|
+
onDrop?: (container: string) => void;
|
30
|
+
onDragOver?: (e: Event, container: string) => void;
|
26
31
|
}
|
@@ -1,23 +1,19 @@
|
|
1
1
|
import React, { useState } from "react";
|
2
|
-
import {
|
2
|
+
import { Flex, Image, Draggable, DraggableProvider } from "../../";
|
3
3
|
|
4
4
|
// Initial items to be dragged
|
5
5
|
const data = [
|
6
6
|
{
|
7
|
-
id: "
|
8
|
-
|
7
|
+
id: "21",
|
8
|
+
url: "https://unsplash.it/500/400/?image=633",
|
9
9
|
},
|
10
10
|
{
|
11
|
-
id: "
|
12
|
-
|
11
|
+
id: "22",
|
12
|
+
url: "https://unsplash.it/500/400/?image=634",
|
13
13
|
},
|
14
14
|
{
|
15
|
-
id: "
|
16
|
-
|
17
|
-
},
|
18
|
-
{
|
19
|
-
id: "4",
|
20
|
-
text: "Task 4",
|
15
|
+
id: "23",
|
16
|
+
url: "https://unsplash.it/500/400/?image=637",
|
21
17
|
},
|
22
18
|
];
|
23
19
|
|
@@ -30,20 +26,19 @@ const DraggableDefault = (props) => {
|
|
30
26
|
onReorder={(items) => setInitialState(items)}
|
31
27
|
>
|
32
28
|
<Draggable.Container {...props}>
|
33
|
-
|
34
|
-
{initialState.map(({ id,
|
29
|
+
<Flex>
|
30
|
+
{initialState.map(({ id, url }) => (
|
35
31
|
<Draggable.Item dragId={id}
|
36
32
|
key={id}
|
37
33
|
>
|
38
|
-
<
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
{...props}
|
34
|
+
<Image alt={id}
|
35
|
+
margin="xs"
|
36
|
+
size="md"
|
37
|
+
url={url}
|
43
38
|
/>
|
44
39
|
</Draggable.Item>
|
45
40
|
))}
|
46
|
-
|
41
|
+
</Flex>
|
47
42
|
</Draggable.Container>
|
48
43
|
</DraggableProvider>
|
49
44
|
</>
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
The Draggable kit gives you a full subcomponent structure that allows it to be used with almost any kits.
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
`DraggableProvider` = This provider manages all settings that allows drag and drop to function and must be used as the outermost wrapper. It has 2 REQUIRED props: `initialItems` (initial data) and `onReorder` (function that returns mutated data as items are reordered via drag and drop). Devs must manage state as shown.
|
4
|
+
|
5
|
+
`Draggable.Container` = This specifies the container within which items can be dropped.
|
6
|
+
`Draggable.Item` = This specifies the items that can be dragged and dropped. `dragId` is a REQUIRED prop for Draggable.Item.
|
@@ -1,5 +1,9 @@
|
|
1
|
-
For a simplified version of the Draggable API for the Card kit,
|
1
|
+
For a simplified version of the Draggable API for the Card kit, you can do the following:
|
2
|
+
|
3
|
+
Use `DraggableProvider` and manage state as shown.
|
4
|
+
|
5
|
+
`Draggable.Container` creates the container within which the cards can be dragged and dropped.
|
6
|
+
|
7
|
+
The Card kit is optimized to work with the draggable kit. To enable drag, use the `draggableItem` and `dragId` props on the Card kit as shown. An additional optional boolean prop (set to true by default) of `dragHandle` is also available to show the drag handle icon.
|
2
8
|
|
3
|
-
In addition to the above `dragId` is a REQUIRED prop to be passedd to the Card kit when implementing dragging.
|
4
9
|
|
5
|
-
The dev must manage state as shown.
|
@@ -1,7 +1,5 @@
|
|
1
|
-
For a simplified version of the Draggable API for the List kit,
|
1
|
+
For a simplified version of the Draggable API for the List kit, you can do the following:
|
2
2
|
|
3
|
-
|
3
|
+
Use `DraggableProvider` and manage state as shown.
|
4
4
|
|
5
|
-
The
|
6
|
-
|
7
|
-
The dragHandle is added by default but this can be opted out of by setting `dragHandle` to false on the List kit.
|
5
|
+
The List kit is optimized to work with the draggable kit. To enable drag, use the `enableDrag` prop on List kit AND `dragId` prop on ListItem. An additional optional boolean prop (set to true by default) of `dragHandle` is also available on List kit to show the drag handle icon.
|
@@ -1,7 +1,5 @@
|
|
1
|
-
For a simplified version of the Draggable API for the SelectableList kit,
|
1
|
+
For a simplified version of the Draggable API for the SelectableList kit, you can do the following:
|
2
2
|
|
3
|
-
|
3
|
+
Use `DraggableProvider` and manage state as shown.
|
4
4
|
|
5
|
-
The
|
6
|
-
|
7
|
-
The dragHandle is added by default but this can be opted out of by setting `dragHandle` to false on the SelectableList kit.
|
5
|
+
The SelectableList kit is optimized to work with the draggable kit. To enable drag, use the `enableDrag` prop on SelectableList kit AND `dragId` prop on SelectableList.Item. An additional optional boolean prop (set to true by default) of `dragHandle` is also available on SelectableList kit to show the drag handle icon.
|
@@ -8,7 +8,9 @@
|
|
8
8
|
<%= pb_rails("caption", props: {text: object.label, margin_bottom:"xs"}) %>
|
9
9
|
<% end %>
|
10
10
|
<div class="dropdown_wrapper<%= error_class %>" style="position: relative">
|
11
|
-
<input type="hidden" name="<%= object.name %>" id="dropdown-selected-option" value=""/>
|
11
|
+
<input type="hidden" name="<%= object.name %>" id="dropdown-selected-option" value="" />
|
12
|
+
<input id="dropdown-form-validation" name="<%= object.name %>_form_validation" value="" style="display: none" <%= object.required ? "required" : ""%> />
|
13
|
+
|
12
14
|
<% if content.present? %>
|
13
15
|
<%= content.presence %>
|
14
16
|
<%= pb_rails("body", props: { status: "negative", text: object.error }) %>
|
@@ -8,6 +8,8 @@ module Playbook
|
|
8
8
|
prop :label, type: Playbook::Props::String
|
9
9
|
prop :name, type: Playbook::Props::String
|
10
10
|
prop :error, type: Playbook::Props::String
|
11
|
+
prop :required, type: Playbook::Props::Boolean,
|
12
|
+
default: false
|
11
13
|
|
12
14
|
def data
|
13
15
|
Hash(prop(:data)).merge(pb_dropdown: true)
|
@@ -8,16 +8,22 @@ const DOWN_ARROW_SELECTOR = "#dropdown_open_icon";
|
|
8
8
|
const UP_ARROW_SELECTOR = "#dropdown_close_icon";
|
9
9
|
const OPTION_SELECTOR = "[data-dropdown-option-label]";
|
10
10
|
const CUSTOM_DISPLAY_SELECTOR = "[data-dropdown-custom-trigger]";
|
11
|
+
const INPUT_FORM_VALIDATION = "#dropdown-form-validation";
|
11
12
|
|
12
13
|
export default class PbDropdown extends PbEnhancedElement {
|
13
14
|
static get selector() {
|
14
15
|
return DROPDOWN_SELECTOR;
|
15
16
|
}
|
16
17
|
|
18
|
+
get target() {
|
19
|
+
return this.element.parentNode.querySelector(CONTAINER_SELECTOR);
|
20
|
+
}
|
21
|
+
|
17
22
|
connect() {
|
18
23
|
this.keyboardHandler = new PbDropdownKeyboard(this);
|
19
24
|
this.bindEventListeners();
|
20
25
|
this.updateArrowDisplay(false);
|
26
|
+
this.handleFormValidation();
|
21
27
|
}
|
22
28
|
|
23
29
|
bindEventListeners() {
|
@@ -38,9 +44,13 @@ export default class PbDropdown extends PbEnhancedElement {
|
|
38
44
|
handleOptionClick(event) {
|
39
45
|
const option = event.target.closest(OPTION_SELECTOR);
|
40
46
|
const hiddenInput = this.element.querySelector("#dropdown-selected-option");
|
47
|
+
const inputFormValidation = this.element.querySelector(INPUT_FORM_VALIDATION);
|
48
|
+
|
41
49
|
if (option) {
|
42
50
|
const value = option.dataset.dropdownOptionLabel;
|
43
51
|
hiddenInput.value = JSON.parse(value).id;
|
52
|
+
inputFormValidation.value = JSON.parse(value).id;
|
53
|
+
this.clearFormValidation(inputFormValidation);
|
44
54
|
this.onOptionSelected(value, option);
|
45
55
|
}
|
46
56
|
}
|
@@ -103,10 +113,6 @@ export default class PbDropdown extends PbEnhancedElement {
|
|
103
113
|
selectedOption.classList.add("pb_dropdown_option_selected");
|
104
114
|
}
|
105
115
|
|
106
|
-
get target() {
|
107
|
-
return this.element.parentNode.querySelector(CONTAINER_SELECTOR);
|
108
|
-
}
|
109
|
-
|
110
116
|
showElement(elem) {
|
111
117
|
elem.classList.remove("close");
|
112
118
|
elem.classList.add("open");
|
@@ -150,4 +156,27 @@ export default class PbDropdown extends PbEnhancedElement {
|
|
150
156
|
upArrow.style.display = isOpen ? "inline-block" : "none";
|
151
157
|
}
|
152
158
|
}
|
159
|
+
|
160
|
+
handleFormValidation() {
|
161
|
+
const inputFormValidation = this.element.querySelector(INPUT_FORM_VALIDATION);
|
162
|
+
|
163
|
+
inputFormValidation.addEventListener("invalid", function (event) {
|
164
|
+
if (inputFormValidation.hasAttribute("required") && inputFormValidation.value === "") {
|
165
|
+
event.preventDefault();
|
166
|
+
inputFormValidation.closest(".dropdown_wrapper").classList.add("error");
|
167
|
+
}
|
168
|
+
}, true);
|
169
|
+
}
|
170
|
+
|
171
|
+
clearFormValidation(input) {
|
172
|
+
if (input.checkValidity()) {
|
173
|
+
const dropdownWrapperElement = input.closest(".dropdown_wrapper");
|
174
|
+
dropdownWrapperElement.classList.remove("error");
|
175
|
+
|
176
|
+
const errorLabelElement = dropdownWrapperElement.querySelector(".pb_body_kit_negative");
|
177
|
+
if (errorLabelElement) {
|
178
|
+
errorLabelElement.remove();
|
179
|
+
}
|
180
|
+
}
|
181
|
+
}
|
153
182
|
}
|
@@ -13,6 +13,14 @@
|
|
13
13
|
]
|
14
14
|
%>
|
15
15
|
|
16
|
+
<%
|
17
|
+
example_dropdown_options = [
|
18
|
+
{ label: 'United States', value: 'United States', id: 'us' },
|
19
|
+
{ label: 'Canada', value: 'Canada', id: 'ca' },
|
20
|
+
{ label: 'Pakistan', value: 'Pakistan', id: 'pk' },
|
21
|
+
]
|
22
|
+
%>
|
23
|
+
|
16
24
|
<%= pb_form_with(scope: :example, method: :get, url: "", validate: true) do |form| %>
|
17
25
|
<%= form.text_field :example_text_field, props: { label: true, required: true } %>
|
18
26
|
<%= form.phone_number_field :example_phone_number_field, props: { label: "Example phone field" } %>
|
@@ -22,6 +30,7 @@
|
|
22
30
|
<%= form.password_field :example_password_field, props: { label: true, required: true } %>
|
23
31
|
<%= form.url_field :example_url_field, props: { label: true, required: true } %>
|
24
32
|
<%= form.text_area :example_text_area, props: { label: true, required: true } %>
|
33
|
+
<%= form.dropdown_field :example_dropdown, props: { label: true, options: example_dropdown_options, required: true } %>
|
25
34
|
<%= form.select :example_select, [ ["Yes", 1], ["No", 2] ], props: { label: true, blank_selection: "Select One...", required: true } %>
|
26
35
|
<%= form.collection_select :example_collection_select, example_collection, :value, :name, props: { label: true, blank_selection: "Select One...", required: true } %>
|
27
36
|
<%= form.check_box :example_checkbox, props: { text: "Example Checkbox", label: true, required: true } %>
|
@@ -1,3 +1,4 @@
|
|
1
|
+
// Rails custom icon styles
|
1
2
|
svg.pb_custom_icon {
|
2
3
|
width: 1em;
|
3
4
|
fill: currentColor;
|
@@ -9,214 +10,3 @@ svg.pb_custom_icon {
|
|
9
10
|
.pb_icon_kit_emoji {
|
10
11
|
font-family: monospace;
|
11
12
|
}
|
12
|
-
|
13
|
-
$rotate-list: (90, 180, 270);
|
14
|
-
$flip-list: (
|
15
|
-
"horizontal": (-1, 1),
|
16
|
-
"vertical": (1, -1),
|
17
|
-
"both": (-1, -1)
|
18
|
-
);
|
19
|
-
|
20
|
-
@keyframes pb_icon_spin {
|
21
|
-
0% {
|
22
|
-
-webkit-transform: rotate(0);
|
23
|
-
transform: rotate(0);
|
24
|
-
}
|
25
|
-
100% {
|
26
|
-
-webkit-transform: rotate(360deg);
|
27
|
-
transform: rotate(360deg);
|
28
|
-
}
|
29
|
-
};
|
30
|
-
|
31
|
-
svg {
|
32
|
-
&.pb_icon_kit,
|
33
|
-
&.pb_custom_icon{
|
34
|
-
@each $r in $rotate-list {
|
35
|
-
&.rotate_#{$r} {
|
36
|
-
transform: rotate(#{$r}deg);
|
37
|
-
}
|
38
|
-
}
|
39
|
-
@each $f, $v in $flip-list {
|
40
|
-
&.flip_#{$f} {
|
41
|
-
transform: scale($v);
|
42
|
-
}
|
43
|
-
}
|
44
|
-
&.svg-inline--fa {
|
45
|
-
height: 1em;
|
46
|
-
overflow: visible;
|
47
|
-
vertical-align: -.125em
|
48
|
-
}
|
49
|
-
&.svg_inverse {
|
50
|
-
color: #fff;
|
51
|
-
}
|
52
|
-
&.svg_border {
|
53
|
-
border-color: #eee;
|
54
|
-
border-radius: .1em;
|
55
|
-
border-style: solid;
|
56
|
-
border-width: .08em;
|
57
|
-
padding: .2em .25em .15em;
|
58
|
-
}
|
59
|
-
&.svg_fw {
|
60
|
-
text-align: center;
|
61
|
-
width: 1.25em
|
62
|
-
}
|
63
|
-
&.svg_li {
|
64
|
-
left: calc(2em * -1);
|
65
|
-
position: absolute;
|
66
|
-
text-align: center;
|
67
|
-
width: 2em;
|
68
|
-
line-height: inherit
|
69
|
-
}
|
70
|
-
&.pull_left {
|
71
|
-
float: left;
|
72
|
-
margin-right: .3em;
|
73
|
-
}
|
74
|
-
|
75
|
-
&.pull_right {
|
76
|
-
float: right;
|
77
|
-
margin-left: .3em;
|
78
|
-
}
|
79
|
-
&.pulse {
|
80
|
-
animation-name: pb_icon_spin;
|
81
|
-
animation-direction: normal;
|
82
|
-
animation-duration: 1s;
|
83
|
-
animation-iteration-count: infinite;
|
84
|
-
animation-timing-function: steps(8);
|
85
|
-
}
|
86
|
-
&.spin {
|
87
|
-
animation-name: pb_icon_spin;
|
88
|
-
animation-delay: 0s;
|
89
|
-
animation-direction: normal;
|
90
|
-
animation-duration: 2s;
|
91
|
-
animation-iteration-count: infinite;
|
92
|
-
animation-timing-function: linear;
|
93
|
-
}
|
94
|
-
|
95
|
-
&.svg_xs {
|
96
|
-
font-size: 0.75em
|
97
|
-
}
|
98
|
-
|
99
|
-
&.svg_sm {
|
100
|
-
font-size: 0.875em
|
101
|
-
}
|
102
|
-
|
103
|
-
&.svg_lg {
|
104
|
-
font-size: 1.25em
|
105
|
-
}
|
106
|
-
|
107
|
-
&.svg_1x {
|
108
|
-
font-size: 1em
|
109
|
-
}
|
110
|
-
|
111
|
-
&.svg_2x {
|
112
|
-
font-size: 2em
|
113
|
-
}
|
114
|
-
|
115
|
-
&.svg_3x {
|
116
|
-
font-size: 3em
|
117
|
-
}
|
118
|
-
|
119
|
-
&.svg_4x {
|
120
|
-
font-size: 4em
|
121
|
-
}
|
122
|
-
|
123
|
-
&.svg_5x {
|
124
|
-
font-size: 5em
|
125
|
-
}
|
126
|
-
|
127
|
-
&.svg_6x {
|
128
|
-
font-size: 6em
|
129
|
-
}
|
130
|
-
|
131
|
-
&.svg_7x {
|
132
|
-
font-size: 7em
|
133
|
-
}
|
134
|
-
|
135
|
-
&.svg_8x {
|
136
|
-
font-size: 8em
|
137
|
-
}
|
138
|
-
|
139
|
-
&.svg_9x {
|
140
|
-
font-size: 9em
|
141
|
-
}
|
142
|
-
|
143
|
-
&.svg_10x {
|
144
|
-
font-size: 10em
|
145
|
-
}
|
146
|
-
&.fa-xs {
|
147
|
-
font-size: .75em;
|
148
|
-
line-height: .0833333337em;
|
149
|
-
vertical-align: .125em
|
150
|
-
}
|
151
|
-
&.fa-sm {
|
152
|
-
font-size: .875em;
|
153
|
-
line-height: .0714285718em;
|
154
|
-
vertical-align: .0535714295em
|
155
|
-
}
|
156
|
-
&.fa-lg {
|
157
|
-
font-size: 1.25em;
|
158
|
-
line-height: .05em;
|
159
|
-
vertical-align: -.075em
|
160
|
-
}
|
161
|
-
&.fa-pull-left {
|
162
|
-
float: left;
|
163
|
-
margin-right: .3em;
|
164
|
-
}
|
165
|
-
|
166
|
-
&.fa-pull-right {
|
167
|
-
float: right;
|
168
|
-
margin-left: .3em;
|
169
|
-
}
|
170
|
-
&.fa-li {
|
171
|
-
left: calc(2em * -1);
|
172
|
-
position: absolute;
|
173
|
-
text-align: center;
|
174
|
-
width: 2em;
|
175
|
-
line-height: inherit
|
176
|
-
}
|
177
|
-
&.svg-inline--fa.fa-li {
|
178
|
-
width: 2em;
|
179
|
-
top: .25em
|
180
|
-
}
|
181
|
-
&.svg-inline--fa.fa-fw {
|
182
|
-
width: 1.25em;
|
183
|
-
}
|
184
|
-
&.fa-fw {
|
185
|
-
text-align: center;
|
186
|
-
width: 1.25em
|
187
|
-
}
|
188
|
-
&.fa-layers {
|
189
|
-
display: inline-block;
|
190
|
-
height: 1em;
|
191
|
-
position: relative;
|
192
|
-
text-align: center;
|
193
|
-
vertical-align: -.125em;
|
194
|
-
width: 1em
|
195
|
-
}
|
196
|
-
&.fa-2x {
|
197
|
-
font-size: 2em
|
198
|
-
}
|
199
|
-
&.fa-3x {
|
200
|
-
font-size: 3em
|
201
|
-
}
|
202
|
-
&.fa-flip {
|
203
|
-
animation-name: fa-flip;
|
204
|
-
animation-delay: 0s;
|
205
|
-
animation-direction: normal;
|
206
|
-
animation-duration: 1s;
|
207
|
-
animation-iteration-count: infinite;
|
208
|
-
animation-timing-function: ease-in-out;
|
209
|
-
}
|
210
|
-
&.fa-spin {
|
211
|
-
animation-name: fa-spin;
|
212
|
-
animation-delay: 0s;
|
213
|
-
animation-direction: normal;
|
214
|
-
animation-duration: 2s;
|
215
|
-
animation-iteration-count: infinite;
|
216
|
-
animation-timing-function: linear;
|
217
|
-
}
|
218
|
-
&.fa-pulse {
|
219
|
-
animation: fa-spin 1s infinite linear;
|
220
|
-
}
|
221
|
-
}
|
222
|
-
}
|