playbook_ui 11.0.0.pre.alpha.2 → 11.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_background/_background.scss +8 -1
  3. data/app/pb_kits/playbook/pb_background/_background.tsx +9 -1
  4. data/app/pb_kits/playbook/pb_background/background.rb +76 -16
  5. data/app/pb_kits/playbook/pb_background/docs/_background_status.html.erb +14 -2
  6. data/app/pb_kits/playbook/pb_background/docs/_background_status.jsx +43 -2
  7. data/app/pb_kits/playbook/pb_background/docs/_background_status.md +1 -1
  8. data/app/pb_kits/playbook/pb_badge/_badge.tsx +1 -2
  9. data/app/pb_kits/playbook/pb_body/_body.scss +4 -4
  10. data/app/pb_kits/playbook/pb_body/_body.tsx +5 -4
  11. data/app/pb_kits/playbook/pb_body/_body_mixins.scss +7 -3
  12. data/app/pb_kits/playbook/pb_body/body.rb +4 -3
  13. data/app/pb_kits/playbook/pb_body/body.test.js +12 -9
  14. data/app/pb_kits/playbook/pb_body/docs/_body_light.html.erb +4 -4
  15. data/app/pb_kits/playbook/pb_body/docs/_body_light.jsx +4 -4
  16. data/app/pb_kits/playbook/pb_body/docs/_description.md +2 -2
  17. data/app/pb_kits/playbook/pb_body/docs/_footer.md +1 -1
  18. data/app/pb_kits/playbook/pb_button/button.rb +5 -5
  19. data/app/pb_kits/playbook/pb_caption/_caption.tsx +1 -1
  20. data/app/pb_kits/playbook/pb_caption/_caption_mixin.scss +3 -1
  21. data/app/pb_kits/playbook/pb_caption/docs/_caption_colors.html.erb +2 -1
  22. data/app/pb_kits/playbook/pb_caption/docs/_caption_colors.jsx +5 -0
  23. data/app/pb_kits/playbook/pb_card/_card.tsx +5 -5
  24. data/app/pb_kits/playbook/pb_checkbox/{_checkbox.jsx → _checkbox.tsx} +33 -29
  25. data/app/pb_kits/playbook/pb_currency/_currency.jsx +7 -2
  26. data/app/pb_kits/playbook/pb_currency/currency.rb +8 -0
  27. data/app/pb_kits/playbook/pb_currency/currency.test.js +28 -0
  28. data/app/pb_kits/playbook/pb_currency/docs/_currency_matching_decimals.html.erb +24 -0
  29. data/app/pb_kits/playbook/pb_currency/docs/_currency_matching_decimals.jsx +38 -0
  30. data/app/pb_kits/playbook/pb_currency/docs/example.yml +2 -0
  31. data/app/pb_kits/playbook/pb_currency/docs/index.js +1 -0
  32. data/app/pb_kits/playbook/pb_date_picker/_date_picker.jsx +30 -18
  33. data/app/pb_kits/playbook/pb_date_picker/_date_picker.scss +3 -0
  34. data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +12 -1
  35. data/app/pb_kits/playbook/pb_date_picker/date_picker.test.js +160 -0
  36. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.js +37 -11
  37. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.html.erb +1 -1
  38. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_month_and_year.html.erb +2 -2
  39. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_month_and_year.jsx +1 -1
  40. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_month_and_year.md +1 -1
  41. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_time.html.erb +6 -0
  42. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_time.jsx +21 -0
  43. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_time.md +1 -0
  44. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_week.html.erb +5 -0
  45. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_week.jsx +18 -0
  46. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_week.md +1 -0
  47. data/app/pb_kits/playbook/pb_date_picker/docs/example.yml +4 -0
  48. data/app/pb_kits/playbook/pb_date_picker/docs/index.js +2 -0
  49. data/app/pb_kits/playbook/pb_date_picker/plugins/timeSelect.js +137 -0
  50. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_day_styles.scss +27 -2
  51. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_flatpickr_styles.scss +1 -5
  52. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_time_selection_styles.scss +63 -0
  53. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_week_styles.scss +127 -0
  54. data/app/pb_kits/playbook/pb_form_pill/{_form_pill.jsx → _form_pill.tsx} +16 -12
  55. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_example.jsx +1 -1
  56. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_size.jsx +1 -1
  57. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_tag.jsx +1 -1
  58. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_user.jsx +1 -1
  59. data/app/pb_kits/playbook/pb_hashtag/{_hashtag.jsx → _hashtag.tsx} +3 -4
  60. data/app/pb_kits/playbook/pb_home_address_street/{_city_emphasis.html.erb → city_emphasis.html.erb} +0 -0
  61. data/app/pb_kits/playbook/pb_home_address_street/city_emphasis.rb +16 -0
  62. data/app/pb_kits/playbook/pb_home_address_street/docs/example.yml +0 -2
  63. data/app/pb_kits/playbook/pb_home_address_street/home_address_street.html.erb +3 -2
  64. data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +23 -2
  65. data/app/pb_kits/playbook/pb_home_address_street/{_street_emphasis.html.erb → street_emphasis.html.erb} +0 -0
  66. data/app/pb_kits/playbook/pb_home_address_street/street_emphasis.rb +15 -0
  67. data/app/pb_kits/playbook/pb_radio/_radio.tsx +86 -0
  68. data/app/pb_kits/playbook/pb_select/{_select.jsx → _select.tsx} +34 -38
  69. data/app/pb_kits/playbook/pb_text_input/{_text_input.jsx → _text_input.tsx} +42 -43
  70. data/app/pb_kits/playbook/tokens/_colors.scss +17 -1
  71. data/app/pb_kits/playbook/utilities/props.ts +2 -2
  72. data/lib/playbook/props.rb +1 -1
  73. data/lib/playbook/version.rb +2 -2
  74. metadata +26 -12
  75. data/app/pb_kits/playbook/pb_radio/_radio.jsx +0 -78
