openproject-primer_view_components 0.70.5 → 0.71.0

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.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/app/assets/javascripts/components/primer/alpha/segmented_control.d.ts +2 -2
  4. data/app/assets/javascripts/components/primer/open_project/filterable_tree_view.d.ts +29 -0
  5. data/app/assets/javascripts/components/primer/open_project/tree_view/tree_view.d.ts +11 -1
  6. data/app/assets/javascripts/components/primer/open_project/tree_view/tree_view_sub_tree_node_element.d.ts +5 -1
  7. data/app/assets/javascripts/components/primer/primer.d.ts +1 -0
  8. data/app/assets/javascripts/primer_view_components.js +1 -1
  9. data/app/assets/javascripts/primer_view_components.js.map +1 -1
  10. data/app/assets/styles/primer_view_components.css +1 -1
  11. data/app/assets/styles/primer_view_components.css.map +1 -1
  12. data/app/components/primer/alpha/segmented_control.d.ts +2 -2
  13. data/app/components/primer/alpha/segmented_control.js +12 -0
  14. data/app/components/primer/alpha/segmented_control.ts +16 -1
  15. data/app/components/primer/alpha/stack.css +1 -1
  16. data/app/components/primer/alpha/stack.css.json +5 -1
  17. data/app/components/primer/alpha/stack.css.map +1 -1
  18. data/app/components/primer/alpha/stack.pcss +13 -0
  19. data/app/components/primer/alpha/stack.rb +2 -1
  20. data/app/components/primer/open_project/filterable_tree_view/sub_tree.rb +39 -0
  21. data/app/components/primer/open_project/filterable_tree_view.d.ts +29 -0
  22. data/app/components/primer/open_project/filterable_tree_view.html.erb +28 -0
  23. data/app/components/primer/open_project/filterable_tree_view.js +409 -0
  24. data/app/components/primer/open_project/filterable_tree_view.rb +254 -0
  25. data/app/components/primer/open_project/filterable_tree_view.ts +492 -0
  26. data/app/components/primer/open_project/tree_view/node.rb +19 -3
  27. data/app/components/primer/open_project/tree_view/sub_tree_node.rb +14 -4
  28. data/app/components/primer/open_project/tree_view/tree_view.d.ts +11 -1
  29. data/app/components/primer/open_project/tree_view/tree_view.js +120 -20
  30. data/app/components/primer/open_project/tree_view/tree_view.ts +137 -18
  31. data/app/components/primer/open_project/tree_view/tree_view_sub_tree_node_element.d.ts +5 -1
  32. data/app/components/primer/open_project/tree_view/tree_view_sub_tree_node_element.js +27 -4
  33. data/app/components/primer/open_project/tree_view/tree_view_sub_tree_node_element.ts +36 -5
  34. data/app/components/primer/open_project/tree_view.css +1 -1
  35. data/app/components/primer/open_project/tree_view.css.json +9 -0
  36. data/app/components/primer/open_project/tree_view.css.map +1 -1
  37. data/app/components/primer/open_project/tree_view.html.erb +4 -0
  38. data/app/components/primer/open_project/tree_view.pcss +48 -0
  39. data/app/components/primer/open_project/tree_view.rb +6 -1
  40. data/app/components/primer/primer.d.ts +1 -0
  41. data/app/components/primer/primer.js +1 -0
  42. data/app/components/primer/primer.ts +1 -0
  43. data/app/lib/primer/forms/base_component.rb +1 -1
  44. data/app/lib/primer/forms/dsl/text_field_input.rb +2 -0
  45. data/config/locales/en.yml +20 -0
  46. data/lib/primer/view_components/version.rb +2 -2
  47. data/previews/primer/open_project/filterable_tree_view_preview/_custom_select_js.html.erb +62 -0
  48. data/previews/primer/open_project/filterable_tree_view_preview/custom_checkbox_text.html.erb +26 -0
  49. data/previews/primer/open_project/filterable_tree_view_preview/custom_no_results_text.html.erb +28 -0
  50. data/previews/primer/open_project/filterable_tree_view_preview/custom_segmented_control.html.erb +31 -0
  51. data/previews/primer/open_project/filterable_tree_view_preview/default.html.erb +26 -0
  52. data/previews/primer/open_project/filterable_tree_view_preview/form_input.html.erb +32 -0
  53. data/previews/primer/open_project/filterable_tree_view_preview/playground.html.erb +26 -0
  54. data/previews/primer/open_project/filterable_tree_view_preview.rb +125 -0
  55. data/previews/primer/open_project/tree_view_preview/buttons.html.erb +4 -4
  56. data/previews/primer/open_project/tree_view_preview/default.html.erb +4 -4
  57. data/previews/primer/open_project/tree_view_preview/leaf_node_playground.html.erb +1 -1
  58. data/previews/primer/open_project/tree_view_preview/links.html.erb +4 -4
  59. data/previews/primer/open_project/tree_view_preview.rb +18 -8
  60. data/static/arguments.json +89 -3
  61. data/static/audited_at.json +2 -0
  62. data/static/constants.json +40 -1
  63. data/static/info_arch.json +220 -3
  64. data/static/previews.json +86 -0
  65. data/static/statuses.json +2 -0
  66. metadata +18 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 41b1b1ad2cf71ac187f62abfab9bb4672fd79a6226594f2f83cd54997ce6b6a8
