playbook_ui_docs 16.8.0.pre.alpha.play293416882 → 16.8.0.pre.alpha.play299216890

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 88bb96933aeae897ca05d1f2dcea378bbafc56f0853c8b61c78fe248cf1f5780
4
- data.tar.gz: 54e7df297d62410b02904955e025629c92b280235c9aec60ebd73e6e8df64ea5
3
+ metadata.gz: 860db9f3755d911abe0dbbf5a3efa317aabff549cc33ab18696e49a3c275f713
4
+ data.tar.gz: 65d029647372cd161c84f763dd327dfee5f4fec16b4da44c5b5e1c6e27672fd5
5
5
  SHA512:
6
- metadata.gz: b302b255fa520d82f62cc50d83ddcdaa090382cc5cb33ba0b8cd0a1b0761430e201338ec0596636ea217b29b33a802b831f1e9e8460e388178ec065e1f7eb76f
7
- data.tar.gz: 4caa014dfcb186cb947b95942a5b23c79ceeceefce4b0e10442331c1fee19df5ca235dc6821b014209b53d44792bd93a4514766bc82003799745977817165685
6
+ metadata.gz: a0b94e4292ba942d55c30f1fdda6fe8f11d89d7a1f80ae6e9c4301b3b8aa6b2a067f2caddf91b3671da1fab487394c210b2fd70dace43ac057f79cbfeee82281
7
+ data.tar.gz: d45397a811bf0630f68b1b1d657db195b71f5d6119b39409aeac2a8c84f0b1ddcce7ee4476625c52d292964d454e3754e96aa31739ab726df7e0c04642472730
@@ -0,0 +1 @@
1
+ <%= pb_rails("date_picker", props: { picker_id: "date-picker-date-asc", year_ascending: true}) %>
@@ -0,0 +1,15 @@
1
+ import React from 'react'
2
+
3
+ import DatePicker from '../_date_picker'
4
+
5
+ const DatePickerYearAsc = (props) => (
6
+ <div>
7
+ <DatePicker
8
+ pickerId="date-picker-date-asc"
9
+ yearAscending
10
+ {...props}
11
+ />
12
+ </div>
13
+ )
14
+
15
+ export default DatePickerYearAsc
@@ -0,0 +1 @@
1
+ `yearAscending`/`year_ascending` is a boolean prop that if set to true, will render the years in the year dropdown in chronological order. This prop is set to false by default.
@@ -16,6 +16,7 @@
16
16
  "showTimezone": false,
17
17
  "staticPosition": true,
18
18
  "thisRangesEndToday": false,
19
+ "yearAscending": false,
19
20
  "controlsStartId": "",
20
21
  "controlsEndId": "",
21
22
  "syncStartWith": "",
@@ -23,6 +23,7 @@ examples:
23
23
  - date_picker_flatpickr_methods: Flatpickr Methods
24
24
  - date_picker_hooks: Hooks
25
25
  - date_picker_year_range: Year Range
26
+ - date_picker_year_asc: Year Ascending
26
27
  - date_picker_anti_patterns: Anti-Patterns
27
28
  - date_picker_margin_bottom: Margin Bottom
28
29
  - date_picker_inline: Inline
@@ -58,6 +59,7 @@ examples:
58
59
  - date_picker_flatpickr_methods: Flatpickr Methods
59
60
  - date_picker_hooks: Hooks
60
61
  - date_picker_year_range: Year Range
62
+ - date_picker_year_asc: Year Ascending
61
63
  - date_picker_margin_bottom: Margin Bottom
62
64
  - date_picker_inline: Inline
63
65
  - date_picker_month_and_year: Month & Year Only
@@ -30,3 +30,4 @@ export { default as DatePickerRangePattern } from './_date_picker_range_pattern'
30
30
  export { default as DatePickerAndDropdownRange } from './_date_picker_and_dropdown_range.jsx'
31
31
  export { default as DatePickerRequiredIndicator } from "./_date_picker_required_indicator.jsx";
32
32
  export { default as DatePickerDialogSubmission } from "./_date_picker_dialog_submission.jsx";
33
+ export { default as DatePickerYearAsc } from './_date_picker_year_asc.jsx'
@@ -12,7 +12,6 @@ examples:
12
12
  - filter_placement: Filter Placement
13
13
  - filter_popover_props: Popover Props
14
14
  - filter_within_turbo_frames: Within Turbo Frames
15
- - filter_interactive: Interactive Applied Filters
16
15
 
17
16
  react:
18
17
  - filter_default: Default
