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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/index.js +1 -1
  3. data/app/pb_kits/playbook/pb_date_picker/{_date_picker.jsx → _date_picker.tsx} +58 -66
  4. data/app/pb_kits/playbook/pb_date_picker/{date_picker_helper.js → date_picker_helper.ts} +37 -16
  5. data/app/pb_kits/playbook/pb_date_picker/plugins/timeSelect.ts +171 -0
  6. data/app/pb_kits/playbook/pb_date_range_stacked/{_date_range_stacked.jsx → _date_range_stacked.tsx} +5 -6
  7. data/app/pb_kits/playbook/pb_date_range_stacked/date_range_stacked.test.js +127 -0
  8. data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.tsx +90 -0
  9. data/app/pb_kits/playbook/pb_date_stacked/date_stacked.test.js +151 -0
  10. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_align.jsx +1 -1
  11. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_bold.jsx +1 -1
  12. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_default.jsx +1 -1
  13. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_not_current_year.jsx +1 -1
  14. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_reverse.jsx +1 -1
  15. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_sizes.jsx +1 -1
  16. data/app/pb_kits/playbook/pb_dialog/{_close_icon.jsx → _close_icon.tsx} +1 -3
  17. data/app/pb_kits/playbook/pb_dialog/_dialog.tsx +217 -0
  18. data/app/pb_kits/playbook/pb_dialog/_dialog_context.tsx +3 -0
  19. data/app/pb_kits/playbook/pb_dialog/child_kits/{_dialog_body.jsx → _dialog_body.tsx} +6 -2
  20. data/app/pb_kits/playbook/pb_dialog/child_kits/{_dialog_footer.jsx → _dialog_footer.tsx} +8 -11
  21. data/app/pb_kits/playbook/pb_dialog/child_kits/{_dialog_header.jsx → _dialog_header.tsx} +12 -15
  22. data/app/pb_kits/playbook/pb_lightbox/Carousel/Slides.tsx +33 -0
  23. data/app/pb_kits/playbook/pb_lightbox/Carousel/Thumbnails.tsx +1 -3
  24. data/app/pb_kits/playbook/pb_lightbox/Carousel/index.tsx +3 -1
  25. data/app/pb_kits/playbook/pb_lightbox/{_lightbox_header.tsx → Header/_lightbox_header.tsx} +8 -8
  26. data/app/pb_kits/playbook/pb_lightbox/{_lightbox_header_icon.tsx → Header/_lightbox_header_icon.tsx} +2 -2
  27. data/app/pb_kits/playbook/pb_lightbox/_lightbox.tsx +2 -1
  28. data/app/pb_kits/playbook/pb_lightbox/lightbox.scss +8 -60
  29. data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +5 -5
  30. data/app/pb_kits/playbook/pb_title/_title.tsx +1 -1
  31. data/app/pb_kits/playbook/playbook-rails.js +1 -1
  32. data/app/pb_kits/playbook/tokens/_spacing.scss +2 -0
  33. data/app/pb_kits/playbook/utilities/_spacing.scss +1 -0
  34. data/lib/playbook/spacing.rb +1 -1
  35. data/lib/playbook/version.rb +1 -1
  36. metadata +19 -17
  37. data/app/pb_kits/playbook/pb_date_picker/plugins/timeSelect.js +0 -137
  38. data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.jsx +0 -103
  39. data/app/pb_kits/playbook/pb_dialog/_dialog.jsx +0 -223
  40. 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', { draggable }, { centered: shouldBeCentered })
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 '../utilities/props'
6
- import { globalProps, GlobalProps } from '../utilities/globalProps'
7
- import { LightboxContext } from './_lightbox_context'
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 '../pb_icon/_icon'
9
+ import { IconSizes } from '../../pb_icon/_icon'
10
10
 
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'
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},
@@ -1,8 +1,8 @@
1
1
  /* @flow */
2
2
 
3
3
  import React from 'react'
4
- import Icon from '../pb_icon/_icon'
5
- import {IconSizes} from '../pb_icon/_icon'
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: 100vh;
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: auto;
194
- position: absolute;
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: { [key: string]: string; },
11
- className: string,
10
+ aria?: { [key: string]: string; },
11
+ className?: string,
12
12
  dark?: boolean,
13
- data: { [key: string]: string; },
14
- id: string,
13
+ data?: { [key: string]: string; },
14
+ id?: string,
15
15
  orientation?: "horizontal" | "vertical",
16
- text: string,
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.js'
9
+ import datePickerHelper from './pb_date_picker/date_picker_helper'
10
10
  window.datePickerHelper = datePickerHelper
11
11
 
12
12
  // Lazy image loading
@@ -1,9 +1,11 @@
1
+ $space_xxs: 4px;
1
2
  $space_xs: 8px;
2
3
  $space_sm: 16px;
3
4
  $space_md: 24px;
4
5
  $space_lg: 32px;
5
6
  $space_xl: 40px;
6
7
  $spaces:(
8
+ space_xxs: $space_xxs,
7
9
  space_xs: $space_xs,
8
10
  space_sm: $space_sm,
9
11
  space_md: $space_md,
@@ -1,6 +1,7 @@
1
1
  @import "../tokens/spacing";
2
2
 
3
3
  $space_classes: (
4
+ xxs: $space_xxs,
4
5
  xs: $space_xs,
5
6
  sm: $space_sm,
6
7
  md: $space_md,
@@ -40,7 +40,7 @@ module Playbook
40
40
  end
41
41
 
42
42
  def spacing_values
43
- %w[none xs sm md lg xl]
43
+ %w[none xxs xs sm md lg xl]
44
44
  end
45
45
 
46
46
  def spacing_props
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Playbook
4
4
  PREVIOUS_VERSION = "11.6.0"
5
- VERSION = "11.7.0.pre.alpha-guagechart1"
5
+ VERSION = "11.7.0"
6
6
  end
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.pre.alpha.pre.guagechart1
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-26 00:00:00.000000000 Z
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.js
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.js
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.jsx
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/_dialog_context.jsx
804
- - app/pb_kits/playbook/pb_dialog/child_kits/_dialog_body.jsx
805
- - app/pb_kits/playbook/pb_dialog/child_kits/_dialog_footer.jsx
806
- - app/pb_kits/playbook/pb_dialog/child_kits/_dialog_header.jsx
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: 1.3.1
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