4
- data.tar.gz: ac203e7e4d911a35004c23f4e12e7b007e1c1771a698782df893d872feb7dfd5
3
+ metadata.gz: eeac95c99b864989d9c2ec8dde7cdf3ad300d1159ac57d9b1b70249121299884
4
+ data.tar.gz: ec2d771f8c6db1732818a3859ca257183f3569359986b0b7767b36d6200d3b8e
5
5
  SHA512:
6
- metadata.gz: '0979214c8f67f34bc996bf57fe59e1a9ad951f4520e993076e8e8686f9ac60cfe373c0fee205221e4ad0c58e6f0a2cbadb91a40f329ac4a481783b46984ef868'
7
- data.tar.gz: bedd3be0a15e2343189c2a9a0a4c585b82a4fce4f5a1021a0a7f83f3bce3a93d9b521765dd12d665b92e0afdfeb2199474809df3f9ab35ef6a70a6467a7308e2
6
+ metadata.gz: b8b22a4aed8cb007e34c531404ff4f264d4c4844430528f5ce86aa1a70eaffdbd9bf87e9030799333addcacb890e3263591103301386b5c60b7ea5589c06ab9f
7
+ data.tar.gz: 1605e38631b7ddbd7873905142e211e1a95fe559433e538be912d6f392baadb118a962bbfb7811d7ca29cd646d223193556fd15e98db9a60e3ac4a11b01f0bfd
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 0.71.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#321](https://github.com/opf/primer_view_components/pull/321) [`9219647`](https://github.com/opf/primer_view_components/commit/9219647e3f6368bdb3d3d1aa45380a63838c8c11) Thanks [@camertron](https://github.com/camertron)! - Add the FilterableTreeView component
8
+
3
9
  ## 0.70.5
4
10
 
5
11
  ### Patch Changes
