shadcn_phlexcomponents 0.1.18 → 0.1.19

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 (128) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +321 -23
  3. data/app/javascript/controllers/accordion_controller.js +101 -90
  4. data/app/javascript/controllers/alert_dialog_controller.js +5 -4
  5. data/app/javascript/controllers/avatar_controller.js +12 -11
  6. data/app/javascript/controllers/checkbox_controller.js +26 -26
  7. data/app/javascript/controllers/collapsible_controller.js +35 -36
  8. data/app/javascript/controllers/combobox_controller.js +262 -231
  9. data/app/javascript/controllers/command_controller.js +205 -184
  10. data/app/javascript/controllers/date_picker_controller.js +252 -253
  11. data/app/javascript/controllers/date_range_picker_controller.js +189 -200
  12. data/app/javascript/controllers/dialog_controller.js +79 -78
  13. data/app/javascript/controllers/dropdown_menu_controller.js +229 -208
  14. data/app/javascript/controllers/dropdown_menu_sub_controller.js +111 -97
  15. data/app/javascript/controllers/form_field_controller.js +17 -16
  16. data/app/javascript/controllers/hover_card_controller.js +69 -71
  17. data/app/javascript/controllers/loading_button_controller.js +11 -10
  18. data/app/javascript/controllers/popover_controller.js +85 -78
  19. data/app/javascript/controllers/progress_controller.js +12 -11
  20. data/app/javascript/controllers/radio_group_controller.js +75 -74
  21. data/app/javascript/controllers/select_controller.js +247 -232
  22. data/app/javascript/controllers/sidebar_controller.js +26 -27
  23. data/app/javascript/controllers/sidebar_trigger_controller.js +12 -9
  24. data/app/javascript/controllers/slider_controller.js +74 -74
  25. data/app/javascript/controllers/switch_controller.js +23 -23
  26. data/app/javascript/controllers/tabs_controller.js +61 -61
  27. data/app/javascript/controllers/theme_switcher_controller.js +28 -27
  28. data/app/javascript/controllers/toast_container_controller.js +45 -31
  29. data/app/javascript/controllers/toast_controller.js +19 -18
  30. data/app/javascript/controllers/toggle_controller.js +17 -17
  31. data/app/javascript/controllers/toggle_group_controller.js +17 -17
  32. data/app/javascript/controllers/tooltip_controller.js +75 -77
  33. data/app/javascript/shadcn_phlexcomponents.js +27 -60
  34. data/app/javascript/utils/command.js +390 -334
  35. data/app/javascript/utils/floating_ui.js +139 -107
  36. data/app/javascript/utils/index.js +253 -190
  37. data/app/typescript/controllers/accordion_controller.ts +2 -0
  38. data/app/typescript/controllers/alert_dialog_controller.ts +2 -0
  39. data/app/typescript/controllers/avatar_controller.ts +2 -0
  40. data/app/typescript/controllers/checkbox_controller.ts +2 -0
  41. data/app/typescript/controllers/collapsible_controller.ts +2 -0
  42. data/app/typescript/controllers/combobox_controller.ts +2 -0
  43. data/app/typescript/controllers/command_controller.ts +2 -0
  44. data/app/typescript/controllers/date_picker_controller.ts +2 -0
  45. data/app/typescript/controllers/date_range_picker_controller.ts +2 -0
  46. data/app/typescript/controllers/dialog_controller.ts +2 -0
  47. data/app/typescript/controllers/dropdown_menu_controller.ts +2 -0
  48. data/app/typescript/controllers/dropdown_menu_sub_controller.ts +2 -0
  49. data/app/typescript/controllers/form_field_controller.ts +2 -0
  50. data/app/typescript/controllers/hover_card_controller.ts +2 -0
  51. data/app/typescript/controllers/loading_button_controller.ts +2 -0
  52. data/app/typescript/controllers/popover_controller.ts +2 -0
  53. data/app/typescript/controllers/progress_controller.ts +2 -0
  54. data/app/typescript/controllers/radio_group_controller.ts +2 -0
  55. data/app/typescript/controllers/select_controller.ts +2 -0
  56. data/app/typescript/controllers/slider_controller.ts +2 -0
  57. data/app/typescript/controllers/switch_controller.ts +2 -0
  58. data/app/typescript/controllers/tabs_controller.ts +2 -0
  59. data/app/typescript/controllers/theme_switcher_controller.ts +2 -0
  60. data/app/typescript/controllers/toast_container_controller.ts +2 -0
  61. data/app/typescript/controllers/toast_controller.ts +2 -0
  62. data/app/typescript/controllers/toggle_controller.ts +2 -0
  63. data/app/typescript/controllers/toggle_group_controller.ts +2 -0
  64. data/app/typescript/controllers/tooltip_controller.ts +2 -0
  65. data/app/typescript/shadcn_phlexcomponents.ts +27 -61
  66. data/app/typescript/utils/index.ts +7 -0
  67. data/lib/install/upgrade_shadcn_phlexcomponents.rb +28 -0
  68. data/lib/shadcn_phlexcomponents/components/accordion.rb +55 -12
  69. data/lib/shadcn_phlexcomponents/components/alert.rb +35 -16
  70. data/lib/shadcn_phlexcomponents/components/alert_dialog.rb +52 -12
  71. data/lib/shadcn_phlexcomponents/components/aspect_ratio.rb +33 -2
  72. data/lib/shadcn_phlexcomponents/components/avatar.rb +24 -7
  73. data/lib/shadcn_phlexcomponents/components/badge.rb +23 -18
  74. data/lib/shadcn_phlexcomponents/components/breadcrumb.rb +46 -6
  75. data/lib/shadcn_phlexcomponents/components/button.rb +32 -27
  76. data/lib/shadcn_phlexcomponents/components/card.rb +59 -10
  77. data/lib/shadcn_phlexcomponents/components/checkbox.rb +51 -30
  78. data/lib/shadcn_phlexcomponents/components/checkbox_group.rb +24 -4
  79. data/lib/shadcn_phlexcomponents/components/combobox.rb +212 -69
  80. data/lib/shadcn_phlexcomponents/components/command.rb +156 -52
  81. data/lib/shadcn_phlexcomponents/components/date_picker.rb +134 -48
  82. data/lib/shadcn_phlexcomponents/components/date_range_picker.rb +20 -42
  83. data/lib/shadcn_phlexcomponents/components/dialog.rb +80 -26
  84. data/lib/shadcn_phlexcomponents/components/dropdown_menu.rb +74 -25
  85. data/lib/shadcn_phlexcomponents/components/dropdown_menu_sub.rb +52 -24
  86. data/lib/shadcn_phlexcomponents/components/form/form_checkbox.rb +1 -1
  87. data/lib/shadcn_phlexcomponents/components/form/form_checkbox_group.rb +1 -1
  88. data/lib/shadcn_phlexcomponents/components/form/form_combobox.rb +1 -1
  89. data/lib/shadcn_phlexcomponents/components/form/form_date_picker.rb +1 -1
  90. data/lib/shadcn_phlexcomponents/components/form/form_date_range_picker.rb +1 -1
  91. data/lib/shadcn_phlexcomponents/components/form/form_error.rb +8 -1
  92. data/lib/shadcn_phlexcomponents/components/form/form_helpers.rb +3 -2
  93. data/lib/shadcn_phlexcomponents/components/form/form_hint.rb +8 -1
  94. data/lib/shadcn_phlexcomponents/components/form/form_input.rb +1 -1
  95. data/lib/shadcn_phlexcomponents/components/form/form_radio_group.rb +1 -1
  96. data/lib/shadcn_phlexcomponents/components/form/form_select.rb +1 -1
  97. data/lib/shadcn_phlexcomponents/components/form/form_slider.rb +1 -1
  98. data/lib/shadcn_phlexcomponents/components/form/form_switch.rb +1 -1
  99. data/lib/shadcn_phlexcomponents/components/form/form_textarea.rb +1 -1
  100. data/lib/shadcn_phlexcomponents/components/form.rb +22 -6
  101. data/lib/shadcn_phlexcomponents/components/hover_card.rb +48 -18
  102. data/lib/shadcn_phlexcomponents/components/input.rb +13 -8
  103. data/lib/shadcn_phlexcomponents/components/label.rb +9 -4
  104. data/lib/shadcn_phlexcomponents/components/link.rb +8 -1
  105. data/lib/shadcn_phlexcomponents/components/pagination.rb +34 -6
  106. data/lib/shadcn_phlexcomponents/components/popover.rb +43 -13
  107. data/lib/shadcn_phlexcomponents/components/progress.rb +37 -6
  108. data/lib/shadcn_phlexcomponents/components/radio_group.rb +41 -15
  109. data/lib/shadcn_phlexcomponents/components/select.rb +99 -42
  110. data/lib/shadcn_phlexcomponents/components/separator.rb +9 -4
  111. data/lib/shadcn_phlexcomponents/components/sheet.rb +87 -21
  112. data/lib/shadcn_phlexcomponents/components/skeleton.rb +8 -1
  113. data/lib/shadcn_phlexcomponents/components/switch.rb +45 -17
  114. data/lib/shadcn_phlexcomponents/components/table.rb +84 -17
  115. data/lib/shadcn_phlexcomponents/components/tabs.rb +36 -12
  116. data/lib/shadcn_phlexcomponents/components/textarea.rb +12 -7
  117. data/lib/shadcn_phlexcomponents/components/toast.rb +46 -20
  118. data/lib/shadcn_phlexcomponents/components/toast_container.rb +19 -14
  119. data/lib/shadcn_phlexcomponents/components/toggle.rb +28 -23
  120. data/lib/shadcn_phlexcomponents/components/tooltip.rb +49 -14
  121. data/lib/shadcn_phlexcomponents/configuration.rb +46 -0
  122. data/lib/shadcn_phlexcomponents/initializers/shadcn_phlexcomponents.rb +28 -0
  123. data/lib/shadcn_phlexcomponents/version.rb +1 -1
  124. data/lib/shadcn_phlexcomponents.rb +12 -1
  125. data/lib/tasks/upgrade.rake +10 -0
  126. metadata +15 -14
  127. data/app/typescript/controllers/sidebar_controller.ts +0 -39
  128. data/app/typescript/controllers/sidebar_trigger_controller.ts +0 -21
