vueless 0.0.500 → 0.0.502

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.
@@ -0,0 +1,22 @@
1
+ import { nextTick } from "process";
2
+ import { DARK_MODE_SELECTOR } from "../constants.js";
3
+ import { onMounted, ref } from "vue";
4
+
5
+ export function useDarkMode() {
6
+ const isDarkMode = ref(false);
7
+
8
+ onMounted(() => {
9
+ nextTick(() => {
10
+ const isDarkModeClass = document.documentElement.classList.contains(DARK_MODE_SELECTOR);
11
+ const isDarkModeCache = Boolean(localStorage.getItem(DARK_MODE_SELECTOR));
12
+
13
+ isDarkMode.value = isDarkModeCache || isDarkModeClass;
14
+
15
+ window.addEventListener("darkModeChange", ((event: CustomEvent) => {
16
+ isDarkMode.value = Boolean(event.detail);
17
+ }) as EventListener);
18
+ });
19
+ });
20
+
21
+ return { isDarkMode };
22
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vueless",
3
- "version": "0.0.500",
3
+ "version": "0.0.502",
4
4
  "license": "MIT",
5
5
  "description": "Vue Styleless UI Component Library, powered by Tailwind CSS.",
6
6
  "keywords": [
@@ -411,15 +411,15 @@ function shiftRangeNext(to: Date, from: Date, daysDifference: number) {
411
411
  if (isPeriod.value.ownRange) {
412
412
  const nextDate = {
413
413
  title: "",
414
- startRange: addDays(to, daysDifference),
415
- endRange: addDays(from, daysDifference),
414
+ startRange: addDays(from, daysDifference),
415
+ endRange: addDays(to, daysDifference),
416
416
  };
417
417
 
418
418
  if (isDatePeriodOutOfRange(nextDate)) return;
419
419
 
420
420
  localValue.value = {
421
421
  from: nextDate.startRange,
422
- to: nextDate.startRange,
422
+ to: nextDate.endRange,
423
423
  };
424
424
 
425
425
  return;
@@ -451,8 +451,8 @@ function shiftRangePrev(to: Date, from: Date, daysDifference: number) {
451
451
  if (isPeriod.value.ownRange) {
452
452
  const previousDate = {
453
453
  title: "",
454
- startRange: addDays(to, daysDifference * -1),
455
- endRange: addDays(from, daysDifference * -1),
454
+ startRange: addDays(from, daysDifference * -1),
455
+ endRange: addDays(to, daysDifference * -1),
456
456
  };
457
457
 
458
458
  if (isDatePeriodOutOfRange(previousDate)) return;
package/utils/theme.ts CHANGED
@@ -41,10 +41,10 @@ export function themeInit() {
41
41
 
42
42
  const prefersColorSchemeDark = window.matchMedia("(prefers-color-scheme: dark)");
43
43
 
44
- setTheme({ systemDarkMode: prefersColorSchemeDark.matches });
44
+ setTheme({ systemDarkMode: prefersColorSchemeDark.matches, darkMode: vuelessConfig.darkMode });
45
45
 
46
46
  prefersColorSchemeDark.addEventListener("change", (event) =>
47
- setTheme({ systemDarkMode: event.matches }),
47
+ setTheme({ systemDarkMode: event.matches, darkMode: vuelessConfig.darkMode }),
48
48
  );
49
49
  }
50
50
 
@@ -139,36 +139,15 @@ export function setTheme(config: InternalThemeConfig = {}) {
139
139
  return rootVariables;
140
140
  }
141
141
 
142
- // todo: need to be reactive same like loader state
143
- export function getDarkMode() {
144
- let isDarkMode = undefined;
145
- let storedDarkMode = null;
146
-
147
- if (isCSR) {
148
- storedDarkMode = localStorage.getItem(DARK_MODE_SELECTOR);
149
- }
150
-
151
- if (storedDarkMode !== null) {
152
- isDarkMode = !!Number(storedDarkMode);
153
- }
154
-
155
- return isDarkMode;
156
- }
157
-
158
142
  function setDarkMode(config: InternalThemeConfig) {
159
143
  config?.darkMode === undefined
160
144
  ? isCSR && localStorage.removeItem(DARK_MODE_SELECTOR)
161
145
  : isCSR && localStorage.setItem(DARK_MODE_SELECTOR, Number(config?.darkMode).toString());
162
146
 
163
147
  let storedDarkMode = null;
164
- let darkModeAsClass = null;
165
148
 
166
149
  if (isCSR) {
167
- const classList = document.documentElement.classList;
168
-
169
150
  storedDarkMode = localStorage.getItem(DARK_MODE_SELECTOR);
170
- darkModeAsClass = classList.contains(DARK_MODE_SELECTOR) ? true : null;
171
- darkModeAsClass = classList.contains(LIGHT_MODE_SELECTOR) ? false : null;
172
151
  }
173
152
 
174
153
  let isDarkMode = !!(config?.darkMode ?? vuelessConfig.darkMode ?? config?.systemDarkMode);
@@ -177,11 +156,9 @@ function setDarkMode(config: InternalThemeConfig) {
177
156
  isDarkMode = !!Number(storedDarkMode);
178
157
  }
179
158
 
180
- if (darkModeAsClass !== null) {
181
- isDarkMode = darkModeAsClass;
182
- }
183
-
184
159
  if (isCSR) {
160
+ const darkModeChange = new CustomEvent("darkModeChange", { detail: isDarkMode });
161
+
185
162
  if (isDarkMode) {
186
163
  document.documentElement.classList.remove(LIGHT_MODE_SELECTOR);
187
164
  document.documentElement.classList.add(DARK_MODE_SELECTOR);
@@ -189,6 +166,8 @@ function setDarkMode(config: InternalThemeConfig) {
189
166
  document.documentElement.classList.remove(DARK_MODE_SELECTOR);
190
167
  document.documentElement.classList.add(LIGHT_MODE_SELECTOR);
191
168
  }
169
+
170
+ window.dispatchEvent(darkModeChange);
192
171
  }
193
172
 
194
173
  return isDarkMode;
package/web-types.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "framework": "vue",
3
3
  "name": "vueless",
4
- "version": "0.0.500",
4
+ "version": "0.0.502",
5
5
  "contributions": {
6
6
  "html": {
7
7
  "description-markup": "markdown",