@rotki/ui-library 2.12.1 → 2.13.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.
- package/dist/components/accordions/accordion/RuiAccordion.vue.d.ts +6 -14
- package/dist/components/accordions/accordion/RuiAccordion.vue.js +3 -4
- package/dist/components/accordions/accordion/RuiAccordion.vue.js.map +1 -1
- package/dist/components/accordions/accordions/RuiAccordions.vue.d.ts +10 -9
- package/dist/components/accordions/accordions/RuiAccordions.vue.js +27 -26
- package/dist/components/accordions/accordions/RuiAccordions.vue.js.map +1 -1
- package/dist/components/alerts/RuiAlert.vue.d.ts +7 -17
- package/dist/components/alerts/RuiAlert.vue2.js +8 -16
- package/dist/components/alerts/RuiAlert.vue2.js.map +1 -1
- package/dist/components/buttons/button/RuiButton.vue.d.ts +5 -7
- package/dist/components/buttons/button/RuiButton.vue2.js +19 -20
- package/dist/components/buttons/button/RuiButton.vue2.js.map +1 -1
- package/dist/components/buttons/button-group/RuiButtonGroup.vue.d.ts +6 -5
- package/dist/components/buttons/button-group/RuiButtonGroup.vue2.js +42 -41
- package/dist/components/buttons/button-group/RuiButtonGroup.vue2.js.map +1 -1
- package/dist/components/calendar/RuiCalendar.vue.d.ts +1 -6
- package/dist/components/calendar/RuiCalendar.vue.js +7 -8
- package/dist/components/calendar/RuiCalendar.vue.js.map +1 -1
- package/dist/components/calendar/RuiCalendarGrid.vue.js +1 -1
- package/dist/components/calendar/RuiCalendarGrid.vue2.js +20 -18
- package/dist/components/calendar/RuiCalendarGrid.vue2.js.map +1 -1
- package/dist/components/calendar/RuiCalendarHeader.vue.js +1 -1
- package/dist/components/calendar/RuiCalendarHeader.vue2.js +3 -4
- package/dist/components/calendar/RuiCalendarHeader.vue2.js.map +1 -1
- package/dist/components/calendar/RuiCalendarMenu.vue.js +1 -1
- package/dist/components/calendar/RuiCalendarMenu.vue2.js +48 -40
- package/dist/components/calendar/RuiCalendarMenu.vue2.js.map +1 -1
- package/dist/components/cards/RuiCard.vue.d.ts +9 -24
- package/dist/components/cards/RuiCard.vue2.js +7 -7
- package/dist/components/cards/RuiCard.vue2.js.map +1 -1
- package/dist/components/cards/RuiCardHeader.vue.d.ts +5 -10
- package/dist/components/cards/RuiCardHeader.vue2.js +1 -1
- package/dist/components/cards/RuiCardHeader.vue2.js.map +1 -1
- package/dist/components/chips/RuiChip.vue.d.ts +7 -21
- package/dist/components/chips/RuiChip.vue2.js +16 -21
- package/dist/components/chips/RuiChip.vue2.js.map +1 -1
- package/dist/components/color-picker/RuiColorBoard.vue.d.ts +1 -1
- package/dist/components/color-picker/RuiColorBoard.vue2.js +19 -19
- package/dist/components/color-picker/RuiColorBoard.vue2.js.map +1 -1
- package/dist/components/color-picker/RuiColorDisplay.vue.js +3 -5
- package/dist/components/color-picker/RuiColorDisplay.vue.js.map +1 -1
- package/dist/components/color-picker/RuiColorHue.vue2.js +17 -14
- package/dist/components/color-picker/RuiColorHue.vue2.js.map +1 -1
- package/dist/components/color-picker/RuiColorInput.vue.js +9 -7
- package/dist/components/color-picker/RuiColorInput.vue.js.map +1 -1
- package/dist/components/color-picker/RuiColorPicker.vue.d.ts +7 -9
- package/dist/components/color-picker/RuiColorPicker.vue.js +23 -14
- package/dist/components/color-picker/RuiColorPicker.vue.js.map +1 -1
- package/dist/components/color-picker/utils.js +22 -5
- package/dist/components/color-picker/utils.js.map +1 -1
- package/dist/components/date-time-picker/RuiDateTimePicker.vue.d.ts +2 -44
- package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js +75 -79
- package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js.map +1 -1
- package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue.js +1 -1
- package/dist/components/date-time-picker/dayjs-setup.d.ts +1 -0
- package/dist/components/date-time-picker/dayjs-setup.js +8 -0
- package/dist/components/date-time-picker/dayjs-setup.js.map +1 -0
- package/dist/components/date-time-picker/segment-config.d.ts +14 -0
- package/dist/components/date-time-picker/segment-config.js +23 -0
- package/dist/components/date-time-picker/segment-config.js.map +1 -0
- package/dist/components/date-time-picker/segment-utils.d.ts +5 -0
- package/dist/components/date-time-picker/segment-utils.js +36 -0
- package/dist/components/date-time-picker/segment-utils.js.map +1 -0
- package/dist/components/date-time-picker/use-date-time-selection.d.ts +1 -0
- package/dist/components/date-time-picker/use-date-time-selection.js +1 -0
- package/dist/components/date-time-picker/use-date-time-selection.js.map +1 -1
- package/dist/components/date-time-picker/use-keyboard-handler.d.ts +4 -8
- package/dist/components/date-time-picker/use-keyboard-handler.js +9 -54
- package/dist/components/date-time-picker/use-keyboard-handler.js.map +1 -1
- package/dist/components/date-time-picker/utils.d.ts +1 -0
- package/dist/components/date-time-picker/utils.js +1 -0
- package/dist/components/date-time-picker/utils.js.map +1 -1
- package/dist/components/divider/RuiDivider.vue.d.ts +1 -3
- package/dist/components/divider/RuiDivider.vue.js +6 -3
- package/dist/components/divider/RuiDivider.vue.js.map +1 -1
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue.d.ts +10 -1138
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js +153 -160
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js.map +1 -1
- package/dist/components/forms/checkbox/RuiCheckbox.vue.d.ts +15 -24
- package/dist/components/forms/checkbox/RuiCheckbox.vue2.js +32 -32
- package/dist/components/forms/checkbox/RuiCheckbox.vue2.js.map +1 -1
- package/dist/components/forms/radio-button/radio/RuiRadio.vue.d.ts +2 -2
- package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js +19 -22
- package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js.map +1 -1
- package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue.d.ts +4 -2
- package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js +13 -16
- package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js.map +1 -1
- package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.d.ts +7 -13
- package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js +10 -9
- package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js.map +1 -1
- package/dist/components/forms/select/RuiMenuSelect.vue.d.ts +10 -785
- package/dist/components/forms/select/RuiMenuSelect.vue2.js +60 -56
- package/dist/components/forms/select/RuiMenuSelect.vue2.js.map +1 -1
- package/dist/components/forms/select/RuiSimpleSelect.vue.d.ts +11 -10
- package/dist/components/forms/select/RuiSimpleSelect.vue2.js +21 -26
- package/dist/components/forms/select/RuiSimpleSelect.vue2.js.map +1 -1
- package/dist/components/forms/slider/RuiSlider.vue.d.ts +10 -26
- package/dist/components/forms/slider/RuiSlider.vue2.js +45 -48
- package/dist/components/forms/slider/RuiSlider.vue2.js.map +1 -1
- package/dist/components/forms/switch/RuiSwitch.vue.d.ts +12 -20
- package/dist/components/forms/switch/RuiSwitch.vue2.js +22 -21
- package/dist/components/forms/switch/RuiSwitch.vue2.js.map +1 -1
- package/dist/components/forms/text-area/RuiTextArea.vue.d.ts +5 -30
- package/dist/components/forms/text-area/RuiTextArea.vue2.js +47 -83
- package/dist/components/forms/text-area/RuiTextArea.vue2.js.map +1 -1
- package/dist/components/forms/text-field/RuiTextField.vue.d.ts +10 -30
- package/dist/components/forms/text-field/RuiTextField.vue2.js +36 -67
- package/dist/components/forms/text-field/RuiTextField.vue2.js.map +1 -1
- package/dist/components/helpers/RuiFormTextDetail.vue.d.ts +1 -5
- package/dist/components/helpers/RuiFormTextDetail.vue.js +5 -9
- package/dist/components/helpers/RuiFormTextDetail.vue.js.map +1 -1
- package/dist/components/icons/LazyIcon.vue.d.ts +1 -3
- package/dist/components/icons/RuiIcon.vue.d.ts +1 -4
- package/dist/components/icons/RuiIcon.vue2.js +11 -14
- package/dist/components/icons/RuiIcon.vue2.js.map +1 -1
- package/dist/components/index.d.ts +4 -4
- package/dist/components/loaders/RuiSkeletonBase.vue.d.ts +1 -3
- package/dist/components/loaders/RuiSkeletonBase.vue2.js +2 -2
- package/dist/components/loaders/RuiSkeletonBase.vue2.js.map +1 -1
- package/dist/components/loaders/RuiSkeletonLoader.vue.d.ts +1 -4
- package/dist/components/loaders/RuiSkeletonLoader.vue2.js +2 -2
- package/dist/components/loaders/RuiSkeletonLoader.vue2.js.map +1 -1
- package/dist/components/logos/RuiLogo.vue.d.ts +1 -7
- package/dist/components/logos/RuiLogo.vue.js +13 -13
- package/dist/components/logos/RuiLogo.vue.js.map +1 -1
- package/dist/components/overlays/badge/RuiBadge.vue.d.ts +5 -20
- package/dist/components/overlays/badge/RuiBadge.vue2.js +11 -13
- package/dist/components/overlays/badge/RuiBadge.vue2.js.map +1 -1
- package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.d.ts +10 -5
- package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.js +18 -7
- package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.js.map +1 -1
- package/dist/components/overlays/dialog/RuiDialog.vue.d.ts +22 -27
- package/dist/components/overlays/dialog/RuiDialog.vue2.js +90 -67
- package/dist/components/overlays/dialog/RuiDialog.vue2.js.map +1 -1
- package/dist/components/overlays/menu/RuiMenu.vue.d.ts +24 -35
- package/dist/components/overlays/menu/RuiMenu.vue2.js +71 -78
- package/dist/components/overlays/menu/RuiMenu.vue2.js.map +1 -1
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue.d.ts +23 -30
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue2.js +78 -49
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue2.js.map +1 -1
- package/dist/components/overlays/notification/RuiNotification.vue.d.ts +12 -12
- package/dist/components/overlays/notification/RuiNotification.vue.js +27 -22
- package/dist/components/overlays/notification/RuiNotification.vue.js.map +1 -1
- package/dist/components/overlays/tooltip/RuiTooltip.vue.d.ts +7 -18
- package/dist/components/overlays/tooltip/RuiTooltip.vue2.js +16 -9
- package/dist/components/overlays/tooltip/RuiTooltip.vue2.js.map +1 -1
- package/dist/components/progress/RuiProgress.vue.d.ts +8 -10
- package/dist/components/progress/RuiProgress.vue2.js +18 -24
- package/dist/components/progress/RuiProgress.vue2.js.map +1 -1
- package/dist/components/steppers/RuiFooterStepper.vue.d.ts +10 -11
- package/dist/components/steppers/RuiFooterStepper.vue2.js +33 -26
- package/dist/components/steppers/RuiFooterStepper.vue2.js.map +1 -1
- package/dist/components/steppers/RuiStepper.vue.d.ts +6 -15
- package/dist/components/steppers/RuiStepper.vue2.js +39 -36
- package/dist/components/steppers/RuiStepper.vue2.js.map +1 -1
- package/dist/components/steppers/RuiStepperCustomIcon.vue.d.ts +1 -3
- package/dist/components/steppers/RuiStepperCustomIcon.vue2.js +2 -2
- package/dist/components/steppers/RuiStepperCustomIcon.vue2.js.map +1 -1
- package/dist/components/steppers/RuiStepperIcon.vue.d.ts +1 -3
- package/dist/components/steppers/RuiStepperIcon.vue2.js +2 -2
- package/dist/components/steppers/RuiStepperIcon.vue2.js.map +1 -1
- package/dist/components/tables/RuiDataTable.vue.d.ts +29 -81
- package/dist/components/tables/RuiDataTable.vue2.js +196 -601
- package/dist/components/tables/RuiDataTable.vue2.js.map +1 -1
- package/dist/components/tables/RuiDataTable.vue3.js +24 -27
- package/dist/components/tables/RuiDataTable.vue3.js.map +1 -1
- package/dist/components/tables/RuiExpandButton.vue.d.ts +3 -6
- package/dist/components/tables/RuiExpandButton.vue2.js +4 -2
- package/dist/components/tables/RuiExpandButton.vue2.js.map +1 -1
- package/dist/components/tables/RuiTableHead.vue.d.ts +4 -7
- package/dist/components/tables/RuiTableHead.vue2.js +20 -20
- package/dist/components/tables/RuiTableHead.vue2.js.map +1 -1
- package/dist/components/tables/RuiTablePagination.vue.d.ts +10 -10
- package/dist/components/tables/RuiTablePagination.vue2.js +27 -19
- package/dist/components/tables/RuiTablePagination.vue2.js.map +1 -1
- package/dist/components/tabs/tab/RuiTab.vue.d.ts +3 -18
- package/dist/components/tabs/tab/RuiTab.vue2.js +84 -52
- package/dist/components/tabs/tab/RuiTab.vue2.js.map +1 -1
- package/dist/components/tabs/tab-item/RuiTabItem.vue.d.ts +3 -11
- package/dist/components/tabs/tab-item/RuiTabItem.vue2.js +3 -2
- package/dist/components/tabs/tab-item/RuiTabItem.vue2.js.map +1 -1
- package/dist/components/tabs/tab-items/RuiTabItems.vue.d.ts +2 -5
- package/dist/components/tabs/tab-items/RuiTabItems.vue2.js +18 -18
- package/dist/components/tabs/tab-items/RuiTabItems.vue2.js.map +1 -1
- package/dist/components/tabs/tabs/RuiTabs.vue.d.ts +10 -14
- package/dist/components/tabs/tabs/RuiTabs.vue2.js +101 -94
- package/dist/components/tabs/tabs/RuiTabs.vue2.js.map +1 -1
- package/dist/components/time-picker/RuiTimePicker.vue.d.ts +1 -4
- package/dist/components/time-picker/RuiTimePicker.vue2.js +88 -38
- package/dist/components/time-picker/RuiTimePicker.vue2.js.map +1 -1
- package/dist/composables/breakpoint.js +8 -13
- package/dist/composables/breakpoint.js.map +1 -1
- package/dist/composables/dropdown-menu.d.ts +7 -4
- package/dist/composables/dropdown-menu.js +73 -50
- package/dist/composables/dropdown-menu.js.map +1 -1
- package/dist/composables/forms/auto-complete/focus.d.ts +7 -5
- package/dist/composables/forms/auto-complete/focus.js +28 -17
- package/dist/composables/forms/auto-complete/focus.js.map +1 -1
- package/dist/composables/forms/auto-complete/index.d.ts +0 -9
- package/dist/composables/forms/auto-complete/keyboard-navigation.d.ts +8 -3
- package/dist/composables/forms/auto-complete/keyboard-navigation.js +11 -5
- package/dist/composables/forms/auto-complete/keyboard-navigation.js.map +1 -1
- package/dist/composables/forms/auto-complete/search.d.ts +7 -0
- package/dist/composables/forms/auto-complete/search.js +10 -8
- package/dist/composables/forms/auto-complete/search.js.map +1 -1
- package/dist/composables/forms/auto-complete/value.d.ts +4 -0
- package/dist/composables/forms/auto-complete/value.js +24 -42
- package/dist/composables/forms/auto-complete/value.js.map +1 -1
- package/dist/composables/forms/use-label-with-quote.d.ts +2 -0
- package/dist/composables/forms/use-label-with-quote.js +14 -0
- package/dist/composables/forms/use-label-with-quote.js.map +1 -0
- package/dist/composables/forms/use-prepend-append-width.d.ts +6 -0
- package/dist/composables/forms/use-prepend-append-width.js +25 -0
- package/dist/composables/forms/use-prepend-append-width.js.map +1 -0
- package/dist/composables/icons.js +1 -1
- package/dist/composables/icons.js.map +1 -1
- package/dist/composables/popper.js +63 -49
- package/dist/composables/popper.js.map +1 -1
- package/dist/composables/sticky-header.d.ts +7 -5
- package/dist/composables/sticky-header.js +51 -41
- package/dist/composables/sticky-header.js.map +1 -1
- package/dist/composables/tables/data-table/columns.d.ts +25 -0
- package/dist/composables/tables/data-table/columns.js +54 -0
- package/dist/composables/tables/data-table/columns.js.map +1 -0
- package/dist/composables/tables/data-table/expansion.d.ts +17 -0
- package/dist/composables/tables/data-table/expansion.js +38 -0
- package/dist/composables/tables/data-table/expansion.js.map +1 -0
- package/dist/composables/tables/data-table/grouping.d.ts +29 -0
- package/dist/composables/tables/data-table/grouping.js +136 -0
- package/dist/composables/tables/data-table/grouping.js.map +1 -0
- package/dist/composables/tables/data-table/pagination.d.ts +33 -0
- package/dist/composables/tables/data-table/pagination.js +119 -0
- package/dist/composables/tables/data-table/pagination.js.map +1 -0
- package/dist/composables/tables/data-table/selection.d.ts +29 -0
- package/dist/composables/tables/data-table/selection.js +164 -0
- package/dist/composables/tables/data-table/selection.js.map +1 -0
- package/dist/composables/tables/data-table/sort.d.ts +32 -0
- package/dist/composables/tables/data-table/sort.js +136 -0
- package/dist/composables/tables/data-table/sort.js.map +1 -0
- package/dist/composables/tables/data-table/types.d.ts +14 -0
- package/dist/composables/tables/data-table/types.js +11 -0
- package/dist/composables/tables/data-table/types.js.map +1 -0
- package/dist/composables/theme.js +5 -21
- package/dist/composables/theme.js.map +1 -1
- package/dist/composables/timeout-manager.d.ts +4 -2
- package/dist/composables/timeout-manager.js +2 -1
- package/dist/composables/timeout-manager.js.map +1 -1
- package/dist/icons/icons_1.d.ts +15 -15
- package/dist/icons/icons_1.js +123 -123
- package/dist/icons/icons_1.js.map +1 -1
- package/dist/icons/icons_2.d.ts +46 -46
- package/dist/icons/icons_2.js +301 -301
- package/dist/icons/icons_2.js.map +1 -1
- package/dist/icons/icons_3.d.ts +43 -43
- package/dist/icons/icons_3.js +252 -252
- package/dist/icons/icons_3.js.map +1 -1
- package/dist/icons/icons_4.d.ts +72 -2
- package/dist/icons/icons_4.js +368 -18
- package/dist/icons/icons_4.js.map +1 -1
- package/dist/icons/index.d.ts +1 -1
- package/dist/icons/index.js +1 -1
- package/dist/icons/index.js.map +1 -1
- package/dist/index.js +105 -42
- package/dist/index.js.map +1 -1
- package/dist/style.css +189 -162
- package/dist/theme/index.js +15 -1
- package/dist/theme/index.js.map +1 -1
- package/dist/utils/assert.d.ts +1 -1
- package/dist/utils/assert.js.map +1 -1
- package/dist/utils/form-text-detail.d.ts +9 -8
- package/dist/utils/form-text-detail.js +1 -2
- package/dist/utils/form-text-detail.js.map +1 -1
- package/dist/utils/helpers.d.ts +4 -32
- package/dist/utils/helpers.js +8 -9
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/is-equal.d.ts +1 -1
- package/dist/utils/is-equal.js +5 -3
- package/dist/utils/is-equal.js.map +1 -1
- package/dist/vite-plugin/index.js +4 -4
- package/dist/vite-plugin/index.js.map +1 -1
- package/dist/vite-plugin/scanner.js +3 -3
- package/dist/vite-plugin/scanner.js.map +1 -1
- package/dist/web-types.json +390 -371
- package/package.json +47 -44
- package/dist/utils/generate-id.d.ts +0 -5
- package/dist/utils/generate-id.js +0 -21
- package/dist/utils/generate-id.js.map +0 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { defineComponent, reactive, ref,
|
|
1
|
+
import { defineComponent, useTemplateRef, reactive, ref, getCurrentInstance, computed, onMounted, openBlock, createElementBlock, mergeProps, unref, createElementVNode, normalizeClass, normalizeStyle } from "vue";
|
|
2
2
|
import { get, set, clamp } from "@vueuse/shared";
|
|
3
3
|
import { useElementDrag, Color } from "./utils.js";
|
|
4
4
|
import { whenever } from "@vueuse/core";
|
|
5
|
+
const _hoisted_1 = ["aria-valuetext"];
|
|
5
6
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
6
7
|
...{
|
|
7
8
|
name: "RuiColorBoard",
|
|
@@ -13,32 +14,28 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
13
14
|
},
|
|
14
15
|
emits: ["update:board"],
|
|
15
16
|
setup(__props, { emit: __emit }) {
|
|
16
|
-
const props = __props;
|
|
17
17
|
const emit = __emit;
|
|
18
|
-
|
|
19
|
-
return new Color({ h: hue, s: 1, v: 1 }).hexString;
|
|
20
|
-
}
|
|
18
|
+
const wrapper = useTemplateRef("wrapper");
|
|
21
19
|
const state = reactive({
|
|
22
|
-
hexString: hueToHex(
|
|
23
|
-
saturation:
|
|
24
|
-
brightness:
|
|
20
|
+
hexString: hueToHex(__props.color.hue),
|
|
21
|
+
saturation: __props.color.saturation,
|
|
22
|
+
brightness: __props.color.brightness
|
|
25
23
|
});
|
|
26
24
|
const cursorTop = ref(0);
|
|
27
25
|
const cursorLeft = ref(0);
|
|
26
|
+
const instance = getCurrentInstance();
|
|
27
|
+
const { handleClick, onMouseDown } = useElementDrag(emitColor);
|
|
28
28
|
const cursorStyle = computed(() => ({
|
|
29
29
|
top: `${get(cursorTop) * 100}%`,
|
|
30
30
|
left: `${get(cursorLeft) * 100}%`
|
|
31
31
|
}));
|
|
32
|
-
|
|
32
|
+
function hueToHex(hue) {
|
|
33
|
+
return new Color({ h: hue, s: 1, v: 1 }).hexString;
|
|
34
|
+
}
|
|
33
35
|
function updatePosition() {
|
|
34
36
|
set(cursorLeft, state.saturation);
|
|
35
37
|
set(cursorTop, 1 - state.brightness);
|
|
36
38
|
}
|
|
37
|
-
const instance = getCurrentInstance();
|
|
38
|
-
const {
|
|
39
|
-
handleClick,
|
|
40
|
-
onMouseDown
|
|
41
|
-
} = useElementDrag(emitColor);
|
|
42
39
|
function emitColor(x, y) {
|
|
43
40
|
if (!instance)
|
|
44
41
|
return;
|
|
@@ -59,11 +56,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
59
56
|
state.brightness = brightness;
|
|
60
57
|
emit("update:board", { saturation, brightness });
|
|
61
58
|
}
|
|
62
|
-
onMounted(() => {
|
|
63
|
-
updatePosition();
|
|
64
|
-
});
|
|
65
59
|
whenever(
|
|
66
|
-
() =>
|
|
60
|
+
() => __props.color,
|
|
67
61
|
(value) => {
|
|
68
62
|
state.hexString = hueToHex(value.hue);
|
|
69
63
|
state.saturation = value.saturation;
|
|
@@ -72,10 +66,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
72
66
|
},
|
|
73
67
|
{ deep: true }
|
|
74
68
|
);
|
|
69
|
+
onMounted(() => {
|
|
70
|
+
updatePosition();
|
|
71
|
+
});
|
|
75
72
|
return (_ctx, _cache) => {
|
|
76
73
|
return openBlock(), createElementBlock("div", mergeProps({
|
|
77
74
|
ref_key: "wrapper",
|
|
78
75
|
ref: wrapper,
|
|
76
|
+
role: "slider",
|
|
77
|
+
"aria-label": "Color saturation and brightness",
|
|
78
|
+
"aria-valuetext": `Saturation ${Math.round(unref(state).saturation * 100)}%, Brightness ${Math.round(unref(state).brightness * 100)}%`,
|
|
79
79
|
class: ["rui-color-board", _ctx.$style.saturation]
|
|
80
80
|
}, _ctx.$attrs, {
|
|
81
81
|
style: { backgroundColor: unref(state).hexString },
|
|
@@ -92,7 +92,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
92
92
|
class: normalizeClass(_ctx.$style.cursor),
|
|
93
93
|
style: normalizeStyle(unref(cursorStyle))
|
|
94
94
|
}, null, 6)
|
|
95
|
-
], 16);
|
|
95
|
+
], 16, _hoisted_1);
|
|
96
96
|
};
|
|
97
97
|
}
|
|
98
98
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuiColorBoard.vue2.js","sources":["../../../src/components/color-picker/RuiColorBoard.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { clamp } from '@vueuse/shared';\nimport { Color, useElementDrag } from './utils';\n\ndefineOptions({\n name: 'RuiColorBoard',\n inheritAttrs: false,\n});\n\nconst
|
|
1
|
+
{"version":3,"file":"RuiColorBoard.vue2.js","sources":["../../../src/components/color-picker/RuiColorBoard.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { clamp } from '@vueuse/shared';\nimport { Color, useElementDrag } from './utils';\n\ndefineOptions({\n name: 'RuiColorBoard',\n inheritAttrs: false,\n});\n\nconst { color } = defineProps<{\n color: Color;\n}>();\n\nconst emit = defineEmits<{\n 'update:board': [event: { saturation: number; brightness: number }];\n}>();\n\nconst wrapper = useTemplateRef<HTMLElement>('wrapper');\n\nconst state = reactive({\n hexString: hueToHex(color.hue),\n saturation: color.saturation,\n brightness: color.brightness,\n});\n\nconst cursorTop = ref<number>(0);\nconst cursorLeft = ref<number>(0);\n\nconst instance = getCurrentInstance();\n\nconst { handleClick, onMouseDown } = useElementDrag(emitColor);\n\nconst cursorStyle = computed<{ top: string; left: string }>(() => ({\n top: `${get(cursorTop) * 100}%`,\n left: `${get(cursorLeft) * 100}%`,\n}));\n\nfunction hueToHex(hue: number): string {\n return new Color({ h: hue, s: 1, v: 1 }).hexString;\n}\n\nfunction updatePosition(): void {\n set(cursorLeft, state.saturation);\n set(cursorTop, 1 - state.brightness);\n}\n\nfunction emitColor(x: number, y: number): void {\n if (!instance)\n return;\n\n const el = instance.vnode.el;\n const rect = el?.getBoundingClientRect();\n\n if (!rect)\n return;\n\n const { width, height, left, top } = rect;\n let calculatedX = x - left;\n let calculatedY = y - top;\n\n calculatedX = clamp(calculatedX, 0, width);\n calculatedY = clamp(calculatedY, 0, height);\n\n const saturation = calculatedX / width;\n const brightness = clamp(-(calculatedY / height) + 1, 0, 1);\n\n set(cursorLeft, calculatedX / width);\n set(cursorTop, calculatedY / height);\n\n state.saturation = saturation;\n state.brightness = brightness;\n\n emit('update:board', { saturation, brightness });\n}\n\nwhenever(\n () => color,\n (value) => {\n state.hexString = hueToHex(value.hue);\n state.saturation = value.saturation;\n state.brightness = value.brightness;\n updatePosition();\n },\n { deep: true },\n);\n\nonMounted(() => {\n updatePosition();\n});\n</script>\n\n<template>\n <div\n ref=\"wrapper\"\n role=\"slider\"\n aria-label=\"Color saturation and brightness\"\n :aria-valuetext=\"`Saturation ${Math.round(state.saturation * 100)}%, Brightness ${Math.round(state.brightness * 100)}%`\"\n class=\"rui-color-board\"\n :class=\"$style.saturation\"\n v-bind=\"$attrs\"\n :style=\"{ backgroundColor: state.hexString }\"\n @click=\"handleClick($event)\"\n @mousedown=\"onMouseDown($event)\"\n >\n <div :class=\"$style.saturation__white\" />\n <div :class=\"$style.saturation__black\" />\n <div\n :class=\"$style.cursor\"\n :style=\"cursorStyle\"\n />\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.saturation {\n @apply relative w-full h-40 overflow-hidden cursor-pointer;\n\n &__white,\n &__black {\n @apply absolute top-0 left-0 right-0 bottom-0 to-transparent;\n }\n\n &__black {\n @apply bg-gradient-to-t from-black;\n }\n\n &__white {\n @apply bg-gradient-to-r from-white;\n }\n}\n\n.cursor {\n @apply absolute w-5 h-5 transform -translate-x-1/2 -translate-y-1/2 border-2 border-white shadow rounded-full;\n\n &:after {\n content: '';\n @apply absolute w-full h-full rounded-full border-2 border-black/15;\n }\n}\n</style>\n"],"names":["_openBlock","_createElementBlock","_mergeProps","_unref","$style","$attrs","_createElementVNode","_normalizeClass"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent,
|
|
1
|
+
import { defineComponent, toRef, openBlock, createBlock, mergeProps, withCtx, createElementVNode, normalizeClass, unref, createElementBlock, createCommentVNode, normalizeStyle } from "vue";
|
|
2
2
|
import RuiTooltip from "../overlays/tooltip/RuiTooltip.vue.js";
|
|
3
3
|
import { useClipboard } from "@vueuse/core";
|
|
4
4
|
const _hoisted_1 = {
|
|
@@ -15,9 +15,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
15
15
|
color: {}
|
|
16
16
|
},
|
|
17
17
|
setup(__props) {
|
|
18
|
-
const
|
|
19
|
-
const { color } = toRefs(props);
|
|
20
|
-
const { copy, copied } = useClipboard({ source: color });
|
|
18
|
+
const { copy, copied } = useClipboard({ source: toRef(() => __props.color) });
|
|
21
19
|
return (_ctx, _cache) => {
|
|
22
20
|
return openBlock(), createBlock(RuiTooltip, mergeProps({
|
|
23
21
|
popper: { placement: "top" },
|
|
@@ -28,7 +26,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
28
26
|
createElementVNode("div", {
|
|
29
27
|
class: "w-8 h-8 min-w-8 min-h-8 rounded-full cursor-pointer",
|
|
30
28
|
"data-cy": "color-display",
|
|
31
|
-
style: normalizeStyle({ background:
|
|
29
|
+
style: normalizeStyle({ background: __props.color }),
|
|
32
30
|
onClick: _cache[0] || (_cache[0] = ($event) => unref(copy)())
|
|
33
31
|
}, null, 4)
|
|
34
32
|
]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuiColorDisplay.vue.js","sources":["../../../src/components/color-picker/RuiColorDisplay.vue"],"sourcesContent":["<script setup lang
|
|
1
|
+
{"version":3,"file":"RuiColorDisplay.vue.js","sources":["../../../src/components/color-picker/RuiColorDisplay.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport RuiTooltip from '@/components/overlays/tooltip/RuiTooltip.vue';\n\ndefineOptions({\n name: 'RuiColorDisplay',\n inheritAttrs: false,\n});\n\nconst { color } = defineProps<{\n color: string;\n}>();\n\nconst { copy, copied } = useClipboard({ source: toRef(() => color) });\n</script>\n\n<template>\n <RuiTooltip\n :popper=\"{ placement: 'top' }\"\n :close-delay=\"400\"\n tooltip-class=\"text-center\"\n v-bind=\"$attrs\"\n >\n <template #activator>\n <div\n class=\"w-8 h-8 min-w-8 min-h-8 rounded-full cursor-pointer\"\n data-cy=\"color-display\"\n :style=\"{ background: color }\"\n @click=\"copy()\"\n />\n </template>\n <div :class=\"{ 'h-0 overflow-hidden': copied }\">\n Click to copy\n </div>\n <div\n v-if=\"copied\"\n class=\"text-rui-success\"\n >\n COPIED!\n </div>\n </RuiTooltip>\n</template>\n"],"names":["_openBlock","_createBlock","_mergeProps","$attrs","_createElementVNode","_unref","_createElementBlock"],"mappings":";;;;;;;;;;;;;;;;;AAYA,UAAM,EAAE,MAAM,OAAA,IAAW,aAAa,EAAE,QAAQ,MAAM,MAAM,QAAA,KAAK,GAAG;;AAIlE,aAAAA,UAAA,GAAAC,YAuBa,YAvBbC,WAuBa;AAAA,QAtBV,QAAQ,EAAA,WAAA,MAAA;AAAA,QACR,eAAa;AAAA,QACd,iBAAc;AAAA,MAAA,GACNC,KAAAA,MAAM,GAAA;AAAA,QAEH,mBACT,MAKE;AAAA,UALFC,mBAKE,OAAA;AAAA,YAJA,OAAM;AAAA,YACN,WAAQ;AAAA,YACP,oCAAqB,QAAA,OAAK;AAAA,YAC1B,+CAAOC,MAAA,IAAA,EAAA;AAAA,UAAI;;yBAGhB,MAEM;AAAA,UAFND,mBAEM,OAAA;AAAA,YAFA,+CAAgCC,MAAA,MAAA,GAAM;AAAA,UAAA,GAAI,mBAEhD,CAAA;AAAA,UAEQA,MAAA,MAAA,kBADRC,mBAKM,OALN,YAGC,WAED;;;;;;;"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { defineComponent, useModel,
|
|
1
|
+
import { defineComponent, useModel, useTemplateRef, ref, getCurrentInstance, computed, watch, onMounted, openBlock, createElementBlock, mergeProps, unref, createElementVNode, normalizeStyle, normalizeClass } from "vue";
|
|
2
2
|
import { get, set, clamp } from "@vueuse/shared";
|
|
3
3
|
import { useElementDrag, roundTwoDecimal } from "./utils.js";
|
|
4
|
+
const _hoisted_1 = ["aria-valuenow"];
|
|
4
5
|
const cursorWidth = 16;
|
|
5
6
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
6
7
|
...{
|
|
@@ -15,21 +16,22 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
15
16
|
emits: ["update:modelValue"],
|
|
16
17
|
setup(__props) {
|
|
17
18
|
const modelValue = useModel(__props, "modelValue");
|
|
18
|
-
const barElement =
|
|
19
|
+
const barElement = useTemplateRef("barElement");
|
|
20
|
+
const cursorLeft = ref("");
|
|
21
|
+
const instance = getCurrentInstance();
|
|
22
|
+
const { handleClick, onMouseDown } = useElementDrag(emitHue);
|
|
23
|
+
const cursorStyle = computed(() => ({
|
|
24
|
+
left: get(cursorLeft)
|
|
25
|
+
}));
|
|
19
26
|
function getLimit(width) {
|
|
20
27
|
const lowerLimit = cursorWidth / 2;
|
|
21
28
|
const upperLimit = width - lowerLimit;
|
|
22
29
|
const availableWidth = upperLimit - lowerLimit;
|
|
23
30
|
return { lowerLimit, upperLimit, availableWidth };
|
|
24
31
|
}
|
|
25
|
-
const cursorLeft = ref("");
|
|
26
32
|
function updatePosition() {
|
|
27
33
|
set(cursorLeft, getCursorLeft().toString());
|
|
28
34
|
}
|
|
29
|
-
const cursorStyle = computed(() => ({
|
|
30
|
-
left: get(cursorLeft)
|
|
31
|
-
}));
|
|
32
|
-
const instance = getCurrentInstance();
|
|
33
35
|
function getCursorLeft() {
|
|
34
36
|
if (!instance)
|
|
35
37
|
return 0;
|
|
@@ -56,20 +58,21 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
56
58
|
calculatedX = clamp(calculatedX, lowerLimit, upperLimit);
|
|
57
59
|
set(modelValue, Math.round((calculatedX - lowerLimit) / availableWidth * 360));
|
|
58
60
|
}
|
|
59
|
-
|
|
60
|
-
handleClick,
|
|
61
|
-
onMouseDown
|
|
62
|
-
} = useElementDrag(emitHue);
|
|
63
|
-
onMounted(() => {
|
|
61
|
+
watch(modelValue, () => {
|
|
64
62
|
updatePosition();
|
|
65
63
|
});
|
|
66
|
-
|
|
64
|
+
onMounted(() => {
|
|
67
65
|
updatePosition();
|
|
68
66
|
});
|
|
69
67
|
return (_ctx, _cache) => {
|
|
70
68
|
return openBlock(), createElementBlock("div", mergeProps({
|
|
71
69
|
ref_key: "barElement",
|
|
72
70
|
ref: barElement,
|
|
71
|
+
role: "slider",
|
|
72
|
+
"aria-label": "Hue",
|
|
73
|
+
"aria-valuenow": modelValue.value,
|
|
74
|
+
"aria-valuemin": "0",
|
|
75
|
+
"aria-valuemax": "360",
|
|
73
76
|
class: [_ctx.$style.bar, "rui-color-hue"]
|
|
74
77
|
}, _ctx.$attrs, {
|
|
75
78
|
onClick: _cache[0] || (_cache[0] = ($event) => unref(handleClick)($event)),
|
|
@@ -79,7 +82,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
79
82
|
class: normalizeClass(_ctx.$style.cursor),
|
|
80
83
|
style: normalizeStyle(unref(cursorStyle))
|
|
81
84
|
}, null, 6)
|
|
82
|
-
], 16);
|
|
85
|
+
], 16, _hoisted_1);
|
|
83
86
|
};
|
|
84
87
|
}
|
|
85
88
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuiColorHue.vue2.js","sources":["../../../src/components/color-picker/RuiColorHue.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { clamp } from '@vueuse/shared';\nimport { roundTwoDecimal, useElementDrag } from './utils';\n\ndefineOptions({\n name: 'RuiColorHue',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<number>({ required: true });\n\nconst barElement =
|
|
1
|
+
{"version":3,"file":"RuiColorHue.vue2.js","sources":["../../../src/components/color-picker/RuiColorHue.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { clamp } from '@vueuse/shared';\nimport { roundTwoDecimal, useElementDrag } from './utils';\n\ndefineOptions({\n name: 'RuiColorHue',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<number>({ required: true });\n\nconst barElement = useTemplateRef<HTMLElement>('barElement');\n\nconst cursorWidth = 16;\nconst cursorLeft = ref<string>('');\n\nconst instance = getCurrentInstance();\n\nconst { handleClick, onMouseDown } = useElementDrag(emitHue);\n\nconst cursorStyle = computed<{ left: string }>(() => ({\n left: get(cursorLeft),\n}));\n\nfunction getLimit(width: number): {\n lowerLimit: number;\n upperLimit: number;\n availableWidth: number;\n} {\n const lowerLimit = cursorWidth / 2;\n const upperLimit = width - lowerLimit;\n const availableWidth = upperLimit - lowerLimit;\n\n return { lowerLimit, upperLimit, availableWidth };\n}\n\nfunction updatePosition(): void {\n set(cursorLeft, getCursorLeft().toString());\n}\n\nfunction getCursorLeft(): number | string {\n if (!instance)\n return 0;\n\n const el = instance.vnode.el;\n const rect = el?.getBoundingClientRect();\n\n if (!rect)\n return 0;\n\n const actualWidth = rect.width;\n const { lowerLimit, availableWidth } = getLimit(actualWidth);\n\n const hueVal = get(modelValue);\n const usedHue = hueVal === 360 ? 360 : hueVal % 360;\n\n const percentage = roundTwoDecimal((usedHue / 360) * (availableWidth / actualWidth) * 100);\n return `calc(${percentage}% + ${lowerLimit}px)`;\n}\n\nfunction emitHue(x: number): void {\n if (!instance)\n return;\n\n const el = instance.vnode.el;\n const rect = el?.getBoundingClientRect();\n\n if (!rect)\n return;\n\n let calculatedX = x - rect.left;\n\n const { lowerLimit, upperLimit, availableWidth } = getLimit(rect.width);\n calculatedX = clamp(calculatedX, lowerLimit, upperLimit);\n\n set(modelValue, Math.round(((calculatedX - lowerLimit) / availableWidth) * 360));\n}\n\nwatch(modelValue, () => {\n updatePosition();\n});\n\nonMounted(() => {\n updatePosition();\n});\n</script>\n\n<template>\n <div\n ref=\"barElement\"\n role=\"slider\"\n aria-label=\"Hue\"\n :aria-valuenow=\"modelValue\"\n aria-valuemin=\"0\"\n aria-valuemax=\"360\"\n :class=\"$style.bar\"\n class=\"rui-color-hue\"\n v-bind=\"$attrs\"\n @click=\"handleClick($event)\"\n @mousedown=\"onMouseDown($event)\"\n >\n <div\n :class=\"$style.cursor\"\n :style=\"cursorStyle\"\n />\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.bar {\n @apply relative w-full h-3.5 rounded-full cursor-pointer;\n\n background: linear-gradient(\n to right,\n rgb(255, 0, 0) 0%,\n rgb(255, 255, 0) 16.66%,\n rgb(0, 255, 0) 33.33%,\n rgb(0, 255, 255) 50%,\n rgb(0, 0, 255) 66.66%,\n rgb(255, 0, 255) 83.33%,\n rgb(255, 0, 0) 100%\n );\n}\n\n.cursor {\n @apply absolute w-4 h-4 transform top-1/2 -translate-x-1/2 -translate-y-1/2 shadow-2 bg-white rounded-full;\n}\n</style>\n"],"names":["_useModel","_openBlock","_createElementBlock","_mergeProps","$style","$attrs","_unref","_createElementVNode","_normalizeClass"],"mappings":";;;;AAaA,MAAM,cAAc;;;;;;;;;;;;;AAJpB,UAAM,aAAaA,SAAmB,SAAA,YAAmB;AAEzD,UAAM,aAAa,eAA4B,YAAY;AAG3D,UAAM,aAAa,IAAY,EAAE;AAEjC,UAAM,WAAW,mBAAA;AAEjB,UAAM,EAAE,aAAa,gBAAgB,eAAe,OAAO;AAE3D,UAAM,cAAc,SAA2B,OAAO;AAAA,MACpD,MAAM,IAAI,UAAU;AAAA,IAAA,EACpB;AAEF,aAAS,SAAS,OAIhB;AACA,YAAM,aAAa,cAAc;AACjC,YAAM,aAAa,QAAQ;AAC3B,YAAM,iBAAiB,aAAa;AAEpC,aAAO,EAAE,YAAY,YAAY,eAAA;AAAA,IACnC;AAEA,aAAS,iBAAuB;AAC9B,UAAI,YAAY,cAAA,EAAgB,SAAA,CAAU;AAAA,IAC5C;AAEA,aAAS,gBAAiC;AACxC,UAAI,CAAC;AACH,eAAO;AAET,YAAM,KAAK,SAAS,MAAM;AAC1B,YAAM,OAAO,IAAI,sBAAA;AAEjB,UAAI,CAAC;AACH,eAAO;AAET,YAAM,cAAc,KAAK;AACzB,YAAM,EAAE,YAAY,mBAAmB,SAAS,WAAW;AAE3D,YAAM,SAAS,IAAI,UAAU;AAC7B,YAAM,UAAU,WAAW,MAAM,MAAM,SAAS;AAEhD,YAAM,aAAa,gBAAiB,UAAU,OAAQ,iBAAiB,eAAe,GAAG;AACzF,aAAO,QAAQ,UAAU,OAAO,UAAU;AAAA,IAC5C;AAEA,aAAS,QAAQ,GAAiB;AAChC,UAAI,CAAC;AACH;AAEF,YAAM,KAAK,SAAS,MAAM;AAC1B,YAAM,OAAO,IAAI,sBAAA;AAEjB,UAAI,CAAC;AACH;AAEF,UAAI,cAAc,IAAI,KAAK;AAE3B,YAAM,EAAE,YAAY,YAAY,mBAAmB,SAAS,KAAK,KAAK;AACtE,oBAAc,MAAM,aAAa,YAAY,UAAU;AAEvD,UAAI,YAAY,KAAK,OAAQ,cAAc,cAAc,iBAAkB,GAAG,CAAC;AAAA,IACjF;AAEA,UAAM,YAAY,MAAM;AACtB,qBAAA;AAAA,IACF,CAAC;AAED,cAAU,MAAM;AACd,qBAAA;AAAA,IACF,CAAC;;AAIC,aAAAC,UAAA,GAAAC,mBAiBM,OAjBNC,WAiBM;AAAA,iBAhBA;AAAA,QAAJ,KAAI;AAAA,QACJ,MAAK;AAAA,QACL,cAAW;AAAA,QACV,iBAAe,WAAA;AAAA,QAChB,iBAAc;AAAA,QACd,iBAAc;AAAA,QACb,OAAK,CAAEC,KAAAA,OAAO,KACT,eAAe;AAAA,MAAA,GACbC,KAAAA,QAAM;AAAA,QACb,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEC,MAAA,WAAA,EAAY,MAAM;AAAA,QACzB,aAAS,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEA,MAAA,WAAA,EAAY,MAAM;AAAA,MAAA;QAE9BC,mBAGE,OAAA;AAAA,UAFC,OAAKC,eAAEJ,KAAAA,OAAO,MAAM;AAAA,UACpB,sBAAOE,MAAA,WAAA,CAAW;AAAA,QAAA;;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, useModel, ref, reactive,
|
|
1
|
+
import { defineComponent, useModel, ref, reactive, openBlock, createElementBlock, mergeProps, createElementVNode, unref, createBlock, withCtx, Fragment, renderList, toDisplayString, createVNode } from "vue";
|
|
2
2
|
import { get, clamp, set } from "@vueuse/shared";
|
|
3
3
|
import tinycolor from "tinycolor2";
|
|
4
4
|
import RuiButton from "../buttons/button/RuiButton.vue.js";
|
|
@@ -31,19 +31,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
31
31
|
hex: get(modelValue).hex,
|
|
32
32
|
rgb: get(modelValue).rgb
|
|
33
33
|
});
|
|
34
|
-
function onInputTypeChange() {
|
|
35
|
-
set(inputType, get(inputType) === "rgb" ? "hex" : "rgb");
|
|
36
|
-
}
|
|
37
34
|
const onBlurChange = useDebounceFn((inputType2, event, key) => {
|
|
38
35
|
if (!state.color)
|
|
39
36
|
return;
|
|
40
|
-
const
|
|
37
|
+
const target = event.target;
|
|
38
|
+
if (!(target instanceof HTMLInputElement))
|
|
39
|
+
return;
|
|
40
|
+
const value = target.value;
|
|
41
41
|
if (inputType2 === "hex") {
|
|
42
42
|
const _hex = value.replace("#", "");
|
|
43
43
|
if (tinycolor(_hex).isValid() && [3, 4, 6].includes(_hex.length))
|
|
44
44
|
state.color.hex = _hex;
|
|
45
|
-
else
|
|
46
|
-
state.color.hex = "000000";
|
|
45
|
+
else state.color.hex = "000000";
|
|
47
46
|
} else if (key !== void 0 && state.rgb && state.color) {
|
|
48
47
|
let valueInNumber = Number(value);
|
|
49
48
|
valueInNumber = clamp(valueInNumber, 0, 255);
|
|
@@ -68,6 +67,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
68
67
|
}
|
|
69
68
|
set(modelValue, state.color);
|
|
70
69
|
}, 300);
|
|
70
|
+
function onInputTypeChange() {
|
|
71
|
+
set(inputType, get(inputType) === "rgb" ? "hex" : "rgb");
|
|
72
|
+
}
|
|
71
73
|
whenever(
|
|
72
74
|
modelValue,
|
|
73
75
|
(value) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuiColorInput.vue.js","sources":["../../../src/components/color-picker/RuiColorInput.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { Color } from './utils';\nimport { clamp } from '@vueuse/shared';\nimport tinycolor from 'tinycolor2';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiTextField from '@/components/forms/text-field/RuiTextField.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\n\ndefineOptions({\n name: 'RuiColorInput',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<Color>({ required: true });\n\nconst inputType = ref<'hex' | 'rgb'>('hex');\nconst state = reactive({\n color: get(modelValue),\n hex: get(modelValue).hex,\n rgb: get(modelValue).rgb,\n});\n\
|
|
1
|
+
{"version":3,"file":"RuiColorInput.vue.js","sources":["../../../src/components/color-picker/RuiColorInput.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { Color } from './utils';\nimport { clamp } from '@vueuse/shared';\nimport tinycolor from 'tinycolor2';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiTextField from '@/components/forms/text-field/RuiTextField.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\n\ndefineOptions({\n name: 'RuiColorInput',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<Color>({ required: true });\n\nconst inputType = ref<'hex' | 'rgb'>('hex');\nconst state = reactive({\n color: get(modelValue),\n hex: get(modelValue).hex,\n rgb: get(modelValue).rgb,\n});\n\nconst onBlurChange = useDebounceFn((inputType: string, event: Event, key?: number) => {\n if (!state.color)\n return;\n\n const target = event.target;\n if (!(target instanceof HTMLInputElement))\n return;\n\n const value = target.value;\n if (inputType === 'hex') {\n const _hex = value.replace('#', '');\n if (tinycolor(_hex).isValid() && [3, 4, 6].includes(_hex.length))\n state.color.hex = _hex;\n else state.color.hex = '000000';\n }\n else if (key !== undefined && state.rgb && state.color) {\n let valueInNumber = Number(value);\n valueInNumber = clamp(valueInNumber, 0, 255);\n\n state.rgb[key] = valueInNumber;\n const [r, g, b] = state.rgb;\n state.color.hex = tinycolor({ r, g, b }).toHex();\n }\n}, 100);\n\nconst onInputChange = useDebounceFn((inputType: string, value: string, key?: number) => {\n if (!value)\n return;\n\n if (inputType === 'hex') {\n const _hex = value.replace('#', '');\n if (tinycolor(_hex).isValid() && state.color && _hex.length === 6)\n state.color.hex = _hex;\n }\n else if (key !== undefined && state.rgb && state.color) {\n let valueInNumber = Number(value);\n valueInNumber = clamp(valueInNumber, 0, 255);\n\n state.rgb[key] = valueInNumber;\n const [r, g, b] = state.rgb;\n state.color.hex = tinycolor({ r, g, b }).toHex();\n }\n\n set(modelValue, state.color);\n}, 300);\n\nfunction onInputTypeChange(): void {\n set(inputType, get(inputType) === 'rgb' ? 'hex' : 'rgb');\n}\n\nwhenever(\n modelValue,\n (value) => {\n state.color = value;\n state.hex = state.color.hex;\n state.rgb = state.color.rgb;\n },\n { deep: true },\n);\n</script>\n\n<template>\n <div\n class=\"rui-color-input flex justify-center gap-2\"\n v-bind=\"$attrs\"\n >\n <div class=\"flex flex-col items-center gap-1 w-[16rem]\">\n <div class=\"w-full\">\n <RuiTextField\n v-if=\"inputType === 'hex'\"\n v-model=\"state.hex\"\n variant=\"outlined\"\n class=\"flex-1 w-full [&_input]:uppercase\"\n maxlength=\"6\"\n color=\"primary\"\n dense\n hide-details\n @update:model-value=\"onInputChange(inputType, $event)\"\n @blur=\"onBlurChange(inputType, $event)\"\n >\n <template #prepend>\n <span class=\"text-rui-text\"> # </span>\n </template>\n </RuiTextField>\n <div\n v-else\n class=\"flex flex-1 gap-1\"\n >\n <RuiTextField\n v-for=\"(v, i) in state.rgb\"\n :key=\"i\"\n :model-value=\"v.toString()\"\n variant=\"outlined\"\n class=\"[&_input]:text-center w-full\"\n maxlength=\"3\"\n color=\"primary\"\n dense\n hide-details\n @update:model-value=\"onInputChange(inputType, $event, i)\"\n @blur=\"onBlurChange(inputType, $event, i)\"\n />\n </div>\n </div>\n\n <div class=\"uppercase text-rui-text-secondary text-sm\">\n {{ inputType }}\n </div>\n </div>\n <RuiButton\n class=\"h-10\"\n variant=\"text\"\n @click=\"onInputTypeChange()\"\n >\n <RuiIcon name=\"lu-chevrons-up-down\" />\n </RuiButton>\n </div>\n</template>\n"],"names":["_useModel","inputType","_openBlock","_createElementBlock","_mergeProps","$attrs","_createElementVNode","_unref","_createBlock","_Fragment","_toDisplayString","_createVNode"],"mappings":"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"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
type __VLS_ModelProps = {
|
|
2
2
|
modelValue?: string;
|
|
3
|
-
}
|
|
4
|
-
declare const __VLS_export: import("vue").DefineComponent<
|
|
5
|
-
"update:
|
|
6
|
-
}, string, import("vue").PublicProps, Readonly<
|
|
7
|
-
"onUpdate:
|
|
8
|
-
}>, {
|
|
9
|
-
modelValue: string;
|
|
10
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
3
|
+
};
|
|
4
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
5
|
+
"update:modelValue": (value: string) => any;
|
|
6
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
|
|
7
|
+
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
8
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
11
9
|
declare const _default: typeof __VLS_export;
|
|
12
10
|
export default _default;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { defineComponent,
|
|
1
|
+
import { defineComponent, useModel, reactive, watch, openBlock, createElementBlock, mergeProps, createVNode, unref, createElementVNode } from "vue";
|
|
2
2
|
import RuiColorBoard from "./RuiColorBoard.vue.js";
|
|
3
3
|
import _sfc_main$1 from "./RuiColorDisplay.vue.js";
|
|
4
4
|
import RuiColorHue from "./RuiColorHue.vue.js";
|
|
5
5
|
import _sfc_main$2 from "./RuiColorInput.vue.js";
|
|
6
6
|
import { Color } from "./utils.js";
|
|
7
|
-
import { get } from "@vueuse/shared";
|
|
7
|
+
import { get, set } from "@vueuse/shared";
|
|
8
8
|
import { whenever } from "@vueuse/core";
|
|
9
9
|
const _hoisted_1 = { class: "flex flex-col gap-5 p-4" };
|
|
10
10
|
const _hoisted_2 = { class: "flex items-center gap-4" };
|
|
@@ -15,17 +15,19 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
15
15
|
},
|
|
16
16
|
__name: "RuiColorPicker",
|
|
17
17
|
props: {
|
|
18
|
-
modelValue: { default: "" }
|
|
18
|
+
"modelValue": { default: "" },
|
|
19
|
+
"modelModifiers": {}
|
|
19
20
|
},
|
|
20
|
-
emits: ["update:
|
|
21
|
-
setup(__props
|
|
22
|
-
const
|
|
23
|
-
const emit = __emit;
|
|
24
|
-
const { modelValue } = toRefs(props);
|
|
21
|
+
emits: ["update:modelValue"],
|
|
22
|
+
setup(__props) {
|
|
23
|
+
const modelValue = useModel(__props, "modelValue");
|
|
25
24
|
const state = reactive({
|
|
26
25
|
color: new Color(get(modelValue))
|
|
27
26
|
});
|
|
28
|
-
function onBoardChange({
|
|
27
|
+
function onBoardChange({
|
|
28
|
+
saturation,
|
|
29
|
+
brightness
|
|
30
|
+
}) {
|
|
29
31
|
state.color.saturation = saturation;
|
|
30
32
|
state.color.brightness = brightness;
|
|
31
33
|
}
|
|
@@ -34,14 +36,21 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
34
36
|
(value) => {
|
|
35
37
|
if (state.color.hex !== value)
|
|
36
38
|
state.color = new Color(value);
|
|
39
|
+
}
|
|
40
|
+
);
|
|
41
|
+
watch(
|
|
42
|
+
() => state.color.hex,
|
|
43
|
+
(hex) => {
|
|
44
|
+
set(modelValue, hex);
|
|
37
45
|
},
|
|
38
|
-
{
|
|
46
|
+
{ immediate: true }
|
|
39
47
|
);
|
|
40
|
-
watch(state, (state2) => {
|
|
41
|
-
emit("update:model-value", state2.color.hex);
|
|
42
|
-
}, { immediate: true, deep: true });
|
|
43
48
|
return (_ctx, _cache) => {
|
|
44
|
-
return openBlock(), createElementBlock("div", mergeProps({
|
|
49
|
+
return openBlock(), createElementBlock("div", mergeProps({
|
|
50
|
+
role: "application",
|
|
51
|
+
"aria-label": "Color picker",
|
|
52
|
+
class: "rui-color-picker relative select-none bg-initial"
|
|
53
|
+
}, _ctx.$attrs), [
|
|
45
54
|
createVNode(RuiColorBoard, {
|
|
46
55
|
color: unref(state).color,
|
|
47
56
|
"onUpdate:board": _cache[0] || (_cache[0] = ($event) => onBoardChange($event))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuiColorPicker.vue.js","sources":["../../../src/components/color-picker/RuiColorPicker.vue"],"sourcesContent":["<script lang=\"ts\" setup>\n// Inspired by https://github.com/aesoper101/vue3-colorpicker/\nimport RuiColorBoard from '@/components/color-picker/RuiColorBoard.vue';\nimport RuiColorDisplay from '@/components/color-picker/RuiColorDisplay.vue';\nimport RuiColorHue from '@/components/color-picker/RuiColorHue.vue';\nimport RuiColorInput from '@/components/color-picker/RuiColorInput.vue';\nimport { Color } from './utils';\n\
|
|
1
|
+
{"version":3,"file":"RuiColorPicker.vue.js","sources":["../../../src/components/color-picker/RuiColorPicker.vue"],"sourcesContent":["<script lang=\"ts\" setup>\n// Inspired by https://github.com/aesoper101/vue3-colorpicker/\nimport RuiColorBoard from '@/components/color-picker/RuiColorBoard.vue';\nimport RuiColorDisplay from '@/components/color-picker/RuiColorDisplay.vue';\nimport RuiColorHue from '@/components/color-picker/RuiColorHue.vue';\nimport RuiColorInput from '@/components/color-picker/RuiColorInput.vue';\nimport { Color } from './utils';\n\ndefineOptions({\n name: 'RuiColorPicker',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<string>({ default: '' });\n\nconst state = reactive({\n color: new Color(get(modelValue)),\n});\n\nfunction onBoardChange({\n saturation,\n brightness,\n}: {\n saturation: number;\n brightness: number;\n}): void {\n state.color.saturation = saturation;\n state.color.brightness = brightness;\n}\n\nwhenever(\n modelValue,\n (value: string) => {\n if (state.color.hex !== value)\n state.color = new Color(value);\n },\n);\n\nwatch(\n () => state.color.hex,\n (hex: string) => {\n set(modelValue, hex);\n },\n { immediate: true },\n);\n</script>\n\n<template>\n <div\n role=\"application\"\n aria-label=\"Color picker\"\n class=\"rui-color-picker relative select-none bg-initial\"\n v-bind=\"$attrs\"\n >\n <RuiColorBoard\n :color=\"state.color\"\n @update:board=\"onBoardChange($event)\"\n />\n <div class=\"flex flex-col gap-5 p-4\">\n <div class=\"flex items-center gap-4\">\n <RuiColorDisplay :color=\"state.color.hexString\" />\n <RuiColorHue\n v-model=\"state.color.hue\"\n class=\"flex-1\"\n />\n </div>\n\n <RuiColorInput v-model=\"state.color\" />\n </div>\n </div>\n</template>\n"],"names":["_useModel","_openBlock","_createElementBlock","_mergeProps","$attrs","_createVNode","_unref","_createElementVNode","RuiColorDisplay","RuiColorInput"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAaA,UAAM,aAAaA,SAAmB,SAAA,YAAgB;AAEtD,UAAM,QAAQ,SAAS;AAAA,MACrB,OAAO,IAAI,MAAM,IAAI,UAAU,CAAC;AAAA,IAAA,CACjC;AAED,aAAS,cAAc;AAAA,MACrB;AAAA,MACA;AAAA,IAAA,GAIO;AACP,YAAM,MAAM,aAAa;AACzB,YAAM,MAAM,aAAa;AAAA,IAC3B;AAEA;AAAA,MACE;AAAA,MACA,CAAC,UAAkB;AACjB,YAAI,MAAM,MAAM,QAAQ;AACtB,gBAAM,QAAQ,IAAI,MAAM,KAAK;AAAA,MACjC;AAAA,IAAA;AAGF;AAAA,MACE,MAAM,MAAM,MAAM;AAAA,MAClB,CAAC,QAAgB;AACf,YAAI,YAAY,GAAG;AAAA,MACrB;AAAA,MACA,EAAE,WAAW,KAAA;AAAA,IAAK;;AAKlB,aAAAC,UAAA,GAAAC,mBAqBM,OArBNC,WAqBM;AAAA,QApBJ,MAAK;AAAA,QACL,cAAW;AAAA,QACX,OAAM;AAAA,MAAA,GACEC,KAAAA,MAAM,GAAA;AAAA,QAEdC,YAGE,eAAA;AAAA,UAFC,OAAOC,MAAA,KAAA,EAAM;AAAA,UACb,kBAAY,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,cAAc,MAAM;AAAA,QAAA;QAErCC,mBAUM,OAVN,YAUM;AAAA,UATJA,mBAMM,OANN,YAMM;AAAA,YALJF,YAAkDG,aAAA;AAAA,cAAhC,OAAOF,MAAA,KAAA,EAAM,MAAM;AAAA,YAAA;YACrCD,YAGE,aAAA;AAAA,0BAFSC,MAAA,KAAA,EAAM,MAAM;AAAA,2EAAZA,MAAA,KAAA,EAAM,MAAM,MAAG;AAAA,cACxB,OAAM;AAAA,YAAA;;UAIVD,YAAuCI,aAAA;AAAA,YAAf,YAAAH,MAAA,KAAA,EAAM;AAAA,YAAN,uBAAA,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAAA,MAAA,KAAA,EAAM,QAAK;AAAA,UAAA;;;;;;"}
|
|
@@ -154,17 +154,34 @@ class Color {
|
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
156
|
function useElementDrag(handler) {
|
|
157
|
+
let rafId = null;
|
|
157
158
|
function handleClick(e) {
|
|
158
|
-
|
|
159
|
+
if (rafId !== null)
|
|
160
|
+
return;
|
|
161
|
+
rafId = requestAnimationFrame(() => {
|
|
162
|
+
handler(e.clientX, e.clientY);
|
|
163
|
+
rafId = null;
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
function cancelRaf() {
|
|
167
|
+
if (rafId !== null) {
|
|
168
|
+
cancelAnimationFrame(rafId);
|
|
169
|
+
rafId = null;
|
|
170
|
+
}
|
|
159
171
|
}
|
|
160
172
|
function onMouseDown(e) {
|
|
161
173
|
e.preventDefault();
|
|
162
|
-
window
|
|
163
|
-
|
|
174
|
+
if (typeof window !== "undefined") {
|
|
175
|
+
window.addEventListener("mousemove", handleClick);
|
|
176
|
+
window.addEventListener("mouseup", handleMouseUp);
|
|
177
|
+
}
|
|
164
178
|
}
|
|
165
179
|
function handleMouseUp() {
|
|
166
|
-
|
|
167
|
-
window
|
|
180
|
+
cancelRaf();
|
|
181
|
+
if (typeof window !== "undefined") {
|
|
182
|
+
window.removeEventListener("mousemove", handleClick);
|
|
183
|
+
window.removeEventListener("mouseup", handleMouseUp);
|
|
184
|
+
}
|
|
168
185
|
}
|
|
169
186
|
onUnmounted(() => {
|
|
170
187
|
handleMouseUp();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../src/components/color-picker/utils.ts"],"sourcesContent":["import tinycolor, { type ColorInput } from 'tinycolor2';\n\nexport type ColorFormat = 'rgb' | 'hex';\n\nexport function roundTwoDecimal(num: number) {\n return Math.round(num * 100) / 100;\n}\n\nexport class Color {\n instance: tinycolor.Instance;\n alphaValue = 0;\n\n // rgb\n redValue = 0;\n greenValue = 0;\n blueValue = 0;\n\n // HSV\n hueValue = 0;\n saturationValue = 0;\n brightnessValue = 0;\n\n // HSL\n hslSaturationValue = 0;\n lightnessValue = 0;\n\n constructor(input?: ColorInput) {\n this.instance = tinycolor(input);\n\n this.initRgb();\n this.initHsb();\n this.initLightness();\n this.initAlpha();\n }\n\n initAlpha = () => {\n const initAlpha = this.instance.getAlpha();\n this.alphaValue = Math.min(1, initAlpha) * 100;\n };\n\n initLightness = () => {\n const { l, s } = this.instance.toHsl();\n this.hslSaturationValue = roundTwoDecimal(s);\n this.lightnessValue = roundTwoDecimal(l);\n };\n\n initRgb = () => {\n const { b, g, r } = this.instance.toRgb();\n\n this.redValue = roundTwoDecimal(r);\n this.greenValue = roundTwoDecimal(g);\n this.blueValue = roundTwoDecimal(b);\n };\n\n initHsb = () => {\n const { h, s, v } = this.instance.toHsv();\n\n this.hueValue = Math.min(360, Math.ceil(h));\n this.saturationValue = roundTwoDecimal(s);\n this.brightnessValue = roundTwoDecimal(v);\n };\n\n toString(format?: ColorFormat) {\n return this.instance.toString(format);\n }\n\n get hexString() {\n return this.instance.toHexString();\n };\n\n get hex() {\n return this.instance.toHex();\n }\n\n set hex(hexString: string) {\n this.instance = tinycolor(hexString);\n this.initHsb();\n this.initRgb();\n this.initAlpha();\n this.initLightness();\n }\n\n set hue(value: number) {\n if (this.saturation === 0 && this.brightness === 0) {\n this.saturationValue = 1;\n this.brightnessValue = 1;\n }\n this.instance = tinycolor({\n a: this.alphaValue / 100,\n h: roundTwoDecimal(value),\n s: this.saturation,\n v: this.brightness,\n });\n\n this.initRgb();\n this.initLightness();\n this.hueValue = roundTwoDecimal(value);\n }\n\n get hue() {\n return this.hueValue;\n }\n\n set saturation(value: number) {\n this.instance = tinycolor({\n a: this.alphaValue / 100,\n h: this.hue,\n s: roundTwoDecimal(value),\n v: this.brightness,\n });\n\n this.initRgb();\n this.initLightness();\n this.saturationValue = roundTwoDecimal(value);\n }\n\n get saturation() {\n return this.saturationValue;\n }\n\n set brightness(value: number) {\n this.instance = tinycolor({\n a: this.alphaValue / 100,\n h: this.hue,\n s: this.saturation,\n v: roundTwoDecimal(value),\n });\n\n this.initRgb();\n this.initLightness();\n this.brightnessValue = roundTwoDecimal(value);\n }\n\n get brightness() {\n return this.brightnessValue;\n }\n\n set red(value: number) {\n const rgb = this.instance.toRgb();\n this.instance = tinycolor({\n ...rgb,\n a: this.alphaValue / 100,\n r: roundTwoDecimal(value),\n });\n\n this.initHsb();\n this.initLightness();\n this.redValue = roundTwoDecimal(value);\n }\n\n get red() {\n return this.redValue;\n }\n\n set green(value: number) {\n const rgb = this.instance.toRgb();\n this.instance = tinycolor({\n ...rgb,\n a: this.alphaValue / 100,\n g: roundTwoDecimal(value),\n });\n\n this.initHsb();\n this.initLightness();\n this.greenValue = roundTwoDecimal(value);\n }\n\n get green() {\n return this.greenValue;\n }\n\n set blue(value: number) {\n const rgb = this.instance.toRgb();\n this.instance = tinycolor({\n ...rgb,\n a: this.alphaValue / 100,\n b: roundTwoDecimal(value),\n });\n\n this.initHsb();\n this.initLightness();\n this.blueValue = roundTwoDecimal(value);\n }\n\n get blue() {\n return this.blueValue;\n }\n\n get rgb(): [number, number, number] {\n return [this.red, this.green, this.blue];\n }\n}\n\nexport function useElementDrag(handler: (x: number, y: number) => any) {\n function handleClick(e: { clientX: number; clientY: number }) {\n handler(e.clientX, e.clientY);\n }\n\n function onMouseDown(e: MouseEvent) {\n e.preventDefault();\n\n window.addEventListener('mousemove', handleClick);\n
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../src/components/color-picker/utils.ts"],"sourcesContent":["import tinycolor, { type ColorInput } from 'tinycolor2';\n\nexport type ColorFormat = 'rgb' | 'hex';\n\nexport function roundTwoDecimal(num: number) {\n return Math.round(num * 100) / 100;\n}\n\nexport class Color {\n instance: tinycolor.Instance;\n alphaValue = 0;\n\n // rgb\n redValue = 0;\n greenValue = 0;\n blueValue = 0;\n\n // HSV\n hueValue = 0;\n saturationValue = 0;\n brightnessValue = 0;\n\n // HSL\n hslSaturationValue = 0;\n lightnessValue = 0;\n\n constructor(input?: ColorInput) {\n this.instance = tinycolor(input);\n\n this.initRgb();\n this.initHsb();\n this.initLightness();\n this.initAlpha();\n }\n\n initAlpha = () => {\n const initAlpha = this.instance.getAlpha();\n this.alphaValue = Math.min(1, initAlpha) * 100;\n };\n\n initLightness = () => {\n const { l, s } = this.instance.toHsl();\n this.hslSaturationValue = roundTwoDecimal(s);\n this.lightnessValue = roundTwoDecimal(l);\n };\n\n initRgb = () => {\n const { b, g, r } = this.instance.toRgb();\n\n this.redValue = roundTwoDecimal(r);\n this.greenValue = roundTwoDecimal(g);\n this.blueValue = roundTwoDecimal(b);\n };\n\n initHsb = () => {\n const { h, s, v } = this.instance.toHsv();\n\n this.hueValue = Math.min(360, Math.ceil(h));\n this.saturationValue = roundTwoDecimal(s);\n this.brightnessValue = roundTwoDecimal(v);\n };\n\n toString(format?: ColorFormat) {\n return this.instance.toString(format);\n }\n\n get hexString() {\n return this.instance.toHexString();\n };\n\n get hex() {\n return this.instance.toHex();\n }\n\n set hex(hexString: string) {\n this.instance = tinycolor(hexString);\n this.initHsb();\n this.initRgb();\n this.initAlpha();\n this.initLightness();\n }\n\n set hue(value: number) {\n if (this.saturation === 0 && this.brightness === 0) {\n this.saturationValue = 1;\n this.brightnessValue = 1;\n }\n this.instance = tinycolor({\n a: this.alphaValue / 100,\n h: roundTwoDecimal(value),\n s: this.saturation,\n v: this.brightness,\n });\n\n this.initRgb();\n this.initLightness();\n this.hueValue = roundTwoDecimal(value);\n }\n\n get hue() {\n return this.hueValue;\n }\n\n set saturation(value: number) {\n this.instance = tinycolor({\n a: this.alphaValue / 100,\n h: this.hue,\n s: roundTwoDecimal(value),\n v: this.brightness,\n });\n\n this.initRgb();\n this.initLightness();\n this.saturationValue = roundTwoDecimal(value);\n }\n\n get saturation() {\n return this.saturationValue;\n }\n\n set brightness(value: number) {\n this.instance = tinycolor({\n a: this.alphaValue / 100,\n h: this.hue,\n s: this.saturation,\n v: roundTwoDecimal(value),\n });\n\n this.initRgb();\n this.initLightness();\n this.brightnessValue = roundTwoDecimal(value);\n }\n\n get brightness() {\n return this.brightnessValue;\n }\n\n set red(value: number) {\n const rgb = this.instance.toRgb();\n this.instance = tinycolor({\n ...rgb,\n a: this.alphaValue / 100,\n r: roundTwoDecimal(value),\n });\n\n this.initHsb();\n this.initLightness();\n this.redValue = roundTwoDecimal(value);\n }\n\n get red() {\n return this.redValue;\n }\n\n set green(value: number) {\n const rgb = this.instance.toRgb();\n this.instance = tinycolor({\n ...rgb,\n a: this.alphaValue / 100,\n g: roundTwoDecimal(value),\n });\n\n this.initHsb();\n this.initLightness();\n this.greenValue = roundTwoDecimal(value);\n }\n\n get green() {\n return this.greenValue;\n }\n\n set blue(value: number) {\n const rgb = this.instance.toRgb();\n this.instance = tinycolor({\n ...rgb,\n a: this.alphaValue / 100,\n b: roundTwoDecimal(value),\n });\n\n this.initHsb();\n this.initLightness();\n this.blueValue = roundTwoDecimal(value);\n }\n\n get blue() {\n return this.blueValue;\n }\n\n get rgb(): [number, number, number] {\n return [this.red, this.green, this.blue];\n }\n}\n\nexport function useElementDrag(handler: (x: number, y: number) => any) {\n let rafId: number | null = null;\n\n function handleClick(e: { clientX: number; clientY: number }): void {\n if (rafId !== null)\n return;\n\n rafId = requestAnimationFrame(() => {\n handler(e.clientX, e.clientY);\n rafId = null;\n });\n }\n\n function cancelRaf(): void {\n if (rafId !== null) {\n cancelAnimationFrame(rafId);\n rafId = null;\n }\n }\n\n function onMouseDown(e: MouseEvent): void {\n e.preventDefault();\n\n if (typeof window !== 'undefined') {\n window.addEventListener('mousemove', handleClick);\n window.addEventListener('mouseup', handleMouseUp);\n }\n }\n\n function handleMouseUp(): void {\n cancelRaf();\n if (typeof window !== 'undefined') {\n window.removeEventListener('mousemove', handleClick);\n window.removeEventListener('mouseup', handleMouseUp);\n }\n }\n\n onUnmounted(() => {\n handleMouseUp();\n });\n\n return {\n handleClick,\n onMouseDown,\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -20,60 +20,18 @@ export interface RuiDateTimePickerProps {
|
|
|
20
20
|
required?: boolean;
|
|
21
21
|
}
|
|
22
22
|
type __VLS_Props = RuiDateTimePickerProps;
|
|
23
|
-
declare const props: Readonly<{}> & {
|
|
24
|
-
readonly disabled: boolean;
|
|
25
|
-
readonly readonly: boolean;
|
|
26
|
-
readonly allowEmpty: boolean;
|
|
27
|
-
readonly dense: boolean;
|
|
28
|
-
readonly type: DateTimeModelType;
|
|
29
|
-
readonly hideDetails: boolean;
|
|
30
|
-
readonly label: string;
|
|
31
|
-
readonly variant: "default" | "outlined" | "filled";
|
|
32
|
-
readonly hint: string | undefined;
|
|
33
|
-
readonly maxDate: number | Date | "now" | undefined;
|
|
34
|
-
readonly minDate: number | Date | undefined;
|
|
35
|
-
readonly format: DateFormat;
|
|
36
|
-
readonly accuracy: "minute" | "second" | "millisecond";
|
|
37
|
-
readonly errorMessages: string | string[];
|
|
38
|
-
readonly successMessages: string | string[];
|
|
39
|
-
readonly required: boolean;
|
|
40
|
-
} & {
|
|
41
|
-
readonly disabled: boolean;
|
|
42
|
-
readonly dense: boolean;
|
|
43
|
-
readonly readonly: boolean;
|
|
44
|
-
readonly required: boolean;
|
|
45
|
-
readonly hideDetails: boolean;
|
|
46
|
-
readonly allowEmpty: boolean;
|
|
47
|
-
};
|
|
48
23
|
type __VLS_Slots = {
|
|
49
24
|
'menu-content': () => any;
|
|
50
25
|
};
|
|
51
26
|
type __VLS_ModelProps = {
|
|
52
|
-
modelValue: ModelValueType<
|
|
27
|
+
modelValue: ModelValueType<DateTimeModelType>;
|
|
53
28
|
};
|
|
54
29
|
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
55
30
|
declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
56
31
|
"update:modelValue": (value: number | Date | undefined) => any;
|
|
57
32
|
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
58
33
|
"onUpdate:modelValue"?: ((value: number | Date | undefined) => any) | undefined;
|
|
59
|
-
}>, {
|
|
60
|
-
label: string;
|
|
61
|
-
disabled: boolean;
|
|
62
|
-
dense: boolean;
|
|
63
|
-
readonly: boolean;
|
|
64
|
-
variant: "default" | "filled" | "outlined";
|
|
65
|
-
type: DateTimeModelType;
|
|
66
|
-
errorMessages: string | string[];
|
|
67
|
-
successMessages: string | string[];
|
|
68
|
-
hint: string;
|
|
69
|
-
required: boolean;
|
|
70
|
-
hideDetails: boolean;
|
|
71
|
-
maxDate: Date | number | "now";
|
|
72
|
-
minDate: Date | number;
|
|
73
|
-
allowEmpty: boolean;
|
|
74
|
-
accuracy: "minute" | "second" | "millisecond";
|
|
75
|
-
format: DateFormat;
|
|
76
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
34
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
77
35
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
78
36
|
declare const _default: typeof __VLS_export;
|
|
79
37
|
export default _default;
|