playbook_ui 12.24.0.pre.alpha.PLAY603datepickerquickpickinputpresetdropdown756 → 12.24.0.pre.alpha.alphatestforselfhostfak720

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_date/_date.tsx +42 -96
  3. data/app/pb_kits/playbook/pb_date/date.html.erb +2 -22
  4. data/app/pb_kits/playbook/pb_date/date.rb +0 -2
  5. data/app/pb_kits/playbook/pb_date/docs/example.yml +4 -4
  6. data/app/pb_kits/playbook/pb_date/docs/index.js +0 -1
  7. data/app/pb_kits/playbook/pb_date_picker/_date_picker.scss +0 -26
  8. data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +95 -99
  9. data/app/pb_kits/playbook/pb_date_picker/date_picker.html.erb +2 -3
  10. data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +1 -1
  11. data/app/pb_kits/playbook/pb_date_picker/date_picker.test.js +1 -44
  12. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +2 -34
  13. data/app/pb_kits/playbook/pb_date_picker/docs/example.yml +0 -2
  14. data/app/pb_kits/playbook/pb_date_picker/docs/index.js +1 -2
  15. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_calendar_input_icon.scss +2 -3
  16. data/app/pb_kits/playbook/pb_docs/kit_api.html.erb +311 -0
  17. data/app/pb_kits/playbook/pb_docs/kit_api.rb +149 -0
  18. data/app/pb_kits/playbook/pb_docs/kit_example.rb +2 -0
  19. data/app/pb_kits/playbook/pb_icon/_icon.tsx +1 -1
  20. data/app/pb_kits/playbook/pb_icon/icon.rb +1 -1
  21. data/app/pb_kits/playbook/pb_nav/_item.tsx +1 -1
  22. data/app/pb_kits/playbook/pb_nav/_subtle_mixin.scss +1 -1
  23. data/app/pb_kits/playbook/pb_time/_time.tsx +35 -71
  24. data/app/pb_kits/playbook/pb_time/docs/example.yml +0 -2
  25. data/app/pb_kits/playbook/pb_time/docs/index.js +0 -1
  26. data/app/pb_kits/playbook/pb_time/time.html.erb +7 -26
  27. data/app/pb_kits/playbook/pb_time/time.rb +0 -2
  28. data/app/pb_kits/playbook/pb_title/_title.scss +1 -2
  29. data/app/pb_kits/playbook/pb_title/_title.tsx +2 -3
  30. data/app/pb_kits/playbook/pb_title/title.rb +3 -10
  31. data/app/pb_kits/playbook/pb_title/title.test.js +3 -3
  32. data/lib/playbook/markdown/helper.rb +132 -0
  33. data/lib/playbook/markdown.rb +3 -0
  34. data/lib/playbook/version.rb +1 -1
  35. data/lib/playbook.rb +2 -1
  36. metadata +36 -17
  37. data/app/pb_kits/playbook/pb_date/docs/_date_unstyled.html.erb +0 -30
  38. data/app/pb_kits/playbook/pb_date/docs/_date_unstyled.jsx +0 -47
  39. data/app/pb_kits/playbook/pb_date/docs/_date_unstyled.md +0 -1
  40. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_quick_pick.html.erb +0 -8
  41. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_quick_pick.jsx +0 -18
  42. data/app/pb_kits/playbook/pb_date_picker/plugins/quickPick.tsx +0 -164
  43. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_quick_pick_styles.scss +0 -75
  44. data/app/pb_kits/playbook/pb_time/docs/_time_unstyled.html.erb +0 -37
  45. data/app/pb_kits/playbook/pb_time/docs/_time_unstyled.jsx +0 -58
  46. data/app/pb_kits/playbook/pb_time/docs/_time_unstyled.md +0 -1
  47. data/dist/playbook-rails.js +0 -323
