shadcn_phlexcomponents 0.1.11 → 0.1.14
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 +4 -4
- data/app/javascript/controllers/accordion_controller.ts +65 -62
- data/app/javascript/controllers/alert_dialog_controller.ts +12 -0
- data/app/javascript/controllers/avatar_controller.ts +7 -2
- data/app/javascript/controllers/checkbox_controller.ts +11 -4
- data/app/javascript/controllers/collapsible_controller.ts +12 -5
- data/app/javascript/controllers/combobox_controller.ts +270 -39
- data/app/javascript/controllers/command_controller.ts +223 -51
- data/app/javascript/controllers/date_picker_controller.ts +185 -125
- data/app/javascript/controllers/date_range_picker_controller.ts +89 -79
- data/app/javascript/controllers/dialog_controller.ts +59 -57
- data/app/javascript/controllers/dropdown_menu_controller.ts +212 -36
- data/app/javascript/controllers/dropdown_menu_sub_controller.ts +31 -29
- data/app/javascript/controllers/form_field_controller.ts +6 -1
- data/app/javascript/controllers/hover_card_controller.ts +36 -26
- data/app/javascript/controllers/loading_button_controller.ts +6 -1
- data/app/javascript/controllers/popover_controller.ts +42 -65
- data/app/javascript/controllers/progress_controller.ts +9 -3
- data/app/javascript/controllers/radio_group_controller.ts +16 -9
- data/app/javascript/controllers/select_controller.ts +206 -65
- data/app/javascript/controllers/slider_controller.ts +23 -16
- data/app/javascript/controllers/switch_controller.ts +11 -4
- data/app/javascript/controllers/tabs_controller.ts +26 -18
- data/app/javascript/controllers/theme_switcher_controller.ts +6 -1
- data/app/javascript/controllers/toast_container_controller.ts +6 -1
- data/app/javascript/controllers/toast_controller.ts +7 -1
- data/app/javascript/controllers/toggle_controller.ts +28 -0
- data/app/javascript/controllers/toggle_group_controller.ts +28 -0
- data/app/javascript/controllers/tooltip_controller.ts +43 -31
- data/app/javascript/shadcn_phlexcomponents.ts +29 -25
- data/app/javascript/utils/command.ts +544 -0
- data/app/javascript/utils/floating_ui.ts +196 -0
- data/app/javascript/utils/index.ts +417 -0
- data/app/stylesheets/date_picker.css +118 -0
- data/lib/shadcn_phlexcomponents/alias.rb +3 -0
- data/lib/shadcn_phlexcomponents/components/accordion.rb +2 -1
- data/lib/shadcn_phlexcomponents/components/alert_dialog.rb +18 -15
- data/lib/shadcn_phlexcomponents/components/base.rb +14 -0
- data/lib/shadcn_phlexcomponents/components/collapsible.rb +1 -2
- data/lib/shadcn_phlexcomponents/components/combobox.rb +87 -57
- data/lib/shadcn_phlexcomponents/components/command.rb +77 -47
- data/lib/shadcn_phlexcomponents/components/date_picker.rb +25 -81
- data/lib/shadcn_phlexcomponents/components/date_range_picker.rb +21 -4
- data/lib/shadcn_phlexcomponents/components/dialog.rb +14 -12
- data/lib/shadcn_phlexcomponents/components/dropdown_menu.rb +5 -4
- data/lib/shadcn_phlexcomponents/components/dropdown_menu_sub.rb +2 -1
- data/lib/shadcn_phlexcomponents/components/form/form_combobox.rb +64 -0
- data/lib/shadcn_phlexcomponents/components/form.rb +14 -0
- data/lib/shadcn_phlexcomponents/components/hover_card.rb +3 -2
- data/lib/shadcn_phlexcomponents/components/popover.rb +3 -3
- data/lib/shadcn_phlexcomponents/components/select.rb +10 -25
- data/lib/shadcn_phlexcomponents/components/sheet.rb +15 -11
- data/lib/shadcn_phlexcomponents/components/table.rb +1 -1
- data/lib/shadcn_phlexcomponents/components/tabs.rb +1 -1
- data/lib/shadcn_phlexcomponents/components/toast_container.rb +1 -1
- data/lib/shadcn_phlexcomponents/components/toggle.rb +54 -0
- data/lib/shadcn_phlexcomponents/components/tooltip.rb +3 -2
- data/lib/shadcn_phlexcomponents/engine.rb +1 -5
- data/lib/shadcn_phlexcomponents/version.rb +1 -1
- metadata +9 -4
- data/app/javascript/controllers/command_root_controller.ts +0 -355
- data/app/javascript/controllers/dropdown_menu_root_controller.ts +0 -234
- data/app/javascript/utils.ts +0 -437
@@ -1,18 +1,23 @@
|
|
1
1
|
import { Controller } from '@hotwired/stimulus'
|
2
2
|
import { useHover } from 'stimulus-use'
|
3
|
-
import { initFloatingUi
|
3
|
+
import { initFloatingUi } from '../utils/floating_ui'
|
4
|
+
import { showContent, hideContent } from '../utils'
|
4
5
|
|
5
|
-
|
6
|
+
const TooltipController = class extends Controller<HTMLElement> {
|
7
|
+
// targets
|
6
8
|
static targets = ['trigger', 'content', 'contentContainer', 'arrow']
|
7
|
-
static values = {
|
8
|
-
isOpen: Boolean,
|
9
|
-
}
|
10
|
-
|
11
|
-
declare isOpenValue: boolean
|
12
9
|
declare readonly triggerTarget: HTMLElement
|
13
10
|
declare readonly contentTarget: HTMLElement
|
14
11
|
declare readonly contentContainerTarget: HTMLElement
|
15
12
|
declare readonly arrowTarget: HTMLElement
|
13
|
+
|
14
|
+
// values
|
15
|
+
static values = {
|
16
|
+
isOpen: Boolean,
|
17
|
+
}
|
18
|
+
declare isOpenValue: boolean
|
19
|
+
|
20
|
+
// custom properties
|
16
21
|
declare closeTimeout: number
|
17
22
|
declare cleanup: () => void
|
18
23
|
declare DOMKeydownListener: (event: KeyboardEvent) => void
|
@@ -47,22 +52,13 @@ export default class extends Controller<HTMLElement> {
|
|
47
52
|
this.close()
|
48
53
|
}
|
49
54
|
|
50
|
-
onDOMKeydown(event: KeyboardEvent) {
|
51
|
-
if (!this.isOpenValue) return
|
52
|
-
|
53
|
-
const key = event.key
|
54
|
-
|
55
|
-
if (['Escape', 'Enter', ' '].includes(key)) {
|
56
|
-
event.preventDefault()
|
57
|
-
event.stopImmediatePropagation()
|
58
|
-
this.closeImmediately()
|
59
|
-
}
|
60
|
-
}
|
61
|
-
|
62
55
|
isOpenValueChanged(isOpen: boolean) {
|
63
56
|
if (isOpen) {
|
64
|
-
|
65
|
-
|
57
|
+
showContent({
|
58
|
+
content: this.contentTarget,
|
59
|
+
contentContainer: this.contentContainerTarget,
|
60
|
+
})
|
61
|
+
|
66
62
|
this.setupEventListeners()
|
67
63
|
|
68
64
|
this.cleanup = initFloatingUi({
|
@@ -74,25 +70,41 @@ export default class extends Controller<HTMLElement> {
|
|
74
70
|
sideOffset: 8,
|
75
71
|
})
|
76
72
|
} else {
|
77
|
-
|
73
|
+
hideContent({
|
74
|
+
content: this.contentTarget,
|
75
|
+
contentContainer: this.contentContainerTarget,
|
76
|
+
})
|
78
77
|
this.cleanupEventListeners()
|
78
|
+
}
|
79
|
+
}
|
80
|
+
|
81
|
+
disconnect() {
|
82
|
+
this.cleanupEventListeners()
|
83
|
+
}
|
84
|
+
|
85
|
+
protected onDOMKeydown(event: KeyboardEvent) {
|
86
|
+
if (!this.isOpenValue) return
|
87
|
+
|
88
|
+
const key = event.key
|
79
89
|
|
80
|
-
|
81
|
-
|
82
|
-
|
90
|
+
if (['Escape', 'Enter', ' '].includes(key)) {
|
91
|
+
event.preventDefault()
|
92
|
+
event.stopImmediatePropagation()
|
93
|
+
this.closeImmediately()
|
83
94
|
}
|
84
95
|
}
|
85
96
|
|
86
|
-
setupEventListeners() {
|
97
|
+
protected setupEventListeners() {
|
87
98
|
document.addEventListener('keydown', this.DOMKeydownListener)
|
88
99
|
}
|
89
100
|
|
90
|
-
cleanupEventListeners() {
|
101
|
+
protected cleanupEventListeners() {
|
91
102
|
if (this.cleanup) this.cleanup()
|
92
103
|
document.removeEventListener('keydown', this.DOMKeydownListener)
|
93
104
|
}
|
94
|
-
|
95
|
-
disconnect() {
|
96
|
-
this.cleanupEventListeners()
|
97
|
-
}
|
98
105
|
}
|
106
|
+
|
107
|
+
type Tooltip = InstanceType<typeof TooltipController>
|
108
|
+
|
109
|
+
export { TooltipController }
|
110
|
+
export type { Tooltip }
|
@@ -1,33 +1,36 @@
|
|
1
|
-
import AccordionController from './controllers/accordion_controller'
|
2
|
-
import
|
3
|
-
import
|
4
|
-
import
|
5
|
-
import
|
6
|
-
import
|
7
|
-
import
|
8
|
-
import
|
9
|
-
import
|
10
|
-
import
|
11
|
-
import
|
12
|
-
import
|
13
|
-
import
|
14
|
-
import
|
15
|
-
import
|
16
|
-
import
|
17
|
-
import
|
18
|
-
import
|
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'
|
19
20
|
import SidebarController from './controllers/sidebar_controller'
|
20
21
|
import SidebarTriggerController from './controllers/sidebar_trigger_controller'
|
21
|
-
import SliderController from './controllers/slider_controller'
|
22
|
-
import SwitchController from './controllers/switch_controller'
|
23
|
-
import TabsController from './controllers/tabs_controller'
|
24
|
-
import ThemeSwitcherController from './controllers/theme_switcher_controller'
|
25
|
-
import ToastContainerController from './controllers/toast_container_controller'
|
26
|
-
import ToastController from './controllers/toast_controller'
|
27
|
-
import
|
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'
|
28
30
|
|
29
31
|
export default {
|
30
32
|
accordion: AccordionController,
|
33
|
+
'alert-dialog': AlertDialogController,
|
31
34
|
avatar: AvatarController,
|
32
35
|
checkbox: CheckboxController,
|
33
36
|
collapsible: CollapsibleController,
|
@@ -53,5 +56,6 @@ export default {
|
|
53
56
|
'theme-switcher': ThemeSwitcherController,
|
54
57
|
'toast-container': ToastContainerController,
|
55
58
|
toast: ToastController,
|
59
|
+
toggle: ToggleController,
|
56
60
|
tooltip: TooltipController,
|
57
61
|
}
|