@raylang/vue 0.0.0-stage → 0.4.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 (75) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +4 -0
  3. package/README.md +14 -2
  4. package/components/accordion.js +14 -0
  5. package/components/alert.js +9 -0
  6. package/components/app-bar.js +9 -0
  7. package/components/app-shell.js +9 -0
  8. package/components/aspect-ratio.js +9 -0
  9. package/components/attachment.js +13 -0
  10. package/components/avatar.js +9 -0
  11. package/components/badge.js +9 -0
  12. package/components/blockquote.js +9 -0
  13. package/components/bottom-nav.js +14 -0
  14. package/components/breadcrumbs.js +13 -0
  15. package/components/button-group.js +9 -0
  16. package/components/button.js +9 -0
  17. package/components/card.js +9 -0
  18. package/components/carousel.js +9 -0
  19. package/components/center.js +9 -0
  20. package/components/checkbox-group.js +10 -0
  21. package/components/checkbox.js +10 -0
  22. package/components/code.js +9 -0
  23. package/components/color-picker.js +15 -0
  24. package/components/combobox.js +10 -0
  25. package/components/command-palette.js +10 -0
  26. package/components/container.js +9 -0
  27. package/components/date-picker.js +15 -0
  28. package/components/dialog.js +10 -0
  29. package/components/drawer.js +10 -0
  30. package/components/empty-state.js +9 -0
  31. package/components/file-upload.js +9 -0
  32. package/components/grid.js +9 -0
  33. package/components/group.js +9 -0
  34. package/components/icon-button.js +9 -0
  35. package/components/icon.js +9 -0
  36. package/components/indicator.js +9 -0
  37. package/components/input.js +10 -0
  38. package/components/kbd.js +9 -0
  39. package/components/menu.js +22 -0
  40. package/components/nav-link.js +10 -0
  41. package/components/notification.js +13 -0
  42. package/components/number-input.js +10 -0
  43. package/components/pagination.js +10 -0
  44. package/components/password-input.js +9 -0
  45. package/components/path-input.js +9 -0
  46. package/components/popover.js +10 -0
  47. package/components/progress.js +9 -0
  48. package/components/radio.js +14 -0
  49. package/components/scroll-area.js +9 -0
  50. package/components/search.js +10 -0
  51. package/components/segmented-control.js +10 -0
  52. package/components/select.js +10 -0
  53. package/components/separator.js +9 -0
  54. package/components/sidebar.js +13 -0
  55. package/components/skeleton.js +9 -0
  56. package/components/slider.js +10 -0
  57. package/components/spinner.js +9 -0
  58. package/components/split.js +9 -0
  59. package/components/stack.js +9 -0
  60. package/components/stat.js +9 -0
  61. package/components/statusbar.js +13 -0
  62. package/components/stepper.js +14 -0
  63. package/components/switch.js +10 -0
  64. package/components/table.js +9 -0
  65. package/components/tabs.js +18 -0
  66. package/components/textarea.js +10 -0
  67. package/components/theme-toggle.js +9 -0
  68. package/components/timeline.js +13 -0
  69. package/components/toggle-group.js +9 -0
  70. package/components/toggle.js +9 -0
  71. package/components/tooltip.js +9 -0
  72. package/create.js +67 -0
  73. package/index.d.ts +2363 -0
  74. package/index.js +87 -0
  75. package/package.json +32 -4
