Socket
Socket
Sign inDemoInstall

cronofy-elements

Package Overview
Dependencies
Maintainers
3
Versions
171
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cronofy-elements - npm Package Compare versions

Comparing version 1.40.0 to 1.40.1

build/CronofyElements.v1.40.1.js

2

package.json
{
"name": "cronofy-elements",
"version": "1.40.0",
"version": "1.40.1",
"description": "Fast track scheduling with Cronofy's embeddable UI Elements",

@@ -5,0 +5,0 @@ "main": "build/npm/CronofyElements.js",

@@ -7,2 +7,3 @@ import React from "react";

import { useTheme } from "./contexts/theme-context";
import { useTz } from "./contexts/tz-context";

@@ -13,2 +14,3 @@ const Confirm = ({ confirmButtonRef }) => {

const theme = useTheme();
const [tz] = useTz();

@@ -20,3 +22,3 @@ const handleCancel = () => {

const handleConfirmation = () => {
dispatchStatus({ type: "CONFIRM_SELECTION" });
dispatchStatus({ type: "CONFIRM_SELECTION", tzid: tz.selectedTzid.tzid });
};

@@ -38,3 +40,3 @@

moment(status.selected.start, "YYYY-MM-DD"),
status.selectedTzid.tzid,
tz.selectedTzid.tzid,
"dddd, MMMM Do YYYY"

@@ -46,3 +48,3 @@ )}

moment(status.selected.start, "YYYY-MM-DDTHH:mm:00Z"),
status.selectedTzid.tzid,
tz.selectedTzid.tzid,
"LT"

@@ -53,6 +55,6 @@ )}

moment(status.selected.end, "YYYY-MM-DDTHH:mm:00Z"),
status.selectedTzid.tzid,
tz.selectedTzid.tzid,
"LT"
)}{" "}
{`(${moment.tz(status.selectedTzid.tzid).format("z")})`}
{`(${moment.tz(tz.selectedTzid.tzid).format("z")})`}
</p>

@@ -59,0 +61,0 @@ </div>

