playbook_ui 4.11.0 → 4.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/playbook/pages_controller.rb +11 -0
- data/app/helpers/playbook/pb_doc_helper.rb +10 -4
- data/app/pb_kits/playbook/_playbook.scss +1 -0
- data/app/pb_kits/playbook/data/menu.yml +2 -0
- data/app/pb_kits/playbook/index.js +1 -0
- data/app/pb_kits/playbook/packs/examples.js +2 -0
- data/app/pb_kits/playbook/pb_file_upload/_file_upload.jsx +63 -0
- data/app/pb_kits/playbook/pb_file_upload/_file_upload.scss +6 -0
- data/app/pb_kits/playbook/pb_file_upload/docs/_description.md +8 -0
- data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_accept.jsx +36 -0
- data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_default.jsx +35 -0
- data/app/pb_kits/playbook/pb_file_upload/docs/example.yml +8 -0
- data/app/pb_kits/playbook/pb_file_upload/docs/index.js +2 -0
- data/app/pb_kits/playbook/pb_file_upload/file_upload.rb +11 -0
- data/app/pb_kits/playbook/pb_kit/dateTime.js +4 -0
- data/app/pb_kits/playbook/pb_label_pill/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_label_pill/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_online_status/docs/example.yml +1 -3
- data/app/pb_kits/playbook/pb_online_status/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_section_separator/_section_separator.html.erb +7 -1
- data/app/pb_kits/playbook/pb_section_separator/_section_separator.jsx +8 -2
- data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +51 -1
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_dark.html.erb +1 -0
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_dark.jsx +14 -0
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_vertical.html.erb +13 -0
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_vertical.jsx +25 -0
- data/app/pb_kits/playbook/pb_section_separator/docs/example.yml +4 -0
- data/app/pb_kits/playbook/pb_section_separator/docs/index.js +2 -0
- data/app/pb_kits/playbook/pb_section_separator/section_separator.rb +14 -3
- data/app/pb_kits/playbook/pb_source/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_source/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_star_rating/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_star_rating/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_time/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_time/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_timestamp/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_timestamp/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_title_detail/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_title_detail/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_weekday_stacked/_weekday_stacked.jsx +9 -8
- data/app/pb_kits/playbook/pb_weekday_stacked/docs/_weekday_stacked_compact.html.erb +3 -9
- data/app/pb_kits/playbook/pb_weekday_stacked/docs/_weekday_stacked_compact.jsx +8 -31
- data/app/pb_kits/playbook/pb_weekday_stacked/docs/_weekday_stacked_variant.html.erb +3 -0
- data/app/pb_kits/playbook/pb_weekday_stacked/docs/_weekday_stacked_variant.jsx +22 -0
- data/app/pb_kits/playbook/pb_weekday_stacked/docs/example.yml +4 -4
- data/app/pb_kits/playbook/pb_weekday_stacked/docs/index.js +2 -2
- data/app/pb_kits/playbook/pb_weekday_stacked/weekday_stacked.rb +13 -8
- data/app/pb_kits/playbook/tokens/_colors.scss +5 -3
- data/app/views/playbook/pages/utilities.html.slim +2 -1
- data/lib/playbook/version.rb +1 -1
- metadata +16 -11
- data/app/pb_kits/playbook/pb_label_pill/docs/_label_pill_default.jsx +0 -9
- data/app/pb_kits/playbook/pb_online_status/docs/_online_status_default.jsx +0 -9
- data/app/pb_kits/playbook/pb_source/docs/_source_default.jsx +0 -9
- data/app/pb_kits/playbook/pb_star_rating/docs/_star_rating_default.jsx +0 -9
- data/app/pb_kits/playbook/pb_time/docs/_time_default.jsx +0 -9
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.jsx +0 -9
- data/app/pb_kits/playbook/pb_title_detail/docs/_title_detail_default.jsx +0 -9
- data/app/pb_kits/playbook/pb_weekday_stacked/docs/_weekday_stacked_day_only.html.erb +0 -1
- data/app/pb_kits/playbook/pb_weekday_stacked/docs/_weekday_stacked_day_only.jsx +0 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23fd2a60198feffc9e13f9a1d57e3213d42a5dae6b6a62b32a751bbab4cf26b0
|
4
|
+
data.tar.gz: 9cbbf0ef694ee540ecc9bc97ef295b1498a41e43eca2648f5a371c99579d189e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '079d706a4214c56dd4814f22983c54beec8a2389914c1b29fbb885377e7d2edcd3d05ac0ef692c1bd18df5219743c0ff4fee0b8183cd73727cbc6c06fc138af5'
|
7
|
+
data.tar.gz: ad397e8e2528f13331a0f61c4c694ea9c5f33acdb2eee917d51c8510a912eecc7e37b28532c532e1725009188c91c248c3d6818a86126c7fc7fa304dff5952ec
|
@@ -6,6 +6,7 @@ require "yaml"
|
|
6
6
|
module Playbook
|
7
7
|
class PagesController < ApplicationController
|
8
8
|
before_action :set_kit, only: %i[kit_show_rails kit_show_react]
|
9
|
+
before_action :ensure_kit_type_exists, only: %i[kit_show_rails kit_show_react]
|
9
10
|
before_action :set_category, only: %i[kit_category_show_rails kit_category_show_react]
|
10
11
|
|
11
12
|
def home; end
|
@@ -64,5 +65,15 @@ module Playbook
|
|
64
65
|
redirect_to root_path, flash: { error: "That kit does not exist" }
|
65
66
|
end
|
66
67
|
end
|
68
|
+
|
69
|
+
def ensure_kit_type_exists
|
70
|
+
# TODO: unsure why we cannot simply use the helpers that are included in ApplicationController - fix this
|
71
|
+
is_rails_kit = action_name == "kit_show_rails"
|
72
|
+
files = is_rails_kit ? File.join("**", "*.erb") : File.join("**", "*.jsx")
|
73
|
+
kit_files = Dir.glob(files, base: "#{Playbook::Engine.root}/app/pb_kits/playbook/pb_#{@kit}/docs").present?
|
74
|
+
if !kit_files.present?
|
75
|
+
redirect_to action: is_rails_kit ? "kit_show_react" : "kit_show_rails"
|
76
|
+
end
|
77
|
+
end
|
67
78
|
end
|
68
79
|
end
|
@@ -9,9 +9,11 @@ module Playbook
|
|
9
9
|
def has_kit_type?(kit, type)
|
10
10
|
type ||= "rails"
|
11
11
|
if type == "rails"
|
12
|
-
|
12
|
+
erbfiles = File.join("**", "*.erb")
|
13
|
+
Dir.glob(erbfiles, base: "#{kit_path(kit)}/docs").present?
|
13
14
|
elsif type == "react"
|
14
|
-
|
15
|
+
jsxfiles = File.join("**", "*.jsx")
|
16
|
+
Dir.glob(jsxfiles, base: "#{kit_path(kit)}/docs").present?
|
15
17
|
end
|
16
18
|
end
|
17
19
|
|
@@ -23,8 +25,12 @@ module Playbook
|
|
23
25
|
end
|
24
26
|
end
|
25
27
|
|
26
|
-
def
|
27
|
-
|
28
|
+
def kit_path(kit)
|
29
|
+
"#{Playbook::Engine.root}/app/pb_kits/playbook/pb_#{kit}"
|
30
|
+
end
|
31
|
+
|
32
|
+
def get_kit_description(kit)
|
33
|
+
filename = "#{Playbook::Engine.root}/app/pb_kits/playbook/pb_#{kit}/docs/_description.md"
|
28
34
|
read_file(filename)
|
29
35
|
end
|
30
36
|
|
@@ -17,6 +17,7 @@
|
|
17
17
|
@import 'pb_date_stacked/date_stacked';
|
18
18
|
@import 'pb_date_year_stacked/date_year_stacked';
|
19
19
|
@import 'pb_distribution_bar/distribution_bar';
|
20
|
+
@import 'pb_file_upload/file_upload';
|
20
21
|
@import 'pb_filter/filter';
|
21
22
|
@import 'pb_fixed_confirmation_toast/fixed_confirmation_toast';
|
22
23
|
@import 'pb_form/form';
|
@@ -17,6 +17,7 @@ export DateRangeStacked from './pb_date_range_stacked/_date_range_stacked.jsx'
|
|
17
17
|
export DateStacked from './pb_date_stacked/_date_stacked.jsx'
|
18
18
|
export DateYearStacked from './pb_date_year_stacked/_date_year_stacked.jsx'
|
19
19
|
export DistributionBar from './pb_distribution_bar/_distribution_bar.jsx'
|
20
|
+
export FileUpload from './pb_file_upload/_file_upload.jsx'
|
20
21
|
export Filter from './pb_filter/_filter.jsx'
|
21
22
|
export FixedConfirmationToast from './pb_fixed_confirmation_toast/_fixed_confirmation_toast.jsx'
|
22
23
|
export Flex from './pb_flex/_flex.jsx'
|
@@ -31,6 +31,7 @@ import * as DateRangeStacked from 'pb_date_range_stacked/docs'
|
|
31
31
|
import * as DateStacked from 'pb_date_stacked/docs'
|
32
32
|
import * as DateYearStacked from 'pb_date_year_stacked/docs'
|
33
33
|
import * as DistributionBar from 'pb_distribution_bar/docs'
|
34
|
+
import * as FileUpload from 'pb_file_upload/docs'
|
34
35
|
import * as Filter from 'pb_filter/docs'
|
35
36
|
import * as FixedConfirmationToast from 'pb_fixed_confirmation_toast/docs'
|
36
37
|
import * as Flex from 'pb_flex/docs'
|
@@ -102,6 +103,7 @@ WebpackerReact.setup({
|
|
102
103
|
...DateStacked,
|
103
104
|
...DateYearStacked,
|
104
105
|
...DistributionBar,
|
106
|
+
...FileUpload,
|
105
107
|
...Filter,
|
106
108
|
...FixedConfirmationToast,
|
107
109
|
...Flex,
|
@@ -0,0 +1,63 @@
|
|
1
|
+
/* @flow */
|
2
|
+
|
3
|
+
import React, { useCallback } from 'react'
|
4
|
+
import { useDropzone } from 'react-dropzone'
|
5
|
+
|
6
|
+
import {
|
7
|
+
buildCss,
|
8
|
+
noop,
|
9
|
+
} from '../utilities/props'
|
10
|
+
|
11
|
+
import type { Callback } from '../types.js'
|
12
|
+
|
13
|
+
import {
|
14
|
+
Body,
|
15
|
+
Card,
|
16
|
+
} from '..'
|
17
|
+
|
18
|
+
type FileUploadProps = {
|
19
|
+
accept?: Array<String>,
|
20
|
+
className?: String,
|
21
|
+
onFilesAccepted: Callback,
|
22
|
+
}
|
23
|
+
|
24
|
+
const FileUpload = ({
|
25
|
+
accept = ['image/png', 'image/jpg', 'image/jpeg', 'image/svg+xml'],
|
26
|
+
className,
|
27
|
+
onFilesAccepted = noop,
|
28
|
+
}: FileUploadProps) => {
|
29
|
+
const onDrop = useCallback((files) => {
|
30
|
+
onFilesAccepted(files)
|
31
|
+
})
|
32
|
+
|
33
|
+
const {
|
34
|
+
getRootProps,
|
35
|
+
getInputProps,
|
36
|
+
isDragActive,
|
37
|
+
} = useDropzone({
|
38
|
+
accept,
|
39
|
+
onDrop,
|
40
|
+
})
|
41
|
+
|
42
|
+
return (
|
43
|
+
<div
|
44
|
+
className={buildCss('pb_file_upload_kit', className)}
|
45
|
+
{...getRootProps()}
|
46
|
+
>
|
47
|
+
<Card>
|
48
|
+
<input {...getInputProps()} />
|
49
|
+
<Body
|
50
|
+
color="light"
|
51
|
+
>
|
52
|
+
<If condition={isDragActive}>
|
53
|
+
<p>{'Drop the files here ...'}</p>
|
54
|
+
<Else />
|
55
|
+
<p>{'Drag & drop some files here, or click to select files'}</p>
|
56
|
+
</If>
|
57
|
+
</Body>
|
58
|
+
</Card>
|
59
|
+
</div>
|
60
|
+
)
|
61
|
+
}
|
62
|
+
|
63
|
+
export default FileUpload
|
@@ -0,0 +1,8 @@
|
|
1
|
+
This kit provides a drag and drop interface for file uploads. Currently, the kit leverages [react-dropzone](https://github.com/react-dropzone/react-dropzone).
|
2
|
+
|
3
|
+
### Props
|
4
|
+
|
5
|
+
`accept: [String]` Use this prop to set the list of valid file types
|
6
|
+
`onFilesAccepted: Function` The callback function, providing the list of dropped files
|
7
|
+
|
8
|
+
|
@@ -0,0 +1,36 @@
|
|
1
|
+
/* @flow */
|
2
|
+
|
3
|
+
import React, { useState } from 'react'
|
4
|
+
import {
|
5
|
+
FileUpload,
|
6
|
+
List,
|
7
|
+
ListItem,
|
8
|
+
} from '../..'
|
9
|
+
|
10
|
+
const AcceptedFilesList = ({ files }: FileList) => (
|
11
|
+
<List>
|
12
|
+
{files.map((file) => (
|
13
|
+
<ListItem key={file.name}>{file.name}</ListItem>
|
14
|
+
))}
|
15
|
+
</List>
|
16
|
+
)
|
17
|
+
|
18
|
+
const FileUploadAccept = () => {
|
19
|
+
const [filesToUpload, setFilesToUpload] = useState([])
|
20
|
+
|
21
|
+
const handleOnFilesAccepted = (files) => {
|
22
|
+
setFilesToUpload([...filesToUpload, ...files])
|
23
|
+
}
|
24
|
+
|
25
|
+
return (
|
26
|
+
<div>
|
27
|
+
<AcceptedFilesList files={filesToUpload} />
|
28
|
+
<FileUpload
|
29
|
+
accept={['image/svg+xml']}
|
30
|
+
onFilesAccepted={handleOnFilesAccepted}
|
31
|
+
/>
|
32
|
+
</div>
|
33
|
+
)
|
34
|
+
}
|
35
|
+
|
36
|
+
export default FileUploadAccept
|
@@ -0,0 +1,35 @@
|
|
1
|
+
/* @flow */
|
2
|
+
|
3
|
+
import React, { useState } from 'react'
|
4
|
+
import {
|
5
|
+
FileUpload,
|
6
|
+
List,
|
7
|
+
ListItem,
|
8
|
+
} from '../..'
|
9
|
+
|
10
|
+
const AcceptedFilesList = ({ files }: FileList) => (
|
11
|
+
<List>
|
12
|
+
{files.map((file) => (
|
13
|
+
<ListItem key={file.name}>{file.name}</ListItem>
|
14
|
+
))}
|
15
|
+
</List>
|
16
|
+
)
|
17
|
+
|
18
|
+
const FileUploadDefault = () => {
|
19
|
+
const [filesToUpload, setFilesToUpload] = useState([])
|
20
|
+
|
21
|
+
const handleOnFilesAccepted = (files) => {
|
22
|
+
setFilesToUpload([...filesToUpload, ...files])
|
23
|
+
}
|
24
|
+
|
25
|
+
return (
|
26
|
+
<div>
|
27
|
+
<AcceptedFilesList files={filesToUpload} />
|
28
|
+
<FileUpload
|
29
|
+
onFilesAccepted={handleOnFilesAccepted}
|
30
|
+
/>
|
31
|
+
</div>
|
32
|
+
)
|
33
|
+
}
|
34
|
+
|
35
|
+
export default FileUploadDefault
|
@@ -1 +0,0 @@
|
|
1
|
-
export { default as LabelPillDefault } from './_label_pill_default.jsx'
|
@@ -1 +0,0 @@
|
|
1
|
-
export { default as OnlineStatusDefault } from './_online_status_default.jsx'
|
@@ -2,5 +2,11 @@
|
|
2
2
|
id: object.id,
|
3
3
|
data: object.data,
|
4
4
|
class: object.classname) do %>
|
5
|
-
|
5
|
+
<% if object.orientation === 'horizontal' %>
|
6
|
+
<span><%= pb_rails("caption", props: { text: object.text }) %></span>
|
7
|
+
<% end %>
|
8
|
+
<% if object.orientation === 'vertical' %>
|
9
|
+
<%= pb_rails("flex", props: { orientation: "column"}) do %>
|
10
|
+
<% end %>
|
11
|
+
<%end%>
|
6
12
|
<% end %>
|
@@ -1,21 +1,27 @@
|
|
1
1
|
/* @flow */
|
2
2
|
import React from 'react'
|
3
3
|
import classnames from 'classnames'
|
4
|
-
|
5
4
|
import Caption from '../pb_caption/_caption.jsx'
|
6
5
|
|
7
6
|
type SectionSeparatorProps = {
|
8
7
|
className: String,
|
9
8
|
text: String,
|
9
|
+
orientation?: 'horizontal' | 'vertical',
|
10
10
|
variant?: 'card' | 'background',
|
11
|
+
dark?: Boolean
|
11
12
|
}
|
12
13
|
|
13
14
|
const SectionSeparator = ({
|
14
15
|
className,
|
15
16
|
text,
|
17
|
+
orientation = 'horizontal',
|
16
18
|
variant = 'card',
|
19
|
+
dark = false,
|
17
20
|
}: SectionSeparatorProps) => {
|
18
|
-
const
|
21
|
+
const themeStyle = dark === true ? '_dark' : ''
|
22
|
+
const css = classnames([
|
23
|
+
`pb_section_separator_kit_${variant}_${orientation}` + themeStyle,
|
24
|
+
className])
|
19
25
|
|
20
26
|
return (
|
21
27
|
<div className={css}>
|
@@ -24,7 +24,7 @@ $section_colors: (
|
|
24
24
|
}
|
25
25
|
}
|
26
26
|
}
|
27
|
-
|
27
|
+
|
28
28
|
&::after {
|
29
29
|
content: "";
|
30
30
|
height: 1px;
|
@@ -35,4 +35,54 @@ $section_colors: (
|
|
35
35
|
left: 0;
|
36
36
|
z-index: 0;
|
37
37
|
}
|
38
|
+
|
39
|
+
&[class*=_horizontal] {
|
40
|
+
justify-content: center;
|
41
|
+
}
|
42
|
+
&[class*=_vertical] {
|
43
|
+
&::after {
|
44
|
+
content: "";
|
45
|
+
height: 100%;
|
46
|
+
width: 1px;
|
47
|
+
margin-left: $space_xs;
|
48
|
+
margin-right: $space_xs;
|
49
|
+
background: $border_light;
|
50
|
+
position: initial;
|
51
|
+
z-index: 0;
|
52
|
+
}
|
53
|
+
}
|
54
|
+
|
55
|
+
&[class*=_dark] {
|
56
|
+
&::after {
|
57
|
+
content: "";
|
58
|
+
height: 1px;
|
59
|
+
width: 100%;
|
60
|
+
background: $border_dark;
|
61
|
+
position: absolute;
|
62
|
+
top: 50%;
|
63
|
+
left: 0;
|
64
|
+
z-index: 0;
|
65
|
+
}
|
66
|
+
&[class*=_background] {
|
67
|
+
span {
|
68
|
+
display: inline-block;
|
69
|
+
padding: 0 $space_xs;
|
70
|
+
background: $bg_dark;
|
71
|
+
position: relative;
|
72
|
+
z-index: 1;
|
73
|
+
}
|
74
|
+
}
|
75
|
+
&[class*=_vertical] {
|
76
|
+
&::after {
|
77
|
+
content: "";
|
78
|
+
height: 100%;
|
79
|
+
width: 1px;
|
80
|
+
margin-left: $space_xs;
|
81
|
+
margin-right: $space_xs;
|
82
|
+
background: $border_dark;
|
83
|
+
position: initial;
|
84
|
+
z-index: 0;
|
85
|
+
}
|
86
|
+
}
|
87
|
+
}
|
38
88
|
}
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= pb_rails("section_separator", props: { text: "Title Separator", variant: "background", dark: true }) %>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { SectionSeparator } from '../../'
|
3
|
+
|
4
|
+
const SectionSeparatorDark = () => {
|
5
|
+
return (
|
6
|
+
<SectionSeparator
|
7
|
+
dark
|
8
|
+
text="Title Separator"
|
9
|
+
variant="background"
|
10
|
+
/>
|
11
|
+
)
|
12
|
+
}
|
13
|
+
|
14
|
+
export default SectionSeparatorDark
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<%= pb_rails("flex", props: {classname: "flex-container", vertical: "stretch"}) do %>
|
2
|
+
<%= pb_rails("body", props: {classname: "flex-item"}) do %>
|
3
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua
|
4
|
+
<% end %>
|
5
|
+
<%= pb_rails("section_separator", props: { orientation: "vertical" }) %>
|
6
|
+
<%= pb_rails("body", props: {classname: "flex-item"}) do %>
|
7
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua
|
8
|
+
<% end %>
|
9
|
+
<%= pb_rails("section_separator", props: { orientation: "vertical" }) %>
|
10
|
+
<%= pb_rails("body", props: {classname: "flex-item"}) do %>
|
11
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua
|
12
|
+
<% end %>
|
13
|
+
<% end %>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { Flex, FlexItem, SectionSeparator } from '../../'
|
3
|
+
|
4
|
+
const SectionSeparatorVertical = () => {
|
5
|
+
return (
|
6
|
+
<Flex
|
7
|
+
inline="flex-container"
|
8
|
+
vertical="stretch"
|
9
|
+
>
|
10
|
+
<FlexItem>
|
11
|
+
{'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua'}
|
12
|
+
</FlexItem>
|
13
|
+
<SectionSeparator orientation="vertical" />
|
14
|
+
<FlexItem>
|
15
|
+
{'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua'}
|
16
|
+
</FlexItem>
|
17
|
+
<SectionSeparator orientation="vertical" />
|
18
|
+
<FlexItem>
|
19
|
+
{'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua'}
|
20
|
+
</FlexItem>
|
21
|
+
</Flex>
|
22
|
+
)
|
23
|
+
}
|
24
|
+
|
25
|
+
export default SectionSeparatorVertical
|
@@ -4,8 +4,12 @@ examples:
|
|
4
4
|
- section_separator_text: Text Separator
|
5
5
|
- section_separator_line: Line Separator
|
6
6
|
- section_separator_text_background: Background Variant
|
7
|
+
- section_separator_vertical: Vertical
|
8
|
+
- section_separator_dark: Dark
|
7
9
|
|
8
10
|
react:
|
9
11
|
- section_separator_text: Text Separator
|
10
12
|
- section_separator_line: Line Separator
|
11
13
|
- section_separator_text_background: Background Variant
|
14
|
+
- section_separator_vertical: Vertical
|
15
|
+
- section_separator_dark: Dark
|
@@ -1,3 +1,5 @@
|
|
1
1
|
export { default as SectionSeparatorLine } from './_section_separator_line.jsx'
|
2
2
|
export { default as SectionSeparatorText } from './_section_separator_text.jsx'
|
3
3
|
export { default as SectionSeparatorTextBackground } from './_section_separator_text_background.jsx'
|
4
|
+
export { default as SectionSeparatorVertical } from './_section_separator_vertical.jsx'
|
5
|
+
export { default as SectionSeparatorDark } from './_section_separator_dark.jsx'
|
@@ -9,11 +9,22 @@ module Playbook
|
|
9
9
|
|
10
10
|
prop :text
|
11
11
|
prop :variant, type: Playbook::Props::Enum,
|
12
|
-
|
13
|
-
|
12
|
+
values: %w[card background],
|
13
|
+
default: "card"
|
14
|
+
prop :orientation, type: Playbook::Props::Enum,
|
15
|
+
values: %w[horizontal vertical],
|
16
|
+
default: "horizontal"
|
17
|
+
prop :dark, type: Playbook::Props::Boolean,
|
18
|
+
default: false
|
14
19
|
|
15
20
|
def classname
|
16
|
-
generate_classname("pb_section_separator_kit",variant)
|
21
|
+
generate_classname("pb_section_separator_kit", variant, orientation, dark_class)
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def dark_class
|
27
|
+
dark ? "dark" : nil
|
17
28
|
end
|
18
29
|
end
|
19
30
|
end
|
@@ -1 +0,0 @@
|
|
1
|
-
export { default as SourceDefault } from './_source_default.jsx'
|
@@ -1 +0,0 @@
|
|
1
|
-
export { default as StarRatingDefault } from './_star_rating_default.jsx'
|
@@ -1 +0,0 @@
|
|
1
|
-
export { default as TimeDefault } from './_time_default.jsx'
|
@@ -1 +0,0 @@
|
|
1
|
-
export { default as TimestampDefault } from './_timestamp_default.jsx'
|
@@ -1 +0,0 @@
|
|
1
|
-
export { default as TitleDetailDefault } from './_title_detail_default.jsx'
|
@@ -17,10 +17,10 @@ import DateTime from '../pb_kit/dateTime.js'
|
|
17
17
|
type WeekdayStackedProps = {
|
18
18
|
align?: 'left' | 'center' | 'right',
|
19
19
|
className?: String,
|
20
|
-
compact?: Boolean,
|
21
20
|
dark?: Boolean,
|
22
21
|
date: Date,
|
23
|
-
|
22
|
+
variant?: 'day_only' | 'month_day' | 'expanded',
|
23
|
+
compact?: Boolean,
|
24
24
|
id?: String,
|
25
25
|
}
|
26
26
|
|
@@ -33,22 +33,23 @@ const getDayOfWeek = (date, compact) => {
|
|
33
33
|
}
|
34
34
|
}
|
35
35
|
|
36
|
-
const getFormattedDate = (date,
|
36
|
+
const getFormattedDate = (date, variant) => {
|
37
37
|
const dateTime = new DateTime({ value: date })
|
38
|
-
if (
|
38
|
+
if (variant === 'day_only') {
|
39
39
|
return dateTime.toDay()
|
40
40
|
} else {
|
41
|
-
|
41
|
+
const format = variant === 'expanded' ? '%b %-d' : '%-m/%-d'
|
42
|
+
return dateTime.toCustomFormat(format)
|
42
43
|
}
|
43
44
|
}
|
44
45
|
|
45
46
|
const WeekdayStacked = ({
|
46
47
|
align = 'left',
|
47
48
|
className,
|
48
|
-
compact = false,
|
49
49
|
dark = false,
|
50
50
|
date = new Date(),
|
51
|
-
|
51
|
+
variant = 'month_day',
|
52
|
+
compact = false,
|
52
53
|
}: WeekdayStackedProps) => (
|
53
54
|
<div
|
54
55
|
className={classnames(buildCss('pb_weekday_stacked_kit', align), className)}
|
@@ -58,7 +59,7 @@ const WeekdayStacked = ({
|
|
58
59
|
dark={dark}
|
59
60
|
size={4}
|
60
61
|
tag="span"
|
61
|
-
text={getFormattedDate(date,
|
62
|
+
text={getFormattedDate(date, variant)}
|
62
63
|
/>
|
63
64
|
</div>
|
64
65
|
)
|
@@ -1,9 +1,3 @@
|
|
1
|
-
<%= pb_rails("
|
2
|
-
|
3
|
-
|
4
|
-
<%= pb_rails("weekday_stacked", props: {compact: true, date: Date.parse("2019/11/6")}) %>
|
5
|
-
<%= pb_rails("weekday_stacked", props: {compact: true, date: Date.parse("2019/11/7")}) %>
|
6
|
-
<%= pb_rails("weekday_stacked", props: {compact: true, date: Date.parse("2019/11/8")}) %>
|
7
|
-
<%= pb_rails("weekday_stacked", props: {compact: true, date: Date.parse("2019/11/9")}) %>
|
8
|
-
<%= pb_rails("weekday_stacked", props: {compact: true, date: Date.parse("2019/11/10")}) %>
|
9
|
-
<% end %>
|
1
|
+
<%= pb_rails("weekday_stacked", props: {variant: "expanded", compact: true}) %>
|
2
|
+
<%= pb_rails("weekday_stacked", props: { variant: "day_only" , compact: true, align: "center"}) %>
|
3
|
+
<%= pb_rails("weekday_stacked", props: { variant: "month_day", compact: true, align: "right" }) %>
|
@@ -1,48 +1,25 @@
|
|
1
1
|
import React from 'react'
|
2
2
|
import {
|
3
|
-
Flex,
|
4
|
-
// FlexItem,
|
5
3
|
WeekdayStacked,
|
6
|
-
} from '
|
4
|
+
} from '../../'
|
7
5
|
|
8
6
|
const WeekdayStackedCompact = () => (
|
9
|
-
<
|
7
|
+
<div>
|
10
8
|
<WeekdayStacked
|
11
9
|
compact
|
12
|
-
|
13
|
-
dayOnly
|
10
|
+
variant="day_only"
|
14
11
|
/>
|
15
12
|
<WeekdayStacked
|
13
|
+
align="center"
|
16
14
|
compact
|
17
|
-
|
18
|
-
dayOnly
|
15
|
+
variant="month_day"
|
19
16
|
/>
|
20
17
|
<WeekdayStacked
|
18
|
+
align="right"
|
21
19
|
compact
|
22
|
-
|
23
|
-
dayOnly
|
20
|
+
variant="expanded"
|
24
21
|
/>
|
25
|
-
|
26
|
-
compact
|
27
|
-
date={new Date('2019/11/7')}
|
28
|
-
dayOnly
|
29
|
-
/>
|
30
|
-
<WeekdayStacked
|
31
|
-
compact
|
32
|
-
date={new Date('2019/11/8')}
|
33
|
-
dayOnly
|
34
|
-
/>
|
35
|
-
<WeekdayStacked
|
36
|
-
compact
|
37
|
-
date={new Date('2019/11/9')}
|
38
|
-
dayOnly
|
39
|
-
/>
|
40
|
-
<WeekdayStacked
|
41
|
-
compact
|
42
|
-
date={new Date('2019/11/10')}
|
43
|
-
dayOnly
|
44
|
-
/>
|
45
|
-
</Flex>
|
22
|
+
</div>
|
46
23
|
)
|
47
24
|
|
48
25
|
export default WeekdayStackedCompact
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import {
|
3
|
+
WeekdayStacked,
|
4
|
+
} from '../../'
|
5
|
+
|
6
|
+
const WeekdayStackedVariant = () => (
|
7
|
+
<div>
|
8
|
+
<WeekdayStacked
|
9
|
+
variant="day_only"
|
10
|
+
/>
|
11
|
+
<WeekdayStacked
|
12
|
+
align="center"
|
13
|
+
variant="month_day"
|
14
|
+
/>
|
15
|
+
<WeekdayStacked
|
16
|
+
align="right"
|
17
|
+
variant="expanded"
|
18
|
+
/>
|
19
|
+
</div>
|
20
|
+
)
|
21
|
+
|
22
|
+
export default WeekdayStackedVariant
|
@@ -2,14 +2,14 @@ examples:
|
|
2
2
|
|
3
3
|
rails:
|
4
4
|
- weekday_stacked_default: Default
|
5
|
-
- weekday_stacked_day_only: Day Only
|
6
|
-
- weekday_stacked_compact: Day Only - Compact
|
7
5
|
- weekday_stacked_dark: Dark
|
6
|
+
- weekday_stacked_compact: Compact
|
7
|
+
- weekday_stacked_variant: Variant
|
8
8
|
|
9
9
|
|
10
10
|
react:
|
11
11
|
- weekday_stacked_default: Default
|
12
|
-
- weekday_stacked_day_only: Day Only
|
13
|
-
- weekday_stacked_compact: Day Only - Compact
|
14
12
|
- weekday_stacked_dark: Dark
|
13
|
+
- weekday_stacked_compact: Compact
|
14
|
+
- weekday_stacked_variant: Variant
|
15
15
|
|
@@ -1,4 +1,4 @@
|
|
1
1
|
export { default as WeekdayStackedDefault } from './_weekday_stacked_default.jsx'
|
2
|
-
export { default as WeekdayStackedDayOnly } from './_weekday_stacked_day_only.jsx'
|
3
|
-
export { default as WeekdayStackedCompact } from './_weekday_stacked_compact.jsx'
|
4
2
|
export { default as WeekdayStackedDark } from './_weekday_stacked_dark.jsx'
|
3
|
+
export { default as WeekdayStackedVariant } from './_weekday_stacked_variant.jsx'
|
4
|
+
export { default as WeekdayStackedCompact } from './_weekday_stacked_compact.jsx'
|
@@ -13,17 +13,18 @@ module Playbook
|
|
13
13
|
values: %w[left center right],
|
14
14
|
default: "left"
|
15
15
|
|
16
|
-
prop :compact, type: Playbook::Props::Boolean,
|
17
|
-
default: false
|
18
|
-
|
19
16
|
prop :dark, type: Playbook::Props::Boolean,
|
20
17
|
default: false
|
21
18
|
|
22
19
|
prop :date, type: Playbook::Props::Date,
|
23
20
|
default: ::Date.current
|
21
|
+
|
22
|
+
prop :compact, type: Playbook::Props::Boolean,
|
23
|
+
default: false
|
24
24
|
|
25
|
-
prop :
|
26
|
-
|
25
|
+
prop :variant, type: Playbook::Props::Enum,
|
26
|
+
values: %w[day_only expanded month_day],
|
27
|
+
default: "month_day"
|
27
28
|
|
28
29
|
def classname
|
29
30
|
generate_classname("pb_weekday_stacked_kit", align)
|
@@ -38,15 +39,19 @@ module Playbook
|
|
38
39
|
end
|
39
40
|
|
40
41
|
def formatted_month_and_day
|
41
|
-
|
42
|
+
case variant
|
43
|
+
when "day_only" then day
|
44
|
+
when "expanded" then month_and_day(format: "%b %-d")
|
45
|
+
else month_and_day
|
46
|
+
end
|
42
47
|
end
|
43
48
|
|
44
49
|
private
|
45
50
|
|
46
|
-
def month_and_day
|
51
|
+
def month_and_day(format: "%-m/%-d")
|
47
52
|
month_and_day = Playbook::PbKit::PbDateTime.new(date)
|
48
53
|
content_tag(:time, datetime: month_and_day.to_iso) do
|
49
|
-
|
54
|
+
date.strftime(format)
|
50
55
|
end
|
51
56
|
end
|
52
57
|
|
@@ -176,17 +176,19 @@ $primary_action: $primary;
|
|
176
176
|
// Product colors ---------------------
|
177
177
|
$windows: $royal;
|
178
178
|
$siding: $yellow;
|
179
|
-
$doors: $
|
179
|
+
$doors: $teal;
|
180
180
|
$solar: $green;
|
181
|
-
$roofing: $
|
181
|
+
$roofing: $slate;
|
182
182
|
$gutters: $purple;
|
183
|
+
$insulation: $red;
|
183
184
|
$product_colors: (
|
184
185
|
windows: $windows,
|
185
186
|
siding: $siding,
|
186
187
|
doors: $doors,
|
187
188
|
solar: $solar,
|
188
189
|
roofing: $roofing,
|
189
|
-
gutters: $gutters
|
190
|
+
gutters: $gutters,
|
191
|
+
insulation: $insulation
|
190
192
|
);
|
191
193
|
|
192
194
|
$transparent: transparent;
|
data/lib/playbook/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: playbook_ui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Power UX
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-04-
|
12
|
+
date: 2020-04-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
@@ -746,6 +746,14 @@ files:
|
|
746
746
|
- app/pb_kits/playbook/pb_distribution_bar/docs/index.js
|
747
747
|
- app/pb_kits/playbook/pb_enhanced_element/element_observer.js
|
748
748
|
- app/pb_kits/playbook/pb_enhanced_element/index.js
|
749
|
+
- app/pb_kits/playbook/pb_file_upload/_file_upload.jsx
|
750
|
+
- app/pb_kits/playbook/pb_file_upload/_file_upload.scss
|
751
|
+
- app/pb_kits/playbook/pb_file_upload/docs/_description.md
|
752
|
+
- app/pb_kits/playbook/pb_file_upload/docs/_file_upload_accept.jsx
|
753
|
+
- app/pb_kits/playbook/pb_file_upload/docs/_file_upload_default.jsx
|
754
|
+
- app/pb_kits/playbook/pb_file_upload/docs/example.yml
|
755
|
+
- app/pb_kits/playbook/pb_file_upload/docs/index.js
|
756
|
+
- app/pb_kits/playbook/pb_file_upload/file_upload.rb
|
749
757
|
- app/pb_kits/playbook/pb_filter/_filter.html.erb
|
750
758
|
- app/pb_kits/playbook/pb_filter/_filter.jsx
|
751
759
|
- app/pb_kits/playbook/pb_filter/_filter.scss
|
@@ -947,7 +955,6 @@ files:
|
|
947
955
|
- app/pb_kits/playbook/pb_label_pill/docs/_description.md
|
948
956
|
- app/pb_kits/playbook/pb_label_pill/docs/_footer.md
|
949
957
|
- app/pb_kits/playbook/pb_label_pill/docs/_label_pill_default.html.erb
|
950
|
-
- app/pb_kits/playbook/pb_label_pill/docs/_label_pill_default.jsx
|
951
958
|
- app/pb_kits/playbook/pb_label_pill/docs/_label_pill_default.md
|
952
959
|
- app/pb_kits/playbook/pb_label_pill/docs/example.yml
|
953
960
|
- app/pb_kits/playbook/pb_label_pill/docs/index.js
|
@@ -1123,7 +1130,6 @@ files:
|
|
1123
1130
|
- app/pb_kits/playbook/pb_online_status/_online_status_mixins.scss
|
1124
1131
|
- app/pb_kits/playbook/pb_online_status/docs/_description.md
|
1125
1132
|
- app/pb_kits/playbook/pb_online_status/docs/_online_status_default.html.erb
|
1126
|
-
- app/pb_kits/playbook/pb_online_status/docs/_online_status_default.jsx
|
1127
1133
|
- app/pb_kits/playbook/pb_online_status/docs/example.yml
|
1128
1134
|
- app/pb_kits/playbook/pb_online_status/docs/index.js
|
1129
1135
|
- app/pb_kits/playbook/pb_online_status/online_status.rb
|
@@ -1239,12 +1245,16 @@ files:
|
|
1239
1245
|
- app/pb_kits/playbook/pb_section_separator/_section_separator.scss
|
1240
1246
|
- app/pb_kits/playbook/pb_section_separator/docs/_description.md
|
1241
1247
|
- app/pb_kits/playbook/pb_section_separator/docs/_footer.md
|
1248
|
+
- app/pb_kits/playbook/pb_section_separator/docs/_section_separator_dark.html.erb
|
1249
|
+
- app/pb_kits/playbook/pb_section_separator/docs/_section_separator_dark.jsx
|
1242
1250
|
- app/pb_kits/playbook/pb_section_separator/docs/_section_separator_line.html.erb
|
1243
1251
|
- app/pb_kits/playbook/pb_section_separator/docs/_section_separator_line.jsx
|
1244
1252
|
- app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text.html.erb
|
1245
1253
|
- app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text.jsx
|
1246
1254
|
- app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text_background.html.erb
|
1247
1255
|
- app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text_background.jsx
|
1256
|
+
- app/pb_kits/playbook/pb_section_separator/docs/_section_separator_vertical.html.erb
|
1257
|
+
- app/pb_kits/playbook/pb_section_separator/docs/_section_separator_vertical.jsx
|
1248
1258
|
- app/pb_kits/playbook/pb_section_separator/docs/example.yml
|
1249
1259
|
- app/pb_kits/playbook/pb_section_separator/docs/index.js
|
1250
1260
|
- app/pb_kits/playbook/pb_section_separator/section_separator.rb
|
@@ -1301,7 +1311,6 @@ files:
|
|
1301
1311
|
- app/pb_kits/playbook/pb_source/_source.scss
|
1302
1312
|
- app/pb_kits/playbook/pb_source/docs/_description.md
|
1303
1313
|
- app/pb_kits/playbook/pb_source/docs/_source_default.html.erb
|
1304
|
-
- app/pb_kits/playbook/pb_source/docs/_source_default.jsx
|
1305
1314
|
- app/pb_kits/playbook/pb_source/docs/_source_noicon.html.erb
|
1306
1315
|
- app/pb_kits/playbook/pb_source/docs/_source_types.html.erb
|
1307
1316
|
- app/pb_kits/playbook/pb_source/docs/example.yml
|
@@ -1312,7 +1321,6 @@ files:
|
|
1312
1321
|
- app/pb_kits/playbook/pb_star_rating/_star_rating.scss
|
1313
1322
|
- app/pb_kits/playbook/pb_star_rating/docs/_description.md
|
1314
1323
|
- app/pb_kits/playbook/pb_star_rating/docs/_star_rating_default.html.erb
|
1315
|
-
- app/pb_kits/playbook/pb_star_rating/docs/_star_rating_default.jsx
|
1316
1324
|
- app/pb_kits/playbook/pb_star_rating/docs/_star_rating_hide.html.erb
|
1317
1325
|
- app/pb_kits/playbook/pb_star_rating/docs/example.yml
|
1318
1326
|
- app/pb_kits/playbook/pb_star_rating/docs/index.js
|
@@ -1432,7 +1440,6 @@ files:
|
|
1432
1440
|
- app/pb_kits/playbook/pb_time/docs/_description.md
|
1433
1441
|
- app/pb_kits/playbook/pb_time/docs/_footer.md
|
1434
1442
|
- app/pb_kits/playbook/pb_time/docs/_time_default.html.erb
|
1435
|
-
- app/pb_kits/playbook/pb_time/docs/_time_default.jsx
|
1436
1443
|
- app/pb_kits/playbook/pb_time/docs/_time_default.md
|
1437
1444
|
- app/pb_kits/playbook/pb_time/docs/_time_timestamp.html.erb
|
1438
1445
|
- app/pb_kits/playbook/pb_time/docs/example.yml
|
@@ -1456,7 +1463,6 @@ files:
|
|
1456
1463
|
- app/pb_kits/playbook/pb_timestamp/docs/_footer.md
|
1457
1464
|
- app/pb_kits/playbook/pb_timestamp/docs/_time_stamp_default.md
|
1458
1465
|
- app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.html.erb
|
1459
|
-
- app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.jsx
|
1460
1466
|
- app/pb_kits/playbook/pb_timestamp/docs/example.yml
|
1461
1467
|
- app/pb_kits/playbook/pb_timestamp/docs/index.js
|
1462
1468
|
- app/pb_kits/playbook/pb_timestamp/timestamp.rb
|
@@ -1490,7 +1496,6 @@ files:
|
|
1490
1496
|
- app/pb_kits/playbook/pb_title_detail/docs/_description.md
|
1491
1497
|
- app/pb_kits/playbook/pb_title_detail/docs/_footer.md
|
1492
1498
|
- app/pb_kits/playbook/pb_title_detail/docs/_title_detail_default.html.erb
|
1493
|
-
- app/pb_kits/playbook/pb_title_detail/docs/_title_detail_default.jsx
|
1494
1499
|
- app/pb_kits/playbook/pb_title_detail/docs/_title_detail_default.md
|
1495
1500
|
- app/pb_kits/playbook/pb_title_detail/docs/example.yml
|
1496
1501
|
- app/pb_kits/playbook/pb_title_detail/docs/index.js
|
@@ -1562,10 +1567,10 @@ files:
|
|
1562
1567
|
- app/pb_kits/playbook/pb_weekday_stacked/docs/_weekday_stacked_compact.jsx
|
1563
1568
|
- app/pb_kits/playbook/pb_weekday_stacked/docs/_weekday_stacked_dark.html.erb
|
1564
1569
|
- app/pb_kits/playbook/pb_weekday_stacked/docs/_weekday_stacked_dark.jsx
|
1565
|
-
- app/pb_kits/playbook/pb_weekday_stacked/docs/_weekday_stacked_day_only.html.erb
|
1566
|
-
- app/pb_kits/playbook/pb_weekday_stacked/docs/_weekday_stacked_day_only.jsx
|
1567
1570
|
- app/pb_kits/playbook/pb_weekday_stacked/docs/_weekday_stacked_default.html.erb
|
1568
1571
|
- app/pb_kits/playbook/pb_weekday_stacked/docs/_weekday_stacked_default.jsx
|
1572
|
+
- app/pb_kits/playbook/pb_weekday_stacked/docs/_weekday_stacked_variant.html.erb
|
1573
|
+
- app/pb_kits/playbook/pb_weekday_stacked/docs/_weekday_stacked_variant.jsx
|
1569
1574
|
- app/pb_kits/playbook/pb_weekday_stacked/docs/example.yml
|
1570
1575
|
- app/pb_kits/playbook/pb_weekday_stacked/docs/index.js
|
1571
1576
|
- app/pb_kits/playbook/pb_weekday_stacked/weekday_stacked.rb
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= pb_rails("weekday_stacked", props: {day_only: true}) %>
|