@@ -1,12 +1,12 @@
1
- declare class SegmentedControlElement extends HTMLElement {
1
+ export declare class SegmentedControlElement extends HTMLElement {
2
2
  #private;
3
3
  items: HTMLElement[];
4
4
  connectedCallback(): void;
5
5
  select(event: Event): void;
6
+ get current(): HTMLElement | null;
6
7
  }
7
8
  declare global {
8
9
  interface Window {
9
10
  SegmentedControlElement: typeof SegmentedControlElement;
10
11
  }
11
12
  }
12
- export {};
@@ -0,0 +1,29 @@
1
+ import { SegmentedControlElement } from '../alpha/segmented_control';
2
+ import { TreeViewElement } from './tree_view/tree_view';
3
+ import { TreeViewSubTreeNodeElement } from './tree_view/tree_view_sub_tree_node_element';
4
+ export type FilterFn = (node: HTMLElement, query: string, filterMode?: string) => Range[] | null;
5
+ export declare class FilterableTreeViewElement extends HTMLElement {
6
+ #private;
7
+ filterInput: HTMLInputElement;
8
+ filterModeControlList: HTMLElement;
9
+ treeViewList: HTMLElement;
10
+ noResultsMessage: HTMLElement;
11
+ includeSubItemsCheckBox: HTMLInputElement;
12
+ connectedCallback(): void;
13
+ disconnectedCallback(): void;
14
+ handleEvent(event: Event): void;
15
+ get filterModeControl(): SegmentedControlElement | null;
16
+ get treeView(): TreeViewElement | null;
17
+ set filterFn(newFn: FilterFn);
18
+ get filterFn(): FilterFn;
19
+ defaultFilterFn(node: HTMLElement, query: string, filterMode?: string): Range[] | null;
20
+ get filterMode(): string | null;
21
+ get queryString(): string;
22
+ eachDescendantDepthFirst(node: HTMLElement, level: number, ancestry: TreeViewSubTreeNodeElement[]): Generator<[NodeListOf<HTMLElement>, TreeViewSubTreeNodeElement[]]>;
23
+ eachShallowestCheckedSubTree(root: TreeViewSubTreeNodeElement): Generator<TreeViewSubTreeNodeElement>;
24
+ }
25
+ declare global {
26
+ interface Window {
27
+ FilterableTreeViewElement: typeof FilterableTreeViewElement;
28
+ }
29
+ }
@@ -1,10 +1,15 @@
1
- import { TreeViewSubTreeNodeElement } from './tree_view_sub_tree_node_element';
1
+ import { SelectStrategy, TreeViewSubTreeNodeElement } from './tree_view_sub_tree_node_element';
2
2
  import type { TreeViewNodeType, TreeViewCheckedValue, TreeViewNodeInfo } from '../../shared_events';
3
3
  export declare class TreeViewElement extends HTMLElement {
4
4
  #private;
5
+ formInputContainer: HTMLElement;
6
+ formInputPrototype: HTMLInputElement;
5
7
  connectedCallback(): void;
8
+ rootLeafNodes(): NodeListOf<HTMLElement>;
9
+ rootSubTreeNodes(): NodeListOf<TreeViewSubTreeNodeElement>;
6
10
  disconnectedCallback(): void;
7
11
  handleEvent(event: Event): void;
12
+ getFormInputValueForNode(node: Element): string | null;
8
13
  getNodePath(node: Element): string[];
9
14
  getNodeType(node: Element): TreeViewNodeType | null;
10
15
  markCurrentAtPath(path: string[]): void;
@@ -16,13 +21,18 @@ export declare class TreeViewElement extends HTMLElement {
16
21
  uncheckAtPath(path: string[]): void;
17
22
  toggleCheckedAtPath(path: string[]): void;
18
23
  checkedValueAtPath(path: string[]): TreeViewCheckedValue;
24
+ disabledValueAtPath(path: string[]): boolean;
19
25
  nodeAtPath(path: string[], selector?: string): Element | null;
20
26
  subTreeAtPath(path: string[]): TreeViewSubTreeNodeElement | null;
21
27
  leafAtPath(path: string[]): HTMLLIElement | null;
28
+ setNodeCheckedValue(node: Element, value: TreeViewCheckedValue): void;
22
29
  getNodeCheckedValue(node: Element): TreeViewCheckedValue;
30
+ getNodeDisabledValue(node: Element): boolean;
31
+ setNodeDisabledValue(node: Element, disabled: boolean): void;
23
32
  nodeHasCheckBox(node: Element): boolean;
24
33
  nodeHasNativeAction(node: Element): boolean;
25
34
  expandAncestorsForNode(node: HTMLElement): void;
35
+ changeSelectStrategy(newStrategy: SelectStrategy): void;
26
36
  infoFromNode(node: Element, newCheckedValue?: TreeViewCheckedValue): TreeViewNodeInfo | null;
27
37
  }
28
38
  declare global {
@@ -2,6 +2,7 @@ import { TreeViewIconPairElement } from './tree_view_icon_pair_element';
2
2
  import { TreeViewIncludeFragmentElement } from './tree_view_include_fragment_element';
3
3
  import { TreeViewElement } from './tree_view';
4
4
  type LoadingState = 'loading' | 'error' | 'success';
5
+ export type SelectStrategy = 'self' | 'descendants' | 'mixed_descendants';
5
6
  export declare class TreeViewSubTreeNodeElement extends HTMLElement {
6
7
  #private;
7
8
  node: HTMLElement;
@@ -19,7 +20,8 @@ export declare class TreeViewSubTreeNodeElement extends HTMLElement {
19
20
  set expanded(newValue: boolean);
20
21
  get loadingState(): LoadingState;
21
22
  set loadingState(newState: LoadingState);
22
- get selectStrategy(): string;
23
+ get selectStrategy(): SelectStrategy;
24
+ get level(): number;
23
25
  disconnectedCallback(): void;
24
26
  handleEvent(event: Event): void;
25
27
  expand(): void;
@@ -27,11 +29,13 @@ export declare class TreeViewSubTreeNodeElement extends HTMLElement {
27
29
  toggle(): void;
28
30
  get nodes(): NodeListOf<Element>;
29
31
  eachDirectDescendantNode(): Generator<Element>;
32
+ eachDirectDescendantSubTreeNode(): Generator<TreeViewSubTreeNodeElement>;
30
33
  eachDescendantNode(): Generator<Element>;
31
34
  eachAncestorSubTreeNode(): Generator<TreeViewSubTreeNodeElement>;
32
35
  get isEmpty(): boolean;
33
36
  get treeView(): TreeViewElement | null;
34
37
  toggleChecked(): void;
38
+ changeSelectStrategy(newStrategy: SelectStrategy): void;
35
39
  }
36
40
  declare global {
37
41
  interface Window {
@@ -37,3 +37,4 @@ import './open_project/tree_view/tree_view';
37
37
  import './open_project/tree_view/tree_view_icon_pair_element';
38
38
  import './open_project/tree_view/tree_view_sub_tree_node_element';
39
39
  import './open_project/tree_view/tree_view_include_fragment_element';
40
+ import './open_project/filterable_tree_view';