@@ -13,3 +13,3 @@ import {

const sendSlotNotification = () => {
const sendSlotNotification = tzid => {
const notification = {

@@ -19,3 +19,3 @@ notification: {

slot: state.selected,
tzid: state.selectedTzid.tzid,
tzid: tzid,
},

@@ -36,3 +36,3 @@ };

case "CONFIRM_SELECTION": {
sendSlotNotification();
sendSlotNotification(action.tzid);
return state;

@@ -59,3 +59,3 @@ }

month: month.month,
tzid: state.selectedTzid.tzid,
tzid: action.tzid,
startDay: state.startDay,

@@ -73,3 +73,3 @@ }),

const selectedDay = hasAnySlots
? getFirstAvailableDay(slotsObject, state.selectedTzid.tzid)
? getFirstAvailableDay(slotsObject, action.tzid)
: false;

@@ -95,3 +95,3 @@ const availableDays = hasAnySlots ? getAvailableDays(slotsObject, state.tzid) : false;

hasAnySlots && !state.selectedDay
? getFirstAvailableDay(slotsObject, state.selectedTzid.tzid)
? getFirstAvailableDay(slotsObject, action.tzid)
: state.selectedDay;

@@ -117,3 +117,3 @@ return {

case "SELECT_DAY_INITIAL":
const initialDaySlots = getSlotsByDay(state.slots, action.day, state.selectedTzid.tzid);
const initialDaySlots = getSlotsByDay(state.slots, action.day, action.tzid);
return {

@@ -128,3 +128,3 @@ ...state,

case "SELECT_DAY":
const daySlots = getSlotsByDay(state.slots, action.day, state.selectedTzid.tzid);
const daySlots = getSlotsByDay(state.slots, action.day, action.tzid);
return {

@@ -156,3 +156,3 @@ ...state,

if (state.mode === "no_confirm") {
sendSlotNotification();
sendSlotNotification(action.tzid);
} else {

@@ -164,4 +164,4 @@ state.columnView = "confirm";

case "SELECT_TZID": {
const availableDays = getAvailableDays(state.slots, action.tz.tzid);
const daySlots = getSlotsByDay(state.slots, state.selectedDay, action.tz.tzid);
const availableDays = getAvailableDays(state.slots, action.tzid);
const daySlots = getSlotsByDay(state.slots, state.selectedDay, action.tzid);
const monthlySlots = state.months.map(month => ({

@@ -172,3 +172,3 @@ month: month.month,

month: month.month,
tzid: action.tz.tzid,
tzid: action.tzid,
startDay: state.startDay,

@@ -183,8 +183,7 @@ }),

monthlySlots,
selectedTzid: action.tz,
};
if (state.selected.start) {
const selectedDay = getLocalDayFromUtc(state.selected.start, action.tz.tzid);
const daySlots = getSlotsByDay(state.slots, selectedDay, action.tz.tzid);
const selectedDay = getLocalDayFromUtc(state.selected.start, action.tzid);
const daySlots = getSlotsByDay(state.slots, selectedDay, action.tzid);

@@ -198,3 +197,3 @@ state = {

if (state.mode === "no_confirm") sendSlotNotification();
if (state.mode === "no_confirm") sendSlotNotification(action.tzid);
}

@@ -201,0 +200,0 @@

@@ -20,2 +20,3 @@ import React, { useState } from "react";

import { StatusProvider } from "./contexts/status-context";
import { TzProvider } from "./contexts/tz-context";

@@ -35,4 +36,2 @@ const DateTimePicker = ({ options }) => {

}));
const tzList = parseTzList(options.config.tzList, options.tzid);
const selectedTzid = getInitialSelectedTzid(tzList, options.tzid);
return {

@@ -63,4 +62,2 @@ auth: {

tzid: options.tzid,
selectedTzid: selectedTzid,
tzList: tzList,
populated: false,

@@ -89,2 +86,10 @@ };

const tzList = parseTzList(options.config.tzList, options.tzid);
const selectedTzid = getInitialSelectedTzid(tzList, options.tzid);
const tzOptions = {
selectedTzid: selectedTzid,
list: tzList,
};
return (

@@ -94,5 +99,7 @@ <ThemeProvider options={themeOptions}>

<I18nProvider options={i18nOptions}>
<StatusProvider options={statusOptions}>
<Wrapper />
</StatusProvider>
<TzProvider options={tzOptions}>
<StatusProvider options={statusOptions}>
<Wrapper />
</StatusProvider>
</TzProvider>
</I18nProvider>

@@ -99,0 +106,0 @@ </LogProvider>

@@ -7,2 +7,3 @@ import React from "react";

import { useTheme } from "./contexts/theme-context";
import { useTz } from "./contexts/tz-context";

@@ -13,2 +14,3 @@ const DayButton = ({ day, selected = false, focused = false }) => {

const theme = useTheme();
const [tz] = useTz();

@@ -22,3 +24,3 @@ let classStub = "calendar-grid--button";

const handleClick = () => {
dispatchStatus({ type: "SELECT_DAY", day: day.date });
dispatchStatus({ type: "SELECT_DAY", day: day.date, tzid: tz.selectedTzid.tzid });
};

@@ -25,0 +27,0 @@

@@ -1,11 +0,9 @@

import React from "react";
import React, { memo } from "react";
import { useI18n } from "../../contexts/i18n-context";
import { useStatus } from "./contexts/status-context";
import { useTheme } from "./contexts/theme-context";
import TimeZoneSelector from "./TimeZoneSelector";
const Details = () => {
const Details = ({ duration, locale }) => {
const i18n = useI18n();
const [status, _dispatchStatus] = useStatus();
const theme = useTheme();

@@ -19,8 +17,7 @@

</p>
<TimeZoneSelector />
<TimeZoneSelector locale={locale} />
</div>
<div className={theme.classBuilder("details--duration")}>
<p>
<strong>{i18n.t("duration_label")}:</strong>{" "}
{status.query.required_duration.minutes} {i18n.t("minutes")}
<strong>{i18n.t("duration_label")}:</strong> {duration} {i18n.t("minutes")}
</p>

@@ -32,2 +29,2 @@ </div>

export default Details;
export default memo(Details);

@@ -7,2 +7,3 @@ import React, { useEffect, useRef } from "react";

import { useTheme } from "./contexts/theme-context";
import { useTz } from "./contexts/tz-context";

@@ -13,2 +14,3 @@ const SlotButton = ({ slot }) => {

const [status, dispatchStatus] = useStatus();
const [tz] = useTz();

@@ -18,3 +20,3 @@ const slotButtonRef = useRef();

const handleSlotSelection = slot => {
dispatchStatus({ type: "SELECT_SLOT", slot });
dispatchStatus({ type: "SELECT_SLOT", slot, tzid: tz.selectedTzid.tzid });
};

@@ -42,3 +44,3 @@

moment(slot.start, "YYYY-MM-DDTHH:mm:00Z"),
status.selectedTzid.tzid,
tz.selectedTzid.tzid,
"LT"

@@ -49,8 +51,6 @@ )}

moment(slot.end, "YYYY-MM-DDTHH:mm:00Z"),
status.selectedTzid.tzid,
tz.selectedTzid.tzid,
"LT"
)}{" "}
{`(${moment(slot.start, "YYYY-MM-DDTHH:mm:00Z")
.tz(status.selectedTzid.tzid)
.format("z")})`}
{`(${moment(slot.start, "YYYY-MM-DDTHH:mm:00Z").tz(tz.selectedTzid.tzid).format("z")})`}
</button>

@@ -57,0 +57,0 @@ );

import React, { useEffect, useRef, useState } from "react";
import { useStatus } from "./contexts/status-context";
import { useTheme } from "./contexts/theme-context";
import { useI18n } from "../../contexts/i18n-context";
import { tzi18n } from "../../helpers/i18n";
import { useTz } from "./contexts/tz-context";
const TimeZoneSelector = () => {
const TimeZoneSelector = ({ locale }) => {
const theme = useTheme();
const i18n = useI18n();
const [tz, setTz] = useTz();
const [status, dispatchStatus] = useStatus();
const [showList, setShowList] = useState(() => false);

@@ -30,4 +28,4 @@ const [focused, setFocused] = useState(() => false);

const handleOptionSelect = tz => {
dispatchStatus({ type: "SELECT_TZID", tz: tz });
const handleOptionSelect = selectedTz => {
setTz({ ...tz, selectedTzid: selectedTz });
setShowList(false);

@@ -40,8 +38,7 @@ };

e.preventDefault();
const nextFocusedItemIndex =
status.tzList.findIndex(item => focused === item.tzid) + 1;
const nextFocusedItemIndex = tz.list.findIndex(item => focused === item.tzid) + 1;
const nextItem =
nextFocusedItemIndex > status.tzList.length - 1 ? 0 : nextFocusedItemIndex;
nextFocusedItemIndex > tz.list.length - 1 ? 0 : nextFocusedItemIndex;
setFocused(status.tzList[nextItem].tzid);
setFocused(tz.list[nextItem].tzid);

@@ -51,12 +48,11 @@ break;

e.preventDefault();
const prevFocusedItemIndex =
status.tzList.findIndex(item => focused === item.tzid) - 1;
const prevFocusedItemIndex = tz.list.findIndex(item => focused === item.tzid) - 1;
const prevItem =
prevFocusedItemIndex < 0 ? status.tzList.length - 1 : prevFocusedItemIndex;
prevFocusedItemIndex < 0 ? tz.list.length - 1 : prevFocusedItemIndex;
setFocused(status.tzList[prevItem].tzid);
setFocused(tz.list[prevItem].tzid);
break;
case "Enter":
const tz = status.tzList.find(item => focused === item.tzid);
const tz = tz.list.find(item => focused === item.tzid);
handleOptionSelect(tz);

@@ -86,3 +82,3 @@ break;

tzListRef.current.focus();
setFocused(status.selectedTzid.tzid);
setFocused(tz.selectedTzid.tzid);
}

@@ -93,3 +89,3 @@ }, [showList]);

if (showList && tzListRef.current && focused) {
const focusItem = status.tzList.findIndex(item => focused === item.tzid);
const focusItem = tz.list.findIndex(item => focused === item.tzid);
tzListRef.current.children[focusItem].scrollIntoView(scrollIntoViewOptions);

@@ -101,6 +97,6 @@ }

const renderList = status.tzList.map((tz, key) => {
const renderList = tz.list.map((timezone, key) => {
let abbr = "";
if (!tz.abbr.match(meaninglessAbbr)) {
abbr = `${tz.abbr} `;
if (!timezone.abbr.match(meaninglessAbbr)) {
abbr = `${timezone.abbr} `;
}

@@ -114,16 +110,16 @@

theme.classBuilder("timezone-selector--option") +
(focused === tz.tzid
(focused === timezone.tzid
? " " + theme.classBuilder("timezone-selector--focused")
: "") +
(status.selectedTzid.tzid === tz.tzid
(tz.selectedTzid.tzid === timezone.tzid
? " " + theme.classBuilder("timezone-selector--selected")
: "")
}
data-name={tz.name}
aria-selected={tz.tzid === status.selectedTzid.tzid}
onClick={() => handleOptionSelect(tz)}
data-name={timezone.name}
aria-selected={timezone.tzid === tz.selectedTzid.tzid}
onClick={() => handleOptionSelect(timezone)}
onKeyDown={() => console.log("keydown on option")}
>
{`(${abbr}${tz.offset}) `}
<strong>{tzi18n(tz.tzid, status.locale)}</strong>
{`(${abbr}${timezone.offset}) `}
<strong>{tzi18n(timezone.tzid, locale)}</strong>
</li>

@@ -143,3 +139,3 @@ );

>
{tzi18n(status.selectedTzid.tzid, status.locale)}
{tzi18n(tz.selectedTzid.tzid, locale)}
<svg

@@ -146,0 +142,0 @@ className={

@@ -16,5 +16,7 @@ import React, { useEffect, useRef } from "react";

import { useTheme } from "./contexts/theme-context";
import { useTz } from "./contexts/tz-context";
const Wrapper = () => {
const [status, dispatchStatus] = useStatus();
const [tz] = useTz();
const theme = useTheme();

@@ -37,3 +39,7 @@ const confirmButtonRef = useRef();

.then(res => {
dispatchStatus({ type: "SET_INITIAL_SLOTS", slots: res });
dispatchStatus({
type: "SET_INITIAL_SLOTS",
slots: res,
tzid: tz.selectedTzid.tzid,
});
const remainingMonths = status.months.filter(month => !month.current);

@@ -50,2 +56,3 @@ remainingMonths.forEach(month => {

slots: res,
tzid: tz.selectedTzid.tzid,
});

@@ -72,3 +79,3 @@ });

if (slotsCount > 0) {
dispatchStatus({ type: "RECALCULATE_MONTH_SLOTS" });
dispatchStatus({ type: "RECALCULATE_MONTH_SLOTS", tzid: tz.selectedTzid.tzid });
}

@@ -101,5 +108,11 @@ }, [status.slotFetchCount]);

useEffect(() => {
if (tz.selectedTzid.tzid) {
dispatchStatus({ type: "SELECT_TZID", tzid: tz.selectedTzid.tzid });
}
}, [tz.selectedTzid.tzid]);
return (
<section className={theme.classBuilder()} style={theme.customProperties}>
<Details />
<Details duration={status.query.required_duration.minutes} locale={status.locale} />
<div className={theme.classBuilder("wrapper")}>

@@ -106,0 +119,0 @@ <div

@@ -11,3 +11,2 @@ import { statusReducer } from "../../../src/js/components/DateTimePicker/contexts/status-reducer";

testQuery,
testTzList,
} from "../dummy-data";

@@ -51,10 +50,2 @@

tzid: "Europe/London",
selectedTzid: {
tzid: "Europe/London",
offset: "+01:00",
offsetMins: 60,
name: "London",
abbr: "BST",
},
tzList: testTzList,
populated: true,

@@ -90,2 +81,3 @@ callback: notification => console.log(notification),

type: "CONFIRM_SELECTION",
tzid: "Europe/London",
});

@@ -163,2 +155,3 @@

type: "RECALCULATE_MONTH_SLOTS",
tzid: "Europe/London",
});

@@ -188,2 +181,3 @@

slots: testSlotsArray,
tzid: "Europe/London",
});

@@ -234,2 +228,3 @@

slots: testSingleSlotsArray,
tzid: "Europe/London",
});

@@ -275,2 +270,3 @@

slots: {},
tzid: "Europe/London",
});

@@ -306,2 +302,3 @@

slots: testSingleSlotsArray,
tzid: "Europe/London",
});

