playbook_ui 15.0.0.pre.alpha.popovertesting10431 → 15.0.0
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_circle_icon_button/_circle_icon_button.tsx +0 -2
- data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.html.erb +0 -1
- data/app/pb_kits/playbook/pb_collapsible/__snapshots__/collapsible.test.js.snap +0 -1
- data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +4 -48
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.html.erb +1 -24
- data/app/pb_kits/playbook/pb_dialog/_close_icon.tsx +1 -5
- data/app/pb_kits/playbook/pb_dialog/_dialog.tsx +8 -6
- data/app/pb_kits/playbook/pb_dialog/dialog.html.erb +1 -1
- data/app/pb_kits/playbook/pb_dialog/dialogHelper.js +65 -0
- data/app/pb_kits/playbook/pb_dialog/dialog_header.html.erb +2 -2
- data/app/pb_kits/playbook/pb_icon/_icon.tsx +2 -13
- data/app/pb_kits/playbook/pb_icon/icon.rb +1 -9
- data/app/pb_kits/playbook/pb_icon_circle/icon_circle.html.erb +1 -1
- data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.tsx +1 -3
- data/app/pb_kits/playbook/pb_loading_inline/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_loading_inline/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_loading_inline/loading_inline.html.erb +1 -1
- data/app/pb_kits/playbook/pb_loading_inline/loading_inline.rb +0 -11
- data/app/pb_kits/playbook/pb_popover/index.ts +66 -120
- data/app/pb_kits/playbook/pb_text_input/_text_input.tsx +0 -3
- data/app/pb_kits/playbook/pb_text_input/docs/example.yml +0 -3
- data/app/pb_kits/playbook/pb_text_input/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_text_input/text_input.rb +3 -2
- data/app/pb_kits/playbook/pb_text_input/text_input.test.js +0 -38
- data/dist/chunks/{_line_graph-smu35i9u.js → _line_graph-CIyKqNGy.js} +1 -1
- data/dist/chunks/_typeahead-B-mDRLxH.js +6 -0
- data/dist/chunks/_weekday_stacked-B_lp1Spt.js +37 -0
- data/dist/chunks/{lib-82dcKEqL.js → lib-DgtxnJqa.js} +2 -2
- data/dist/chunks/{pb_form_validation-CYLBbwKB.js → pb_form_validation-_NsOWfBS.js} +1 -1
- data/dist/chunks/vendor.js +1 -1
- data/dist/playbook-doc.js +2 -2
- data/dist/playbook-rails-react-bindings.js +1 -1
- data/dist/playbook-rails.js +1 -1
- data/lib/playbook/version.rb +2 -2
- metadata +8 -12
- data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_variant.html.erb +0 -5
- data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_variant.jsx +0 -24
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_autocomplete.html.erb +0 -41
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_autocomplete.jsx +0 -80
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_autocomplete.md +0 -1
- data/dist/chunks/_typeahead-C5hUPymw.js +0 -6
- data/dist/chunks/_weekday_stacked-BXuXb72b.js +0 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7cc4f7acda404e7f35ab391d2f1a70d00af44eedb04eac2553d58a68ebe769a8
|
4
|
+
data.tar.gz: b4e22974863a4d18c6d7d5ab891cba391d84a5ebf75220540afabbeb58315271
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a383abf40229774fc9b34594101d11b5848587cb4402c6fc26e73ae28ae63124348f59c7faf01e15b08f2cc55f281f510257ffb079bf7663661f0a388fc946b2
|
7
|
+
data.tar.gz: e02d74bc78997fe7d4f265ce72db7ac30125d62baca5f78481bc762f142a3427c139d0d2c29417137324245fd83d8295aecb93985c82aefe4784384e16b318c2
|
@@ -65,7 +65,6 @@ const CircleIconButton = (props: CircleIconButtonProps): React.ReactElement => {
|
|
65
65
|
id={id}
|
66
66
|
>
|
67
67
|
<Button
|
68
|
-
aria={aria}
|
69
68
|
dark={dark}
|
70
69
|
disabled={disabled}
|
71
70
|
htmlType={type}
|
@@ -79,7 +78,6 @@ const CircleIconButton = (props: CircleIconButtonProps): React.ReactElement => {
|
|
79
78
|
>
|
80
79
|
<Icon
|
81
80
|
fixedWidth
|
82
|
-
htmlOptions={{'aria-hidden': true}}
|
83
81
|
icon={icon}
|
84
82
|
/>
|
85
83
|
</Button>
|
@@ -89,48 +89,6 @@ const datePickerHelper = (config: DatePickerConfig, scrollContainer: string | HT
|
|
89
89
|
}
|
90
90
|
}
|
91
91
|
|
92
|
-
// Helper function to get min/max years based on yearRange. If minDate/maxDate provided, grab year from those values
|
93
|
-
const getMinMaxYears = () => {
|
94
|
-
const [minYear, maxYear] = yearRange;
|
95
|
-
|
96
|
-
const extractYear = (dateOption: typeof minDate | typeof maxDate): number | null => {
|
97
|
-
if (!dateOption) return null;
|
98
|
-
|
99
|
-
// If it's already a number, assume it's a year
|
100
|
-
if (typeof dateOption === 'number') {
|
101
|
-
return dateOption;
|
102
|
-
}
|
103
|
-
|
104
|
-
// If it's a string, extract year with regex
|
105
|
-
if (typeof dateOption === 'string') {
|
106
|
-
const match = dateOption.match(/\b(19|20)\d{2}\b/);
|
107
|
-
return match ? parseInt(match[0], 10) : null;
|
108
|
-
}
|
109
|
-
|
110
|
-
// If it's a Date object, get the year directly
|
111
|
-
if (dateOption instanceof Date) {
|
112
|
-
return dateOption.getFullYear();
|
113
|
-
}
|
114
|
-
|
115
|
-
return null;
|
116
|
-
};
|
117
|
-
|
118
|
-
const setMinYear = minDate ? (extractYear(minDate) ?? minYear) : minYear;
|
119
|
-
const setMaxYear = maxDate ? (extractYear(maxDate) ?? maxYear) : maxYear;
|
120
|
-
|
121
|
-
return { setMinYear, setMaxYear };
|
122
|
-
};
|
123
|
-
|
124
|
-
const { setMinYear, setMaxYear } = getMinMaxYears()
|
125
|
-
|
126
|
-
// Helper function to get min/max dates based on yearRange
|
127
|
-
const getMinMaxDates = () => {
|
128
|
-
const setMinDate = minDate || `01/01/${setMinYear}`
|
129
|
-
const setMaxDate = maxDate || `12/31/${setMaxYear}`
|
130
|
-
|
131
|
-
return { setMinDate, setMaxDate }
|
132
|
-
}
|
133
|
-
|
134
92
|
const disabledWeekDays = () => {
|
135
93
|
return (
|
136
94
|
[
|
@@ -243,8 +201,6 @@ const datePickerHelper = (config: DatePickerConfig, scrollContainer: string | HT
|
|
243
201
|
// | Flatpickr initializer w/ config |
|
244
202
|
// ===========================================================
|
245
203
|
|
246
|
-
const { setMinDate, setMaxDate } = getMinMaxDates()
|
247
|
-
|
248
204
|
flatpickr(`#${pickerId}`, {
|
249
205
|
allowInput,
|
250
206
|
closeOnSelect,
|
@@ -256,8 +212,8 @@ const datePickerHelper = (config: DatePickerConfig, scrollContainer: string | HT
|
|
256
212
|
locale: {
|
257
213
|
rangeSeparator: ' to '
|
258
214
|
},
|
259
|
-
maxDate
|
260
|
-
minDate
|
215
|
+
maxDate,
|
216
|
+
minDate,
|
261
217
|
mode,
|
262
218
|
nextArrow: '<i class="far fa-angle-right"></i>',
|
263
219
|
onOpen: [() => {
|
@@ -294,7 +250,7 @@ const datePickerHelper = (config: DatePickerConfig, scrollContainer: string | HT
|
|
294
250
|
|
295
251
|
// create html option tags for desired years
|
296
252
|
let years = ''
|
297
|
-
for (let year =
|
253
|
+
for (let year = yearRange[1]; year >= yearRange[0]; year--) {
|
298
254
|
years += `<option value="${year}">${year}</option>`
|
299
255
|
}
|
300
256
|
|
@@ -367,7 +323,7 @@ const datePickerHelper = (config: DatePickerConfig, scrollContainer: string | HT
|
|
367
323
|
}
|
368
324
|
// === End of Automatic Sync Logic ===
|
369
325
|
|
370
|
-
|
326
|
+
|
371
327
|
// Adding dropdown icons to year and month select
|
372
328
|
dropdown.insertAdjacentHTML('afterend', `<i class="year-dropdown-icon">${angleDown}</i>`)
|
373
329
|
if (picker.monthElements[0].parentElement) {
|
@@ -1,24 +1 @@
|
|
1
|
-
<%= pb_rails("
|
2
|
-
<%= pb_rails("date_picker", props: { picker_id: "date-picker-default"}) %>
|
3
|
-
|
4
|
-
<!-- see how it behaves for raw html date picker -->
|
5
|
-
|
6
|
-
<form style="margin-top:100px;" action="/action_page.php">
|
7
|
-
<label for="birthday" style="padding-top:100px;">Birthday:</label>
|
8
|
-
<input type="date" id="birthday" name="birthday">
|
9
|
-
<input type="submit" value="Submit">
|
10
|
-
</form>
|
11
|
-
|
12
|
-
<form style="margin-top:100px;" action="/action_page.php">
|
13
|
-
<label for="birthday" style="margin-top:100px;">Birthday:</label>
|
14
|
-
<input type="date" id="birthday" name="birthday">
|
15
|
-
<input type="submit" value="Submit">
|
16
|
-
</form>
|
17
|
-
<form style="margin-top:100px;" action="/action_page.php">
|
18
|
-
<label for="birthday" style="padding-top:100px;">Birthday:</label>
|
19
|
-
<input type="date" id="birthday" name="birthday">
|
20
|
-
<input type="submit" value="Submit">
|
21
|
-
</form>
|
22
|
-
<p><strong>Note:</strong> type="date" is not supported in Internet Explorer 11.</p>
|
23
|
-
|
24
|
-
<% end %>
|
1
|
+
<%= pb_rails("date_picker", props: { picker_id: "date-picker-default"}) %>
|
@@ -12,14 +12,10 @@ export const CloseIcon = (props: CloseIconProps): React.ReactElement => {
|
|
12
12
|
const timesIcon = getAllIcons()["times"]
|
13
13
|
return (
|
14
14
|
<div
|
15
|
-
aria-label="Close Dialog"
|
16
15
|
className="pb_dialog_close_icon"
|
17
|
-
onClick={onClose}
|
18
|
-
role="button"
|
19
|
-
tabIndex={0}
|
16
|
+
onClick={onClose}
|
20
17
|
>
|
21
18
|
<Icon
|
22
|
-
aria={{ "hidden": true }}
|
23
19
|
className="svg-inline--fa"
|
24
20
|
customIcon={timesIcon.icon as unknown as { [key: string]: SVGElement }}
|
25
21
|
fixedWidth
|
@@ -73,8 +73,8 @@ const Dialog = (props: DialogProps): React.ReactElement => {
|
|
73
73
|
const ariaProps = buildAriaProps(aria);
|
74
74
|
const dataProps = buildDataProps(data)
|
75
75
|
const htmlProps = buildHtmlProps(htmlOptions);
|
76
|
-
const
|
77
|
-
base: classnames("pb_dialog", buildCss("pb_dialog", size, placement)
|
76
|
+
const dialogClassNames = {
|
77
|
+
base: classnames("pb_dialog", buildCss("pb_dialog", size, placement)),
|
78
78
|
afterOpen: "pb_dialog_after_open",
|
79
79
|
beforeClose: "pb_dialog_before_close",
|
80
80
|
};
|
@@ -93,8 +93,10 @@ const Dialog = (props: DialogProps): React.ReactElement => {
|
|
93
93
|
|
94
94
|
const dynamicInlineProps = globalInlineProps(props);
|
95
95
|
|
96
|
-
const
|
96
|
+
const classes = classnames(
|
97
97
|
buildCss("pb_dialog_wrapper"),
|
98
|
+
globalProps(props),
|
99
|
+
className
|
98
100
|
);
|
99
101
|
|
100
102
|
const [triggerOpened, setTriggerOpened] = useState(false),
|
@@ -171,13 +173,13 @@ const Dialog = (props: DialogProps): React.ReactElement => {
|
|
171
173
|
{...ariaProps}
|
172
174
|
{...dataProps}
|
173
175
|
{...htmlProps}
|
174
|
-
className={
|
176
|
+
className={classes}
|
175
177
|
>
|
176
178
|
<Modal
|
177
179
|
ariaHideApp={false}
|
178
|
-
className={
|
180
|
+
className={dialogClassNames}
|
179
181
|
closeTimeoutMS={200}
|
180
|
-
contentLabel="
|
182
|
+
contentLabel="Minimal Modal Example"
|
181
183
|
id={id}
|
182
184
|
isOpen={modalIsOpened}
|
183
185
|
onRequestClose={onClose}
|
@@ -12,7 +12,7 @@
|
|
12
12
|
data-cancel-button-id="<%= object.cancel_button_id %>"
|
13
13
|
<% end %>
|
14
14
|
>
|
15
|
-
<%= pb_content_tag(:dialog
|
15
|
+
<%= pb_content_tag(:dialog) do %>
|
16
16
|
<% if object.status === "" && object.title %>
|
17
17
|
<%= pb_rails("dialog/dialog_header", props: { title: object.title, id: object.id }) %>
|
18
18
|
<% end %>
|
@@ -0,0 +1,65 @@
|
|
1
|
+
// Three places in Nitro depend on this function inside the window scope.
|
2
|
+
// We will keep this file until we remove this dependency from Nitro.
|
3
|
+
const dialogHelper = () => {
|
4
|
+
const openTrigger = document.querySelectorAll("[data-open-dialog]");
|
5
|
+
const closeTrigger = document.querySelectorAll("[data-close-dialog]");
|
6
|
+
const dialogs = document.querySelectorAll(".pb_dialog_rails")
|
7
|
+
|
8
|
+
const loadingButton = document.querySelector('[data-disable-with="Loading"]');
|
9
|
+
if (loadingButton) {
|
10
|
+
loadingButton.addEventListener("click", function() {
|
11
|
+
const okayLoadingButton = document.querySelector('[data-disable-with="Loading"]');
|
12
|
+
const cancelButton = document.querySelector('[data-disable-cancel-with="Loading"]');
|
13
|
+
let currentClass = okayLoadingButton.className;
|
14
|
+
let cancelClass = cancelButton ? cancelButton.className : "";
|
15
|
+
|
16
|
+
let newClass = currentClass.replace("_enabled", "_disabled_loading");
|
17
|
+
let newCancelClass = cancelClass.replace("_enabled", "_disabled");
|
18
|
+
|
19
|
+
// Disable the buttons
|
20
|
+
okayLoadingButton.disabled = true;
|
21
|
+
if (cancelButton) cancelButton.disabled = true;
|
22
|
+
|
23
|
+
okayLoadingButton.className = newClass;
|
24
|
+
if (cancelButton) cancelButton.className = newCancelClass;
|
25
|
+
});
|
26
|
+
}
|
27
|
+
|
28
|
+
|
29
|
+
openTrigger.forEach((open) => {
|
30
|
+
open.addEventListener("click", () => {
|
31
|
+
var openTriggerData = open.dataset.openDialog;
|
32
|
+
var targetDialog = document.getElementById(openTriggerData)
|
33
|
+
if (targetDialog.open) return;
|
34
|
+
targetDialog.showModal();
|
35
|
+
});
|
36
|
+
});
|
37
|
+
|
38
|
+
closeTrigger.forEach((close) => {
|
39
|
+
close.addEventListener("click", () => {
|
40
|
+
var closeTriggerData = close.dataset.closeDialog;
|
41
|
+
document.getElementById(closeTriggerData).close();
|
42
|
+
});
|
43
|
+
});
|
44
|
+
|
45
|
+
// Close dialog box on outside click
|
46
|
+
dialogs.forEach((dialogElement) => {
|
47
|
+
dialogElement.addEventListener("mousedown", (event) => {
|
48
|
+
const dialogParentDataset = dialogElement.parentElement.dataset
|
49
|
+
if (dialogParentDataset.overlayClick === "overlay_close") return
|
50
|
+
|
51
|
+
const dialogModal = event.target.getBoundingClientRect()
|
52
|
+
const clickedOutsideDialogModal = event.clientX < dialogModal.left ||
|
53
|
+
event.clientX > dialogModal.right ||
|
54
|
+
event.clientY < dialogModal.top ||
|
55
|
+
event.clientY > dialogModal.bottom
|
56
|
+
|
57
|
+
if (clickedOutsideDialogModal) {
|
58
|
+
dialogElement.close()
|
59
|
+
event.stopPropagation()
|
60
|
+
}
|
61
|
+
})
|
62
|
+
})
|
63
|
+
};
|
64
|
+
|
65
|
+
export default dialogHelper;
|
@@ -2,8 +2,8 @@
|
|
2
2
|
<%= pb_rails("flex", props: {classname:object.classname, spacing:"between", padding:"sm", align:"center"}) do %>
|
3
3
|
<%= content.presence || object.title %>
|
4
4
|
|
5
|
-
<button class="dialog-button-class pb_dialog_close_icon" type="button" data-close-dialog= <%= object.id %>
|
6
|
-
<%= pb_rails("icon", props: { custom_icon: Playbook::Engine::root.join(times_icon)
|
5
|
+
<button class="dialog-button-class pb_dialog_close_icon" type="button" data-close-dialog= <%= object.id %> >
|
6
|
+
<%= pb_rails("icon", props: { custom_icon: Playbook::Engine::root.join(times_icon) }) %>
|
7
7
|
</button>
|
8
8
|
<% end %>
|
9
9
|
<%= pb_rails("section_separator") %>
|
@@ -20,7 +20,7 @@ export type IconSizes = "lg"
|
|
20
20
|
| ""
|
21
21
|
|
22
22
|
type IconProps = {
|
23
|
-
aria?: {
|
23
|
+
aria?: {[key: string]: string},
|
24
24
|
border?: string,
|
25
25
|
className?: string,
|
26
26
|
color?: string,
|
@@ -211,15 +211,7 @@ const Icon = (props: IconProps) => {
|
|
211
211
|
)
|
212
212
|
|
213
213
|
aria.label ? null : aria.label = `${icon} icon`
|
214
|
-
|
215
|
-
const normalizedAria: { [key: string]: string } = Object.fromEntries(
|
216
|
-
Object.entries(aria).map(([key, value]) => [
|
217
|
-
key,
|
218
|
-
typeof value === "boolean" ? String(value) : value,
|
219
|
-
])
|
220
|
-
)
|
221
|
-
|
222
|
-
const ariaProps = buildAriaProps(normalizedAria)
|
214
|
+
const ariaProps: {[key: string]: any} = buildAriaProps(aria)
|
223
215
|
const dataProps: {[key: string]: any} = buildDataProps(data)
|
224
216
|
const htmlProps = buildHtmlProps(htmlOptions)
|
225
217
|
|
@@ -230,7 +222,6 @@ const Icon = (props: IconProps) => {
|
|
230
222
|
<>
|
231
223
|
{
|
232
224
|
React.cloneElement(iconElement || customIcon, {
|
233
|
-
...ariaProps,
|
234
225
|
...dataProps,
|
235
226
|
...htmlProps,
|
236
227
|
className: classes,
|
@@ -246,7 +237,6 @@ const Icon = (props: IconProps) => {
|
|
246
237
|
return (
|
247
238
|
<>
|
248
239
|
<span
|
249
|
-
{...ariaProps}
|
250
240
|
{...dataProps}
|
251
241
|
{...htmlProps}
|
252
242
|
className={classesEmoji}
|
@@ -260,7 +250,6 @@ const Icon = (props: IconProps) => {
|
|
260
250
|
return (
|
261
251
|
<>
|
262
252
|
<i
|
263
|
-
{...ariaProps}
|
264
253
|
{...dataProps}
|
265
254
|
{...htmlProps}
|
266
255
|
className={classes}
|
@@ -110,20 +110,12 @@ module Playbook
|
|
110
110
|
svg["class"] = %w[pb_custom_icon svg-inline--fa].concat([object.custom_icon_classname]).join(" ")
|
111
111
|
svg["id"] = object.id
|
112
112
|
svg["data"] = object.data
|
113
|
+
svg["aria"] = object.aria
|
113
114
|
svg["height"] = "auto"
|
114
115
|
svg["width"] = "auto"
|
115
116
|
svg["tabindex"] = object.tabindex
|
116
117
|
fill_color = object.color || "currentColor"
|
117
118
|
doc.at_css("path")["fill"] = fill_color
|
118
|
-
|
119
|
-
if object.aria.present?
|
120
|
-
object.aria.each do |key, value|
|
121
|
-
k = key.to_s
|
122
|
-
attr = k.start_with?("aria-") ? k : "aria-#{k.tr('_', '-')}"
|
123
|
-
svg[attr] = value
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
119
|
raw doc
|
128
120
|
rescue OpenURI::HTTPError, StandardError
|
129
121
|
# Handle any exceptions and return an empty string
|
@@ -16,7 +16,6 @@ type LoadingInlineProps = {
|
|
16
16
|
htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
|
17
17
|
id?: string,
|
18
18
|
text?: string,
|
19
|
-
variant?: "dotted" | "solid" ,
|
20
19
|
}
|
21
20
|
|
22
21
|
const LoadingInline = (props: LoadingInlineProps) => {
|
@@ -29,7 +28,6 @@ const LoadingInline = (props: LoadingInlineProps) => {
|
|
29
28
|
htmlOptions = {},
|
30
29
|
id,
|
31
30
|
text = ' Loading',
|
32
|
-
variant = 'dotted',
|
33
31
|
} = props
|
34
32
|
|
35
33
|
const ariaProps = buildAriaProps(aria)
|
@@ -56,7 +54,7 @@ const LoadingInline = (props: LoadingInlineProps) => {
|
|
56
54
|
<Icon
|
57
55
|
aria={{ label: 'loading icon' }}
|
58
56
|
fixedWidth
|
59
|
-
icon=
|
57
|
+
icon="spinner"
|
60
58
|
pulse
|
61
59
|
/>
|
62
60
|
{text}
|
@@ -3,11 +3,9 @@ examples:
|
|
3
3
|
rails:
|
4
4
|
- loading_inline_default: Default
|
5
5
|
- loading_inline_custom: Custom Text
|
6
|
-
- loading_inline_variant: Variant
|
7
6
|
|
8
7
|
|
9
8
|
|
10
9
|
react:
|
11
10
|
- loading_inline_default: Default
|
12
11
|
- loading_inline_custom: Custom Text
|
13
|
-
- loading_inline_variant: Variant
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<%= pb_content_tag do %>
|
2
2
|
|
3
3
|
<%= pb_rails("body", props: { color: "light", dark: object.dark }) do %>
|
4
|
-
<%= pb_rails("icon", props: { aria: { label: "loading icon" }, fixed_width: true, icon:
|
4
|
+
<%= pb_rails("icon", props: { aria: { label: "loading icon" }, fixed_width: true, icon: "spinner", pulse: true }) %> <%= object.text %>
|
5
5
|
<% end %>
|
6
6
|
<% end %>
|
@@ -8,21 +8,10 @@ module Playbook
|
|
8
8
|
default: "left"
|
9
9
|
prop :dark, type: Playbook::Props::Boolean, default: false
|
10
10
|
prop :text, type: Playbook::Props::String, default: "Loading"
|
11
|
-
prop :variant, type: Playbook::Props::Enum,
|
12
|
-
values: %w[dotted solid],
|
13
|
-
default: "dotted"
|
14
11
|
|
15
12
|
def classname
|
16
13
|
generate_classname("pb_loading_inline_kit", align)
|
17
14
|
end
|
18
|
-
|
19
|
-
def spinner_icon
|
20
|
-
if variant == "dotted"
|
21
|
-
"spinner"
|
22
|
-
elsif variant == "solid"
|
23
|
-
"spinner-solid"
|
24
|
-
end
|
25
|
-
end
|
26
15
|
end
|
27
16
|
end
|
28
17
|
end
|