@@ -26,5 +25,4 @@ examples:
26
25
  - filter_placement: Filter Placement
27
26
  - filter_popover_props: Popover Props
28
27
  - filter_sidebar: Sidebar
29
- - filter_interactive_react: Interactive Applied Filters
30
28
 
@@ -8,5 +8,4 @@ export { default as FilterMaxWidth } from './_filter_max_width.jsx'
8
8
  export { default as FilterMaxHeight } from './_filter_max_height.jsx'
9
9
  export { default as FilterPlacement } from './_filter_placement.jsx'
10
10
  export { default as FilterPopoverProps } from './_filter_popover_props.jsx'
11
- export { default as FilterSidebar } from './_filter_sidebar.jsx'
12
- export { default as FilterInteractiveReact } from './_filter_interactive_react.jsx'
11
+ export { default as FilterSidebar } from './_filter_sidebar.jsx'
@@ -1,7 +1,10 @@
1
1
  {
2
2
  "template": "<RichTextEditor{{props}} />",
3
3
  "propTargets": {},
4
- "defaults": {},
4
+ "defaults": {
5
+ "requiredIndicator": false,
6
+ "simple": false
7
+ },
5
8
  "groups": [
6
9
  {
7
10
  "name": "Props",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playbook_ui_docs
3
3
  version: !ruby/object:Gem::Version
4
- version: 16.8.0.pre.alpha.play293416882
4
+ version: 16.8.0.pre.alpha.play299216890
5
5
  platform: ruby
6
6
  authors:
7
7
  - Power UX
@@ -723,6 +723,9 @@ files:
723
723
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_week.html.erb
724
724
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_week.jsx
725
725
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_week.md
726
+ - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_year_asc.html.erb
727
+ - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_year_asc.jsx
728
+ - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_year_asc.md
726
729
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_year_range.html.erb
727
730
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_year_range.jsx
728
731
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_year_range.md
@@ -1090,10 +1093,6 @@ files:
1090
1093
  - app/pb_kits/playbook/pb_filter/docs/_filter_default.html.erb
1091
1094
  - app/pb_kits/playbook/pb_filter/docs/_filter_default.jsx
1092
1095
  - app/pb_kits/playbook/pb_filter/docs/_filter_default.md
1093
- - app/pb_kits/playbook/pb_filter/docs/_filter_interactive.html.erb
1094
- - app/pb_kits/playbook/pb_filter/docs/_filter_interactive.md
1095
- - app/pb_kits/playbook/pb_filter/docs/_filter_interactive_react.jsx
1096
- - app/pb_kits/playbook/pb_filter/docs/_filter_interactive_react.md
1097
1096
  - app/pb_kits/playbook/pb_filter/docs/_filter_max_height.html.erb
1098
1097
  - app/pb_kits/playbook/pb_filter/docs/_filter_max_height.jsx
1099
1098
  - app/pb_kits/playbook/pb_filter/docs/_filter_max_width.html.erb
@@ -1,116 +0,0 @@
1
- <%
2
- territory_options = [
3
- { value: "USA", label: "USA" },
4
- { value: "Canada", label: "Canada" },
5
- { value: "Brazil", label: "Brazil" },
6
- { value: "Philippines", label: "Philippines" },
7
- ]
8
-
9
- status_options = [
10
- { value: "open", label: "Open", id: "open" },
11
- { value: "in_progress", label: "In progress", id: "in_progress" },
12
- { value: "resolved", label: "Resolved", id: "resolved" },
13
- { value: "closed", label: "Closed", id: "closed" },
14
- ]
15
-
16
- raw_example = params[:example]
17
- example_params =
18
- if raw_example.respond_to?(:permit)
19
- raw_example.permit(:territory, :status, :date_range, :start_date)
20
- else
21
- raw_example || {}
22
- end
23
- current_territory = example_params[:territory].presence || "USA"
24
- current_status = example_params[:status].presence || "open"
25
- current_date_range = example_params[:date_range].presence || "quickpick-this-week"
26
- current_start = example_params[:start_date].presence || "05/01/2026"
27
- status_default = status_options.find { |o| o[:value] == current_status }
28
- %>
29
-
30
- <%=
31
- pb_rails("filter", props: {
32
- id: "filter-interactive-demo",
33
- min_width: "360px",
34
- margin_bottom: "xl",
35
- template: "default",
36
- results: 546,
37
- filters: [
38
- { name: "Territory", value: current_territory },
39
- { name: "Status", value: current_status },
40
- { name: "Date range", value: current_date_range },
41
- { name: "Start date", value: current_start },
42
- ],
43
- interactive_filters: [
44
- {
45
- name: "Territory",
46
- type: "select",
47
- options: territory_options,
48
- target_input: "filter-interactive-territory",
49
- auto_submit: true,
50
- },
51
- {
52
- name: "Status",
53
- type: "dropdown",
54
- options: status_options,
55
- target_input: "filter-interactive-status",
56
- auto_submit: true,
57
- },
58
- {
59
- name: "Date range",
60
- type: "dropdown",
61
- variant: "quickpick",
62
- target_input: "filter-interactive-date-range",
63
- auto_submit: true,
64
- },
65
- {
66
- name: "Start date",
67
- type: "date-picker",
68
- target_input: "filter-interactive-start",
69
- format: "m/d/Y",
70
- auto_submit: true,
71
- },
72
- ],
73
- sort_menu: [
74
- { item: "Popularity", link: "?q[sorts]=managers_popularity+asc", active: true, direction: "desc" },
75
- ],
76
- }) do
77
- %>
78
- <%= pb_rails("form", props: { form_system_options: { scope: :example, method: :get } }) do |form| %>
79
- <%= pb_rails("select", props: {
80
- label: "Territory",
81
- name: "territory",
82
- options: territory_options.map { |o| { value: o[:value], text: o[:label] } },
83
- value: current_territory,
84
- input_options: { id: "filter-interactive-territory" }
85
- }) %>
86
-
87
- <%= pb_rails("dropdown", props: {
88
- id: "filter-interactive-status",
89
- label: "Status",
90
- name: "status",
91
- options: status_options,
92
- default_value: status_default,
93
- margin_bottom: "sm",
94
- }) %>
95
-
96
- <%= pb_rails("dropdown", props: {
97
- id: "filter-interactive-date-range",
98
- label: "Date range",
99
- name: "date_range",
100
- variant: "quickpick",
101
- margin_bottom: "sm",
102
- }) %>
103
-
104
- <%= pb_rails("date_picker", props: {
105
- label: "Start date",
106
- name: "start_date",
107
- picker_id: "filter-interactive-start",
108
- default_date: current_start,
109
- }) %>
110
-
111
- <%= form.actions do |action| %>
112
- <%= action.submit props: { text: "Apply" } %>
113
- <%= action.button props: { type: "reset", text: "Clear", variant: "secondary" } %>
114
- <% end %>
115
- <% end %>
116
- <% end %>
@@ -1,12 +0,0 @@
1
- Click an applied filter chip to edit it inline. `interactive_filters` supports:
2
-
3
- - `type: 'select'` / `'dropdown'`: pick from a list of options.
4
- - `type: 'date-picker'`: inline calendar. Supports `format`, `min_date`, `max_date`, and `mode`.
5
-
6
- Each entry needs a `target_input` that points to the form control it updates. For `select` and `date-picker`, use the input's `id`. For `dropdown`, use the Dropdown kit's `id`.
7
-
8
- For date ranges, use `type: 'dropdown'` with `variant: 'quickpick'`. The Filter kit generates the same quickpick options as Dropdown, so no `options` are needed. Values are quickpick ids, such as `quickpick-this-week`.
9
-
10
- Chip edits update the linked control inside the filter popover. Click **Apply** to submit, then pass the submitted values back into `filters` so chips re-render with the latest labels.
11
-
12
- Optional `auto_submit: true` on a chip entry submits the form immediately when a chip value is picked.
@@ -1,153 +0,0 @@
1
- import React, { useState } from "react";
2
-
3
- import Filter from "../_filter";
4
-
5
- import Button from "../../pb_button/_button";
6
- import DatePicker from "../../pb_date_picker/_date_picker";
7
- import Dropdown from "../../pb_dropdown/_dropdown";
8
- import Flex from "../../pb_flex/_flex";
9
- import Select from "../../pb_select/_select";
10
-
11
- const territorySelectOptions = [
12
- { value: "USA" },
13
- { value: "Canada" },
14
- { value: "Brazil" },
15
- { value: "Philippines" },
16
- ];
17
-
18
- const statusDropdownOptions = [
19
- { id: "open", label: "Open", value: "open" },
20
- { id: "in_progress", label: "In progress", value: "in_progress" },
21
- { id: "resolved", label: "Resolved", value: "resolved" },
22
- { id: "closed", label: "Closed", value: "closed" },
23
- ];
24
-
25
- const INITIAL_FILTERS = {
26
- territory: "USA",
27
- status: "open",
28
- dateRange: "quickpick-this-week",
29
- startDate: "05/01/2026",
30
- };
31
-
32
- const statusOptionForValue = (value) =>
33
- value
34
- ? statusDropdownOptions.find((opt) => opt.value === value)
35
- : undefined;
36
-
37
- const FilterInteractive = (props) => {
38
- const [filters, setFilters] = useState(INITIAL_FILTERS);
39
-
40
- const updateFilter = (key) => (value) =>
41
- setFilters((prev) => ({ ...prev, [key]: value }));
42
-
43
- const handleClear = () => {
44
- setFilters(INITIAL_FILTERS);
45
- };
46
-
47
- return (
48
- <Filter
49
- {...props}
50
- filters={{
51
- Territory: filters.territory,
52
- Status: filters.status,
53
- "Date range": filters.dateRange,
54
- "Start date": filters.startDate,
55
- }}
56
- interactiveFilters={{
57
- Territory: {
58
- type: "select",
59
- options: territorySelectOptions,
60
- value: filters.territory,
61
- onChange: updateFilter("territory"),
62
- },
63
- Status: {
64
- type: "dropdown",
65
- options: statusDropdownOptions,
66
- value: filters.status,
67
- onChange: updateFilter("status"),
68
- },
69
- "Date range": {
70
- type: "dropdown",
71
- variant: "quickpick",
72
- value: filters.dateRange,
73
- onChange: updateFilter("dateRange"),
74
- },
75
- "Start date": {
76
- type: "date-picker",
77
- value: filters.startDate,
78
- onChange: updateFilter("startDate"),
79
- format: "m/d/Y",
80
- },
81
- }}
82
- minWidth="360px"
83
- results={546}
84
- sortOptions={{
85
- popularity: "Popularity",
86
- }}
87
- sortValue={[{ name: "popularity", dir: "desc" }]}
88
- >
89
- {({ closePopover }) => (
90
- <form>
91
- <Select
92
- {...props}
93
- label="Territory"
94
- name="location"
95
- onChange={(e) => updateFilter("territory")(e.target.value)}
96
- options={territorySelectOptions}
97
- value={filters.territory}
98
- />
99
- <Dropdown
100
- {...props}
101
- blankSelection="Select status..."
102
- defaultValue={statusOptionForValue(filters.status)}
103
- key={filters.status || "cleared"}
104
- label="Status"
105
- marginBottom="sm"
106
- onSelect={(option) =>
107
- updateFilter("status")(option ? option.value : "")
108
- }
109
- options={statusDropdownOptions}
110
- />
111
-
112
- <Dropdown
113
- {...props}
114
- key={filters.dateRange || "cleared"}
115
- label="Date range"
116
- marginBottom="sm"
117
- onSelect={(option) =>
118
- updateFilter("dateRange")(option ? option.id : "")
119
- }
120
- variant="quickpick"
121
- />
122
-
123
- <DatePicker
124
- {...props}
125
- inputValue={filters.startDate}
126
- label="Start date"
127
- onChange={updateFilter("startDate")}
128
- pickerId="filter-panel-start-date"
129
- />
130
-
131
- <Flex
132
- {...props}
133
- spacing="between"
134
- >
135
- <Button
136
- {...props}
137
- onClick={closePopover}
138
- text="Apply"
139
- />
140
- <Button
141
- {...props}
142
- onClick={handleClear}
143
- text="Clear"
144
- variant="secondary"
145
- />
146
- </Flex>
147
- </form>
148
- )}
149
- </Filter>
150
- );
151
- };
152
-
153
- export default FilterInteractive;
@@ -1,10 +0,0 @@
1
- Click an applied filter chip to edit it inline. `interactiveFilters` supports:
2
-
3
- - `type: 'select'` / `'dropdown'`: pick from a list of options.
4
- - `type: 'date-picker'`: inline calendar. Supports `format`, `minDate`, `maxDate`, and `mode`.
5
-
6
- For date ranges, use `type: 'dropdown'` with `variant: 'quickpick'`. The Filter kit generates the same quickpick options as Dropdown, so no `options` are needed. Values are quickpick ids, such as `quickpick-this-week`.
7
-
8
- Keep `filters`, `interactiveFilters.value`, and the filter popover fields backed by the same state so chip labels and form controls stay in sync.
9
-
10
- On Rails, pass `interactive_filters` with `target_input` so chip picks update the linked form control. Re-read submitted params in your view after Apply so `filters` reflects the new values.