@bagelink/vue 1.6.47 → 1.6.51
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/bin/experimentalGenTypedRoutes.ts +18 -19
- package/bin/utils.ts +4 -4
- package/dist/components/AddressSearch.vue.d.ts.map +1 -1
- package/dist/components/Alert.vue.d.ts.map +1 -1
- package/dist/components/BglVideo.vue.d.ts.map +1 -1
- package/dist/components/Card.vue.d.ts.map +1 -1
- package/dist/components/Carousel.vue.d.ts +2 -2
- package/dist/components/Carousel.vue.d.ts.map +1 -1
- package/dist/components/Dropdown.vue.d.ts.map +1 -1
- package/dist/components/Flag.vue.d.ts.map +1 -1
- package/dist/components/IframeVue.vue.d.ts.map +1 -1
- package/dist/components/ListItem.vue.d.ts.map +1 -1
- package/dist/components/Loading.vue.d.ts.map +1 -1
- package/dist/components/Modal.vue.d.ts.map +1 -1
- package/dist/components/ModalForm.vue.d.ts.map +1 -1
- package/dist/components/NavBar.vue.d.ts +1 -1
- package/dist/components/Pill.vue.d.ts.map +1 -1
- package/dist/components/Zoomer.vue.d.ts +0 -1
- package/dist/components/Zoomer.vue.d.ts.map +1 -1
- package/dist/components/analytics/LineChart.vue.d.ts.map +1 -1
- package/dist/components/analytics/PieChart.vue.d.ts +2 -1
- package/dist/components/analytics/PieChart.vue.d.ts.map +1 -1
- package/dist/components/analytics/index.d.ts +1 -1
- package/dist/components/analytics/index.d.ts.map +1 -1
- package/dist/components/calendar/CalendarPopover.vue.d.ts.map +1 -1
- package/dist/components/form/BglMultiStepForm.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/ColorInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/DateInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/PasswordInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/RadioGroup.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/RangeInput.vue.d.ts +11 -11
- package/dist/components/form/inputs/RichText/components/EditorToolbar.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/RichText/components/TableGridSelector.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/RichText/utils/commands.d.ts.map +1 -1
- package/dist/components/form/inputs/SelectInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/TelInput.vue.d.ts.map +1 -1
- package/dist/components/layout/AppSidebar.vue.d.ts +1 -0
- package/dist/components/layout/AppSidebar.vue.d.ts.map +1 -1
- package/dist/components/layout/Layout.vue.d.ts.map +1 -1
- package/dist/components/layout/Tabs.vue.d.ts.map +1 -1
- package/dist/components/layout/index.d.ts +3 -3
- package/dist/components/layout/index.d.ts.map +1 -1
- package/dist/index.cjs +34 -25
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +6668 -5883
- package/dist/plugins/useToast.d.ts.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +5 -10
- package/src/components/AccordionItem.vue +11 -11
- package/src/components/AddToCalendar.vue +1 -1
- package/src/components/AddressSearch.vue +9 -8
- package/src/components/Alert.vue +2 -1
- package/src/components/Badge.vue +5 -5
- package/src/components/BglVideo.vue +44 -45
- package/src/components/Btn.vue +15 -15
- package/src/components/Card.vue +10 -8
- package/src/components/Carousel.vue +159 -162
- package/src/components/DataPreview.vue +1 -1
- package/src/components/DragOver.vue +6 -6
- package/src/components/Dropdown.vue +39 -38
- package/src/components/Flag.vue +7 -6
- package/src/components/Icon/Icon.vue +22 -22
- package/src/components/IframeVue.vue +5 -5
- package/src/components/Image.vue +17 -17
- package/src/components/ImportData.vue +79 -79
- package/src/components/ListItem.vue +20 -13
- package/src/components/Loading.vue +10 -9
- package/src/components/MapEmbed/Index.vue +24 -24
- package/src/components/Modal.vue +11 -9
- package/src/components/ModalForm.vue +9 -8
- package/src/components/NavBar.vue +6 -6
- package/src/components/Pagination.vue +27 -27
- package/src/components/Pill.vue +11 -12
- package/src/components/Rating.vue +2 -2
- package/src/components/Slider.vue +75 -75
- package/src/components/Spreadsheet/Index.vue +34 -34
- package/src/components/Spreadsheet/SpreadsheetTable.vue +3 -3
- package/src/components/Zoomer.vue +165 -170
- package/src/components/analytics/BarChart.vue +6 -6
- package/src/components/analytics/KpiCard.vue +2 -2
- package/src/components/analytics/LineChart.vue +63 -61
- package/src/components/analytics/PieChart.vue +104 -90
- package/src/components/analytics/index.ts +2 -2
- package/src/components/calendar/CalendarPopover.vue +1 -1
- package/src/components/calendar/Index.vue +1 -1
- package/src/components/calendar/views/AgendaView.vue +3 -3
- package/src/components/calendar/views/DayView.vue +6 -6
- package/src/components/calendar/views/MonthView.vue +2 -2
- package/src/components/calendar/views/WeekView.vue +18 -18
- package/src/components/dataTable/DataTable.vue +4 -4
- package/src/components/dataTable/useSorting.ts +1 -1
- package/src/components/dataTable/useTableData.ts +15 -15
- package/src/components/dataTable/useTableSelection.ts +15 -15
- package/src/components/dataTable/useTableVirtualization.ts +1 -1
- package/src/components/draggable/useDraggable.ts +42 -42
- package/src/components/form/BagelForm.vue +15 -15
- package/src/components/form/BglFieldSet.vue +5 -3
- package/src/components/form/BglMultiStepForm.vue +20 -21
- package/src/components/form/inputs/CheckInput.vue +2 -2
- package/src/components/form/inputs/CodeEditor/format.ts +7 -7
- package/src/components/form/inputs/CodeEditor/useHighlight.ts +6 -6
- package/src/components/form/inputs/ColorInput.vue +5 -4
- package/src/components/form/inputs/DateInput.vue +8 -9
- package/src/components/form/inputs/DatePicker.vue +24 -24
- package/src/components/form/inputs/EmailInput.vue +24 -24
- package/src/components/form/inputs/NumberInput.vue +26 -26
- package/src/components/form/inputs/OTP.vue +7 -7
- package/src/components/form/inputs/PasswordInput.vue +3 -2
- package/src/components/form/inputs/RadioGroup.vue +28 -25
- package/src/components/form/inputs/RadioPillsInput.vue +12 -12
- package/src/components/form/inputs/RangeInput.vue +21 -21
- package/src/components/form/inputs/RichText/components/EditorToolbar.vue +107 -92
- package/src/components/form/inputs/RichText/components/TableGridSelector.vue +64 -64
- package/src/components/form/inputs/RichText/components/gridBox.vue +10 -8
- package/src/components/form/inputs/RichText/composables/useCommands.ts +1 -1
- package/src/components/form/inputs/RichText/composables/useEditor.ts +12 -12
- package/src/components/form/inputs/RichText/composables/useEditorKeyboard.ts +1 -1
- package/src/components/form/inputs/RichText/index.vue +138 -138
- package/src/components/form/inputs/RichText/utils/commands.ts +84 -85
- package/src/components/form/inputs/RichText/utils/debug.ts +1 -1
- package/src/components/form/inputs/RichText/utils/formatting.ts +39 -39
- package/src/components/form/inputs/RichText/utils/selection.ts +28 -28
- package/src/components/form/inputs/RichText/utils/table.ts +19 -19
- package/src/components/form/inputs/SelectBtn.vue +1 -1
- package/src/components/form/inputs/SelectInput.vue +54 -54
- package/src/components/form/inputs/SignaturePad.vue +40 -40
- package/src/components/form/inputs/TableField.vue +1 -1
- package/src/components/form/inputs/TelInput.vue +54 -53
- package/src/components/form/inputs/TextInput.vue +19 -19
- package/src/components/form/inputs/ToggleInput.vue +2 -2
- package/src/components/form/inputs/Upload/useFileUpload.ts +6 -6
- package/src/components/form/useBagelFormState.ts +5 -5
- package/src/components/layout/AppLayout.vue +2 -2
- package/src/components/layout/AppSidebar.vue +77 -16
- package/src/components/layout/Layout.vue +12 -10
- package/src/components/layout/SidebarMenu.vue +4 -4
- package/src/components/layout/TabbedLayout.vue +17 -17
- package/src/components/layout/Tabs.vue +4 -5
- package/src/components/layout/TabsNav.vue +14 -14
- package/src/components/layout/index.ts +3 -5
- package/src/components/lightbox/Lightbox.vue +22 -22
- package/src/components/lightbox/index.ts +8 -8
- package/src/composables/index.ts +8 -8
- package/src/composables/useAddToCalendar.ts +13 -13
- package/src/composables/useDevice.ts +2 -2
- package/src/composables/useFormField.ts +4 -4
- package/src/composables/usePolling.ts +8 -8
- package/src/composables/useSchemaField.ts +38 -38
- package/src/composables/useTheme.ts +9 -9
- package/src/composables/useValidateFieldValue.ts +2 -2
- package/src/directives/pattern.ts +25 -25
- package/src/directives/ripple.ts +4 -4
- package/src/directives/vResize.ts +6 -6
- package/src/index.ts +1 -0
- package/src/plugins/bagel.ts +4 -4
- package/src/plugins/useToast.ts +56 -51
- package/src/styles/layout.css +1 -1
- package/src/types/index.ts +1 -1
- package/src/utils/BagelFormUtils.ts +7 -7
- package/src/utils/calendar/Helpers.ts +8 -8
- package/src/utils/calendar/dateUtils.ts +22 -22
- package/src/utils/calendar/time.ts +25 -25
- package/src/utils/calendar/week.ts +25 -25
- package/src/utils/elementUtils.ts +27 -27
- package/src/utils/sizeParsing.ts +2 -2
- package/src/utils/strings.ts +5 -5
- package/src/utils/tapDetector.ts +11 -11
- package/src/utils/useSearch.ts +29 -29
- package/vite.config.ts +0 -2
|
@@ -57,7 +57,7 @@ export default class Time {
|
|
|
57
57
|
const dayEnd = Time.getHourFromTimePoints(this.DAY_END)
|
|
58
58
|
const dayStart = Time.getHourFromTimePoints(this.DAY_START)
|
|
59
59
|
|
|
60
|
-
if (dayEnd > dayStart) {return dayEnd - dayStart}
|
|
60
|
+
if (dayEnd > dayStart) { return dayEnd - dayStart }
|
|
61
61
|
|
|
62
62
|
return this.HOURS_PER_DAY - dayStart + dayEnd
|
|
63
63
|
})()
|
|
@@ -65,9 +65,9 @@ export default class Time {
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
get dayMode() {
|
|
68
|
-
if (
|
|
68
|
+
if (this.DAY_START === 0 && this.DAY_END === 2400) { return DAY_MODE.REGULAR }
|
|
69
69
|
|
|
70
|
-
if (this.DAY_START >= this.DAY_END) {return DAY_MODE.FLEXIBLE}
|
|
70
|
+
if (this.DAY_START >= this.DAY_END) { return DAY_MODE.FLEXIBLE }
|
|
71
71
|
|
|
72
72
|
return DAY_MODE.SHORTENED
|
|
73
73
|
}
|
|
@@ -86,13 +86,13 @@ export default class Time {
|
|
|
86
86
|
getCalendarWeekDateObjects(date: Date): calendarWeekType {
|
|
87
87
|
// If week starts on Sunday, we can get the first date of the week, by simply counting selectedDate.getDate() - selectedDate.getDay()
|
|
88
88
|
let subtractedDaysToGetFirstDate
|
|
89
|
-
if ('sunday'
|
|
89
|
+
if (this.FIRST_DAY_OF_WEEK === 'sunday') {
|
|
90
90
|
subtractedDaysToGetFirstDate = date.getDay()
|
|
91
91
|
}
|
|
92
92
|
// However, if week starts on Monday, we need to make sure Mondays are represented as 0, instead of Sundays
|
|
93
93
|
else {
|
|
94
94
|
subtractedDaysToGetFirstDate
|
|
95
|
-
=
|
|
95
|
+
= date.getDay() === 0 ? 6 : date.getDay() - 1
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
const dateOfFirstDayOfWeek = date.getDate() - subtractedDaysToGetFirstDate // First date of week is the date of the month - the day of the week
|
|
@@ -163,7 +163,7 @@ export default class Time {
|
|
|
163
163
|
const yearList: calendarYearMonths = []
|
|
164
164
|
let month = 0
|
|
165
165
|
|
|
166
|
-
while (
|
|
166
|
+
while (month <= 11) {
|
|
167
167
|
yearList.push(new Date(year, month, 1))
|
|
168
168
|
month++
|
|
169
169
|
}
|
|
@@ -176,10 +176,10 @@ export default class Time {
|
|
|
176
176
|
let hour = '0'
|
|
177
177
|
let minutes = '0'
|
|
178
178
|
|
|
179
|
-
if (
|
|
179
|
+
if (time.length === 4) {
|
|
180
180
|
hour = time[0] + time[1]
|
|
181
181
|
minutes = time[2] + time[3]
|
|
182
|
-
} else if (
|
|
182
|
+
} else if (time.length === 3) {
|
|
183
183
|
hour = time[0]
|
|
184
184
|
minutes = time[1] + time[2]
|
|
185
185
|
}
|
|
@@ -209,7 +209,7 @@ export default class Time {
|
|
|
209
209
|
hour: '2-digit',
|
|
210
210
|
})
|
|
211
211
|
|
|
212
|
-
if (
|
|
212
|
+
if (hourLocaleString[0] === '0') { return hourLocaleString.substring(1) }
|
|
213
213
|
|
|
214
214
|
return hourLocaleString
|
|
215
215
|
}
|
|
@@ -247,18 +247,18 @@ export default class Time {
|
|
|
247
247
|
const y = date.getFullYear()
|
|
248
248
|
const m = date.getMonth() + 1
|
|
249
249
|
const d = date.getDate()
|
|
250
|
-
const fullDate = `${y}-${ 10
|
|
250
|
+
const fullDate = `${y}-${m >= 10 ? m : `0${m}`}-${d >= 10 ? d : `0${d}`}`
|
|
251
251
|
|
|
252
252
|
if (!timeIsStartOrEndOfDay) {
|
|
253
253
|
const hour = date.getHours()
|
|
254
254
|
const minutes = date.getMinutes()
|
|
255
255
|
|
|
256
|
-
return `${fullDate} ${ 10
|
|
257
|
-
|
|
256
|
+
return `${fullDate} ${hour >= 10 ? hour : `0${hour}`}:${
|
|
257
|
+
minutes >= 10 ? minutes : `0${minutes}`
|
|
258
258
|
}`
|
|
259
259
|
}
|
|
260
260
|
|
|
261
|
-
const fullTime = 'start'
|
|
261
|
+
const fullTime = timeIsStartOrEndOfDay === 'start' ? '00:00' : '23:59'
|
|
262
262
|
|
|
263
263
|
return `${fullDate} ${fullTime}`
|
|
264
264
|
}
|
|
@@ -331,7 +331,7 @@ export default class Time {
|
|
|
331
331
|
const monthIsSame = month === weekDay.getMonth()
|
|
332
332
|
const yearIsSame = fullYear === weekDay.getFullYear()
|
|
333
333
|
|
|
334
|
-
if (dateIsSame && monthIsSame && yearIsSame) {return true}
|
|
334
|
+
if (dateIsSame && monthIsSame && yearIsSame) { return true }
|
|
335
335
|
}
|
|
336
336
|
|
|
337
337
|
return false
|
|
@@ -342,7 +342,7 @@ export default class Time {
|
|
|
342
342
|
const mm = (date.getMonth() + 1)
|
|
343
343
|
const dd = date.getDate()
|
|
344
344
|
|
|
345
|
-
return `${yyyy}-${ 10
|
|
345
|
+
return `${yyyy}-${mm >= 10 ? mm : `0${mm}`}-${dd >= 10 ? dd : `0${dd}`}`
|
|
346
346
|
}
|
|
347
347
|
|
|
348
348
|
addMinutesToDateTimeString(minutes: number, dateTimeString: string) {
|
|
@@ -387,7 +387,7 @@ export default class Time {
|
|
|
387
387
|
const oneMinutePercentage = 100 / 60
|
|
388
388
|
const minutePoints = oneMinutePercentage * minutes
|
|
389
389
|
|
|
390
|
-
if (
|
|
390
|
+
if (minutePoints < 10) { return `0${minutePoints}` }
|
|
391
391
|
|
|
392
392
|
return minutePoints.toString()
|
|
393
393
|
}
|
|
@@ -430,8 +430,8 @@ export default class Time {
|
|
|
430
430
|
clickOffsetY: number,
|
|
431
431
|
weekHeight: number,
|
|
432
432
|
): string {
|
|
433
|
-
if (
|
|
434
|
-
if (
|
|
433
|
+
if (weekHeight <= 0) { throw new Error('weekHeight cannot be a negative number') }
|
|
434
|
+
if (clickOffsetY < 0) { throw new Error('clickOffsetY cannot be a negative number') }
|
|
435
435
|
|
|
436
436
|
const dayStartHour = this.DAY_START / 100
|
|
437
437
|
const hourHeight = weekHeight / this.HOURS_PER_DAY
|
|
@@ -454,7 +454,7 @@ export default class Time {
|
|
|
454
454
|
}
|
|
455
455
|
|
|
456
456
|
setSegmentOfDateTimeString(dateTimeString: string, segments: { hour: number }) {
|
|
457
|
-
if (
|
|
457
|
+
if (segments.hour < 0 || segments.hour > 23) { throw new Error('Invalid hour') }
|
|
458
458
|
const newHour = this.doubleDigit(segments.hour)
|
|
459
459
|
dateTimeString = dateTimeString.replace(/\d{2}:/, `${newHour}:`)
|
|
460
460
|
|
|
@@ -469,21 +469,21 @@ export default class Time {
|
|
|
469
469
|
}
|
|
470
470
|
|
|
471
471
|
static getTimePointsFromHour(boundary: number) {
|
|
472
|
-
if (0
|
|
472
|
+
if (boundary < 0 || boundary > 24 || boundary % 1 !== 0) {
|
|
473
473
|
throw new Error('Invalid day boundary')
|
|
474
474
|
}
|
|
475
475
|
|
|
476
|
-
if (
|
|
476
|
+
if (boundary === 0) { return boundary }
|
|
477
477
|
|
|
478
478
|
return boundary * 100
|
|
479
479
|
}
|
|
480
480
|
|
|
481
481
|
static getHourFromTimePoints(timePoints: number) {
|
|
482
|
-
if (0
|
|
482
|
+
if (timePoints < 0 || timePoints > 2400 || timePoints % 100 !== 0) {
|
|
483
483
|
throw new Error('Invalid time points')
|
|
484
484
|
}
|
|
485
485
|
|
|
486
|
-
if (
|
|
486
|
+
if (timePoints === 0) { return timePoints }
|
|
487
487
|
|
|
488
488
|
return timePoints / 100
|
|
489
489
|
}
|
|
@@ -559,9 +559,9 @@ export default class Time {
|
|
|
559
559
|
}
|
|
560
560
|
|
|
561
561
|
doubleDigit(number: number) {
|
|
562
|
-
if (0
|
|
562
|
+
if (number < 0 || number > 60) { throw new Error('Invalid number. This is not a valid hour or minute') }
|
|
563
563
|
|
|
564
|
-
return
|
|
564
|
+
return number < 10 ? `0${number}` : String(number)
|
|
565
565
|
}
|
|
566
566
|
}
|
|
567
567
|
|
|
@@ -57,7 +57,7 @@ export default class Time {
|
|
|
57
57
|
const dayEnd = Time.getHourFromTimePoints(this.DAY_END)
|
|
58
58
|
const dayStart = Time.getHourFromTimePoints(this.DAY_START)
|
|
59
59
|
|
|
60
|
-
if (dayEnd > dayStart) {return dayEnd - dayStart}
|
|
60
|
+
if (dayEnd > dayStart) { return dayEnd - dayStart }
|
|
61
61
|
|
|
62
62
|
return this.HOURS_PER_DAY - dayStart + dayEnd
|
|
63
63
|
})()
|
|
@@ -65,9 +65,9 @@ export default class Time {
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
get dayMode() {
|
|
68
|
-
if (
|
|
68
|
+
if (this.DAY_START === 0 && this.DAY_END === 2400) { return DAY_MODE.REGULAR }
|
|
69
69
|
|
|
70
|
-
if (this.DAY_START >= this.DAY_END) {return DAY_MODE.FLEXIBLE}
|
|
70
|
+
if (this.DAY_START >= this.DAY_END) { return DAY_MODE.FLEXIBLE }
|
|
71
71
|
|
|
72
72
|
return DAY_MODE.SHORTENED
|
|
73
73
|
}
|
|
@@ -86,13 +86,13 @@ export default class Time {
|
|
|
86
86
|
getCalendarWeekDateObjects(date: Date): calendarWeekType {
|
|
87
87
|
// If week starts on Sunday, we can get the first date of the week, by simply counting selectedDate.getDate() - selectedDate.getDay()
|
|
88
88
|
let subtractedDaysToGetFirstDate
|
|
89
|
-
if ('sunday'
|
|
89
|
+
if (this.FIRST_DAY_OF_WEEK === 'sunday') {
|
|
90
90
|
subtractedDaysToGetFirstDate = date.getDay()
|
|
91
91
|
}
|
|
92
92
|
// However, if week starts on Monday, we need to make sure Mondays are represented as 0, instead of Sundays
|
|
93
93
|
else {
|
|
94
94
|
subtractedDaysToGetFirstDate
|
|
95
|
-
=
|
|
95
|
+
= date.getDay() === 0 ? 6 : date.getDay() - 1
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
const dateOfFirstDayOfWeek = date.getDate() - subtractedDaysToGetFirstDate // First date of week is the date of the month - the day of the week
|
|
@@ -163,7 +163,7 @@ export default class Time {
|
|
|
163
163
|
const yearList: calendarYearMonths = []
|
|
164
164
|
let month = 0
|
|
165
165
|
|
|
166
|
-
while (
|
|
166
|
+
while (month <= 11) {
|
|
167
167
|
yearList.push(new Date(year, month, 1))
|
|
168
168
|
month++
|
|
169
169
|
}
|
|
@@ -176,10 +176,10 @@ export default class Time {
|
|
|
176
176
|
let hour = '0'
|
|
177
177
|
let minutes = '0'
|
|
178
178
|
|
|
179
|
-
if (
|
|
179
|
+
if (time.length === 4) {
|
|
180
180
|
hour = time[0] + time[1]
|
|
181
181
|
minutes = time[2] + time[3]
|
|
182
|
-
} else if (
|
|
182
|
+
} else if (time.length === 3) {
|
|
183
183
|
hour = time[0]
|
|
184
184
|
minutes = time[1] + time[2]
|
|
185
185
|
}
|
|
@@ -209,7 +209,7 @@ export default class Time {
|
|
|
209
209
|
hour: '2-digit',
|
|
210
210
|
})
|
|
211
211
|
|
|
212
|
-
if (
|
|
212
|
+
if (hourLocaleString[0] === '0') { return hourLocaleString.substring(1) }
|
|
213
213
|
|
|
214
214
|
return hourLocaleString
|
|
215
215
|
}
|
|
@@ -247,18 +247,18 @@ export default class Time {
|
|
|
247
247
|
const y = date.getFullYear()
|
|
248
248
|
const m = date.getMonth() + 1
|
|
249
249
|
const d = date.getDate()
|
|
250
|
-
const fullDate = `${y}-${ 10
|
|
250
|
+
const fullDate = `${y}-${m >= 10 ? m : `0${m}`}-${d >= 10 ? d : `0${d}`}`
|
|
251
251
|
|
|
252
252
|
if (!timeIsStartOrEndOfDay) {
|
|
253
253
|
const hour = date.getHours()
|
|
254
254
|
const minutes = date.getMinutes()
|
|
255
255
|
|
|
256
|
-
return `${fullDate} ${ 10
|
|
257
|
-
|
|
256
|
+
return `${fullDate} ${hour >= 10 ? hour : `0${hour}`}:${
|
|
257
|
+
minutes >= 10 ? minutes : `0${minutes}`
|
|
258
258
|
}`
|
|
259
259
|
}
|
|
260
260
|
|
|
261
|
-
const fullTime = 'start'
|
|
261
|
+
const fullTime = timeIsStartOrEndOfDay === 'start' ? '00:00' : '23:59'
|
|
262
262
|
|
|
263
263
|
return `${fullDate} ${fullTime}`
|
|
264
264
|
}
|
|
@@ -331,7 +331,7 @@ export default class Time {
|
|
|
331
331
|
const monthIsSame = month === weekDay.getMonth()
|
|
332
332
|
const yearIsSame = fullYear === weekDay.getFullYear()
|
|
333
333
|
|
|
334
|
-
if (dateIsSame && monthIsSame && yearIsSame) {return true}
|
|
334
|
+
if (dateIsSame && monthIsSame && yearIsSame) { return true }
|
|
335
335
|
}
|
|
336
336
|
|
|
337
337
|
return false
|
|
@@ -342,7 +342,7 @@ export default class Time {
|
|
|
342
342
|
const mm = (date.getMonth() + 1)
|
|
343
343
|
const dd = date.getDate()
|
|
344
344
|
|
|
345
|
-
return `${yyyy}-${ 10
|
|
345
|
+
return `${yyyy}-${mm >= 10 ? mm : `0${mm}`}-${dd >= 10 ? dd : `0${dd}`}`
|
|
346
346
|
}
|
|
347
347
|
|
|
348
348
|
addMinutesToDateTimeString(minutes: number, dateTimeString: string) {
|
|
@@ -387,7 +387,7 @@ export default class Time {
|
|
|
387
387
|
const oneMinutePercentage = 100 / 60
|
|
388
388
|
const minutePoints = oneMinutePercentage * minutes
|
|
389
389
|
|
|
390
|
-
if (
|
|
390
|
+
if (minutePoints < 10) { return `0${minutePoints}` }
|
|
391
391
|
|
|
392
392
|
return minutePoints.toString()
|
|
393
393
|
}
|
|
@@ -430,8 +430,8 @@ export default class Time {
|
|
|
430
430
|
clickOffsetY: number,
|
|
431
431
|
weekHeight: number,
|
|
432
432
|
): string {
|
|
433
|
-
if (
|
|
434
|
-
if (
|
|
433
|
+
if (weekHeight <= 0) { throw new Error('weekHeight cannot be a negative number') }
|
|
434
|
+
if (clickOffsetY < 0) { throw new Error('clickOffsetY cannot be a negative number') }
|
|
435
435
|
|
|
436
436
|
const dayStartHour = this.DAY_START / 100
|
|
437
437
|
const hourHeight = weekHeight / this.HOURS_PER_DAY
|
|
@@ -454,7 +454,7 @@ export default class Time {
|
|
|
454
454
|
}
|
|
455
455
|
|
|
456
456
|
setSegmentOfDateTimeString(dateTimeString: string, segments: { hour: number }) {
|
|
457
|
-
if (
|
|
457
|
+
if (segments.hour < 0 || segments.hour > 23) { throw new Error('Invalid hour') }
|
|
458
458
|
const newHour = this.doubleDigit(segments.hour)
|
|
459
459
|
dateTimeString = dateTimeString.replace(/\d{2}:/, `${newHour}:`)
|
|
460
460
|
|
|
@@ -469,21 +469,21 @@ export default class Time {
|
|
|
469
469
|
}
|
|
470
470
|
|
|
471
471
|
static getTimePointsFromHour(boundary: number) {
|
|
472
|
-
if (0
|
|
472
|
+
if (boundary < 0 || boundary > 24 || boundary % 1 !== 0) {
|
|
473
473
|
throw new Error('Invalid day boundary')
|
|
474
474
|
}
|
|
475
475
|
|
|
476
|
-
if (
|
|
476
|
+
if (boundary === 0) { return boundary }
|
|
477
477
|
|
|
478
478
|
return boundary * 100
|
|
479
479
|
}
|
|
480
480
|
|
|
481
481
|
static getHourFromTimePoints(timePoints: number) {
|
|
482
|
-
if (0
|
|
482
|
+
if (timePoints < 0 || timePoints > 2400 || timePoints % 100 !== 0) {
|
|
483
483
|
throw new Error('Invalid time points')
|
|
484
484
|
}
|
|
485
485
|
|
|
486
|
-
if (
|
|
486
|
+
if (timePoints === 0) { return timePoints }
|
|
487
487
|
|
|
488
488
|
return timePoints / 100
|
|
489
489
|
}
|
|
@@ -559,9 +559,9 @@ export default class Time {
|
|
|
559
559
|
}
|
|
560
560
|
|
|
561
561
|
doubleDigit(number: number) {
|
|
562
|
-
if (0
|
|
562
|
+
if (number < 0 || number > 60) { throw new Error('Invalid number. This is not a valid hour or minute') }
|
|
563
563
|
|
|
564
|
-
return
|
|
564
|
+
return number < 10 ? `0${number}` : String(number)
|
|
565
565
|
}
|
|
566
566
|
}
|
|
567
567
|
|
|
@@ -146,7 +146,7 @@ export function btn<
|
|
|
146
146
|
let icon: IconType | undefined
|
|
147
147
|
let finalOptions: BtnElementOptions<T, PO> = {}
|
|
148
148
|
|
|
149
|
-
if ('object'
|
|
149
|
+
if (typeof idOrOptions === 'object' && idOrOptions !== null) {
|
|
150
150
|
// btn(options)
|
|
151
151
|
finalOptions = idOrOptions
|
|
152
152
|
const { id: optionId, text: optionText, icon: optionIcon } = finalOptions
|
|
@@ -156,15 +156,15 @@ export function btn<
|
|
|
156
156
|
} else {
|
|
157
157
|
// btn(id, ...) patterns
|
|
158
158
|
id = idOrOptions
|
|
159
|
-
if (
|
|
159
|
+
if (textOrIcon != null) {
|
|
160
160
|
// Check if textOrIcon is likely an icon vs text
|
|
161
161
|
// Icons are typically: lowercase, contain hyphens/underscores, no spaces, shorter length
|
|
162
|
-
const isLikelyIcon = 'string'
|
|
163
|
-
&&
|
|
162
|
+
const isLikelyIcon = typeof textOrIcon === 'string'
|
|
163
|
+
&& textOrIcon.length <= 30
|
|
164
164
|
&& !textOrIcon.includes(' ')
|
|
165
165
|
&& (textOrIcon.includes('-')
|
|
166
166
|
|| textOrIcon.includes('_')
|
|
167
|
-
||
|
|
167
|
+
|| textOrIcon.length <= 12)
|
|
168
168
|
&& textOrIcon === textOrIcon.toLowerCase()
|
|
169
169
|
|
|
170
170
|
if (isLikelyIcon) {
|
|
@@ -231,7 +231,7 @@ export function iconBtn<
|
|
|
231
231
|
icon?: IconType,
|
|
232
232
|
options?: BtnElementOptions<T, PO>,
|
|
233
233
|
): BaseElementField<T, PO> {
|
|
234
|
-
if (
|
|
234
|
+
if (icon != null && id != null) {
|
|
235
235
|
return btn(id, icon, options || {})
|
|
236
236
|
}
|
|
237
237
|
return btn({ id, icon, ...options } as BtnElementOptions<T, PO>)
|
|
@@ -279,7 +279,7 @@ export function txt<
|
|
|
279
279
|
let id: Path<T, PO> | undefined
|
|
280
280
|
let finalOptions: TxtElementOptions<T, PO> = {}
|
|
281
281
|
|
|
282
|
-
if ('object'
|
|
282
|
+
if (typeof idOrOptions === 'object' && idOrOptions !== null) {
|
|
283
283
|
// txt(options)
|
|
284
284
|
finalOptions = idOrOptions
|
|
285
285
|
const { id: optionId } = finalOptions
|
|
@@ -287,8 +287,8 @@ export function txt<
|
|
|
287
287
|
} else {
|
|
288
288
|
// txt(id, ...) patterns
|
|
289
289
|
id = idOrOptions
|
|
290
|
-
if (
|
|
291
|
-
if ('string'
|
|
290
|
+
if (text != null) {
|
|
291
|
+
if (typeof tagOrOptions === 'string') {
|
|
292
292
|
// txt(id, text, tag)
|
|
293
293
|
finalOptions = { tag: tagOrOptions as any, text }
|
|
294
294
|
} else if (tagOrOptions) {
|
|
@@ -355,7 +355,7 @@ export function img<
|
|
|
355
355
|
let id: Path<T, PO> | undefined
|
|
356
356
|
let finalOptions: ImgElementOptions<T, PO> = {}
|
|
357
357
|
|
|
358
|
-
if ('object'
|
|
358
|
+
if (typeof idOrOptions === 'object' && idOrOptions !== null) {
|
|
359
359
|
// img(options)
|
|
360
360
|
finalOptions = idOrOptions
|
|
361
361
|
const { id: optionId } = finalOptions
|
|
@@ -363,8 +363,8 @@ export function img<
|
|
|
363
363
|
} else {
|
|
364
364
|
// img(id, ...) patterns
|
|
365
365
|
id = idOrOptions
|
|
366
|
-
if (
|
|
367
|
-
if ('string'
|
|
366
|
+
if (src != null) {
|
|
367
|
+
if (typeof altOrOptions === 'string') {
|
|
368
368
|
// img(id, src, alt)
|
|
369
369
|
finalOptions = { alt: altOrOptions }
|
|
370
370
|
} else if (altOrOptions) {
|
|
@@ -416,11 +416,11 @@ export function dropdown<
|
|
|
416
416
|
let opts: DropdownElementOptions<T, PO> | undefined
|
|
417
417
|
let children: BaseElementField<T, PO>[] = []
|
|
418
418
|
|
|
419
|
-
if (
|
|
419
|
+
if (args.length > 0) {
|
|
420
420
|
const firstArg = args[0] as DropdownElementOptions<T, PO> | BaseElementField<T, PO>
|
|
421
421
|
if (
|
|
422
|
-
|
|
423
|
-
&&
|
|
422
|
+
typeof firstArg === 'object'
|
|
423
|
+
&& firstArg !== null
|
|
424
424
|
&& ('$el' in (firstArg as Record<string, unknown>))
|
|
425
425
|
) {
|
|
426
426
|
children = args as BaseElementField<T, PO>[]
|
|
@@ -431,15 +431,15 @@ export function dropdown<
|
|
|
431
431
|
}
|
|
432
432
|
|
|
433
433
|
const attrs: Record<string, unknown> = {}
|
|
434
|
-
if (opts?.attrs) {Object.assign(attrs, opts.attrs)}
|
|
434
|
+
if (opts?.attrs) { Object.assign(attrs, opts.attrs) }
|
|
435
435
|
if (opts) {
|
|
436
|
-
if (
|
|
437
|
-
if (
|
|
438
|
-
if (
|
|
439
|
-
if (
|
|
440
|
-
if (
|
|
441
|
-
if (
|
|
442
|
-
if (
|
|
436
|
+
if (opts.options != null) { attrs.options = opts.options }
|
|
437
|
+
if (opts.placeholder != null) { attrs.placeholder = opts.placeholder }
|
|
438
|
+
if (opts.searchable != null) { attrs.searchable = opts.searchable }
|
|
439
|
+
if (opts.multiselect != null) { attrs.multiselect = opts.multiselect }
|
|
440
|
+
if (opts.clearable != null) { attrs.clearable = opts.clearable }
|
|
441
|
+
if (opts.onSelect != null) { attrs.onSelect = opts.onSelect }
|
|
442
|
+
if (opts.onSearch != null) { attrs.onSearch = opts.onSearch }
|
|
443
443
|
}
|
|
444
444
|
|
|
445
445
|
return {
|
|
@@ -506,10 +506,10 @@ export function findElementById<T>(
|
|
|
506
506
|
elements: BaseElementField<T, any>[]
|
|
507
507
|
): BaseElementField<T, any> | undefined {
|
|
508
508
|
for (const element of elements) {
|
|
509
|
-
if (element.id === id) {return element}
|
|
510
|
-
if (element.children &&
|
|
509
|
+
if (element.id === id) { return element }
|
|
510
|
+
if (element.children && element.children.length > 0) {
|
|
511
511
|
const child = findElementById(id, element.children)
|
|
512
|
-
if (child) {return child}
|
|
512
|
+
if (child) { return child }
|
|
513
513
|
}
|
|
514
514
|
}
|
|
515
515
|
return undefined
|
|
@@ -521,7 +521,7 @@ export function column<T = any, P extends Path<T, PO> = any, PO extends PathsOpt
|
|
|
521
521
|
options?: Partial<BaseElementField<T, PO>>,
|
|
522
522
|
): BaseElementField<T, PO> {
|
|
523
523
|
let label: string | undefined
|
|
524
|
-
if ('string'
|
|
524
|
+
if (typeof labelOrOptions === 'string') {
|
|
525
525
|
label = labelOrOptions
|
|
526
526
|
} else {
|
|
527
527
|
options = labelOrOptions
|
package/src/utils/sizeParsing.ts
CHANGED
|
@@ -2,10 +2,10 @@ import type { SizeType, UnitSize } from '../types'
|
|
|
2
2
|
|
|
3
3
|
// Ensure size and units are correctly formatted
|
|
4
4
|
export function standardSize(value: number | string | undefined, unit: UnitSize = 'px') {
|
|
5
|
-
if (value === undefined ||
|
|
5
|
+
if (value === undefined || value === '') { return '' }
|
|
6
6
|
|
|
7
7
|
// Handle SizeType values
|
|
8
|
-
if ('string'
|
|
8
|
+
if (typeof value === 'string') {
|
|
9
9
|
const sizeTypeMap: Record<SizeType, number> = {
|
|
10
10
|
xSmall: 16,
|
|
11
11
|
small: 24,
|
package/src/utils/strings.ts
CHANGED
|
@@ -2,26 +2,26 @@ export function formatString(
|
|
|
2
2
|
str: string,
|
|
3
3
|
format: 'pascal' | 'camel' | 'snake' | 'titleCase',
|
|
4
4
|
): string {
|
|
5
|
-
if ('titleCase'
|
|
5
|
+
if (format === 'titleCase') {
|
|
6
6
|
return str
|
|
7
7
|
.split('_')
|
|
8
8
|
.map(word => word[0].toUpperCase() + word.slice(1).toLocaleLowerCase())
|
|
9
9
|
.join(' ')
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
if ('pascal'
|
|
12
|
+
if (format === 'pascal') {
|
|
13
13
|
return str
|
|
14
14
|
.split('_')
|
|
15
15
|
.map(word => word[0].toUpperCase() + word.slice(1).toLocaleLowerCase())
|
|
16
16
|
.join('')
|
|
17
17
|
}
|
|
18
|
-
if ('camel'
|
|
18
|
+
if (format === 'camel') {
|
|
19
19
|
return str
|
|
20
20
|
.split('_')
|
|
21
|
-
.map((word, index) => (
|
|
21
|
+
.map((word, index) => (index === 0 ? word : word[0].toUpperCase() + word.slice(1)))
|
|
22
22
|
.join('')
|
|
23
23
|
}
|
|
24
|
-
if ('snake'
|
|
24
|
+
if (format === 'snake') {
|
|
25
25
|
return [...str]
|
|
26
26
|
.map((letter) => {
|
|
27
27
|
if (letter === letter.toUpperCase()) {
|
package/src/utils/tapDetector.ts
CHANGED
|
@@ -34,37 +34,37 @@ export default class TapDetector {
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
onSingleTap(callback: TapCallback): void {
|
|
37
|
-
if ('function'
|
|
37
|
+
if (typeof callback === 'function' && !this.singleTapCallbacks.includes(callback)) {
|
|
38
38
|
this.singleTapCallbacks.push(callback)
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
onDoubleTap(callback: TapCallback): void {
|
|
43
|
-
if ('function'
|
|
43
|
+
if (typeof callback === 'function' && !this.doubleTapCallbacks.includes(callback)) {
|
|
44
44
|
this.doubleTapCallbacks.push(callback)
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
private triggerCallbacks(callbackType: CallbackType, event: { clientX: number, clientY: number }): void {
|
|
49
|
-
const callbacks = 'single'
|
|
49
|
+
const callbacks = callbackType === 'single' ? this.singleTapCallbacks : this.doubleTapCallbacks
|
|
50
50
|
callbacks.forEach((callback) => { callback(event) })
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
private onTouchStart = (event: TouchEvent): void => {
|
|
54
54
|
this.isTouchMode = true
|
|
55
|
-
if (
|
|
55
|
+
if (event.touches.length === 1) {
|
|
56
56
|
this.onPointerDown(event.touches[0].clientX, event.touches[0].clientY)
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
private onTouchMove = (event: TouchEvent): void => {
|
|
61
|
-
if (
|
|
61
|
+
if (event.touches.length === 1) {
|
|
62
62
|
this.onPointerMove(event.touches[0].clientX, event.touches[0].clientY)
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
private onTouchEnd = (): void => {
|
|
67
|
-
if (this.isTouchMode) {this.onPointerUp()}
|
|
67
|
+
if (this.isTouchMode) { this.onPointerUp() }
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
private onMouseDown = (event: MouseEvent): void => {
|
|
@@ -74,13 +74,13 @@ export default class TapDetector {
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
private onMouseMove = (event: MouseEvent): void => {
|
|
77
|
-
if (!this.isTouchMode &&
|
|
77
|
+
if (!this.isTouchMode && event.button === 0) {
|
|
78
78
|
this.onPointerMove(event.clientX, event.clientY)
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
private onMouseUp = (): void => {
|
|
83
|
-
if (!this.isTouchMode) {this.onPointerUp()}
|
|
83
|
+
if (!this.isTouchMode) { this.onPointerUp() }
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
private onPointerDown(x: number, y: number): void {
|
|
@@ -91,8 +91,8 @@ export default class TapDetector {
|
|
|
91
91
|
|
|
92
92
|
private onPointerUp(): void {
|
|
93
93
|
const currTimeStamp = Date.now()
|
|
94
|
-
if (
|
|
95
|
-
if (
|
|
94
|
+
if (this.touchMovedLength < 10) {
|
|
95
|
+
if (currTimeStamp - this.lastTapTimestamp < 300) {
|
|
96
96
|
this.tappedCount++
|
|
97
97
|
} else {
|
|
98
98
|
this.tappedCount = 1
|
|
@@ -101,7 +101,7 @@ export default class TapDetector {
|
|
|
101
101
|
this.lastTapTimestamp = currTimeStamp
|
|
102
102
|
this.triggerCallbacks('single', { clientX: this.lastPointerX, clientY: this.lastPointerY })
|
|
103
103
|
|
|
104
|
-
if (
|
|
104
|
+
if (this.tappedCount === 2) {
|
|
105
105
|
this.triggerCallbacks('double', { clientX: this.lastPointerX, clientY: this.lastPointerY })
|
|
106
106
|
this.tappedCount = 0
|
|
107
107
|
}
|