@@ -1,47 +0,0 @@
1
- import React from 'react'
2
- import { Caption, Date as FormattedDate, Title } from '../../'
3
-
4
- const DateUnstyled = (props) => {
5
- return (
6
- <>
7
- <Caption size="xs"
8
- text="Basic unstyled example"
9
- />
10
- <FormattedDate
11
- unstyled
12
- value={new Date()}
13
- {...props}
14
- />
15
-
16
- <br />
17
-
18
- <Caption size="xs"
19
- text="Example with wrapping typography kit"
20
- />
21
- <Title size={1}>
22
- <FormattedDate
23
- unstyled
24
- value="1995-12-25"
25
- {...props}
26
- />
27
- </Title>
28
-
29
- <br />
30
-
31
- <Caption size="xs"
32
- text="Example with icon + subcaption"
33
- />
34
- <Caption size="xs">
35
- <FormattedDate
36
- showDayOfWeek
37
- showIcon
38
- unstyled
39
- value="1995-12-25"
40
- {...props}
41
- />
42
- </Caption>
43
- </>
44
- )
45
- }
46
-
47
- export default DateUnstyled
@@ -1 +0,0 @@
1
- For alternative typography styles, you can pass a boolean prop called `unstyled` to the `Date` kit and wrap it in any of our typography kits (`Title`, `Body`, `Caption`, etc.). This will allow the `Date` kit to inherit any of our typography styles.
@@ -1,8 +0,0 @@
1
- <%= pb_rails("date_picker", props: {
2
- allow_input: true,
3
- mode: "range",
4
- picker_id: "date-picker-quick-pick",
5
- placeholder: "mm/dd/yyyy → mm/dd/yyyy",
6
- selection_type: "quickpick"
7
- }) %>
8
-
@@ -1,18 +0,0 @@
1
- import React from 'react'
2
-
3
- import DatePicker from '../_date_picker'
4
-
5
- const DatePickerQuickPick = (props) => (
6
- <div>
7
- <DatePicker
8
- allowInput
9
- mode="range"
10
- pickerId="date-picker-quick-pick"
11
- placeholder="mm/dd/yyyy → mm/dd/yyyy"
12
- selectionType="quickpick"
13
- {...props}
14
- />
15
- </div>
16
- )
17
-
18
- export default DatePickerQuickPick
@@ -1,164 +0,0 @@
1
- import moment from 'moment'
2
-
3
- type FpTypes = {
4
- setDate: (arg0: any, arg1: boolean) => void,
5
- config: { [key: string]: string },
6
- clear: (arg0: boolean, arg1: boolean) => void,
7
- close: () => void,
8
- calendarContainer?: {
9
- classList: { add: (arg0: string) => void };
10
- prepend: (arg0: HTMLDivElement) => void;
11
- append: (arg0: HTMLDivElement) => void;
12
- },
13
- loadedPlugins: string[],
14
- };
15
-
16
- type pluginDataType = {
17
- ranges: { [key: string]: Date[] },
18
- rangesNav: HTMLUListElement,
19
- rangesButtons: [] | any,
20
- }
21
-
22
- let activeLabel = ""
23
-
24
- const quickPickPlugin = () => {
25
- return function (fp: FpTypes & any): any {
26
- // variable that holds the ranges available
27
- const ranges = {
28
- 'Today': [new Date(), new Date()],
29
- 'Yesterday': [moment().subtract(1, 'days').toDate(), moment().subtract(1, 'days').toDate()],
30
- 'This week': [moment().startOf('week').toDate(), moment().endOf('week').toDate()],
31
- 'This month': [moment().startOf('month').toDate(), new Date()],
32
- 'This quarter': [moment().startOf('quarter').toDate(), new Date()],
33
- 'This year': [moment().startOf('year').toDate(), new Date()],
34
- 'Last week': [
35
- moment().subtract(1, 'week').startOf('week').toDate(),
36
- moment().subtract(1, 'week').endOf('week').toDate()
37
- ],
38
- 'Last month': [
39
- moment().subtract(1, 'month').startOf('month').toDate(),
40
- moment().subtract(1, 'month').endOf('month').toDate()
41
- ],
42
- 'Last quarter': [
43
- moment().subtract(1, 'quarter').startOf('quarter').toDate(),
44
- moment().subtract(1, 'quarter').endOf('quarter').toDate()
45
- ],
46
- 'Last year': [
47
- moment().subtract(1, 'year').startOf('year').toDate(),
48
- moment().subtract(1, 'year').endOf('year').toDate()
49
- ]
50
- }
51
- //creating the ul element for the nav dropdown and giving it classnames
52
- const rangesNav = document.createElement('ul');
53
-
54
- // creating the pluginData object that will hold the properties of this plugin
55
- const pluginData: pluginDataType = {
56
- ranges: ranges,
57
- rangesNav: rangesNav,
58
- rangesButtons: [],
59
- };
60
-
61
- /**
62
- * @param {string} label
63
- * @returns HTML Element
64
- */
65
-
66
- //function for creating the range buttons in the nav
67
- const addRangeButton = (label: string) => {
68
-
69
- // creating new elements to mimick selectable card component
70
- const div2 = document.createElement('div');
71
- div2.className = "nav-item-link"
72
- div2.innerHTML = label;
73
-
74
- pluginData.rangesButtons[label] = div2;
75
-
76
- // create li elements inside the dropdown
77
- const item = document.createElement('li');
78
- item.className = "nav-item";
79
-
80
- // append those nav items to the li items
81
- item.appendChild(pluginData.rangesButtons[label]);
82
-
83
- // append the li item to the ul rangeNav prop
84
- pluginData.rangesNav.appendChild(item);
85
-
86
- // return the ranges buton prop
87
- return pluginData.rangesButtons[label];
88
- };
89
-
90
- const selectActiveRangeButton = (selectedDates: Array<string>) => {
91
- const current = pluginData.rangesNav.querySelector('.active');
92
-
93
- if (current) {
94
- current.classList.remove('active');
95
- }
96
- /** conditional statment to extract start and end dates from selectedDates,
97
- * then loop through ranges prop in pluginData
98
- * and check if chosen dates equal to a date in the ranges prop
99
- * if they are equal, add the active class
100
- */
101
- if (selectedDates.length > 0 && activeLabel) {
102
- // const selected = pluginData.rangesNav.querySelectorAll(".nav-item-link")
103
- // selected.forEach(el => {
104
- // if (el.innerHTML === activeLabel)
105
- // el.classList.add('active')
106
- // return
107
- // })
108
-
109
- pluginData.rangesButtons[activeLabel].classList.add('active');
110
- }
111
- }
112
-
113
-
114
- return {
115
- // onReady is a hook from flatpickr that runs when calender is in a ready state
116
- onReady(selectedDates: Array<string>) {
117
- // loop through the ranges and create an anchor tag for each range and add an event listener to set the date when user clicks on a date range
118
- for (const [label, range] of Object.entries(pluginData.ranges)) {
119
- addRangeButton(label).addEventListener('click', function () {
120
-
121
- const start = moment(range[0]).toDate();
122
- const end = moment(range[1]).toDate();
123
-
124
- if (!start) {
125
- fp.clear();
126
- }
127
- else {
128
- activeLabel = label
129
- fp.setDate([start, end], true);
130
- fp.close();
131
- }
132
- });
133
- }
134
- // conditional to check if there is a dropdown to add it to the calendar container and get it the classes it needs
135
- if (pluginData.rangesNav.children.length > 0) {
136
-
137
- fp.calendarContainer.prepend(pluginData.rangesNav);
138
- pluginData.rangesNav.classList.add('quick-pick-ul')
139
- fp.calendarContainer.classList.add('quick-pick-drop-down');
140
-
141
- /**
142
- *
143
- * @param {Array} selectedDates
144
- */
145
- // function to give the active button the active class
146
- selectActiveRangeButton(selectedDates);
147
- }
148
- },
149
- onValueUpdate(selectedDates: Array<string>) {
150
- debugger
151
- selectActiveRangeButton(selectedDates);
152
- },
153
-
154
- onClose(selectedDates: Array<string>) {
155
- // set the input value to the selected dates when the dropdown is closed
156
- if (selectedDates.length < 2 && selectedDates.length > 0) {
157
- fp.input.placeholder = fp.formatDate(this.selectedDates[0], fp.config.dateFormat);
158
- }
159
- }
160
- };
161
- };
162
- }
163
-
164
- export default quickPickPlugin;
@@ -1,75 +0,0 @@
1
- @import "../../tokens/animation-curves";
2
- @import "../../tokens/colors";
3
- @import "../../tokens/typography";
4
- @import "../../tokens/titles";
5
- @import "../../tokens/spacing";
6
-
7
- $pb_card_border_width: 1px;
8
- $pb_card_border_radius: $border_rad_heavier;
9
-
10
- // used to display dropdown on the left of the calender
11
- .quick-pick-drop-down {
12
- width: auto;
13
- display: grid;
14
- }
15
-
16
- .quick-pick-ul {
17
- padding: $space_xs 0px;
18
- margin: 0;
19
- list-style: none;
20
- }
21
-
22
- .nav-item {
23
- list-style: none;
24
- border-radius: 6px;
25
- border-bottom: 0;
26
- margin: $space_xs $space_sm;
27
- }
28
-
29
- .nav-item-link {
30
- text-decoration: none;
31
- border-width: $pb_card_border_width;
32
- border-style: solid;
33
- border-color: $border_light;
34
- border-radius: $pb_card_border_radius;
35
- padding: $space_xs 14px;
36
- transition-property: color, background-color;
37
- transition-duration: 0.15s;
38
- transition-timing-function: $bezier;
39
- line-height: 1.4;
40
- color: $charcoal;
41
- font-size: $font_default;
42
- font-weight: $regular;
43
- &.active {
44
- border-width: 2px;
45
- border-color: $primary;
46
- }
47
- @media (hover:hover) {
48
- &:hover {
49
- cursor: pointer;
50
- box-shadow: $shadow-deep;
51
- border-color: $slate;
52
- }
53
- }
54
- }
55
-
56
- // Hide the calendar
57
- .quick-pick-drop-down > .flatpickr-months, .quick-pick-drop-down > .flatpickr-innerContainer {
58
- display: none;
59
- }
60
-
61
- @media only screen and (max-width: 767px) {
62
- .quick-pick-ul {
63
- padding: $space_xs $space_xs;
64
- display: grid;
65
- grid-template-columns: 1fr 1fr;
66
- }
67
-
68
- .nav-item {
69
- margin: $space_xxs $space_xs;
70
- }
71
-
72
- .nav-item-link {
73
- padding: $space_xs $space_xxs;
74
- }
75
- }
@@ -1,37 +0,0 @@
1
- <%= pb_rails("caption", props: { size: "xs", text: "Example with no year" }) %>
2
-
3
- <%= pb_rails("time", props: {
4
- show_icon: true,
5
- show_timezone: true,
6
- time: DateTime.now,
7
- timezone: "America/New_York",
8
- unstyled: true
9
- }) %>
10
-
11
- <br />
12
-
13
- <%= pb_rails("caption", props: { size: "xs", text: "Example with wrapping typography kit" }) %>
14
-
15
- <%= pb_rails("title", props: { size: 1 }) do %>
16
- <%= pb_rails("time", props: {
17
- show_icon: true,
18
- show_timezone: true,
19
- time: DateTime.now,
20
- timezone: "America/New_York",
21
- unstyled: true
22
- }) %>
23
- <% end %>
24
-
25
- <br />
26
-
27
- <%= pb_rails("caption", props: { size: "xs", text: "Example with icon + subcaption" }) %>
28
-
29
- <%= pb_rails("caption", props: { size: "xs" }) do %>
30
- <%= pb_rails("time", props: {
31
- show_icon: true,
32
- show_timezone: true,
33
- time: DateTime.now,
34
- timezone: "America/New_York",
35
- unstyled: true
36
- }) %>
37
- <% end %>
@@ -1,58 +0,0 @@
1
- import React from 'react'
2
- import Time from '../_time'
3
- import Caption from '../../pb_caption/_caption'
4
- import Title from '../../pb_title/_title'
5
-
6
- const TimeUnstyled = (props) => {
7
- return (
8
- <>
9
- <Caption size="xs"
10
- text="Basic unstyled example"
11
- />
12
- <Time
13
- date={new Date()}
14
- showIcon
15
- showTimezone
16
- timeZone="America/New_York"
17
- unstyled
18
- {...props}
19
- />
20
-
21
- <br />
22
-
23
- <Caption size="xs"
24
- text="Example with wrapping typography kit"
25
- />
26
- <Title size={1}>
27
- <Time
28
- date={new Date()}
29
- showIcon
30
- showTimezone
31
- timeZone="America/New_York"
32
- unstyled
33
- {...props}
34
- />
35
- </Title>
36
-
37
- <br />
38
-
39
- <Caption size="xs"
40
- text="Example with icon + subcaption"
41
- />
42
- <Caption size="xs">
43
- <Time
44
- date={new Date()}
45
- showIcon
46
- showTimezone
47
- timeZone="America/New_York"
48
- unstyled
49
- {...props}
50
- />
51
- </Caption>
52
-
53
- <br />
54
- </>
55
- )
56
- }
57
-
58
- export default TimeUnstyled
@@ -1 +0,0 @@
1
- For alternative typography styles, you can pass a boolean prop called `unstyled` to the `Time` kit and wrap it in any of our typography kits (`Title`, `Body`, `Caption`, etc.). This will allow the `Time` kit to inherit any of our typography styles.