playbook_ui 11.7.0.pre.alpha.pre.guagechart1 → 11.7.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/index.js +1 -1
- data/app/pb_kits/playbook/pb_date_picker/{_date_picker.jsx → _date_picker.tsx} +58 -66
- data/app/pb_kits/playbook/pb_date_picker/{date_picker_helper.js → date_picker_helper.ts} +37 -16
- data/app/pb_kits/playbook/pb_date_picker/plugins/timeSelect.ts +171 -0
- data/app/pb_kits/playbook/pb_date_range_stacked/{_date_range_stacked.jsx → _date_range_stacked.tsx} +5 -6
- data/app/pb_kits/playbook/pb_date_range_stacked/date_range_stacked.test.js +127 -0
- data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.tsx +90 -0
- data/app/pb_kits/playbook/pb_date_stacked/date_stacked.test.js +151 -0
- data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_align.jsx +1 -1
- data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_bold.jsx +1 -1
- data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_default.jsx +1 -1
- data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_not_current_year.jsx +1 -1
- data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_reverse.jsx +1 -1
- data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_sizes.jsx +1 -1
- data/app/pb_kits/playbook/pb_dialog/{_close_icon.jsx → _close_icon.tsx} +1 -3
- data/app/pb_kits/playbook/pb_dialog/_dialog.tsx +217 -0
- data/app/pb_kits/playbook/pb_dialog/_dialog_context.tsx +3 -0
- data/app/pb_kits/playbook/pb_dialog/child_kits/{_dialog_body.jsx → _dialog_body.tsx} +6 -2
- data/app/pb_kits/playbook/pb_dialog/child_kits/{_dialog_footer.jsx → _dialog_footer.tsx} +8 -11
- data/app/pb_kits/playbook/pb_dialog/child_kits/{_dialog_header.jsx → _dialog_header.tsx} +12 -15
- data/app/pb_kits/playbook/pb_lightbox/Carousel/Slides.tsx +33 -0
- data/app/pb_kits/playbook/pb_lightbox/Carousel/Thumbnails.tsx +1 -3
- data/app/pb_kits/playbook/pb_lightbox/Carousel/index.tsx +3 -1
- data/app/pb_kits/playbook/pb_lightbox/{_lightbox_header.tsx → Header/_lightbox_header.tsx} +8 -8
- data/app/pb_kits/playbook/pb_lightbox/{_lightbox_header_icon.tsx → Header/_lightbox_header_icon.tsx} +2 -2
- data/app/pb_kits/playbook/pb_lightbox/_lightbox.tsx +2 -1
- data/app/pb_kits/playbook/pb_lightbox/lightbox.scss +8 -60
- data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +5 -5
- data/app/pb_kits/playbook/pb_title/_title.tsx +1 -1
- data/app/pb_kits/playbook/playbook-rails.js +1 -1
- data/app/pb_kits/playbook/tokens/_spacing.scss +2 -0
- data/app/pb_kits/playbook/utilities/_spacing.scss +1 -0
- data/lib/playbook/spacing.rb +1 -1
- data/lib/playbook/version.rb +1 -1
- metadata +19 -17
- data/app/pb_kits/playbook/pb_date_picker/plugins/timeSelect.js +0 -137
- data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.jsx +0 -103
- data/app/pb_kits/playbook/pb_dialog/_dialog.jsx +0 -223
- data/app/pb_kits/playbook/pb_dialog/_dialog_context.jsx +0 -3
@@ -10,19 +10,52 @@ type SlidesType = {
|
|
10
10
|
current: number,
|
11
11
|
onChange: (index: number) => void,
|
12
12
|
onClick: (index: number) => void,
|
13
|
+
setIndex?: (index: number)=> void,
|
14
|
+
|
15
|
+
|
13
16
|
}
|
14
17
|
|
15
18
|
export default function Slides({
|
16
19
|
urls = [],
|
17
20
|
current = 0,
|
18
21
|
onChange = noop,
|
22
|
+
setIndex,
|
23
|
+
|
19
24
|
}: SlidesType): React.ReactElement {
|
20
25
|
const [zooming, setZooming] = useState(false)
|
21
26
|
|
27
|
+
const [touchStart, setTouchStart] = useState(null)
|
28
|
+
const [touchEnd, setTouchEnd] = useState(null)
|
29
|
+
|
30
|
+
const minSwipeDistance = 40
|
31
|
+
const onTouchStart = (e: React.TouchEvent) => {
|
32
|
+
setTouchEnd(null)
|
33
|
+
setTouchStart(e.targetTouches[0].clientX)
|
34
|
+
}
|
35
|
+
|
36
|
+
const onTouchMove = (e: React.TouchEvent) => setTouchEnd(e.targetTouches[0].clientX)
|
37
|
+
|
38
|
+
const onTouchEnd = () => {
|
39
|
+
if (!touchStart || !touchEnd) return
|
40
|
+
const distance = touchStart - touchEnd
|
41
|
+
const isLeftSwipe = distance > minSwipeDistance
|
42
|
+
const isRightSwipe = distance < -minSwipeDistance
|
43
|
+
if (isLeftSwipe) {
|
44
|
+
setIndex(current < urls.length - 1 ? current + 1 : urls.length - 1)
|
45
|
+
} else if (isRightSwipe) {
|
46
|
+
setIndex(current > 0 ? current - 1 : 0)
|
47
|
+
}
|
48
|
+
}
|
49
|
+
|
50
|
+
|
51
|
+
|
22
52
|
const handleZoom = (isZooming: boolean) => setZooming(isZooming)
|
23
53
|
return (
|
24
54
|
<div
|
25
55
|
className="Slides"
|
56
|
+
onTouchStart={onTouchStart}
|
57
|
+
onTouchMove={onTouchMove}
|
58
|
+
onTouchEnd={onTouchEnd}
|
26
59
|
>
|
27
60
|
<Slide
|
28
61
|
onClick={() => onChange(current)}
|
@@ -28,10 +28,8 @@ export default function Thumbnails({
|
|
28
28
|
}: ThumbnailsType): React.ReactElement {
|
29
29
|
const viewportSize = useWindowSize()
|
30
30
|
const thumbnailWidth = viewportSize.width / 8
|
31
|
-
const draggable = thumbnailWidth * urls.length > viewportSize.width
|
32
31
|
const shouldBeCentered = (thumbnailWidth * urls.length) < (viewportSize.width * 0.9)
|
33
|
-
const css = classnames('Thumbnails', {
|
34
|
-
|
32
|
+
const css = classnames('Thumbnails', { centered: shouldBeCentered })
|
35
33
|
const otherProps: { buttonRef?: React.RefObject<HTMLButtonElement> } = {}
|
36
34
|
|
37
35
|
const thumbnailsRef: React.RefObject<HTMLDivElement> = React.createRef()
|
@@ -1,7 +1,6 @@
|
|
1
1
|
/* eslint-disable jsx-control-statements/jsx-use-if-tag */
|
2
2
|
import { noop } from 'lodash'
|
3
3
|
import React, { useEffect } from 'react'
|
4
|
-
|
5
4
|
import Slides from './Slides'
|
6
5
|
import Thumbnails from './Thumbnails'
|
7
6
|
|
@@ -17,6 +16,7 @@ type CarouselType = {
|
|
17
16
|
}[],
|
18
17
|
onChange: (index: number) => void,
|
19
18
|
onClick?: (index: number) => void,
|
19
|
+
setIndex?: (index: number)=> void,
|
20
20
|
}
|
21
21
|
|
22
22
|
export default function Carousel({
|
@@ -24,6 +24,7 @@ export default function Carousel({
|
|
24
24
|
photos,
|
25
25
|
onClick = noop,
|
26
26
|
onChange = noop,
|
27
|
+
setIndex,
|
27
28
|
}: CarouselType): React.ReactElement {
|
28
29
|
useEffect(() => {
|
29
30
|
document.body.style.overflow = 'hidden'
|
@@ -40,6 +41,7 @@ export default function Carousel({
|
|
40
41
|
return (
|
41
42
|
<div className="Lightbox">
|
42
43
|
<Slides
|
44
|
+
setIndex={setIndex}
|
43
45
|
current={currentIndex}
|
44
46
|
onChange={handleChange}
|
45
47
|
onClick={onClick}
|
@@ -2,16 +2,16 @@
|
|
2
2
|
/* @flow */
|
3
3
|
import React, { useContext } from 'react'
|
4
4
|
import classnames from 'classnames'
|
5
|
-
import { buildAriaProps, buildCss, buildDataProps } from '
|
6
|
-
import { globalProps, GlobalProps } from '
|
7
|
-
import { LightboxContext } from '
|
5
|
+
import { buildAriaProps, buildCss, buildDataProps } from '../../utilities/props'
|
6
|
+
import { globalProps, GlobalProps } from '../../utilities/globalProps'
|
7
|
+
import { LightboxContext } from '../_lightbox_context'
|
8
8
|
import { LightboxHeaderIcon } from './_lightbox_header_icon'
|
9
|
-
import { IconSizes } from '
|
9
|
+
import { IconSizes } from '../../pb_icon/_icon'
|
10
10
|
|
11
|
-
import Caption from '
|
12
|
-
import Flex from '
|
13
|
-
import FlexItem from '
|
14
|
-
import Title from '
|
11
|
+
import Caption from '../../pb_caption/_caption'
|
12
|
+
import Flex from '../../pb_flex/_flex'
|
13
|
+
import FlexItem from '../../pb_flex/_flex_item'
|
14
|
+
import Title from '../../pb_title/_title'
|
15
15
|
|
16
16
|
type LightboxHeaderProps = {
|
17
17
|
aria?: {[key: string]: string},
|
data/app/pb_kits/playbook/pb_lightbox/{_lightbox_header_icon.tsx → Header/_lightbox_header_icon.tsx}
RENAMED
@@ -1,8 +1,8 @@
|
|
1
1
|
/* @flow */
|
2
2
|
|
3
3
|
import React from 'react'
|
4
|
-
import Icon from '
|
5
|
-
import {IconSizes} from '
|
4
|
+
import Icon from '../../pb_icon/_icon'
|
5
|
+
import {IconSizes} from '../../pb_icon/_icon'
|
6
6
|
|
7
7
|
type LightboxHeaderIconProps = {
|
8
8
|
onClose: () => void,
|
@@ -3,7 +3,7 @@ import { useKbdControls } from './hooks/useKbdControls'
|
|
3
3
|
import classnames from 'classnames'
|
4
4
|
import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
|
5
5
|
import { globalProps } from '../utilities/globalProps'
|
6
|
-
import LightboxHeader from './_lightbox_header'
|
6
|
+
import LightboxHeader from './Header/_lightbox_header'
|
7
7
|
import { LightboxContext } from './_lightbox_context'
|
8
8
|
import { IconSizes } from '../pb_icon/_icon'
|
9
9
|
|
@@ -99,6 +99,7 @@ const Lightbox = (props: LightboxType): React.ReactNode => {
|
|
99
99
|
/>
|
100
100
|
{children}
|
101
101
|
<Carousel
|
102
|
+
setIndex={setActivePhoto}
|
102
103
|
currentIndex={activePhoto}
|
103
104
|
onChange={handleOnSlide}
|
104
105
|
photos={photosMap}
|
@@ -3,56 +3,7 @@
|
|
3
3
|
|
4
4
|
$slides-margin: $space-md;
|
5
5
|
|
6
|
-
.carousel {
|
7
|
-
.home-tour-main-content {
|
8
|
-
overflow-y: hidden;
|
9
|
-
}
|
10
|
-
|
11
|
-
.image-gallery-slide-wrapper {
|
12
|
-
width: 1024px;
|
13
|
-
height: 686px;
|
14
|
-
}
|
15
|
-
|
16
|
-
.image-gallery-slide div {
|
17
|
-
height: auto;
|
18
|
-
}
|
19
|
-
|
20
|
-
.image-gallery-slide .image-gallery-image {
|
21
|
-
max-height: 100% !important;
|
22
|
-
max-width: 100% !important;
|
23
|
-
height: 692px !important;
|
24
|
-
width: 100% !important;
|
25
|
-
object-fit: cover;
|
26
|
-
}
|
27
|
-
|
28
|
-
.image-gallery-left-nav .image-gallery-svg, .image-gallery-right-nav .image-gallery-svg {
|
29
|
-
height: 120px;
|
30
|
-
width: 30px;
|
31
|
-
opacity: 0.4;
|
32
|
-
}
|
33
|
-
.image-gallery-thumbnails {
|
34
|
-
overflow-x: auto;
|
35
|
-
}
|
36
|
-
|
37
|
-
.image-gallery-thumbnails-container {
|
38
|
-
width: 1024px;
|
39
|
-
padding-left: 4px;
|
40
|
-
}
|
41
|
-
|
42
|
-
.image-gallery-thumbnails {
|
43
|
-
padding-top: 3px;
|
44
|
-
background: #000;
|
45
|
-
}
|
46
|
-
|
47
|
-
.image-gallery-thumbnail-image {
|
48
|
-
height: 64px;
|
49
|
-
width: 93px;
|
50
|
-
}
|
51
|
-
|
52
|
-
.image-gallery-thumbnail + .image-gallery-thumbnail {
|
53
|
-
margin-left: 2px;
|
54
|
-
margin-top: 2px;
|
55
|
-
}
|
6
|
+
.carousel {
|
56
7
|
|
57
8
|
.carousel-header {
|
58
9
|
background: rgb(0, 0, 0);
|
@@ -92,12 +43,13 @@ $slides-margin: $space-md;
|
|
92
43
|
|
93
44
|
.Lightbox {
|
94
45
|
width: 100vw;
|
95
|
-
height:
|
46
|
+
height: 100%;
|
96
47
|
position: fixed;
|
97
48
|
left: 0;
|
98
49
|
top: 0;
|
99
50
|
display: flex;
|
100
51
|
align-items: center;
|
52
|
+
justify-content: space-between;
|
101
53
|
flex-direction: column;
|
102
54
|
background-color: black;
|
103
55
|
z-index: 1;
|
@@ -189,21 +141,15 @@ $slides-margin: $space-md;
|
|
189
141
|
|
190
142
|
.Thumbnails {
|
191
143
|
display: flex;
|
144
|
+
width: 100vw;
|
192
145
|
padding: 3px;
|
193
|
-
overflow:
|
194
|
-
|
195
|
-
z-index: 1;
|
196
|
-
left: 0;
|
197
|
-
right: 0;
|
198
|
-
bottom: 0;
|
146
|
+
overflow: scroll;
|
147
|
+
z-index: 20;
|
199
148
|
&.centered {
|
200
149
|
justify-content: center;
|
201
150
|
}
|
202
151
|
}
|
203
152
|
|
204
|
-
.Thumbnails.draggable {
|
205
|
-
align-self: flex-start;
|
206
|
-
}
|
207
153
|
|
208
154
|
.Thumbnail {
|
209
155
|
padding: 3px;
|
@@ -217,6 +163,8 @@ $slides-margin: $space-md;
|
|
217
163
|
|
218
164
|
.Thumbnail.active {
|
219
165
|
padding: 6px;
|
166
|
+
display: flex;
|
167
|
+
align-items: center;
|
220
168
|
background-color: white;
|
221
169
|
box-shadow: 0 0 6px white;
|
222
170
|
}
|
@@ -7,13 +7,13 @@ import { globalProps } from '../utilities/globalProps'
|
|
7
7
|
import Caption from '../pb_caption/_caption'
|
8
8
|
|
9
9
|
type SectionSeparatorProps = {
|
10
|
-
aria
|
11
|
-
className
|
10
|
+
aria?: { [key: string]: string; },
|
11
|
+
className?: string,
|
12
12
|
dark?: boolean,
|
13
|
-
data
|
14
|
-
id
|
13
|
+
data?: { [key: string]: string; },
|
14
|
+
id?: string,
|
15
15
|
orientation?: "horizontal" | "vertical",
|
16
|
-
text
|
16
|
+
text?: string,
|
17
17
|
variant?: "card" | "background",
|
18
18
|
}
|
19
19
|
|
@@ -10,7 +10,7 @@ type TitleProps = {
|
|
10
10
|
color?: "default" | "light" | "lighter" | "success" | "error" | "link",
|
11
11
|
data?: {[key: string]: string},
|
12
12
|
id?: string,
|
13
|
-
size?: 1 | 2 | 3 | 4,
|
13
|
+
size?: 1 | 2| 3| 4 | "1" | "2" | "3" | "4",
|
14
14
|
tag?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "div" | "span",
|
15
15
|
text?: string,
|
16
16
|
variant?: null | "link",
|
@@ -6,7 +6,7 @@ window.pbChart = pbChart
|
|
6
6
|
import './pb_form/pb_form_validation'
|
7
7
|
|
8
8
|
// Date Picker
|
9
|
-
import datePickerHelper from './pb_date_picker/date_picker_helper
|
9
|
+
import datePickerHelper from './pb_date_picker/date_picker_helper'
|
10
10
|
window.datePickerHelper = datePickerHelper
|
11
11
|
|
12
12
|
// Lazy image loading
|
data/lib/playbook/spacing.rb
CHANGED
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: 11.7.0
|
4
|
+
version: 11.7.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: 2022-09-
|
12
|
+
date: 2022-09-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
@@ -653,12 +653,12 @@ files:
|
|
653
653
|
- app/pb_kits/playbook/pb_date/docs/_description.md
|
654
654
|
- app/pb_kits/playbook/pb_date/docs/example.yml
|
655
655
|
- app/pb_kits/playbook/pb_date/docs/index.js
|
656
|
-
- app/pb_kits/playbook/pb_date_picker/_date_picker.jsx
|
657
656
|
- app/pb_kits/playbook/pb_date_picker/_date_picker.scss
|
657
|
+
- app/pb_kits/playbook/pb_date_picker/_date_picker.tsx
|
658
658
|
- app/pb_kits/playbook/pb_date_picker/date_picker.html.erb
|
659
659
|
- app/pb_kits/playbook/pb_date_picker/date_picker.rb
|
660
660
|
- app/pb_kits/playbook/pb_date_picker/date_picker.test.js
|
661
|
-
- app/pb_kits/playbook/pb_date_picker/date_picker_helper.
|
661
|
+
- app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts
|
662
662
|
- app/pb_kits/playbook/pb_date_picker/docs/_date_picker_anti_patterns.html.erb
|
663
663
|
- app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.html.erb
|
664
664
|
- app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.jsx
|
@@ -713,7 +713,7 @@ files:
|
|
713
713
|
- app/pb_kits/playbook/pb_date_picker/docs/_description.md
|
714
714
|
- app/pb_kits/playbook/pb_date_picker/docs/example.yml
|
715
715
|
- app/pb_kits/playbook/pb_date_picker/docs/index.js
|
716
|
-
- app/pb_kits/playbook/pb_date_picker/plugins/timeSelect.
|
716
|
+
- app/pb_kits/playbook/pb_date_picker/plugins/timeSelect.ts
|
717
717
|
- app/pb_kits/playbook/pb_date_picker/sass_partials/_calendar_input_icon.scss
|
718
718
|
- app/pb_kits/playbook/pb_date_picker/sass_partials/_day_styles.scss
|
719
719
|
- app/pb_kits/playbook/pb_date_picker/sass_partials/_flatpickr_styles.scss
|
@@ -733,18 +733,20 @@ files:
|
|
733
733
|
- app/pb_kits/playbook/pb_date_range_inline/docs/_description.md
|
734
734
|
- app/pb_kits/playbook/pb_date_range_inline/docs/example.yml
|
735
735
|
- app/pb_kits/playbook/pb_date_range_inline/docs/index.js
|
736
|
-
- app/pb_kits/playbook/pb_date_range_stacked/_date_range_stacked.jsx
|
737
736
|
- app/pb_kits/playbook/pb_date_range_stacked/_date_range_stacked.scss
|
737
|
+
- app/pb_kits/playbook/pb_date_range_stacked/_date_range_stacked.tsx
|
738
738
|
- app/pb_kits/playbook/pb_date_range_stacked/date_range_stacked.html.erb
|
739
739
|
- app/pb_kits/playbook/pb_date_range_stacked/date_range_stacked.rb
|
740
|
+
- app/pb_kits/playbook/pb_date_range_stacked/date_range_stacked.test.js
|
740
741
|
- app/pb_kits/playbook/pb_date_range_stacked/docs/_date_range_stacked_default.html.erb
|
741
742
|
- app/pb_kits/playbook/pb_date_range_stacked/docs/_date_range_stacked_default.jsx
|
742
743
|
- app/pb_kits/playbook/pb_date_range_stacked/docs/example.yml
|
743
744
|
- app/pb_kits/playbook/pb_date_range_stacked/docs/index.js
|
744
|
-
- app/pb_kits/playbook/pb_date_stacked/_date_stacked.jsx
|
745
745
|
- app/pb_kits/playbook/pb_date_stacked/_date_stacked.scss
|
746
|
+
- app/pb_kits/playbook/pb_date_stacked/_date_stacked.tsx
|
746
747
|
- app/pb_kits/playbook/pb_date_stacked/date_stacked.html.erb
|
747
748
|
- app/pb_kits/playbook/pb_date_stacked/date_stacked.rb
|
749
|
+
- app/pb_kits/playbook/pb_date_stacked/date_stacked.test.js
|
748
750
|
- app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_align.html.erb
|
749
751
|
- app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_align.jsx
|
750
752
|
- app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_bold.html.erb
|
@@ -796,14 +798,14 @@ files:
|
|
796
798
|
- app/pb_kits/playbook/pb_date_year_stacked/docs/_footer.md
|
797
799
|
- app/pb_kits/playbook/pb_date_year_stacked/docs/example.yml
|
798
800
|
- app/pb_kits/playbook/pb_date_year_stacked/docs/index.js
|
799
|
-
- app/pb_kits/playbook/pb_dialog/_close_icon.
|
801
|
+
- app/pb_kits/playbook/pb_dialog/_close_icon.tsx
|
800
802
|
- app/pb_kits/playbook/pb_dialog/_dialog.html.erb
|
801
|
-
- app/pb_kits/playbook/pb_dialog/_dialog.jsx
|
802
803
|
- app/pb_kits/playbook/pb_dialog/_dialog.scss
|
803
|
-
- app/pb_kits/playbook/pb_dialog/
|
804
|
-
- app/pb_kits/playbook/pb_dialog/
|
805
|
-
- app/pb_kits/playbook/pb_dialog/child_kits/
|
806
|
-
- app/pb_kits/playbook/pb_dialog/child_kits/
|
804
|
+
- app/pb_kits/playbook/pb_dialog/_dialog.tsx
|
805
|
+
- app/pb_kits/playbook/pb_dialog/_dialog_context.tsx
|
806
|
+
- app/pb_kits/playbook/pb_dialog/child_kits/_dialog_body.tsx
|
807
|
+
- app/pb_kits/playbook/pb_dialog/child_kits/_dialog_footer.tsx
|
808
|
+
- app/pb_kits/playbook/pb_dialog/child_kits/_dialog_header.tsx
|
807
809
|
- app/pb_kits/playbook/pb_dialog/dialog.rb
|
808
810
|
- app/pb_kits/playbook/pb_dialog/dialog.test.jsx
|
809
811
|
- app/pb_kits/playbook/pb_dialog/dialog_header.rb
|
@@ -1251,10 +1253,10 @@ files:
|
|
1251
1253
|
- app/pb_kits/playbook/pb_lightbox/Carousel/Thumbnail.tsx
|
1252
1254
|
- app/pb_kits/playbook/pb_lightbox/Carousel/Thumbnails.tsx
|
1253
1255
|
- app/pb_kits/playbook/pb_lightbox/Carousel/index.tsx
|
1256
|
+
- app/pb_kits/playbook/pb_lightbox/Header/_lightbox_header.tsx
|
1257
|
+
- app/pb_kits/playbook/pb_lightbox/Header/_lightbox_header_icon.tsx
|
1254
1258
|
- app/pb_kits/playbook/pb_lightbox/_lightbox.tsx
|
1255
1259
|
- app/pb_kits/playbook/pb_lightbox/_lightbox_context.tsx
|
1256
|
-
- app/pb_kits/playbook/pb_lightbox/_lightbox_header.tsx
|
1257
|
-
- app/pb_kits/playbook/pb_lightbox/_lightbox_header_icon.tsx
|
1258
1260
|
- app/pb_kits/playbook/pb_lightbox/docs/_lightbox_compound_component.jsx
|
1259
1261
|
- app/pb_kits/playbook/pb_lightbox/docs/_lightbox_compound_component.md
|
1260
1262
|
- app/pb_kits/playbook/pb_lightbox/docs/_lightbox_default.jsx
|
@@ -2300,9 +2302,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
2300
2302
|
version: '0'
|
2301
2303
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
2302
2304
|
requirements:
|
2303
|
-
- - "
|
2305
|
+
- - ">="
|
2304
2306
|
- !ruby/object:Gem::Version
|
2305
|
-
version:
|
2307
|
+
version: '0'
|
2306
2308
|
requirements: []
|
2307
2309
|
rubygems_version: 3.3.7
|
2308
2310
|
signing_key:
|
@@ -1,137 +0,0 @@
|
|
1
|
-
export const getTimezoneText = (inputDate) => {
|
2
|
-
const tzAbbr = inputDate.toLocaleDateString('en-US', {
|
3
|
-
day: '2-digit',
|
4
|
-
timeZoneName: 'short',
|
5
|
-
}).slice(4)
|
6
|
-
const tzText = inputDate.toLocaleDateString('en-US', {
|
7
|
-
day: '2-digit',
|
8
|
-
timeZoneName: 'long',
|
9
|
-
}).slice(4)
|
10
|
-
return `${tzAbbr} (${tzText})`
|
11
|
-
}
|
12
|
-
|
13
|
-
function timeSelectPlugin(props) {
|
14
|
-
return function(fp) {
|
15
|
-
|
16
|
-
const generateMeridiemCard = (text) => {
|
17
|
-
const selectableCard = document.createElement('div')
|
18
|
-
selectableCard.className = 'pb_selectable_card_kit_enabled'
|
19
|
-
|
20
|
-
const cardInput = document.createElement('input'),
|
21
|
-
cardInputId = `datePicker${text}`
|
22
|
-
|
23
|
-
cardInput.id = cardInputId
|
24
|
-
cardInput.name = 'datepicker-ampm'
|
25
|
-
cardInput.type = 'radio'
|
26
|
-
cardInput.value = text
|
27
|
-
|
28
|
-
const cardLabel = document.createElement('label'),
|
29
|
-
cardLabelBuffer = document.createElement('div')
|
30
|
-
cardLabel.className = `label-${text.toLowerCase()}`
|
31
|
-
cardLabel.setAttribute('for', cardInputId)
|
32
|
-
cardLabelBuffer.className = 'buffer'
|
33
|
-
cardLabelBuffer.innerHTML = text
|
34
|
-
|
35
|
-
cardLabel.append(cardLabelBuffer)
|
36
|
-
selectableCard.prepend(cardInput)
|
37
|
-
selectableCard.append(cardLabel)
|
38
|
-
|
39
|
-
return selectableCard
|
40
|
-
}
|
41
|
-
|
42
|
-
const generateMeridiemToggle = () => {
|
43
|
-
fp.amPM.style.display = 'none'
|
44
|
-
const formGroupKit = document.createElement('div')
|
45
|
-
formGroupKit.className = 'pb_form_group_kit'
|
46
|
-
|
47
|
-
const amCard = generateMeridiemCard('AM')
|
48
|
-
amCard.addEventListener('click', () => {
|
49
|
-
fp.selectedDates[0].setHours((fp.selectedDates[0].getHours() % 12) + 12 * 0)
|
50
|
-
fp.setDate(fp.selectedDates[0], true)
|
51
|
-
})
|
52
|
-
|
53
|
-
const pmCard = generateMeridiemCard('PM')
|
54
|
-
pmCard.addEventListener('click', () => {
|
55
|
-
fp.selectedDates[0].setHours((fp.selectedDates[0].getHours() % 12) + 12 * 1)
|
56
|
-
fp.setDate(fp.selectedDates[0], true)
|
57
|
-
})
|
58
|
-
|
59
|
-
formGroupKit.prepend(amCard)
|
60
|
-
formGroupKit.append(pmCard)
|
61
|
-
|
62
|
-
const meridiemContainer = document.createElement('div')
|
63
|
-
meridiemContainer.className = 'meridiem'
|
64
|
-
meridiemContainer.append(formGroupKit)
|
65
|
-
document.querySelector('.pb_time_selection').append(meridiemContainer)
|
66
|
-
}
|
67
|
-
|
68
|
-
const getMeridiem = (dateObj) => {
|
69
|
-
return dateObj[0].getHours() < 12 ? 'AM' : 'PM'
|
70
|
-
}
|
71
|
-
|
72
|
-
const updateMeridiemToggle = (forceClick) => {
|
73
|
-
if (!fp.selectedDates.length) return
|
74
|
-
|
75
|
-
const uncheckedClass = 'pb_selectable_card_kit_enabled',
|
76
|
-
checkedClass = 'pb_selectable_card_kit_checked_enabled',
|
77
|
-
pickerAM = document.getElementById('datePickerAM'),
|
78
|
-
pickerPM = document.getElementById('datePickerPM'),
|
79
|
-
meridiem = getMeridiem(fp.selectedDates)
|
80
|
-
|
81
|
-
if (forceClick) {
|
82
|
-
pickerAM.checked = false
|
83
|
-
pickerPM.checked = false
|
84
|
-
pickerPM.checked = meridiem === 'PM'
|
85
|
-
pickerAM.checked = meridiem === 'AM'
|
86
|
-
}
|
87
|
-
|
88
|
-
if (meridiem === 'PM') {
|
89
|
-
pickerPM.parentElement.className = checkedClass
|
90
|
-
pickerAM.parentElement.className = uncheckedClass
|
91
|
-
} else if (meridiem === 'AM') {
|
92
|
-
pickerAM.parentElement.className = checkedClass
|
93
|
-
pickerPM.parentElement.className = uncheckedClass
|
94
|
-
}
|
95
|
-
}
|
96
|
-
|
97
|
-
return {
|
98
|
-
onValueUpdate() {
|
99
|
-
updateMeridiemToggle()
|
100
|
-
},
|
101
|
-
onReady() {
|
102
|
-
const id = fp.input.id
|
103
|
-
|
104
|
-
if (!id || !fp?.timeContainer) return
|
105
|
-
|
106
|
-
fp.timeContainer.classList.add('pb_time_selection')
|
107
|
-
|
108
|
-
// allow single minutes
|
109
|
-
fp.minuteElement.step = '1'
|
110
|
-
|
111
|
-
// add caption text
|
112
|
-
if (props.caption) {
|
113
|
-
const captionContainer = document.createElement('div')
|
114
|
-
captionContainer.className = 'pb_caption_kit_md'
|
115
|
-
captionContainer.innerHTML = props?.caption
|
116
|
-
fp.timeContainer.prepend(captionContainer)
|
117
|
-
}
|
118
|
-
|
119
|
-
// add meridiem toggle
|
120
|
-
generateMeridiemToggle()
|
121
|
-
updateMeridiemToggle(true)
|
122
|
-
|
123
|
-
// add timezone text
|
124
|
-
if (props.showTimezone) {
|
125
|
-
const subcaptionContainer = document.createElement('div')
|
126
|
-
subcaptionContainer.className = 'pb_caption_kit_xs'
|
127
|
-
subcaptionContainer.innerHTML = getTimezoneText(fp._initialDate)
|
128
|
-
fp.timeContainer.append(subcaptionContainer)
|
129
|
-
}
|
130
|
-
|
131
|
-
fp.loadedPlugins.push("timeSelectPlugin")
|
132
|
-
}
|
133
|
-
}
|
134
|
-
}
|
135
|
-
}
|
136
|
-
|
137
|
-
export default timeSelectPlugin
|