@@ -1,82 +1,80 @@
1
- import { Controller } from '@hotwired/stimulus';
2
- import { useHover } from 'stimulus-use';
3
- import { initFloatingUi } from '../utils/floating_ui';
4
- import { showContent, hideContent } from '../utils';
1
+ import { Controller } from "@hotwired/stimulus";
2
+ import { useHover } from "stimulus-use";
3
+ import { initFloatingUi } from "../utils/floating_ui";
4
+ import { showContent, hideContent } from "../utils";
5
5
  const TooltipController = class extends Controller {
6
- // targets
7
- static targets = ['trigger', 'content', 'contentContainer', 'arrow'];
8
- // values
9
- static values = {
10
- isOpen: Boolean,
11
- };
12
- connect() {
13
- this.DOMKeydownListener = this.onDOMKeydown.bind(this);
14
- useHover(this, { element: this.triggerTarget, dispatchEvent: false });
6
+ static name = "tooltip";
7
+ // targets
8
+ static targets = ["trigger", "content", "contentContainer", "arrow"];
9
+ // values
10
+ static values = {
11
+ isOpen: Boolean,
12
+ };
13
+ connect() {
14
+ this.DOMKeydownListener = this.onDOMKeydown.bind(this);
15
+ useHover(this, { element: this.triggerTarget, dispatchEvent: false });
16
+ }
17
+ open() {
18
+ window.clearTimeout(this.closeTimeout);
19
+ this.isOpenValue = true;
20
+ }
21
+ close() {
22
+ this.closeTimeout = window.setTimeout(() => {
23
+ this.isOpenValue = false;
24
+ }, 250);
25
+ }
26
+ closeImmediately() {
27
+ this.isOpenValue = false;
28
+ }
29
+ // for useHover
30
+ mouseEnter() {
31
+ this.open();
32
+ }
33
+ // for useHover
34
+ mouseLeave() {
35
+ this.close();
36
+ }
37
+ isOpenValueChanged(isOpen) {
38
+ if (isOpen) {
39
+ showContent({
40
+ content: this.contentTarget,
41
+ contentContainer: this.contentContainerTarget,
42
+ });
43
+ this.setupEventListeners();
44
+ this.cleanup = initFloatingUi({
45
+ referenceElement: this.triggerTarget,
46
+ floatingElement: this.contentContainerTarget,
47
+ arrowElement: this.arrowTarget,
48
+ side: this.contentTarget.dataset.side,
49
+ align: this.contentTarget.dataset.align,
50
+ sideOffset: 4,
51
+ });
52
+ } else {
53
+ hideContent({
54
+ content: this.contentTarget,
55
+ contentContainer: this.contentContainerTarget,
56
+ });
57
+ this.cleanupEventListeners();
15
58
  }
16
- open() {
17
- window.clearTimeout(this.closeTimeout);
18
- this.isOpenValue = true;
19
- }
20
- close() {
21
- this.closeTimeout = window.setTimeout(() => {
22
- this.isOpenValue = false;
23
- }, 250);
24
- }
25
- closeImmediately() {
26
- this.isOpenValue = false;
27
- }
28
- // for useHover
29
- mouseEnter() {
30
- this.open();
31
- }
32
- // for useHover
33
- mouseLeave() {
34
- this.close();
35
- }
36
- isOpenValueChanged(isOpen) {
37
- if (isOpen) {
38
- showContent({
39
- content: this.contentTarget,
40
- contentContainer: this.contentContainerTarget,
41
- });
42
- this.setupEventListeners();
43
- this.cleanup = initFloatingUi({
44
- referenceElement: this.triggerTarget,
45
- floatingElement: this.contentContainerTarget,
46
- arrowElement: this.arrowTarget,
47
- side: this.contentTarget.dataset.side,
48
- align: this.contentTarget.dataset.align,
49
- sideOffset: 4,
50
- });
51
- }
52
- else {
53
- hideContent({
54
- content: this.contentTarget,
55
- contentContainer: this.contentContainerTarget,
56
- });
57
- this.cleanupEventListeners();
58
- }
59
- }
60
- disconnect() {
61
- this.cleanupEventListeners();
62
- }
63
- onDOMKeydown(event) {
64
- if (!this.isOpenValue)
65
- return;
66
- const key = event.key;
67
- if (['Escape', 'Enter', ' '].includes(key)) {
68
- event.preventDefault();
69
- event.stopImmediatePropagation();
70
- this.closeImmediately();
71
- }
72
- }
73
- setupEventListeners() {
74
- document.addEventListener('keydown', this.DOMKeydownListener);
75
- }
76
- cleanupEventListeners() {
77
- if (this.cleanup)
78
- this.cleanup();
79
- document.removeEventListener('keydown', this.DOMKeydownListener);
59
+ }
60
+ disconnect() {
61
+ this.cleanupEventListeners();
62
+ }
63
+ onDOMKeydown(event) {
64
+ if (!this.isOpenValue) return;
65
+ const key = event.key;
66
+ if (["Escape", "Enter", " "].includes(key)) {
67
+ event.preventDefault();
68
+ event.stopImmediatePropagation();
69
+ this.closeImmediately();
80
70
  }
71
+ }
72
+ setupEventListeners() {
73
+ document.addEventListener("keydown", this.DOMKeydownListener);
74
+ }
75
+ cleanupEventListeners() {
76
+ if (this.cleanup) this.cleanup();
77
+ document.removeEventListener("keydown", this.DOMKeydownListener);
78
+ }
81
79
  };
82
80
  export { TooltipController };
@@ -1,60 +1,27 @@
1
- import { AccordionController } from './controllers/accordion_controller';
2
- import { AlertDialogController } from './controllers/alert_dialog_controller';
3
- import { AvatarController } from './controllers/avatar_controller';
4
- import { CheckboxController } from './controllers/checkbox_controller';
5
- import { CollapsibleController } from './controllers/collapsible_controller';
6
- import { ComboboxController } from './controllers/combobox_controller';
7
- import { CommandController } from './controllers/command_controller';
8
- import { DatePickerController } from './controllers/date_picker_controller';
9
- import { DateRangePickerController } from './controllers/date_range_picker_controller';
10
- import { DialogController } from './controllers/dialog_controller';
11
- import { DropdownMenuController } from './controllers/dropdown_menu_controller';
12
- import { DropdownMenuSubController } from './controllers/dropdown_menu_sub_controller';
13
- import { FormFieldController } from './controllers/form_field_controller';
14
- import { HoverCardController } from './controllers/hover_card_controller';
15
- import { LoadingButtonController } from './controllers/loading_button_controller';
16
- import { PopoverController } from './controllers/popover_controller';
17
- import { ProgressController } from './controllers/progress_controller';
18
- import { RadioGroupController } from './controllers/radio_group_controller';
19
- import { SelectController } from './controllers/select_controller';
20
- import SidebarController from './controllers/sidebar_controller';
21
- import SidebarTriggerController from './controllers/sidebar_trigger_controller';
22
- import { SliderController } from './controllers/slider_controller';
23
- import { SwitchController } from './controllers/switch_controller';
24
- import { TabsController } from './controllers/tabs_controller';
25
- import { ThemeSwitcherController } from './controllers/theme_switcher_controller';
26
- import { ToastContainerController } from './controllers/toast_container_controller';
27
- import { ToastController } from './controllers/toast_controller';
28
- import { ToggleController } from './controllers/toggle_controller';
29
- import { TooltipController } from './controllers/tooltip_controller';
30
- export default {
31
- accordion: AccordionController,
32
- 'alert-dialog': AlertDialogController,
33
- avatar: AvatarController,
34
- checkbox: CheckboxController,
35
- collapsible: CollapsibleController,
36
- combobox: ComboboxController,
37
- command: CommandController,
38
- 'date-picker': DatePickerController,
39
- 'date-range-picker': DateRangePickerController,
40
- dialog: DialogController,
41
- 'dropdown-menu': DropdownMenuController,
42
- 'dropdown-menu-sub': DropdownMenuSubController,
43
- 'form-field': FormFieldController,
44
- 'hover-card': HoverCardController,
45
- 'loading-button': LoadingButtonController,
46
- popover: PopoverController,
47
- progress: ProgressController,
48
- 'radio-group': RadioGroupController,
49
- select: SelectController,
50
- sidebar: SidebarController,
51
- 'sidebar-trigger': SidebarTriggerController,
52
- slider: SliderController,
53
- switch: SwitchController,
54
- tabs: TabsController,
55
- 'theme-switcher': ThemeSwitcherController,
56
- 'toast-container': ToastContainerController,
57
- toast: ToastController,
58
- toggle: ToggleController,
59
- tooltip: TooltipController,
60
- };
1
+ export { AccordionController } from "./controllers/accordion_controller";
2
+ export { AlertDialogController } from "./controllers/alert_dialog_controller";
3
+ export { AvatarController } from "./controllers/avatar_controller";
4
+ export { CheckboxController } from "./controllers/checkbox_controller";
5
+ export { CollapsibleController } from "./controllers/collapsible_controller";
6
+ export { ComboboxController } from "./controllers/combobox_controller";
7
+ export { CommandController } from "./controllers/command_controller";
8
+ export { DatePickerController } from "./controllers/date_picker_controller";
9
+ export { DateRangePickerController } from "./controllers/date_range_picker_controller";
10
+ export { DialogController } from "./controllers/dialog_controller";
11
+ export { DropdownMenuController } from "./controllers/dropdown_menu_controller";
12
+ export { DropdownMenuSubController } from "./controllers/dropdown_menu_sub_controller";
13
+ export { FormFieldController } from "./controllers/form_field_controller";
14
+ export { HoverCardController } from "./controllers/hover_card_controller";
15
+ export { LoadingButtonController } from "./controllers/loading_button_controller";
16
+ export { PopoverController } from "./controllers/popover_controller";
17
+ export { ProgressController } from "./controllers/progress_controller";
18
+ export { RadioGroupController } from "./controllers/radio_group_controller";
19
+ export { SelectController } from "./controllers/select_controller";
20
+ export { SliderController } from "./controllers/slider_controller";
21
+ export { SwitchController } from "./controllers/switch_controller";
22
+ export { TabsController } from "./controllers/tabs_controller";
23
+ export { ThemeSwitcherController } from "./controllers/theme_switcher_controller";
24
+ export { ToastContainerController } from "./controllers/toast_container_controller";
25
+ export { ToastController } from "./controllers/toast_controller";
26
+ export { ToggleController } from "./controllers/toggle_controller";
27
+ export { TooltipController } from "./controllers/tooltip_controller";