@@ -1,5 +1,7 @@
1
1
  import flatpickr from 'flatpickr'
2
2
  import monthSelectPlugin from 'flatpickr/dist/plugins/monthSelect'
3
+ import weekSelect from "flatpickr/dist/plugins/weekSelect/weekSelect"
4
+ import timeSelectPlugin from './plugins/timeSelect'
3
5
 
4
6
  const datePickerHelper = (config) => {
5
7
  const {
@@ -8,6 +10,7 @@ const datePickerHelper = (config) => {
8
10
  disableDate,
9
11
  disableRange,
10
12
  disableWeekdays,
13
+ enableTime,
11
14
  format,
12
15
  maxDate,
13
16
  minDate,
@@ -16,6 +19,10 @@ const datePickerHelper = (config) => {
16
19
  pickerId,
17
20
  plugins,
18
21
  required,
22
+ selectionType,
23
+ showTimezone,
24
+ timeCaption = 'Select Time',
25
+ timeFormat = 'at h:i K',
19
26
  yearRange,
20
27
  } = config
21
28
 
@@ -52,9 +59,25 @@ const datePickerHelper = (config) => {
52
59
  }
53
60
  }
54
61
 
55
- const setMonthAndYearPlugin = () => (
56
- plugins ? [ monthSelectPlugin({ shorthand: true, dateFormat: 'F Y', altFormat: 'F Y' }) ] : []
57
- )
62
+ const setPlugins = () => {
63
+ let pluginList = []
64
+
65
+ // month and week selection
66
+ if (selectionType === "month" || plugins === true) {
67
+ pluginList.push(monthSelectPlugin({ shorthand: true, dateFormat: 'F Y', altFormat: 'F Y' }))
68
+ } else if ( selectionType === "week") {
69
+ pluginList.push(weekSelect({}))
70
+ }
71
+
72
+ // time selection
73
+ if (enableTime) pluginList.push(timeSelectPlugin({ caption: timeCaption, showTimezone: showTimezone}))
74
+
75
+ return pluginList
76
+ }
77
+
78
+ const getDateFormat = () => {
79
+ return enableTime ? `${format} ${timeFormat}` : format
80
+ }
58
81
 
59
82
  // ===========================================================
60
83
  // | Flatpickr initializer w/ config |
@@ -62,7 +85,7 @@ const datePickerHelper = (config) => {
62
85
 
63
86
  flatpickr(`#${pickerId}`, {
64
87
  disableMobile: true,
65
- dateFormat: format,
88
+ dateFormat: getDateFormat(),
66
89
  defaultDate: defaultDateGetter(),
67
90
  disable: disableWeekdays && disableWeekdays.length > 0 ? [
68
91
  (date) => {
@@ -86,9 +109,10 @@ const datePickerHelper = (config) => {
86
109
  )
87
110
  },
88
111
  ] : disabledParser(),
89
- maxDate: maxDate,
90
- minDate: minDate,
91
- mode: mode,
112
+ enableTime,
113
+ maxDate,
114
+ minDate,
115
+ mode,
92
116
  nextArrow: '<i class="far fa-angle-right"></i>',
93
117
  onOpen: [() => {
94
118
  calendarResizer()
@@ -98,12 +122,12 @@ const datePickerHelper = (config) => {
98
122
  window.removeEventListener('resize', calendarResizer)
99
123
  }],
100
124
  onChange: [(selectedDates, dateStr) => {
101
- onChange(dateStr, selectedDates)
125
+ onChange(dateStr, selectedDates)
102
126
  }],
103
127
  onYearChange: [() => {
104
128
  yearChangeHook()
105
129
  }],
106
- plugins: setMonthAndYearPlugin(),
130
+ plugins: setPlugins(),
107
131
  prevArrow: '<i class="far fa-angle-left"></i>',
108
132
  static: true,
109
133
  })
@@ -162,8 +186,10 @@ const datePickerHelper = (config) => {
162
186
  // Adding dropdown icons to year and month selects
163
187
  dropdown.insertAdjacentHTML('afterend', '<i class="far fa-angle-down year-dropdown-icon" id="test-id"></i>')
164
188
  if (picker.monthElements[0].parentElement) {
165
- return picker.monthElements[0].insertAdjacentHTML('afterend', '<i class="far fa-angle-down month-dropdown-icon"></i>')
166
- }
189
+ return picker.monthElements[0].insertAdjacentHTML('afterend', '<i class="far fa-angle-down month-dropdown-icon"></i>')}
190
+ // if (picker.weekElements[0].parentElement){
191
+ // return picker.weekElements[0].insertAdjacentHTML('afterend', '<i class="far fa-angle-down year-dropdown-icon" id="test-id"></i>')
192
+ // }
167
193
 
168
194
  // Remove readonly attribute for validation and or text input
169
195
  if (allowInput){
@@ -1 +1 @@
1
- <%= pb_rails("date_picker", props: { picker_id: "date-picker-default" }) %>
1
+ <%= pb_rails("date_picker", props: { picker_id: "date-picker-default"}) %>
@@ -1,5 +1,5 @@
1
1
  <%= pb_rails("date_picker", props: {
2
2
  label: "Date Picker",
3
- plugins: true,
4
- picker_id: "disabled_date"
3
+ picker_id: "disabled_date",
4
+ selection_type: "month"
5
5
  }) %>
@@ -8,7 +8,7 @@ const DatePickerMonthAndYear = (props) => {
8
8
  <DatePicker
9
9
  label="Date Picker"
10
10
  pickerId="disabled-date"
11
- plugins
11
+ selectionType="month"
12
12
  {...props}
13
13
  />
14
14
  </div>
@@ -1 +1 @@
1
- By default month&year plugin is disabled. To activate it set `plugins` prop to `true`. If you're using React just pass a `plugins` prop to the kit.
1
+ By default selectType prop is disabled. To activate it set `selectionType` prop in JSX/TSX to `month`. To activate it set `selection_type` prop in a rails file to `month`.
@@ -0,0 +1,6 @@
1
+ <%= pb_rails("date_picker", props: {
2
+ default_date: DateTime.now.utc.iso8601,
3
+ picker_id: "date-picker-time",
4
+ enable_time: true,
5
+ show_timezone: true
6
+ }) %>
@@ -0,0 +1,21 @@
1
+ import React from 'react'
2
+
3
+ import DatePicker from '../_date_picker'
4
+
5
+ const DEFAULT_DATE = new Date()
6
+ DEFAULT_DATE.setHours(12)
7
+ DEFAULT_DATE.setMinutes(0)
8
+
9
+ const DatePickerTime = (props) => (
10
+ <div>
11
+ <DatePicker
12
+ defaultDate={DEFAULT_DATE}
13
+ enableTime
14
+ pickerId="date-picker-time"
15
+ showTimezone
16
+ {...props}
17
+ />
18
+ </div>
19
+ )
20
+
21
+ export default DatePickerTime
@@ -0,0 +1 @@
1
+ To select time as well, you should pass the `enableTime` boolean prop. You can also enable timezone display by passing `showTimezone`.
@@ -0,0 +1,5 @@
1
+ <%= pb_rails("date_picker", props: {
2
+ label: "Date Picker",
3
+ picker_id: "week_date_picker",
4
+ selection_type: "week"
5
+ }) %>
@@ -0,0 +1,18 @@
1
+ import React from 'react'
2
+
3
+ import DatePicker from '../_date_picker'
4
+
5
+ const DatePickerWeek = (props) => {
6
+ return (
7
+ <div>
8
+ <DatePicker
9
+ label="Date Picker"
10
+ pickerId="week-date-picker"
11
+ selectionType="week"
12
+ {...props}
13
+ />
14
+ </div>
15
+ )
16
+ }
17
+
18
+ export default DatePickerWeek
@@ -0,0 +1 @@
1
+ By default selectType prop is disabled. To activate it set `selectionType` prop in JSX/TSX to `week`. To activate it set `selection_type` prop in a rails file to `week`.
@@ -17,6 +17,8 @@ examples:
17
17
  - date_picker_anti_patterns: Anti-Patterns
18
18
  - date_picker_inline: Inline
19
19
  - date_picker_month_and_year: Month & Year Only
20
+ - date_picker_week: Week
21
+ - date_picker_time: Time Selection
20
22
 
21
23
 
22
24
  react:
@@ -36,3 +38,5 @@ examples:
36
38
  - date_picker_year_range: Year Range
37
39
  - date_picker_inline: Inline
38
40
  - date_picker_month_and_year: Month & Year Only
41
+ - date_picker_week: Week
42
+ - date_picker_time: Time Selection
@@ -14,3 +14,5 @@ export { default as DatePickerFlatpickrMethods } from './_date_picker_flatpickr_
14
14
  export { default as DatePickerYearRange } from './_date_picker_year_range.jsx'
15
15
  export { default as DatePickerInline } from './_date_picker_inline.jsx'
16
16
  export { default as DatePickerMonthAndYear } from './_date_picker_month_and_year.jsx'
17
+ export { default as DatePickerTime } from './_date_picker_time.jsx'
18
+ export { default as DatePickerWeek } from './_date_picker_week.jsx'
@@ -0,0 +1,137 @@
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
@@ -4,7 +4,7 @@
4
4
  @media (hover: hover) {
5
5
  &:hover {
6
6
  transition-duration: $transition_short;
7
- transition-timing-function: $easeIn;
7
+ transition-timing-function: $easeIn;
8
8
  background-color: #F6FAFF;
9
9
  border-color: #F6FAFF;
10
10
  box-shadow: $shadow_deep;
@@ -24,7 +24,7 @@
24
24
  background-color: $primary;
25
25
  border-color: $primary;
26
26
  box-shadow: $shadow_deep;
27
- font-weight: $bold;
27
+ font-weight: $bold;
28
28
  }
29
29
  .flatpickr-day.startRange {
30
30
  box-shadow: $space_sm + 1 0 0 #F7FBFF
@@ -37,6 +37,31 @@
37
37
  border: 2px;
38
38
  box-shadow: -$space_xs + 4 0 0 #F7FBFF, $space_xs - 3 0 0 #F7FBFF;
39
39
  }
40
+ /*
41
+ Plugin author didn't consider providing a class context, so
42
+ instead we have to use the id! ¯\_(ツ)_/¯
43
+ */
44
+ #cal-week-date-picker {
45
+ .flatpickr-day.inRange:not(.selected) {
46
+ &:nth-of-type(1),
47
+ &:nth-of-type(7n+1) {
48
+ border-radius: 30px 0 0 30px;
49
+ }
50
+ &:nth-of-type(7n) {
51
+ border-radius: 0 30px 30px 0;
52
+ }
53
+ }
54
+ .flatpickr-day.inRange {
55
+ &.selected {
56
+ background-color: $primary;
57
+ box-shadow: none;
58
+ color: #ffffff;
59
+ }
60
+ }
61
+ .flatpickr-day.selected:hover {
62
+ transition: none;
63
+ }
64
+ }
40
65
  .flatpickr-innerContainer {
41
66
  overflow: visible;
42
67
  }
@@ -655,17 +655,13 @@ span.flatpickr-weekday {
655
655
  .flatpickr-time {
656
656
  text-align: center;
657
657
  outline: 0;
658
- display: block;
659
- height: 0;
660
658
  line-height: 40px;
661
- max-height: 40px;
662
659
  -webkit-box-sizing: border-box;
663
660
  box-sizing: border-box;
664
661
  overflow: hidden;
665
662
  display: -webkit-box;
666
663
  display: -webkit-flex;
667
664
  display: -ms-flexbox;
668
- display: flex;
669
665
  }
670
666
  .flatpickr-time:after {
671
667
  content: "";
@@ -677,7 +673,7 @@ span.flatpickr-weekday {
677
673
  -webkit-flex: 1;
678
674
  -ms-flex: 1;
679
675
  flex: 1;
680
- width: 40%;
676
+ width: 22%;
681
677
  height: 40px;
682
678
  float: left;
683
679
  }
@@ -0,0 +1,63 @@
1
+ @import "../../tokens/typography";
2
+ @import "../../tokens/spacing";
3
+ @import "../../tokens/colors";
4
+
5
+ [class^=pb_date_picker_kit] {
6
+ .pb_time_selection {
7
+ color: inherit;
8
+ text-align: left;
9
+ margin-left: $space_sm;
10
+ .numInputWrapper {
11
+ width: auto;
12
+ input.numInput {
13
+ border: 1px solid $border_light !important;
14
+ border-radius: 5px;
15
+ text-align: center;
16
+ width: 60px;
17
+ margin-left: 0;
18
+ padding: 0;
19
+ &:focus {
20
+ border-color: $primary_action !important;
21
+ }
22
+ }
23
+ span {
24
+ &.arrowUp, &.arrowDown {
25
+ display: none;
26
+ }
27
+ }
28
+ }
29
+ [class^=pb_caption_kit_md], [class^=pb_caption_kit_xs] {
30
+ line-height: $text_larger;
31
+ }
32
+ [class^=pb_caption_kit_xs] {
33
+ clear: both;
34
+ display: block;
35
+ }
36
+ .flatpickr {
37
+ &-time-separator {
38
+ margin: 0 $space_xs;
39
+ text-align: center;
40
+ }
41
+ }
42
+ .meridiem {
43
+ [class^=pb_form_group_kit] {
44
+ margin-left: $space_sm;
45
+ }
46
+
47
+ #datePickerAM, #datePickerPM {
48
+ display: none;
49
+ }
50
+ &:focus, &:hover {
51
+ background: transparent;
52
+ }
53
+
54
+ [class^=pb_selectable_card_kit] > label {
55
+ padding: 0;
56
+ margin: 0;
57
+ width: 60px;
58
+ height: 40px;
59
+ text-align: center;
60
+ }
61
+ }
62
+ }
63
+ }
@@ -0,0 +1,127 @@
1
+ @import "../../tokens/colors";
2
+
3
+
4
+ .numInput {
5
+ border-left: none !important;
6
+ }
7
+
8
+ // Manual Import
9
+ .flatpickr-monthSelect-months {
10
+ margin: 10px 1px 3px 1px;
11
+ flex-wrap: wrap;
12
+ }
13
+
14
+ .flatpickr-monthSelect-month {
15
+ background: none;
16
+ border: 1px solid transparent;
17
+ border-radius: 4px;
18
+ -webkit-box-sizing: border-box;
19
+ box-sizing: border-box;
20
+ color: $text_lt_default;
21
+ cursor: pointer;
22
+ display: inline-block;
23
+ font-weight: 400;
24
+ margin: 0.5px;
25
+ justify-content: center;
26
+ padding: 10px;
27
+ position: relative;
28
+ -webkit-box-pack: center;
29
+ -webkit-justify-content: center;
30
+ -ms-flex-pack: center;
31
+ text-align: center;
32
+ width: 33%;
33
+ }
34
+
35
+ .flatpickr-monthSelect-month.flatpickr-disabled {
36
+ color: #eee;
37
+ }
38
+
39
+ .flatpickr-monthSelect-month.flatpickr-disabled:hover,
40
+ .flatpickr-monthSelect-month.flatpickr-disabled:focus {
41
+ cursor: not-allowed;
42
+ background: none !important;
43
+ }
44
+
45
+ .flatpickr-monthSelect-theme-dark {
46
+ background: #3f4458;
47
+ }
48
+
49
+ .flatpickr-monthSelect-theme-dark .flatpickr-current-month input.cur-year {
50
+ color: #fff;
51
+ }
52
+
53
+ .flatpickr-monthSelect-theme-dark .flatpickr-months .flatpickr-prev-month,
54
+ .flatpickr-monthSelect-theme-dark .flatpickr-months .flatpickr-next-month {
55
+ color: #fff;
56
+ fill: #fff;
57
+ }
58
+
59
+ .flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month {
60
+ color: rgba(255, 255, 255, 0.95);
61
+ }
62
+
63
+ .flatpickr-monthSelect-month.today {
64
+ border-color: #959ea9;
65
+ }
66
+
67
+ .flatpickr-monthSelect-month.inRange,
68
+ .flatpickr-monthSelect-month.inRange.today,
69
+ .flatpickr-monthSelect-month:hover,
70
+ .flatpickr-monthSelect-month:focus {
71
+ background: $active_light;
72
+ font-weight: $bold;
73
+ color: $text_lt_default;
74
+ cursor: pointer;
75
+ outline: 0;
76
+ }
77
+
78
+ .flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month.inRange,
79
+ .flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month:hover,
80
+ .flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month:focus {
81
+ background: #646c8c;
82
+ border-color: #646c8c;
83
+ }
84
+
85
+ .flatpickr-monthSelect-month.today:hover,
86
+ .flatpickr-monthSelect-month.today:focus {
87
+ background: #959ea9;
88
+ border-color: #959ea9;
89
+ color: #fff;
90
+ }
91
+
92
+ .flatpickr-monthSelect-month.selected,
93
+ .flatpickr-monthSelect-month.startRange,
94
+ .flatpickr-monthSelect-month.endRange {
95
+ background-color: $primary;
96
+ font-weight: $bold;
97
+ box-shadow: none;
98
+ color: #fff;
99
+ border-color: $primary;
100
+ }
101
+
102
+ .flatpickr-monthSelect-month.startRange {
103
+ border-radius: 50px 0 0 50px;
104
+ }
105
+
106
+ .flatpickr-monthSelect-month.endRange {
107
+ border-radius: 0 50px 50px 0;
108
+ }
109
+
110
+ .flatpickr-monthSelect-month.startRange.endRange {
111
+ border-radius: 50px;
112
+ }
113
+
114
+ .flatpickr-monthSelect-month.inRange {
115
+ border-radius: 0;
116
+ box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
117
+ }
118
+
119
+ .flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month.selected,
120
+ .flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month.startRange,
121
+ .flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month.endRange {
122
+ background: #80cbc4;
123
+ -webkit-box-shadow: none;
124
+ box-shadow: none;
125
+ color: #fff;
126
+ border-color: #80cbc4;
127
+ }
@@ -4,24 +4,24 @@ import classnames from 'classnames'
4
4
  import Title from '../pb_title/_title'
5
5
  import Icon from '../pb_icon/_icon'
6
6
  import Avatar from '../pb_avatar/_avatar'
7
- import { globalProps } from '../utilities/globalProps'
7
+ import { globalProps, GlobalProps } from '../utilities/globalProps'
8
8
 
9
9
  type FormPillProps = {
10
10
  className?: string,
11
11
  id?: string,
12
12
  text: string,
13
13
  name: string,
14
- onClick?: EventHandler,
14
+ onClick?: React.MouseEventHandler<HTMLSpanElement>,
15
15
  avatar?: boolean,
16
16
  avatarUrl?: string,
17
17
  size?: string,
18
- textTransform?: "none" | "lowercase",
18
+ textTransform?: 'none' | 'lowercase',
19
19
  closeProps?: {
20
- onClick?: EventHandler,
21
- onMouseDown?: EventHandler,
22
- onTouchEnd?: EventHandler,
23
- },
24
- }
20
+ onClick?: React.MouseEventHandler<HTMLSpanElement>,
21
+ onMouseDown?: React.MouseEventHandler<HTMLSpanElement>,
22
+ onTouchEnd?: React.TouchEventHandler<HTMLSpanElement>,
23
+ },
24
+ } & GlobalProps
25
25
  const FormPill = (props: FormPillProps) => {
26
26
  const {
27
27
  className,
@@ -42,25 +42,29 @@ const FormPill = (props: FormPillProps) => {
42
42
  )
43
43
  return (
44
44
  <div className={css}>
45
- <If condition={name}>
45
+ {name &&
46
+ <>
46
47
  <Avatar
47
48
  imageUrl={avatarUrl}
48
49
  name={name}
49
50
  size="xs"
51
+ status={null}
50
52
  />
51
53
  <Title
52
54
  className="pb_form_pill_text"
53
55
  size={4}
54
56
  text={name}
55
57
  />
56
- </If>
57
- <If condition={text}>
58
+ </>
59
+ }
60
+
61
+ {text &&
58
62
  <Title
59
63
  className="pb_form_pill_tag"
60
64
  size={4}
61
65
  text={text}
62
66
  />
63
- </If>
67
+ }
64
68
  <div
65
69
  className="pb_form_pill_close"
66
70
  onClick={onClick}