@@ -334,2 +331,3 @@

slots: testSlotsArrayAdditional,
tzid: "Europe/London",
});

@@ -365,2 +363,3 @@

slots: testSingleSlotsArray,
tzid: "Europe/London",
});

@@ -602,6 +601,5 @@

type: "SELECT_TZID",
tz: timezone,
tzid: timezone.tzid,
});
delete oldState.selectedTzid;
delete oldState.availableDays;

@@ -611,6 +609,5 @@ delete oldState.daySlots;

const { selectedTzid, availableDays, daySlots, monthlySlots, ...newState } = result;
const { availableDays, daySlots, monthlySlots, ...newState } = result;
// These values have been updated
expect(selectedTzid).toStrictEqual(timezone);
expect(availableDays).toStrictEqual([

@@ -617,0 +614,0 @@ "2021-09-29",

@@ -10,2 +10,3 @@ import React from "react";

import { StatusProvider } from "../../src/js/components/DateTimePicker/contexts/status-context";
import { TzProvider } from "../../src/js/components/DateTimePicker/contexts/tz-context";

@@ -21,13 +22,23 @@ const wrapper = ({ children, status }) => (

>
<StatusProvider
<TzProvider
options={{
selected: false,
selectedTzid: {
tzid: "Europe/London",
offset: "+01:00",
offsetMins: 60,
name: "London",
abbr: "BST",
},
...status,
list: [],
}}
>
{children}
</StatusProvider>
<StatusProvider
options={{
selected: false,
...status,
}}
>
{children}
</StatusProvider>
</TzProvider>
</I18nProvider>

@@ -34,0 +45,0 @@ </ThemeProvider>

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc