@inorain_development/hotel-smarters-chat-ui 1.1.1 → 1.2.2
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/lib/commonjs/features/chat/components/event/event.js +5 -3
- package/lib/commonjs/features/chat/components/event/event.js.map +1 -1
- package/lib/commonjs/features/chat/components/event/event.native.js +5 -3
- package/lib/commonjs/features/chat/components/event/event.native.js.map +1 -1
- package/lib/commonjs/utils/price.utils.js +4 -4
- package/lib/commonjs/utils/price.utils.js.map +1 -1
- package/lib/commonjs/utils/time.utils.js +51 -0
- package/lib/commonjs/utils/time.utils.js.map +1 -0
- package/lib/module/features/chat/components/event/event.js +5 -3
- package/lib/module/features/chat/components/event/event.js.map +1 -1
- package/lib/module/features/chat/components/event/event.native.js +5 -3
- package/lib/module/features/chat/components/event/event.native.js.map +1 -1
- package/lib/module/utils/price.utils.js +4 -4
- package/lib/module/utils/price.utils.js.map +1 -1
- package/lib/module/utils/time.utils.js +46 -0
- package/lib/module/utils/time.utils.js.map +1 -0
- package/lib/typescript/commonjs/features/chat/components/event/event.d.ts.map +1 -1
- package/lib/typescript/commonjs/features/chat/components/event/event.model.d.ts +3 -1
- package/lib/typescript/commonjs/features/chat/components/event/event.model.d.ts.map +1 -1
- package/lib/typescript/commonjs/features/chat/components/event/event.native.d.ts.map +1 -1
- package/lib/typescript/commonjs/utils/time.utils.d.ts +3 -0
- package/lib/typescript/commonjs/utils/time.utils.d.ts.map +1 -0
- package/lib/typescript/module/features/chat/components/event/event.d.ts.map +1 -1
- package/lib/typescript/module/features/chat/components/event/event.model.d.ts +3 -1
- package/lib/typescript/module/features/chat/components/event/event.model.d.ts.map +1 -1
- package/lib/typescript/module/features/chat/components/event/event.native.d.ts.map +1 -1
- package/lib/typescript/module/utils/time.utils.d.ts +3 -0
- package/lib/typescript/module/utils/time.utils.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/features/chat/components/event/event.model.ts +3 -1
- package/src/features/chat/components/event/event.native.tsx +6 -2
- package/src/features/chat/components/event/event.tsx +6 -2
- package/src/utils/price.utils.ts +4 -4
- package/src/utils/time.utils.ts +58 -0
|
@@ -7,6 +7,7 @@ exports.Event = Event;
|
|
|
7
7
|
var _themeUtils = require("../../../../utils/theme.utils.js");
|
|
8
8
|
var _i18nUtils = require("../../../../utils/i18n.utils.js");
|
|
9
9
|
var _priceUtils = require("../../../../utils/price.utils.js");
|
|
10
|
+
var _timeUtils = require("../../../../utils/time.utils.js");
|
|
10
11
|
var _useExpandableList = require("../../../../utils/use-expandable-list.js");
|
|
11
12
|
var _collapsible = require("../common/collapsible");
|
|
12
13
|
var _clockIcon = require("../common/clock-icon");
|
|
@@ -33,6 +34,7 @@ function Event({
|
|
|
33
34
|
const location = (0, _i18nUtils.resolveText)(item.location, language);
|
|
34
35
|
const description = item.description ? (0, _i18nUtils.resolveText)(item.description, language) : '';
|
|
35
36
|
const isFree = (0, _priceUtils.isFreePrice)(item.price);
|
|
37
|
+
const dateLabel = (0, _timeUtils.formatEventDate)(item.startDateTime, item.endDateTime) || ((0, _timeUtils.hasEventTime)(item.time) ? item.time : '');
|
|
36
38
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
37
39
|
className: `rounded-2xl border p-3 ${c.surface} ${c.border}`,
|
|
38
40
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
@@ -56,12 +58,12 @@ function Event({
|
|
|
56
58
|
})]
|
|
57
59
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
58
60
|
className: "flex items-center gap-1.5",
|
|
59
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_clockIcon.ClockIcon, {
|
|
61
|
+
children: [dateLabel ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_clockIcon.ClockIcon, {
|
|
60
62
|
size: 16,
|
|
61
63
|
color: c.iconColor
|
|
62
|
-
}), /*#__PURE__*/(0, _jsxRuntime.
|
|
64
|
+
}) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
63
65
|
className: `truncate text-sm down-sm:text-xs ${c.subtitle}`,
|
|
64
|
-
children:
|
|
66
|
+
children: dateLabel ? `${dateLabel} · ${location}` : location
|
|
65
67
|
})]
|
|
66
68
|
}), description ? /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
67
69
|
className: `line-clamp-2 text-sm down-sm:text-xs ${c.subtitle}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_themeUtils","require","_i18nUtils","_priceUtils","_useExpandableList","_collapsible","_clockIcon","_chatModel","_jsxRuntime","FREE_LABEL","Event","data","theme","Theme","Dark","language","onSelect","c","getThemeClasses","items","Array","isArray","head","rest","expanded","hasMore","toggle","useExpandableList","renderCard","item","name","resolveText","location","description","isFree","isFreePrice","price","jsx","className","surface","border","children","jsxs","src","image","alt","onClick","iconBg","title","free","ClockIcon","size","color","iconColor","subtitle","
|
|
1
|
+
{"version":3,"names":["_themeUtils","require","_i18nUtils","_priceUtils","_timeUtils","_useExpandableList","_collapsible","_clockIcon","_chatModel","_jsxRuntime","FREE_LABEL","Event","data","theme","Theme","Dark","language","onSelect","c","getThemeClasses","items","Array","isArray","head","rest","expanded","hasMore","toggle","useExpandableList","renderCard","item","name","resolveText","location","description","isFree","isFreePrice","price","dateLabel","formatEventDate","startDateTime","endDateTime","hasEventTime","time","jsx","className","surface","border","children","jsxs","src","image","alt","onClick","iconBg","title","free","ClockIcon","size","color","iconColor","subtitle","map","index","undefined","id","Fragment","Collapsible","type","actionBorder","actionText"],"sourceRoot":"../../../../../../src","sources":["features/chat/components/event/event.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,6 +8,7 @@ var _reactNative = require("react-native");
|
|
|
8
8
|
var _themeUtils = require("../../../../utils/theme.utils.js");
|
|
9
9
|
var _i18nUtils = require("../../../../utils/i18n.utils.js");
|
|
10
10
|
var _priceUtils = require("../../../../utils/price.utils.js");
|
|
11
|
+
var _timeUtils = require("../../../../utils/time.utils.js");
|
|
11
12
|
var _useExpandableList = require("../../../../utils/use-expandable-list.js");
|
|
12
13
|
var _collapsibleNative = require("../common/collapsible.native.js");
|
|
13
14
|
var _clockIconNative = require("../common/clock-icon.native.js");
|
|
@@ -34,6 +35,7 @@ function Event({
|
|
|
34
35
|
const location = (0, _i18nUtils.resolveText)(item.location, language);
|
|
35
36
|
const description = item.description ? (0, _i18nUtils.resolveText)(item.description, language) : '';
|
|
36
37
|
const isFree = (0, _priceUtils.isFreePrice)(item.price);
|
|
38
|
+
const dateLabel = (0, _timeUtils.formatEventDate)(item.startDateTime, item.endDateTime) || ((0, _timeUtils.hasEventTime)(item.time) ? item.time : '');
|
|
37
39
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
38
40
|
className: `rounded-2xl border p-3 ${c.surface} ${c.border}`,
|
|
39
41
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
@@ -62,13 +64,13 @@ function Event({
|
|
|
62
64
|
})]
|
|
63
65
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
64
66
|
className: "flex-row items-center gap-1.5",
|
|
65
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_clockIconNative.ClockIcon, {
|
|
67
|
+
children: [dateLabel ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_clockIconNative.ClockIcon, {
|
|
66
68
|
size: 16,
|
|
67
69
|
color: c.iconColor
|
|
68
|
-
}), /*#__PURE__*/(0, _jsxRuntime.
|
|
70
|
+
}) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
69
71
|
className: `flex-1 text-sm down-sm:text-xs ${c.subtitle}`,
|
|
70
72
|
numberOfLines: 1,
|
|
71
|
-
children:
|
|
73
|
+
children: dateLabel ? `${dateLabel} · ${location}` : location
|
|
72
74
|
})]
|
|
73
75
|
}), description ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
74
76
|
className: `text-sm down-sm:text-xs ${c.subtitle}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_themeUtils","_i18nUtils","_priceUtils","_useExpandableList","_collapsibleNative","_clockIconNative","_chatModel","_jsxRuntime","FREE_LABEL","Event","data","theme","Theme","Dark","language","onSelect","c","getThemeClasses","items","Array","isArray","head","rest","expanded","hasMore","toggle","useExpandableList","renderCard","item","name","resolveText","location","description","isFree","isFreePrice","price","jsx","View","className","surface","border","children","jsxs","Pressable","onPress","Image","accessibilityLabel","source","uri","image","iconBg","Text","title","numberOfLines","free","ClockIcon","size","color","iconColor","subtitle","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_themeUtils","_i18nUtils","_priceUtils","_timeUtils","_useExpandableList","_collapsibleNative","_clockIconNative","_chatModel","_jsxRuntime","FREE_LABEL","Event","data","theme","Theme","Dark","language","onSelect","c","getThemeClasses","items","Array","isArray","head","rest","expanded","hasMore","toggle","useExpandableList","renderCard","item","name","resolveText","location","description","isFree","isFreePrice","price","dateLabel","formatEventDate","startDateTime","endDateTime","hasEventTime","time","jsx","View","className","surface","border","children","jsxs","Pressable","onPress","Image","accessibilityLabel","source","uri","image","iconBg","Text","title","numberOfLines","free","ClockIcon","size","color","iconColor","subtitle","map","index","undefined","id","Fragment","Collapsible","actionBorder","actionText"],"sourceRoot":"../../../../../../src","sources":["features/chat/components/event/event.native.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,10 +6,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.isFreePrice = isFreePrice;
|
|
7
7
|
function isFreePrice(price) {
|
|
8
8
|
if (price == null) return true;
|
|
9
|
-
if (typeof price === 'number') return price === 0;
|
|
10
|
-
const trimmed = price.trim();
|
|
11
|
-
if (trimmed === '') return true;
|
|
9
|
+
if (typeof price === 'number') return !Number.isFinite(price) || price === 0;
|
|
10
|
+
const trimmed = price.trim().toLowerCase();
|
|
11
|
+
if (trimmed === '' || trimmed.includes('undefined') || trimmed.includes('null')) return true;
|
|
12
12
|
const numeric = parseFloat(trimmed.replace(/[^0-9.,-]/g, '').replace(',', '.'));
|
|
13
|
-
return Number.isFinite(numeric)
|
|
13
|
+
return !Number.isFinite(numeric) || numeric === 0;
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=price.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isFreePrice","price","trimmed","trim","
|
|
1
|
+
{"version":3,"names":["isFreePrice","price","Number","isFinite","trimmed","trim","toLowerCase","includes","numeric","parseFloat","replace"],"sourceRoot":"../../../src","sources":["utils/price.utils.ts"],"mappings":";;;;;;AAAO,SAASA,WAAWA,CAACC,KAA8B,EAAW;EACnE,IAAIA,KAAK,IAAI,IAAI,EAAE,OAAO,IAAI;EAC9B,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE,OAAO,CAACC,MAAM,CAACC,QAAQ,CAACF,KAAK,CAAC,IAAIA,KAAK,KAAK,CAAC;EAE5E,MAAMG,OAAO,GAAGH,KAAK,CAACI,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;EAC1C,IAAIF,OAAO,KAAK,EAAE,IAAIA,OAAO,CAACG,QAAQ,CAAC,WAAW,CAAC,IAAIH,OAAO,CAACG,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,IAAI;EAE5F,MAAMC,OAAO,GAAGC,UAAU,CAACL,OAAO,CAACM,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC/E,OAAO,CAACR,MAAM,CAACC,QAAQ,CAACK,OAAO,CAAC,IAAIA,OAAO,KAAK,CAAC;AACnD","ignoreList":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.formatEventDate = formatEventDate;
|
|
7
|
+
exports.hasEventTime = hasEventTime;
|
|
8
|
+
function parseDate(value) {
|
|
9
|
+
if (value == null) return null;
|
|
10
|
+
const trimmed = value.trim();
|
|
11
|
+
if (trimmed === '') return null;
|
|
12
|
+
const date = new Date(trimmed);
|
|
13
|
+
return Number.isNaN(date.getTime()) ? null : date;
|
|
14
|
+
}
|
|
15
|
+
function formatDateTime(date) {
|
|
16
|
+
return date.toLocaleString('en-US', {
|
|
17
|
+
month: 'short',
|
|
18
|
+
day: 'numeric',
|
|
19
|
+
year: 'numeric',
|
|
20
|
+
hour: 'numeric',
|
|
21
|
+
minute: '2-digit'
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function formatTime(date) {
|
|
25
|
+
return date.toLocaleTimeString('en-US', {
|
|
26
|
+
hour: 'numeric',
|
|
27
|
+
minute: '2-digit'
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
function isSameDay(a, b) {
|
|
31
|
+
return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
|
|
32
|
+
}
|
|
33
|
+
function hasEventTime(time) {
|
|
34
|
+
if (time == null) return false;
|
|
35
|
+
const trimmed = time.trim().toLowerCase();
|
|
36
|
+
if (trimmed === '' || trimmed.includes('undefined') || trimmed.includes('null')) return false;
|
|
37
|
+
return !/^0{1,2}:0{2}(:0{2})?$/.test(trimmed);
|
|
38
|
+
}
|
|
39
|
+
function formatEventDate(startDateTime, endDateTime) {
|
|
40
|
+
const start = parseDate(startDateTime);
|
|
41
|
+
if (!start) return '';
|
|
42
|
+
const end = parseDate(endDateTime);
|
|
43
|
+
if (end && !isSameDay(start, end)) {
|
|
44
|
+
return `${formatDateTime(start)} – ${formatDateTime(end)}`;
|
|
45
|
+
}
|
|
46
|
+
if (end) {
|
|
47
|
+
return `${formatDateTime(start)} – ${formatTime(end)}`;
|
|
48
|
+
}
|
|
49
|
+
return formatDateTime(start);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=time.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["parseDate","value","trimmed","trim","date","Date","Number","isNaN","getTime","formatDateTime","toLocaleString","month","day","year","hour","minute","formatTime","toLocaleTimeString","isSameDay","a","b","getFullYear","getMonth","getDate","hasEventTime","time","toLowerCase","includes","test","formatEventDate","startDateTime","endDateTime","start","end"],"sourceRoot":"../../../src","sources":["utils/time.utils.ts"],"mappings":";;;;;;;AAAA,SAASA,SAASA,CAACC,KAAqB,EAAe;EACrD,IAAIA,KAAK,IAAI,IAAI,EAAE,OAAO,IAAI;EAE9B,MAAMC,OAAO,GAAGD,KAAK,CAACE,IAAI,CAAC,CAAC;EAC5B,IAAID,OAAO,KAAK,EAAE,EAAE,OAAO,IAAI;EAE/B,MAAME,IAAI,GAAG,IAAIC,IAAI,CAACH,OAAO,CAAC;EAC9B,OAAOI,MAAM,CAACC,KAAK,CAACH,IAAI,CAACI,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAGJ,IAAI;AACnD;AAEA,SAASK,cAAcA,CAACL,IAAU,EAAU;EAC1C,OAAOA,IAAI,CAACM,cAAc,CAAC,OAAO,EAAE;IAClCC,KAAK,EAAE,OAAO;IACdC,GAAG,EAAE,SAAS;IACdC,IAAI,EAAE,SAAS;IACfC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC,CAAC;AACJ;AAEA,SAASC,UAAUA,CAACZ,IAAU,EAAU;EACtC,OAAOA,IAAI,CAACa,kBAAkB,CAAC,OAAO,EAAE;IACtCH,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC,CAAC;AACJ;AAEA,SAASG,SAASA,CAACC,CAAO,EAAEC,CAAO,EAAW;EAC5C,OACED,CAAC,CAACE,WAAW,CAAC,CAAC,KAAKD,CAAC,CAACC,WAAW,CAAC,CAAC,IACnCF,CAAC,CAACG,QAAQ,CAAC,CAAC,KAAKF,CAAC,CAACE,QAAQ,CAAC,CAAC,IAC7BH,CAAC,CAACI,OAAO,CAAC,CAAC,KAAKH,CAAC,CAACG,OAAO,CAAC,CAAC;AAE/B;AAEO,SAASC,YAAYA,CAACC,IAAoB,EAAW;EAC1D,IAAIA,IAAI,IAAI,IAAI,EAAE,OAAO,KAAK;EAE9B,MAAMvB,OAAO,GAAGuB,IAAI,CAACtB,IAAI,CAAC,CAAC,CAACuB,WAAW,CAAC,CAAC;EACzC,IAAIxB,OAAO,KAAK,EAAE,IAAIA,OAAO,CAACyB,QAAQ,CAAC,WAAW,CAAC,IAAIzB,OAAO,CAACyB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK;EAE7F,OAAO,CAAC,uBAAuB,CAACC,IAAI,CAAC1B,OAAO,CAAC;AAC/C;AAEO,SAAS2B,eAAeA,CAACC,aAA6B,EAAEC,WAA2B,EAAU;EAClG,MAAMC,KAAK,GAAGhC,SAAS,CAAC8B,aAAa,CAAC;EACtC,IAAI,CAACE,KAAK,EAAE,OAAO,EAAE;EAErB,MAAMC,GAAG,GAAGjC,SAAS,CAAC+B,WAAW,CAAC;EAClC,IAAIE,GAAG,IAAI,CAACf,SAAS,CAACc,KAAK,EAAEC,GAAG,CAAC,EAAE;IACjC,OAAO,GAAGxB,cAAc,CAACuB,KAAK,CAAC,MAAMvB,cAAc,CAACwB,GAAG,CAAC,EAAE;EAC5D;EACA,IAAIA,GAAG,EAAE;IACP,OAAO,GAAGxB,cAAc,CAACuB,KAAK,CAAC,MAAMhB,UAAU,CAACiB,GAAG,CAAC,EAAE;EACxD;EAEA,OAAOxB,cAAc,CAACuB,KAAK,CAAC;AAC9B","ignoreList":[]}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { getThemeClasses } from "../../../../utils/theme.utils.js";
|
|
4
4
|
import { resolveText } from "../../../../utils/i18n.utils.js";
|
|
5
5
|
import { isFreePrice } from "../../../../utils/price.utils.js";
|
|
6
|
+
import { formatEventDate, hasEventTime } from "../../../../utils/time.utils.js";
|
|
6
7
|
import { useExpandableList } from "../../../../utils/use-expandable-list.js";
|
|
7
8
|
import { Collapsible } from '../common/collapsible';
|
|
8
9
|
import { ClockIcon } from '../common/clock-icon';
|
|
@@ -29,6 +30,7 @@ export function Event({
|
|
|
29
30
|
const location = resolveText(item.location, language);
|
|
30
31
|
const description = item.description ? resolveText(item.description, language) : '';
|
|
31
32
|
const isFree = isFreePrice(item.price);
|
|
33
|
+
const dateLabel = formatEventDate(item.startDateTime, item.endDateTime) || (hasEventTime(item.time) ? item.time : '');
|
|
32
34
|
return /*#__PURE__*/_jsx("div", {
|
|
33
35
|
className: `rounded-2xl border p-3 ${c.surface} ${c.border}`,
|
|
34
36
|
children: /*#__PURE__*/_jsxs("div", {
|
|
@@ -52,12 +54,12 @@ export function Event({
|
|
|
52
54
|
})]
|
|
53
55
|
}), /*#__PURE__*/_jsxs("div", {
|
|
54
56
|
className: "flex items-center gap-1.5",
|
|
55
|
-
children: [/*#__PURE__*/_jsx(ClockIcon, {
|
|
57
|
+
children: [dateLabel ? /*#__PURE__*/_jsx(ClockIcon, {
|
|
56
58
|
size: 16,
|
|
57
59
|
color: c.iconColor
|
|
58
|
-
}), /*#__PURE__*/
|
|
60
|
+
}) : null, /*#__PURE__*/_jsx("span", {
|
|
59
61
|
className: `truncate text-sm down-sm:text-xs ${c.subtitle}`,
|
|
60
|
-
children:
|
|
62
|
+
children: dateLabel ? `${dateLabel} · ${location}` : location
|
|
61
63
|
})]
|
|
62
64
|
}), description ? /*#__PURE__*/_jsx("span", {
|
|
63
65
|
className: `line-clamp-2 text-sm down-sm:text-xs ${c.subtitle}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getThemeClasses","resolveText","isFreePrice","useExpandableList","Collapsible","ClockIcon","Theme","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","FREE_LABEL","Event","data","theme","Dark","language","onSelect","c","items","Array","isArray","head","rest","expanded","hasMore","toggle","renderCard","item","name","location","description","isFree","price","className","surface","border","children","src","image","alt","onClick","iconBg","title","free","size","color","iconColor","subtitle","
|
|
1
|
+
{"version":3,"names":["getThemeClasses","resolveText","isFreePrice","formatEventDate","hasEventTime","useExpandableList","Collapsible","ClockIcon","Theme","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","FREE_LABEL","Event","data","theme","Dark","language","onSelect","c","items","Array","isArray","head","rest","expanded","hasMore","toggle","renderCard","item","name","location","description","isFree","price","dateLabel","startDateTime","endDateTime","time","className","surface","border","children","src","image","alt","onClick","iconBg","title","free","size","color","iconColor","subtitle","map","index","undefined","id","type","actionBorder","actionText"],"sourceRoot":"../../../../../../src","sources":["features/chat/components/event/event.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,6 +4,7 @@ import { Image, Pressable, Text, View } from 'react-native';
|
|
|
4
4
|
import { getThemeClasses } from "../../../../utils/theme.utils.js";
|
|
5
5
|
import { resolveText } from "../../../../utils/i18n.utils.js";
|
|
6
6
|
import { isFreePrice } from "../../../../utils/price.utils.js";
|
|
7
|
+
import { formatEventDate, hasEventTime } from "../../../../utils/time.utils.js";
|
|
7
8
|
import { useExpandableList } from "../../../../utils/use-expandable-list.js";
|
|
8
9
|
import { Collapsible } from "../common/collapsible.native.js";
|
|
9
10
|
import { ClockIcon } from "../common/clock-icon.native.js";
|
|
@@ -30,6 +31,7 @@ export function Event({
|
|
|
30
31
|
const location = resolveText(item.location, language);
|
|
31
32
|
const description = item.description ? resolveText(item.description, language) : '';
|
|
32
33
|
const isFree = isFreePrice(item.price);
|
|
34
|
+
const dateLabel = formatEventDate(item.startDateTime, item.endDateTime) || (hasEventTime(item.time) ? item.time : '');
|
|
33
35
|
return /*#__PURE__*/_jsx(View, {
|
|
34
36
|
className: `rounded-2xl border p-3 ${c.surface} ${c.border}`,
|
|
35
37
|
children: /*#__PURE__*/_jsxs(View, {
|
|
@@ -58,13 +60,13 @@ export function Event({
|
|
|
58
60
|
})]
|
|
59
61
|
}), /*#__PURE__*/_jsxs(View, {
|
|
60
62
|
className: "flex-row items-center gap-1.5",
|
|
61
|
-
children: [/*#__PURE__*/_jsx(ClockIcon, {
|
|
63
|
+
children: [dateLabel ? /*#__PURE__*/_jsx(ClockIcon, {
|
|
62
64
|
size: 16,
|
|
63
65
|
color: c.iconColor
|
|
64
|
-
}), /*#__PURE__*/
|
|
66
|
+
}) : null, /*#__PURE__*/_jsx(Text, {
|
|
65
67
|
className: `flex-1 text-sm down-sm:text-xs ${c.subtitle}`,
|
|
66
68
|
numberOfLines: 1,
|
|
67
|
-
children:
|
|
69
|
+
children: dateLabel ? `${dateLabel} · ${location}` : location
|
|
68
70
|
})]
|
|
69
71
|
}), description ? /*#__PURE__*/_jsx(Text, {
|
|
70
72
|
className: `text-sm down-sm:text-xs ${c.subtitle}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Image","Pressable","Text","View","getThemeClasses","resolveText","isFreePrice","useExpandableList","Collapsible","ClockIcon","Theme","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","FREE_LABEL","Event","data","theme","Dark","language","onSelect","c","items","Array","isArray","head","rest","expanded","hasMore","toggle","renderCard","item","name","location","description","isFree","price","className","surface","border","children","onPress","accessibilityLabel","source","uri","image","iconBg","title","numberOfLines","free","size","color","iconColor","subtitle","
|
|
1
|
+
{"version":3,"names":["Image","Pressable","Text","View","getThemeClasses","resolveText","isFreePrice","formatEventDate","hasEventTime","useExpandableList","Collapsible","ClockIcon","Theme","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","FREE_LABEL","Event","data","theme","Dark","language","onSelect","c","items","Array","isArray","head","rest","expanded","hasMore","toggle","renderCard","item","name","location","description","isFree","price","dateLabel","startDateTime","endDateTime","time","className","surface","border","children","onPress","accessibilityLabel","source","uri","image","iconBg","title","numberOfLines","free","size","color","iconColor","subtitle","map","index","undefined","id","actionBorder","actionText"],"sourceRoot":"../../../../../../src","sources":["features/chat/components/event/event.native.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
export function isFreePrice(price) {
|
|
4
4
|
if (price == null) return true;
|
|
5
|
-
if (typeof price === 'number') return price === 0;
|
|
6
|
-
const trimmed = price.trim();
|
|
7
|
-
if (trimmed === '') return true;
|
|
5
|
+
if (typeof price === 'number') return !Number.isFinite(price) || price === 0;
|
|
6
|
+
const trimmed = price.trim().toLowerCase();
|
|
7
|
+
if (trimmed === '' || trimmed.includes('undefined') || trimmed.includes('null')) return true;
|
|
8
8
|
const numeric = parseFloat(trimmed.replace(/[^0-9.,-]/g, '').replace(',', '.'));
|
|
9
|
-
return Number.isFinite(numeric)
|
|
9
|
+
return !Number.isFinite(numeric) || numeric === 0;
|
|
10
10
|
}
|
|
11
11
|
//# sourceMappingURL=price.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isFreePrice","price","trimmed","trim","
|
|
1
|
+
{"version":3,"names":["isFreePrice","price","Number","isFinite","trimmed","trim","toLowerCase","includes","numeric","parseFloat","replace"],"sourceRoot":"../../../src","sources":["utils/price.utils.ts"],"mappings":";;AAAA,OAAO,SAASA,WAAWA,CAACC,KAA8B,EAAW;EACnE,IAAIA,KAAK,IAAI,IAAI,EAAE,OAAO,IAAI;EAC9B,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE,OAAO,CAACC,MAAM,CAACC,QAAQ,CAACF,KAAK,CAAC,IAAIA,KAAK,KAAK,CAAC;EAE5E,MAAMG,OAAO,GAAGH,KAAK,CAACI,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;EAC1C,IAAIF,OAAO,KAAK,EAAE,IAAIA,OAAO,CAACG,QAAQ,CAAC,WAAW,CAAC,IAAIH,OAAO,CAACG,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,IAAI;EAE5F,MAAMC,OAAO,GAAGC,UAAU,CAACL,OAAO,CAACM,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC/E,OAAO,CAACR,MAAM,CAACC,QAAQ,CAACK,OAAO,CAAC,IAAIA,OAAO,KAAK,CAAC;AACnD","ignoreList":[]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function parseDate(value) {
|
|
4
|
+
if (value == null) return null;
|
|
5
|
+
const trimmed = value.trim();
|
|
6
|
+
if (trimmed === '') return null;
|
|
7
|
+
const date = new Date(trimmed);
|
|
8
|
+
return Number.isNaN(date.getTime()) ? null : date;
|
|
9
|
+
}
|
|
10
|
+
function formatDateTime(date) {
|
|
11
|
+
return date.toLocaleString('en-US', {
|
|
12
|
+
month: 'short',
|
|
13
|
+
day: 'numeric',
|
|
14
|
+
year: 'numeric',
|
|
15
|
+
hour: 'numeric',
|
|
16
|
+
minute: '2-digit'
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
function formatTime(date) {
|
|
20
|
+
return date.toLocaleTimeString('en-US', {
|
|
21
|
+
hour: 'numeric',
|
|
22
|
+
minute: '2-digit'
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function isSameDay(a, b) {
|
|
26
|
+
return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
|
|
27
|
+
}
|
|
28
|
+
export function hasEventTime(time) {
|
|
29
|
+
if (time == null) return false;
|
|
30
|
+
const trimmed = time.trim().toLowerCase();
|
|
31
|
+
if (trimmed === '' || trimmed.includes('undefined') || trimmed.includes('null')) return false;
|
|
32
|
+
return !/^0{1,2}:0{2}(:0{2})?$/.test(trimmed);
|
|
33
|
+
}
|
|
34
|
+
export function formatEventDate(startDateTime, endDateTime) {
|
|
35
|
+
const start = parseDate(startDateTime);
|
|
36
|
+
if (!start) return '';
|
|
37
|
+
const end = parseDate(endDateTime);
|
|
38
|
+
if (end && !isSameDay(start, end)) {
|
|
39
|
+
return `${formatDateTime(start)} – ${formatDateTime(end)}`;
|
|
40
|
+
}
|
|
41
|
+
if (end) {
|
|
42
|
+
return `${formatDateTime(start)} – ${formatTime(end)}`;
|
|
43
|
+
}
|
|
44
|
+
return formatDateTime(start);
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=time.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["parseDate","value","trimmed","trim","date","Date","Number","isNaN","getTime","formatDateTime","toLocaleString","month","day","year","hour","minute","formatTime","toLocaleTimeString","isSameDay","a","b","getFullYear","getMonth","getDate","hasEventTime","time","toLowerCase","includes","test","formatEventDate","startDateTime","endDateTime","start","end"],"sourceRoot":"../../../src","sources":["utils/time.utils.ts"],"mappings":";;AAAA,SAASA,SAASA,CAACC,KAAqB,EAAe;EACrD,IAAIA,KAAK,IAAI,IAAI,EAAE,OAAO,IAAI;EAE9B,MAAMC,OAAO,GAAGD,KAAK,CAACE,IAAI,CAAC,CAAC;EAC5B,IAAID,OAAO,KAAK,EAAE,EAAE,OAAO,IAAI;EAE/B,MAAME,IAAI,GAAG,IAAIC,IAAI,CAACH,OAAO,CAAC;EAC9B,OAAOI,MAAM,CAACC,KAAK,CAACH,IAAI,CAACI,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAGJ,IAAI;AACnD;AAEA,SAASK,cAAcA,CAACL,IAAU,EAAU;EAC1C,OAAOA,IAAI,CAACM,cAAc,CAAC,OAAO,EAAE;IAClCC,KAAK,EAAE,OAAO;IACdC,GAAG,EAAE,SAAS;IACdC,IAAI,EAAE,SAAS;IACfC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC,CAAC;AACJ;AAEA,SAASC,UAAUA,CAACZ,IAAU,EAAU;EACtC,OAAOA,IAAI,CAACa,kBAAkB,CAAC,OAAO,EAAE;IACtCH,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC,CAAC;AACJ;AAEA,SAASG,SAASA,CAACC,CAAO,EAAEC,CAAO,EAAW;EAC5C,OACED,CAAC,CAACE,WAAW,CAAC,CAAC,KAAKD,CAAC,CAACC,WAAW,CAAC,CAAC,IACnCF,CAAC,CAACG,QAAQ,CAAC,CAAC,KAAKF,CAAC,CAACE,QAAQ,CAAC,CAAC,IAC7BH,CAAC,CAACI,OAAO,CAAC,CAAC,KAAKH,CAAC,CAACG,OAAO,CAAC,CAAC;AAE/B;AAEA,OAAO,SAASC,YAAYA,CAACC,IAAoB,EAAW;EAC1D,IAAIA,IAAI,IAAI,IAAI,EAAE,OAAO,KAAK;EAE9B,MAAMvB,OAAO,GAAGuB,IAAI,CAACtB,IAAI,CAAC,CAAC,CAACuB,WAAW,CAAC,CAAC;EACzC,IAAIxB,OAAO,KAAK,EAAE,IAAIA,OAAO,CAACyB,QAAQ,CAAC,WAAW,CAAC,IAAIzB,OAAO,CAACyB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK;EAE7F,OAAO,CAAC,uBAAuB,CAACC,IAAI,CAAC1B,OAAO,CAAC;AAC/C;AAEA,OAAO,SAAS2B,eAAeA,CAACC,aAA6B,EAAEC,WAA2B,EAAU;EAClG,MAAMC,KAAK,GAAGhC,SAAS,CAAC8B,aAAa,CAAC;EACtC,IAAI,CAACE,KAAK,EAAE,OAAO,EAAE;EAErB,MAAMC,GAAG,GAAGjC,SAAS,CAAC+B,WAAW,CAAC;EAClC,IAAIE,GAAG,IAAI,CAACf,SAAS,CAACc,KAAK,EAAEC,GAAG,CAAC,EAAE;IACjC,OAAO,GAAGxB,cAAc,CAACuB,KAAK,CAAC,MAAMvB,cAAc,CAACwB,GAAG,CAAC,EAAE;EAC5D;EACA,IAAIA,GAAG,EAAE;IACP,OAAO,GAAGxB,cAAc,CAACuB,KAAK,CAAC,MAAMhB,UAAU,CAACiB,GAAG,CAAC,EAAE;EACxD;EAEA,OAAOxB,cAAc,CAACuB,KAAK,CAAC;AAC9B","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/chat/components/event/event.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/chat/components/event/event.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAI/C,wBAAgB,KAAK,CAAC,EACpB,IAAI,EACJ,KAAkB,EAClB,QAAQ,EACR,QAAQ,GACT,EAAE,kBAAkB,CAAC,SAAS,CAAC,+BAkF/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.model.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/chat/components/event/event.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"event.model.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/chat/components/event/event.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAChC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.native.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/chat/components/event/event.native.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"event.native.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/chat/components/event/event.native.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAI/C,wBAAgB,KAAK,CAAC,EACpB,IAAI,EACJ,KAAkB,EAClB,QAAQ,EACR,QAAQ,GACT,EAAE,kBAAkB,CAAC,SAAS,CAAC,+BAqF/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.utils.d.ts","sourceRoot":"","sources":["../../../../src/utils/time.utils.ts"],"names":[],"mappings":"AAmCA,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAO1D;AAED,wBAAgB,eAAe,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAalG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/chat/components/event/event.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/chat/components/event/event.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAe,CAAC;AAI/C,wBAAgB,KAAK,CAAC,EACpB,IAAI,EACJ,KAAkB,EAClB,QAAQ,EACR,QAAQ,GACT,EAAE,kBAAkB,CAAC,SAAS,CAAC,+BAkF/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.model.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/chat/components/event/event.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAAwB,CAAC;AAE5D,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"event.model.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/chat/components/event/event.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAAwB,CAAC;AAE5D,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAChC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.native.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/chat/components/event/event.native.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"event.native.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/chat/components/event/event.native.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAe,CAAC;AAI/C,wBAAgB,KAAK,CAAC,EACpB,IAAI,EACJ,KAAkB,EAClB,QAAQ,EACR,QAAQ,GACT,EAAE,kBAAkB,CAAC,SAAS,CAAC,+BAqF/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.utils.d.ts","sourceRoot":"","sources":["../../../../src/utils/time.utils.ts"],"names":[],"mappings":"AAmCA,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAO1D;AAED,wBAAgB,eAAe,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAalG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inorain_development/hotel-smarters-chat-ui",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.2",
|
|
4
4
|
"description": "Cross-platform (React DOM + React Native) chat UI components that render dynamically from an AI-provided { type, data } payload.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -2,6 +2,7 @@ import { Image, Pressable, Text, View } from 'react-native';
|
|
|
2
2
|
import { getThemeClasses } from '../../../../utils/theme.utils';
|
|
3
3
|
import { resolveText } from '../../../../utils/i18n.utils';
|
|
4
4
|
import { isFreePrice } from '../../../../utils/price.utils';
|
|
5
|
+
import { formatEventDate, hasEventTime } from '../../../../utils/time.utils';
|
|
5
6
|
import { useExpandableList } from '../../../../utils/use-expandable-list';
|
|
6
7
|
import { Collapsible } from '../common/collapsible.native';
|
|
7
8
|
import { ClockIcon } from '../common/clock-icon.native';
|
|
@@ -26,6 +27,9 @@ export function Event({
|
|
|
26
27
|
const location = resolveText(item.location, language);
|
|
27
28
|
const description = item.description ? resolveText(item.description, language) : '';
|
|
28
29
|
const isFree = isFreePrice(item.price);
|
|
30
|
+
const dateLabel =
|
|
31
|
+
formatEventDate(item.startDateTime, item.endDateTime) ||
|
|
32
|
+
(hasEventTime(item.time) ? item.time : '');
|
|
29
33
|
|
|
30
34
|
return (
|
|
31
35
|
<View className={`rounded-2xl border p-3 ${c.surface} ${c.border}`}>
|
|
@@ -49,9 +53,9 @@ export function Event({
|
|
|
49
53
|
</View>
|
|
50
54
|
|
|
51
55
|
<View className="flex-row items-center gap-1.5">
|
|
52
|
-
<ClockIcon size={16} color={c.iconColor} />
|
|
56
|
+
{dateLabel ? <ClockIcon size={16} color={c.iconColor} /> : null}
|
|
53
57
|
<Text className={`flex-1 text-sm down-sm:text-xs ${c.subtitle}`} numberOfLines={1}>
|
|
54
|
-
{
|
|
58
|
+
{dateLabel ? `${dateLabel} · ${location}` : location}
|
|
55
59
|
</Text>
|
|
56
60
|
</View>
|
|
57
61
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getThemeClasses } from '../../../../utils/theme.utils';
|
|
2
2
|
import { resolveText } from '../../../../utils/i18n.utils';
|
|
3
3
|
import { isFreePrice } from '../../../../utils/price.utils';
|
|
4
|
+
import { formatEventDate, hasEventTime } from '../../../../utils/time.utils';
|
|
4
5
|
import { useExpandableList } from '../../../../utils/use-expandable-list';
|
|
5
6
|
import { Collapsible } from '../common/collapsible';
|
|
6
7
|
import { ClockIcon } from '../common/clock-icon';
|
|
@@ -25,6 +26,9 @@ export function Event({
|
|
|
25
26
|
const location = resolveText(item.location, language);
|
|
26
27
|
const description = item.description ? resolveText(item.description, language) : '';
|
|
27
28
|
const isFree = isFreePrice(item.price);
|
|
29
|
+
const dateLabel =
|
|
30
|
+
formatEventDate(item.startDateTime, item.endDateTime) ||
|
|
31
|
+
(hasEventTime(item.time) ? item.time : '');
|
|
28
32
|
|
|
29
33
|
return (
|
|
30
34
|
<div className={`rounded-2xl border p-3 ${c.surface} ${c.border}`}>
|
|
@@ -48,9 +52,9 @@ export function Event({
|
|
|
48
52
|
</div>
|
|
49
53
|
|
|
50
54
|
<div className="flex items-center gap-1.5">
|
|
51
|
-
<ClockIcon size={16} color={c.iconColor} />
|
|
55
|
+
{dateLabel ? <ClockIcon size={16} color={c.iconColor} /> : null}
|
|
52
56
|
<span className={`truncate text-sm down-sm:text-xs ${c.subtitle}`}>
|
|
53
|
-
{
|
|
57
|
+
{dateLabel ? `${dateLabel} · ${location}` : location}
|
|
54
58
|
</span>
|
|
55
59
|
</div>
|
|
56
60
|
|
package/src/utils/price.utils.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export function isFreePrice(price?: string | number | null): boolean {
|
|
2
2
|
if (price == null) return true;
|
|
3
|
-
if (typeof price === 'number') return price === 0;
|
|
3
|
+
if (typeof price === 'number') return !Number.isFinite(price) || price === 0;
|
|
4
4
|
|
|
5
|
-
const trimmed = price.trim();
|
|
6
|
-
if (trimmed === '') return true;
|
|
5
|
+
const trimmed = price.trim().toLowerCase();
|
|
6
|
+
if (trimmed === '' || trimmed.includes('undefined') || trimmed.includes('null')) return true;
|
|
7
7
|
|
|
8
8
|
const numeric = parseFloat(trimmed.replace(/[^0-9.,-]/g, '').replace(',', '.'));
|
|
9
|
-
return Number.isFinite(numeric)
|
|
9
|
+
return !Number.isFinite(numeric) || numeric === 0;
|
|
10
10
|
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
function parseDate(value?: string | null): Date | null {
|
|
2
|
+
if (value == null) return null;
|
|
3
|
+
|
|
4
|
+
const trimmed = value.trim();
|
|
5
|
+
if (trimmed === '') return null;
|
|
6
|
+
|
|
7
|
+
const date = new Date(trimmed);
|
|
8
|
+
return Number.isNaN(date.getTime()) ? null : date;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function formatDateTime(date: Date): string {
|
|
12
|
+
return date.toLocaleString('en-US', {
|
|
13
|
+
month: 'short',
|
|
14
|
+
day: 'numeric',
|
|
15
|
+
year: 'numeric',
|
|
16
|
+
hour: 'numeric',
|
|
17
|
+
minute: '2-digit',
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function formatTime(date: Date): string {
|
|
22
|
+
return date.toLocaleTimeString('en-US', {
|
|
23
|
+
hour: 'numeric',
|
|
24
|
+
minute: '2-digit',
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function isSameDay(a: Date, b: Date): boolean {
|
|
29
|
+
return (
|
|
30
|
+
a.getFullYear() === b.getFullYear() &&
|
|
31
|
+
a.getMonth() === b.getMonth() &&
|
|
32
|
+
a.getDate() === b.getDate()
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function hasEventTime(time?: string | null): boolean {
|
|
37
|
+
if (time == null) return false;
|
|
38
|
+
|
|
39
|
+
const trimmed = time.trim().toLowerCase();
|
|
40
|
+
if (trimmed === '' || trimmed.includes('undefined') || trimmed.includes('null')) return false;
|
|
41
|
+
|
|
42
|
+
return !/^0{1,2}:0{2}(:0{2})?$/.test(trimmed);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function formatEventDate(startDateTime?: string | null, endDateTime?: string | null): string {
|
|
46
|
+
const start = parseDate(startDateTime);
|
|
47
|
+
if (!start) return '';
|
|
48
|
+
|
|
49
|
+
const end = parseDate(endDateTime);
|
|
50
|
+
if (end && !isSameDay(start, end)) {
|
|
51
|
+
return `${formatDateTime(start)} – ${formatDateTime(end)}`;
|
|
52
|
+
}
|
|
53
|
+
if (end) {
|
|
54
|
+
return `${formatDateTime(start)} – ${formatTime(end)}`;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return formatDateTime(start);
|
|
58
|
+
}
|