@@ -0,0 +1,10 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/input";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayInput = /*#__PURE__*/ createComponent("RayInput", "ray-input", {
7
+ properties: ["value", "type", "name", "label", "description", "descriptionPosition", "error", "placeholder", "required", "disabled", "readonly", "size", "radius", "variant"],
8
+ booleans: ["required", "disabled", "readonly"],
9
+ model: { prop: "value", events: ["input"] },
10
+ });
@@ -0,0 +1,9 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/kbd";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayKbd = /*#__PURE__*/ createComponent("RayKbd", "ray-kbd", {
7
+ properties: ["size", "variant"],
8
+ booleans: [],
9
+ });
@@ -0,0 +1,22 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/menu";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayMenu = /*#__PURE__*/ createComponent("RayMenu", "ray-menu", {
7
+ properties: ["open", "placement", "context", "keepOpen", "native", "offset"],
8
+ booleans: ["open", "context", "keepOpen", "native"],
9
+ model: { prop: "open", events: ["ray-open", "ray-close"] },
10
+ });
11
+ export const RayMenuItem = /*#__PURE__*/ createComponent("RayMenuItem", "ray-menu-item", {
12
+ properties: ["value", "disabled", "color"],
13
+ booleans: ["disabled"],
14
+ });
15
+ export const RayMenuLabel = /*#__PURE__*/ createComponent("RayMenuLabel", "ray-menu-label", {
16
+ properties: [],
17
+ booleans: [],
18
+ });
19
+ export const RayMenuDivider = /*#__PURE__*/ createComponent("RayMenuDivider", "ray-menu-divider", {
20
+ properties: [],
21
+ booleans: [],
22
+ });
@@ -0,0 +1,10 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/nav-link";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayNavLink = /*#__PURE__*/ createComponent("RayNavLink", "ray-nav-link", {
7
+ properties: ["label", "description", "href", "active", "opened", "disabled", "variant", "color", "iconOnly"],
8
+ booleans: ["active", "opened", "disabled", "iconOnly"],
9
+ model: { prop: "opened", events: ["ray-toggle"] },
10
+ });
@@ -0,0 +1,13 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/notification";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayNotification = /*#__PURE__*/ createComponent("RayNotification", "ray-notification", {
7
+ properties: ["label", "color", "icon", "loading", "hideClose", "withBorder", "actionLabel"],
8
+ booleans: ["loading", "hideClose", "withBorder"],
9
+ });
10
+ export const RayToaster = /*#__PURE__*/ createComponent("RayToaster", "ray-toaster", {
11
+ properties: ["position", "limit", "visible", "expand", "gap"],
12
+ booleans: ["expand"],
13
+ });
@@ -0,0 +1,10 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/number-input";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayNumberInput = /*#__PURE__*/ createComponent("RayNumberInput", "ray-number-input", {
7
+ properties: ["value", "min", "max", "step", "decimals", "prefix", "suffix", "thousandsSeparator", "decimalSeparator", "clamp", "hideControls", "placeholder", "readonly", "name", "label", "description", "error", "required", "disabled", "size", "radius", "variant", "descriptionPosition"],
8
+ booleans: ["hideControls", "readonly", "required", "disabled"],
9
+ model: { prop: "value", events: ["input"] },
10
+ });
@@ -0,0 +1,10 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/pagination";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayPagination = /*#__PURE__*/ createComponent("RayPagination", "ray-pagination", {
7
+ properties: ["total", "value", "siblings", "boundaries", "withEdges", "hideControls", "color", "size", "radius", "disabled", "label"],
8
+ booleans: ["withEdges", "hideControls", "disabled"],
9
+ model: { prop: "value", events: ["change"] },
10
+ });
@@ -0,0 +1,9 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/password-input";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayPasswordInput = /*#__PURE__*/ createComponent("RayPasswordInput", "ray-password-input", {
7
+ properties: ["visible", "showLabel", "hideLabel", "value", "type", "name", "label", "description", "descriptionPosition", "error", "placeholder", "required", "disabled", "readonly", "size", "radius", "variant"],
8
+ booleans: ["visible", "required", "disabled", "readonly"],
9
+ });
@@ -0,0 +1,9 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/path-input";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayPathInput = /*#__PURE__*/ createComponent("RayPathInput", "ray-path-input", {
7
+ properties: ["mode", "accept", "browseLabel", "dialogTitle", "value", "type", "name", "label", "description", "descriptionPosition", "error", "placeholder", "required", "disabled", "readonly", "size", "radius", "variant"],
8
+ booleans: ["required", "disabled", "readonly"],
9
+ });
@@ -0,0 +1,10 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/popover";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayPopover = /*#__PURE__*/ createComponent("RayPopover", "ray-popover", {
7
+ properties: ["open", "placement", "offset", "width", "matchWidth", "padding", "trapFocus"],
8
+ booleans: ["open", "matchWidth", "trapFocus"],
9
+ model: { prop: "open", events: ["ray-open", "ray-close"] },
10
+ });
@@ -0,0 +1,9 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/progress";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayProgress = /*#__PURE__*/ createComponent("RayProgress", "ray-progress", {
7
+ properties: ["value", "max", "color", "size", "radius", "striped", "animated", "showValue", "label"],
8
+ booleans: ["striped", "animated", "showValue"],
9
+ });
@@ -0,0 +1,14 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/radio";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayRadioGroup = /*#__PURE__*/ createComponent("RayRadioGroup", "ray-radio-group", {
7
+ properties: ["value", "name", "label", "description", "descriptionPosition", "error", "required", "disabled", "orientation", "size", "color", "variant"],
8
+ booleans: ["required", "disabled"],
9
+ model: { prop: "value", events: ["change"] },
10
+ });
11
+ export const RayRadio = /*#__PURE__*/ createComponent("RayRadio", "ray-radio", {
12
+ properties: ["value", "label", "description", "disabled", "color", "size", "variant"],
13
+ booleans: ["disabled"],
14
+ });
@@ -0,0 +1,9 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/scroll-area";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayScrollArea = /*#__PURE__*/ createComponent("RayScrollArea", "ray-scroll-area", {
7
+ properties: ["height", "maxHeight", "orientation", "type", "noShadows", "threshold", "label"],
8
+ booleans: ["noShadows"],
9
+ });
@@ -0,0 +1,10 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/search";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RaySearch = /*#__PURE__*/ createComponent("RaySearch", "ray-search", {
7
+ properties: ["value", "placeholder", "shortcut", "debounce", "name", "label", "disabled", "size", "radius", "variant", "description", "error", "required", "descriptionPosition"],
8
+ booleans: ["disabled", "required"],
9
+ model: { prop: "value", events: ["input"] },
10
+ });
@@ -0,0 +1,10 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/segmented-control";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RaySegmentedControl = /*#__PURE__*/ createComponent("RaySegmentedControl", "ray-segmented-control", {
7
+ properties: ["value", "data", "name", "color", "size", "radius", "fullWidth", "orientation", "disabled"],
8
+ booleans: ["fullWidth", "disabled"],
9
+ model: { prop: "value", events: ["change"] },
10
+ });
@@ -0,0 +1,10 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/select";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RaySelect = /*#__PURE__*/ createComponent("RaySelect", "ray-select", {
7
+ properties: ["value", "data", "placeholder", "open", "name", "label", "description", "descriptionPosition", "error", "required", "disabled", "size", "variant", "radius"],
8
+ booleans: ["open", "required", "disabled"],
9
+ model: { prop: "value", events: ["change"] },
10
+ });
@@ -0,0 +1,9 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/separator";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RaySeparator = /*#__PURE__*/ createComponent("RaySeparator", "ray-separator", {
7
+ properties: ["orientation", "label", "labelPosition", "size", "variant"],
8
+ booleans: [],
9
+ });
@@ -0,0 +1,13 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/sidebar";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RaySidebar = /*#__PURE__*/ createComponent("RaySidebar", "ray-sidebar", {
7
+ properties: ["collapsed", "open", "side", "variant", "width", "collapsedWidth", "breakpoint", "label"],
8
+ booleans: ["collapsed", "open"],
9
+ });
10
+ export const RaySidebarGroup = /*#__PURE__*/ createComponent("RaySidebarGroup", "ray-sidebar-group", {
11
+ properties: ["label"],
12
+ booleans: [],
13
+ });
@@ -0,0 +1,9 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/skeleton";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RaySkeleton = /*#__PURE__*/ createComponent("RaySkeleton", "ray-skeleton", {
7
+ properties: ["width", "height", "circle", "lines", "radius", "animation", "loaded"],
8
+ booleans: ["circle", "loaded"],
9
+ });
@@ -0,0 +1,10 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/slider";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RaySlider = /*#__PURE__*/ createComponent("RaySlider", "ray-slider", {
7
+ properties: ["value", "min", "max", "step", "name", "label", "description", "descriptionPosition", "error", "disabled", "color", "size", "showValue", "unit", "marks", "required", "radius", "variant"],
8
+ booleans: ["disabled", "showValue", "required"],
9
+ model: { prop: "value", events: ["input"] },
10
+ });
@@ -0,0 +1,9 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/spinner";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RaySpinner = /*#__PURE__*/ createComponent("RaySpinner", "ray-spinner", {
7
+ properties: ["color", "size", "label"],
8
+ booleans: [],
9
+ });
@@ -0,0 +1,9 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/split";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RaySplit = /*#__PURE__*/ createComponent("RaySplit", "ray-split", {
7
+ properties: ["orientation", "position", "min", "max", "collapsed", "disabled", "autosave"],
8
+ booleans: ["collapsed", "disabled"],
9
+ });
@@ -0,0 +1,9 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/stack";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayStack = /*#__PURE__*/ createComponent("RayStack", "ray-stack", {
7
+ properties: ["gap", "align", "justify"],
8
+ booleans: [],
9
+ });
@@ -0,0 +1,9 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/stat";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayStat = /*#__PURE__*/ createComponent("RayStat", "ray-stat", {
7
+ properties: ["label", "value", "diff", "diffUnit", "note", "inverse", "plain"],
8
+ booleans: ["inverse", "plain"],
9
+ });
@@ -0,0 +1,13 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/statusbar";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayStatusbar = /*#__PURE__*/ createComponent("RayStatusbar", "ray-statusbar", {
7
+ properties: ["variant"],
8
+ booleans: [],
9
+ });
10
+ export const RayStatusbarItem = /*#__PURE__*/ createComponent("RayStatusbarItem", "ray-statusbar-item", {
11
+ properties: ["action", "color", "label"],
12
+ booleans: ["action"],
13
+ });
@@ -0,0 +1,14 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/stepper";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayStepper = /*#__PURE__*/ createComponent("RayStepper", "ray-stepper", {
7
+ properties: ["active", "orientation", "iconPosition", "allowStepSelect", "linear", "size", "color", "label"],
8
+ booleans: ["allowStepSelect", "linear"],
9
+ model: { prop: "active", events: ["change"] },
10
+ });
11
+ export const RayStep = /*#__PURE__*/ createComponent("RayStep", "ray-step", {
12
+ properties: ["label", "description", "icon", "completedIcon", "loading", "error", "disabled"],
13
+ booleans: ["loading", "disabled"],
14
+ });
@@ -0,0 +1,10 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/switch";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RaySwitch = /*#__PURE__*/ createComponent("RaySwitch", "ray-switch", {
7
+ properties: ["checked", "value", "name", "label", "description", "error", "labelPosition", "color", "size", "disabled", "indeterminate", "required", "variant", "radius", "descriptionPosition"],
8
+ booleans: ["checked", "disabled", "indeterminate", "required"],
9
+ model: { prop: "checked", events: ["change"] },
10
+ });
@@ -0,0 +1,9 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/table";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayTable = /*#__PURE__*/ createComponent("RayTable", "ray-table", {
7
+ properties: ["columns", "data", "rowKey", "selectable", "selection", "sort", "manualSort", "clickableRows", "striped", "withBorder", "withColumnBorders", "stickyHeader", "noHover", "density", "label", "emptyLabel"],
8
+ booleans: ["selectable", "manualSort", "clickableRows", "striped", "withBorder", "withColumnBorders", "stickyHeader", "noHover"],
9
+ });
@@ -0,0 +1,18 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/tabs";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayTabs = /*#__PURE__*/ createComponent("RayTabs", "ray-tabs", {
7
+ properties: ["value", "variant", "orientation", "color", "activation", "grow"],
8
+ booleans: ["grow"],
9
+ model: { prop: "value", events: ["change"] },
10
+ });
11
+ export const RayTab = /*#__PURE__*/ createComponent("RayTab", "ray-tab", {
12
+ properties: ["value", "disabled"],
13
+ booleans: ["disabled"],
14
+ });
15
+ export const RayTabPanel = /*#__PURE__*/ createComponent("RayTabPanel", "ray-tab-panel", {
16
+ properties: ["value"],
17
+ booleans: [],
18
+ });
@@ -0,0 +1,10 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/textarea";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayTextarea = /*#__PURE__*/ createComponent("RayTextarea", "ray-textarea", {
7
+ properties: ["value", "rows", "autosize", "maxRows", "name", "label", "description", "descriptionPosition", "error", "required", "disabled", "readonly", "size", "variant", "radius"],
8
+ booleans: ["autosize", "required", "disabled", "readonly"],
9
+ model: { prop: "value", events: ["input"] },
10
+ });
@@ -0,0 +1,9 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/theme-toggle";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayThemeToggle = /*#__PURE__*/ createComponent("RayThemeToggle", "ray-theme-toggle", {
7
+ properties: ["size"],
8
+ booleans: [],
9
+ });
@@ -0,0 +1,13 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/timeline";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayTimeline = /*#__PURE__*/ createComponent("RayTimeline", "ray-timeline", {
7
+ properties: ["active", "align", "bulletSize", "lineWidth", "color", "reverseActive"],
8
+ booleans: ["reverseActive"],
9
+ });
10
+ export const RayTimelineItem = /*#__PURE__*/ createComponent("RayTimelineItem", "ray-timeline-item", {
11
+ properties: ["label", "time", "icon", "color", "lineVariant"],
12
+ booleans: [],
13
+ });
@@ -0,0 +1,9 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/toggle-group";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayToggleGroup = /*#__PURE__*/ createComponent("RayToggleGroup", "ray-toggle-group", {
7
+ properties: ["type", "value", "name", "required", "disabled", "spaced", "variant", "color", "size", "radius", "square", "orientation", "fullWidth", "label"],
8
+ booleans: ["required", "disabled", "spaced", "square", "fullWidth"],
9
+ });
@@ -0,0 +1,9 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/toggle";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayToggle = /*#__PURE__*/ createComponent("RayToggle", "ray-toggle", {
7
+ properties: ["pressed", "variant", "square", "label", "gradient", "color", "size", "radius", "type", "disabled", "loading", "fullWidth", "href", "target", "name", "value"],
8
+ booleans: ["pressed", "square", "disabled", "loading", "fullWidth"],
9
+ });
@@ -0,0 +1,9 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/tooltip";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayTooltip = /*#__PURE__*/ createComponent("RayTooltip", "ray-tooltip", {
7
+ properties: ["label", "placement", "openDelay", "closeDelay", "color", "disabled", "open", "offset"],
8
+ booleans: ["disabled", "open"],
9
+ });
package/create.js ADDED
@@ -0,0 +1,67 @@
1
+ // Vue 3 wrapper factory for ray-elements custom elements.
2
+ //
3
+ // Declared properties are assigned as DOM properties after mount and every
4
+ // update. With a `model` ({ prop, events }), the wrapper supports v-model:
5
+ // modelValue -> element[prop], and the events emit update:modelValue with
6
+ // the element's new value. Attributes and listeners (@ray-select, @click,
7
+ // class, slot…) fall through to the element: Vue maps onRaySelect to the
8
+ // "ray-select" event on its own.
9
+
10
+ import { defineComponent, h, mergeProps, onMounted, onUpdated, ref } from "vue";
11
+
12
+ /**
13
+ * @param {string} name component name (RayInput)
14
+ * @param {string} tagName custom element tag (ray-input)
15
+ * @param {{ properties?: string[], booleans?: string[], model?: { prop: string, events: string[] } }} options
16
+ * booleans: the boolean properties, so a bare attribute (<RayInput required>) means true
17
+ */
18
+ export function createComponent(name, tagName, { properties = [], booleans = [], model } = {}) {
19
+ const props = {};
20
+ // Boolean casting ("" -> true); default undefined keeps an absent prop off the element.
21
+ for (const p of properties) props[p] = { type: booleans.includes(p) ? Boolean : null, default: undefined };
22
+ if (model) props.modelValue = { type: null, default: undefined };
23
+
24
+ return defineComponent({
25
+ name,
26
+ inheritAttrs: false,
27
+ props,
28
+ emits: model ? ["update:modelValue"] : [],
29
+ setup(p, { attrs, slots, emit, expose }) {
30
+ const el = ref(null);
31
+ const sync = () => {
32
+ const e = el.value;
33
+ if (!e) return;
34
+ for (const key of properties) {
35
+ if (p[key] !== undefined && !Object.is(e[key], p[key])) e[key] = p[key];
36
+ }
37
+ if (model && p.modelValue !== undefined && !Object.is(e[model.prop], p.modelValue)) {
38
+ e[model.prop] = p.modelValue;
39
+ }
40
+ };
41
+ onMounted(sync);
42
+ onUpdated(sync);
43
+ expose({ el });
44
+
45
+ const listeners = {};
46
+ if (model) {
47
+ for (const type of model.events) {
48
+ const key = "on" + type.split("-").map((s) => s[0].toUpperCase() + s.slice(1)).join("");
49
+ listeners[key] = (event) => {
50
+ // Only the element's own event (not one bubbling from a child).
51
+ if (event.target === el.value) emit("update:modelValue", el.value[model.prop]);
52
+ };
53
+ }
54
+ }
55
+ return () => h(tagName, mergeProps(attrs, listeners, { ref: el }), slots.default?.());
56
+ },
57
+ });
58
+ }
59
+
60
+ /** A plugin registering every component globally: app.use(RayElements). */
61
+ export function createPlugin(components) {
62
+ return {
63
+ install(app) {
64
+ for (const [name, component] of Object.entries(components)) app.component(name, component);
65
+ },
66
+ };
67
+ }