shadcn_phlexcomponents 0.1.16 → 0.1.18

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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/app/javascript/controllers/accordion_controller.js +90 -100
  3. data/app/javascript/controllers/alert_dialog_controller.js +4 -4
  4. data/app/javascript/controllers/avatar_controller.js +11 -11
  5. data/app/javascript/controllers/checkbox_controller.js +26 -25
  6. data/app/javascript/controllers/collapsible_controller.js +36 -34
  7. data/app/javascript/controllers/combobox_controller.js +231 -262
  8. data/app/javascript/controllers/command_controller.js +184 -204
  9. data/app/javascript/controllers/date_picker_controller.js +257 -240
  10. data/app/javascript/controllers/date_range_picker_controller.js +200 -188
  11. data/app/javascript/controllers/dialog_controller.js +78 -78
  12. data/app/javascript/controllers/dropdown_menu_controller.js +208 -228
  13. data/app/javascript/controllers/dropdown_menu_sub_controller.js +97 -110
  14. data/app/javascript/controllers/form_field_controller.js +16 -16
  15. data/app/javascript/controllers/hover_card_controller.js +71 -68
  16. data/app/javascript/controllers/loading_button_controller.js +10 -10
  17. data/app/javascript/controllers/popover_controller.js +78 -84
  18. data/app/javascript/controllers/progress_controller.js +11 -11
  19. data/app/javascript/controllers/radio_group_controller.js +74 -74
  20. data/app/javascript/controllers/select_controller.js +232 -246
  21. data/app/javascript/controllers/sidebar_controller.js +27 -26
  22. data/app/javascript/controllers/sidebar_trigger_controller.js +9 -12
  23. data/app/javascript/controllers/slider_controller.js +74 -73
  24. data/app/javascript/controllers/switch_controller.js +23 -22
  25. data/app/javascript/controllers/tabs_controller.js +61 -60
  26. data/app/javascript/controllers/theme_switcher_controller.js +27 -27
  27. data/app/javascript/controllers/toast_container_controller.js +31 -44
  28. data/app/javascript/controllers/toast_controller.js +18 -18
  29. data/app/javascript/controllers/toggle_controller.js +17 -16
  30. data/app/javascript/controllers/toggle_group_controller.js +17 -16
  31. data/app/javascript/controllers/tooltip_controller.js +77 -74
  32. data/app/javascript/shadcn_phlexcomponents.js +58 -58
  33. data/app/javascript/utils/command.js +334 -392
  34. data/app/javascript/utils/floating_ui.js +108 -147
  35. data/app/javascript/utils/index.js +190 -253
  36. data/app/stylesheets/date_picker.css +1 -1
  37. data/app/stylesheets/shadcn_phlexcomponents.css +173 -0
  38. data/app/typescript/controllers/combobox_controller.ts +0 -1
  39. data/app/typescript/controllers/date_picker_controller.ts +25 -7
  40. data/app/typescript/controllers/tooltip_controller.ts +1 -1
  41. data/app/typescript/utils/command.ts +0 -2
  42. data/app/typescript/utils/floating_ui.ts +11 -20
  43. data/app/typescript/utils/index.ts +0 -7
  44. data/lib/shadcn_phlexcomponents/components/accordion.rb +1 -1
  45. data/lib/shadcn_phlexcomponents/components/alert_dialog.rb +6 -6
  46. data/lib/shadcn_phlexcomponents/components/base.rb +2 -2
  47. data/lib/shadcn_phlexcomponents/components/combobox.rb +15 -19
  48. data/lib/shadcn_phlexcomponents/components/command.rb +13 -13
  49. data/lib/shadcn_phlexcomponents/components/date_picker.rb +18 -12
  50. data/lib/shadcn_phlexcomponents/components/date_range_picker.rb +7 -3
  51. data/lib/shadcn_phlexcomponents/components/dialog.rb +6 -6
  52. data/lib/shadcn_phlexcomponents/components/sheet.rb +7 -7
  53. data/lib/shadcn_phlexcomponents/components/toggle.rb +1 -1
  54. data/lib/shadcn_phlexcomponents/version.rb +1 -1
  55. metadata +2 -1
@@ -1,79 +1,82 @@
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 });
15
- }
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: 8,
50
- });
51
- } else {
52
- hideContent({
53
- content: this.contentTarget,
54
- contentContainer: this.contentContainerTarget,
55
- });
56
- this.cleanupEventListeners();
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 });
57
15
  }
58
- }
59
- disconnect() {
60
- this.cleanupEventListeners();
61
- }
62
- onDOMKeydown(event) {
63
- if (!this.isOpenValue) return;
64
- const key = event.key;
65
- if (["Escape", "Enter", " "].includes(key)) {
66
- event.preventDefault();
67
- event.stopImmediatePropagation();
68
- this.closeImmediately();
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);
69
80
  }
70
- }
71
- setupEventListeners() {
72
- document.addEventListener("keydown", this.DOMKeydownListener);
73
- }
74
- cleanupEventListeners() {
75
- if (this.cleanup) this.cleanup();
76
- document.removeEventListener("keydown", this.DOMKeydownListener);
77
- }
78
81
  };
79
82
  export { TooltipController };
@@ -1,60 +1,60 @@
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";
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
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,
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
60
  };