satis 2.1.52 → 2.1.53
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/components/satis/attachments/component.css +2 -1
- data/app/components/satis/date_time_picker/component.html.slim +4 -4
- data/app/components/satis/date_time_picker/component_controller.js +167 -50
- data/config/importmap.rb +5 -1
- data/lib/satis/configuration.rb +9 -2
- data/lib/satis/version.rb +1 -1
- data/vendor/javascript/dayjs--plugin--customParseFormat.js +4 -0
- data/vendor/javascript/dayjs--plugin--localizedFormat.js +4 -0
- data/vendor/javascript/dayjs--plugin--utc.js +4 -0
- data/vendor/javascript/dayjs.js +4 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 358cd4b72fd41d7611be2d1c2ddae7d64ee55ad9b9d68cd10169d30b9d241697
|
4
|
+
data.tar.gz: 538a47d63390c4c94c7497d73d5c95b9aaaa9e1dc22a22ace1d071f8a1350a24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c0c085c46aee29463647e80eb10bff6beb997aadb25e9464ee86f4758d969a574241659918342ad1b4ea06a42e36edcec171ef0209b30607bc070e4739963f17
|
7
|
+
data.tar.gz: 1966166a699aa72b262b909325569083365c63919bc238204a9b1c048d08b769366611e6e7a200d6ea1dfa9a507e53e1f683b7173c7df1b031520bf652e6b11b
|
@@ -136,5 +136,6 @@
|
|
136
136
|
@apply hover:border-white;
|
137
137
|
}
|
138
138
|
.attachments__group .attachment-upload.upload-btn.attachments__attachment.dragging {
|
139
|
-
@apply dark:bg-
|
139
|
+
@apply dark:bg-gray-700 dark:bg-opacity-75 bg-gray-200 bg-opacity-50 dark:text-black text-white;
|
140
|
+
transition: all 0.3s ease;
|
140
141
|
}
|
@@ -10,17 +10,17 @@ div.satis-date-time-picker data-controller="satis-date-time-picker" data-satis-d
|
|
10
10
|
.flex.justify-between.items-center.mb-2
|
11
11
|
div
|
12
12
|
button type="button" class="transition ease-in-out duration-100 inline-flex cursor-pointer hover:bg-gray-200 rounded-full" data-action="satis-date-time-picker#previousYear"
|
13
|
-
i.
|
13
|
+
i.text-gray-500.inline-flex.py-1 class=Satis.config.icons[:previous_year]
|
14
14
|
button type="button" class="transition ease-in-out duration-100 inline-flex cursor-pointer hover:bg-gray-200 rounded-full" data-action="satis-date-time-picker#previousMonth"
|
15
|
-
i.
|
15
|
+
i.text-gray-500.inline-flex.px-1.py-1 class=Satis.config.icons[:previous_month]
|
16
16
|
div.text-center
|
17
17
|
span.text-lg.font-bold.text-gray-800.dark:text-gray-200 data-satis-date-time-picker-target="month"
|
18
18
|
span.ml-1.text-lg.text-gray-600.dark:text-gray-200.font-normal data-satis-date-time-picker-target="year"
|
19
19
|
div
|
20
20
|
button type="button" class="transition ease-in-out duration-100 inline-flex cursor-pointer hover:bg-gray-200 rounded-full" data-action="satis-date-time-picker#nextMonth"
|
21
|
-
i.
|
21
|
+
i.text-gray-500.inline-flex.px-1.py-1 class=Satis.config.icons[:next_month]
|
22
22
|
button type="button" class="transition ease-in-out duration-100 inline-flex cursor-pointer hover:bg-gray-200 rounded-full" data-action="satis-date-time-picker#nextYear"
|
23
|
-
i.
|
23
|
+
i.text-gray-500.inline-flex.py-1 class=Satis.config.icons[:next_year]
|
24
24
|
|
25
25
|
|
26
26
|
.grid.grid-cols-7 data-satis-date-time-picker-target="weekDays"
|
@@ -1,7 +1,15 @@
|
|
1
1
|
import ApplicationController from "satis/controllers/application_controller"
|
2
2
|
import { createPopper } from "@popperjs/core"
|
3
|
+
import dayjs from "dayjs"
|
4
|
+
import customParseFormat from "dayjs/plugin/customParseFormat"
|
5
|
+
import localizedFormat from "dayjs/plugin/localizedFormat"
|
6
|
+
import utc from "dayjs/plugin/utc"
|
3
7
|
import { debounce } from "satis/utils"
|
4
8
|
|
9
|
+
dayjs.extend(customParseFormat)
|
10
|
+
dayjs.extend(localizedFormat)
|
11
|
+
dayjs.extend(utc)
|
12
|
+
|
5
13
|
export default class DateTimePickerComponentController extends ApplicationController {
|
6
14
|
static targets = [
|
7
15
|
"input",
|
@@ -165,13 +173,13 @@ export default class DateTimePickerComponentController extends ApplicationContro
|
|
165
173
|
}
|
166
174
|
|
167
175
|
previousYear(event) {
|
168
|
-
this.displayValue = new Date(new Date(this.displayValue).setFullYear(this.displayValue.getFullYear() - 1))
|
169
|
-
this.refreshCalendar(false)
|
176
|
+
this.displayValue = new Date(new Date(this.displayValue).setFullYear(this.displayValue.getFullYear() - 1))
|
177
|
+
this.refreshCalendar(false)
|
170
178
|
}
|
171
179
|
|
172
180
|
nextYear(event) {
|
173
|
-
this.displayValue = new Date(new Date(this.displayValue).setFullYear(this.displayValue.getFullYear() + 1))
|
174
|
-
this.refreshCalendar(false)
|
181
|
+
this.displayValue = new Date(new Date(this.displayValue).setFullYear(this.displayValue.getFullYear() + 1))
|
182
|
+
this.refreshCalendar(false)
|
175
183
|
}
|
176
184
|
|
177
185
|
clickedOutside(event) {
|
@@ -266,21 +274,71 @@ export default class DateTimePickerComponentController extends ApplicationContro
|
|
266
274
|
}
|
267
275
|
|
268
276
|
dateTimeEntered(event) {
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
277
|
+
const inputValue = this.inputTarget.value;
|
278
|
+
|
279
|
+
if (inputValue.length < 10) return;
|
280
|
+
|
281
|
+
const locale = this.localeValue || navigator.language;
|
282
|
+
const defaultFormat = this.formatValue || "YYYY-MM-DD HH:mm:ss";
|
283
|
+
dayjs.locale(locale);
|
284
|
+
|
285
|
+
const formats = [
|
286
|
+
defaultFormat,
|
287
|
+
'YYYY-MM-DD',
|
288
|
+
'YYYY/MM/DD',
|
289
|
+
'DD/MM/YYYY',
|
290
|
+
'DD.MM.YYYY',
|
291
|
+
"DD-MM-YYYY",
|
292
|
+
"DD-MM-YYYY HH:mm",
|
293
|
+
"dddd, MMMM DD, YYYY h:mma",
|
294
|
+
"dddd, MMMM DD, YYYY h:mm A"
|
295
|
+
];
|
296
|
+
|
297
|
+
let parsedDate = null;
|
298
|
+
|
299
|
+
for (const format of formats) {
|
300
|
+
parsedDate = dayjs(inputValue, format, locale, true);
|
301
|
+
if (parsedDate.isValid()) {
|
302
|
+
break;
|
303
|
+
}
|
304
|
+
}
|
305
|
+
|
306
|
+
if (parsedDate && parsedDate.isValid()) {
|
307
|
+
this.selectedValue = [parsedDate.toDate()];
|
308
|
+
this.refreshCalendar(true);
|
309
|
+
this.refreshInputs();
|
310
|
+
} else {
|
311
|
+
console.warn("Invalid date/time entered");
|
312
|
+
const currentDate = dayjs().toDate();
|
313
|
+
this.selectedValue = [currentDate];
|
314
|
+
this.refreshCalendar(true);
|
315
|
+
this.refreshInputs();
|
316
|
+
}
|
317
|
+
|
278
318
|
}
|
279
319
|
|
320
|
+
|
280
321
|
selectDay(event) {
|
281
322
|
let oldCurrentValue = this.selectedValue[0]
|
323
|
+
let dayType = event.target.dataset.type
|
324
|
+
let selectedDate = new Date(this.displayValue)
|
325
|
+
|
326
|
+
if (dayType === "prev") {
|
327
|
+
if (this.rangeValue) {
|
328
|
+
return false
|
329
|
+
}
|
330
|
+
selectedDate.setMonth(this.displayValue.getMonth() - 1)
|
331
|
+
} else if (dayType === "next") {
|
332
|
+
if (this.rangeValue) {
|
333
|
+
return false
|
334
|
+
}
|
335
|
+
selectedDate.setMonth(this.displayValue.getMonth() + 1)
|
336
|
+
}
|
337
|
+
|
338
|
+
selectedDate.setDate(+event.target.innerText)
|
339
|
+
|
282
340
|
if (!this.rangeValue && !this.multipleValue) {
|
283
|
-
this.selectedValue[0] =
|
341
|
+
this.selectedValue[0] = selectedDate
|
284
342
|
if (this.timePickerValue && oldCurrentValue) {
|
285
343
|
this.selectedValue[0].setHours(oldCurrentValue.getHours())
|
286
344
|
this.selectedValue[0].setMinutes(oldCurrentValue.getMinutes())
|
@@ -304,6 +362,7 @@ export default class DateTimePickerComponentController extends ApplicationContro
|
|
304
362
|
this.currentSelectNr += 1
|
305
363
|
}
|
306
364
|
|
365
|
+
this.refreshInputs()
|
307
366
|
this.refreshCalendar()
|
308
367
|
|
309
368
|
if (!this.rangeValue || this.selectedValue.length == 2) {
|
@@ -392,46 +451,19 @@ export default class DateTimePickerComponentController extends ApplicationContro
|
|
392
451
|
this.minutesTarget.value = "00" // FIXME: Should be 0:00 in locale
|
393
452
|
}
|
394
453
|
}
|
395
|
-
this.daysTarget.innerHTML = ""
|
396
454
|
|
397
|
-
this.
|
398
|
-
if (day == " ") {
|
399
|
-
this.daysTarget.insertAdjacentHTML("beforeend", this.emtpyTemplateTarget.innerHTML)
|
400
|
-
} else {
|
401
|
-
let date = new Date(new Date(this.displayValue).setDate(day))
|
455
|
+
let days = this.generateDays()
|
402
456
|
|
403
|
-
|
404
|
-
|
457
|
+
this.daysTarget.innerHTML = ""
|
458
|
+
days.forEach((day) => {
|
459
|
+
let tmpDiv = document.createElement("div")
|
460
|
+
tmpDiv.innerHTML = this.dayTemplateTarget.innerHTML.replace(/\${day}/g, day.date.getDate())
|
461
|
+
let div = tmpDiv.querySelector(".text-center")
|
405
462
|
|
406
|
-
|
407
|
-
let div = tmpDiv.querySelector(".text-center")
|
408
|
-
div.classList.add("border-red-500", "border")
|
409
|
-
}
|
410
|
-
let div = tmpDiv.querySelector(".text-center")
|
411
|
-
|
412
|
-
if (this.isSelected(date)) {
|
413
|
-
if (this.rangeValue && this.selectedValue.length == 2) {
|
414
|
-
if (this.isDate(this.selectedValue[0], date)) {
|
415
|
-
div.classList.add("bg-primary-500", "text-white", "dark:text-gray-200")
|
416
|
-
div.classList.remove("rounded-r-full")
|
417
|
-
} else if (this.isDate(this.selectedValue[1], date)) {
|
418
|
-
div.classList.add("bg-primary-500", "text-white", "dark:text-gray-200")
|
419
|
-
div.classList.remove("rounded-l-full")
|
420
|
-
} else if (this.isSelected(date)) {
|
421
|
-
div.classList.remove("rounded-r-full")
|
422
|
-
div.classList.remove("rounded-l-full")
|
423
|
-
div.classList.add("bg-primary-200", "text-white", "dark:text-gray-200")
|
424
|
-
}
|
425
|
-
} else {
|
426
|
-
div.classList.add("bg-primary-500", "text-white", "dark:text-gray-200")
|
427
|
-
}
|
428
|
-
} else {
|
429
|
-
div.classList.add("text-gray-700", "dark:text-gray-300")
|
430
|
-
}
|
463
|
+
this.applyDayStyles(div, day)
|
431
464
|
|
432
|
-
|
433
|
-
|
434
|
-
}
|
465
|
+
this.daysTarget.insertAdjacentHTML("beforeend", tmpDiv.innerHTML)
|
466
|
+
tmpDiv.remove()
|
435
467
|
})
|
436
468
|
|
437
469
|
if (refreshInputs != false) {
|
@@ -443,6 +475,91 @@ export default class DateTimePickerComponentController extends ApplicationContro
|
|
443
475
|
}
|
444
476
|
}
|
445
477
|
|
478
|
+
generateDays() {
|
479
|
+
let days = []
|
480
|
+
const firstDayOfMonth = new Date(this.displayValue.getFullYear(), this.displayValue.getMonth(), 1)
|
481
|
+
const lastDayOfMonth = new Date(this.displayValue.getFullYear(), this.displayValue.getMonth() + 1, 0)
|
482
|
+
const startDayOfWeek = (firstDayOfMonth.getDay() - this.weekStartValue + 7) % 7
|
483
|
+
const endDayOfWeek = (6 - lastDayOfMonth.getDay() + this.weekStartValue + 7) % 7
|
484
|
+
const previousMonthLastDate = new Date(this.displayValue.getFullYear(), this.displayValue.getMonth(), 0).getDate()
|
485
|
+
|
486
|
+
// Previous month's days
|
487
|
+
for (let i = startDayOfWeek; i > 0; i--) {
|
488
|
+
const day = previousMonthLastDate - i + 1
|
489
|
+
days.push({
|
490
|
+
date: new Date(this.displayValue.getFullYear(), this.displayValue.getMonth() - 1, day),
|
491
|
+
type: "prev",
|
492
|
+
})
|
493
|
+
}
|
494
|
+
|
495
|
+
// Current month's days
|
496
|
+
for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {
|
497
|
+
days.push({
|
498
|
+
date: new Date(this.displayValue.getFullYear(), this.displayValue.getMonth(), i),
|
499
|
+
type: "current",
|
500
|
+
})
|
501
|
+
}
|
502
|
+
|
503
|
+
// Next month's days
|
504
|
+
for (let i = 1; i <= endDayOfWeek; i++) {
|
505
|
+
days.push({
|
506
|
+
date: new Date(this.displayValue.getFullYear(), this.displayValue.getMonth() + 1, i),
|
507
|
+
type: "next",
|
508
|
+
})
|
509
|
+
}
|
510
|
+
|
511
|
+
return days
|
512
|
+
}
|
513
|
+
|
514
|
+
applyDayStyles(div, day) {
|
515
|
+
if (day.type === "prev" || day.type === "next") {
|
516
|
+
div.classList.add("text-gray-400", "hover:bg-gray-200", "cursor-pointer")
|
517
|
+
div.dataset.type = day.type
|
518
|
+
|
519
|
+
this.addDayClickListener(div, day)
|
520
|
+
} else {
|
521
|
+
div.classList.add("text-gray-700", "dark:text-gray-300")
|
522
|
+
|
523
|
+
if (this.isToday(day.date)) {
|
524
|
+
div.classList.add("border-red-500", "border")
|
525
|
+
}
|
526
|
+
|
527
|
+
if (this.isSelected(day.date)) {
|
528
|
+
if (this.rangeValue && this.selectedValue.length == 2) {
|
529
|
+
if (this.isDate(this.selectedValue[0], day.date)) {
|
530
|
+
div.classList.add("bg-primary-500", "text-white", "dark:text-gray-200")
|
531
|
+
div.classList.remove("rounded-r-full")
|
532
|
+
} else if (this.isDate(this.selectedValue[1], day.date)) {
|
533
|
+
div.classList.add("bg-primary-500", "text-white", "dark:text-gray-200")
|
534
|
+
div.classList.remove("rounded-l-full")
|
535
|
+
} else if (this.isSelected(day.date)) {
|
536
|
+
div.classList.remove("rounded-r-full")
|
537
|
+
div.classList.remove("rounded-l-full")
|
538
|
+
div.classList.add("bg-primary-200", "text-white", "dark:text-gray-200")
|
539
|
+
}
|
540
|
+
} else {
|
541
|
+
div.classList.add("bg-primary-500", "text-white", "dark:text-gray-200")
|
542
|
+
}
|
543
|
+
} else {
|
544
|
+
div.classList.add("text-gray-700", "dark:text-gray-300")
|
545
|
+
}
|
546
|
+
}
|
547
|
+
}
|
548
|
+
|
549
|
+
addDayClickListener(div, day) {
|
550
|
+
if (day.type === "prev" || day.type === "next") {
|
551
|
+
div.addEventListener("click", () => {
|
552
|
+
this.displayValue = new Date(day.date.getFullYear(), day.date.getMonth(), 1)
|
553
|
+
this.selectedValue[0] = new Date(day.date)
|
554
|
+
this.refreshCalendar(true)
|
555
|
+
|
556
|
+
if (!this.inlineValue) {
|
557
|
+
this.hideCalendar()
|
558
|
+
}
|
559
|
+
})
|
560
|
+
}
|
561
|
+
}
|
562
|
+
|
446
563
|
// Format the given Date into an ISO8601 string whilst preserving the given timezone
|
447
564
|
iso8601(date) {
|
448
565
|
let tzo = -date.getTimezoneOffset(),
|
data/config/importmap.rb
CHANGED
@@ -13,7 +13,7 @@ pin_all_from Satis::Engine.root.join("app/javascript/satis/elements"), under: "s
|
|
13
13
|
pin_all_from Satis::Engine.root.join("app/components/satis"), under: "satis/components", to: "satis"
|
14
14
|
|
15
15
|
pin "tippy.js", preload: false # @6.3.7
|
16
|
-
pin "@popperjs/core", to:
|
16
|
+
pin "@popperjs/core", to: "popper.js.js", preload: false
|
17
17
|
pin "leaflet", to: "leaflet.js", preload: false
|
18
18
|
pin "sortablejs", to: "sortablejs.js", preload: false # @1.15.2
|
19
19
|
pin "@rails/actiontext", to: "@rails--actiontext.js" # @7.1.3
|
@@ -48,3 +48,7 @@ pin "@lezer/markdown", to: "@lezer--markdown.js" # @1.2.0
|
|
48
48
|
pin "intl-tel-input", to: "intl-tel-input.js" # @19.5.6
|
49
49
|
pin "intl-tel-input-utils", to: "intl-tel-input-utils.js" # @19.5.6
|
50
50
|
pin "pickr", to: "pickr.es5.min.js" # @0.1.4
|
51
|
+
pin "dayjs" # @1.11.13
|
52
|
+
pin "dayjs/plugin/customParseFormat", to: "dayjs--plugin--customParseFormat.js" # @1.11.13
|
53
|
+
pin "dayjs/plugin/localizedFormat", to: "dayjs--plugin--localizedFormat.js" # @1.11.13
|
54
|
+
pin "dayjs/plugin/utc", to: "dayjs--plugin--utc.js" # @1.11.13
|
data/lib/satis/configuration.rb
CHANGED
@@ -15,7 +15,7 @@ module Satis
|
|
15
15
|
|
16
16
|
def set_defaults!
|
17
17
|
self.class.schema.each do |name, default|
|
18
|
-
instance_variable_set("@#{name}", default)
|
18
|
+
instance_variable_set(:"@#{name}", default)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
@@ -33,6 +33,13 @@ module Satis
|
|
33
33
|
option :confirm_before_leave, default: false
|
34
34
|
option :current_user, default: lambda {}
|
35
35
|
|
36
|
+
option :icons, default: {
|
37
|
+
previous_year: "fa-solid fa-angle-double-left",
|
38
|
+
previous_month: "fa-solid fa-angle-left",
|
39
|
+
next_month: "fa-solid fa-angle-right",
|
40
|
+
next_year: "fa-solid fa-angle-double-right"
|
41
|
+
}
|
42
|
+
|
36
43
|
option(:default_help_text, default: lambda do |template, object, key, additional_scope|
|
37
44
|
scope = help_scope(template, object, additional_scope)
|
38
45
|
|
@@ -80,7 +87,7 @@ module Satis
|
|
80
87
|
def configure
|
81
88
|
yield(config)
|
82
89
|
end
|
83
|
-
|
90
|
+
alias_method :setup, :configure
|
84
91
|
|
85
92
|
def reset_config!
|
86
93
|
@config = Configuration.new
|
data/lib/satis/version.rb
CHANGED
@@ -0,0 +1,4 @@
|
|
1
|
+
// dayjs/plugin/customParseFormat@1.11.13 downloaded from https://ga.jspm.io/npm:dayjs@1.11.13/plugin/customParseFormat.js
|
2
|
+
|
3
|
+
var e=typeof globalThis!=="undefined"?globalThis:typeof self!=="undefined"?self:global;var t={};!function(e,n){t=n()}(0,(function(){var t={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},n=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,r=/\d/,i=/\d\d/,o=/\d\d?/,s=/\d*[^-_:/,()\s\d]+/,h={},a=function(e){return(e=+e)+(e>68?1900:2e3)};var f=function(t){return function(n){(this||e)[t]=+n}},c=[/[+-]\d\d:?(\d\d)?|Z/,function(t){((this||e).zone||((this||e).zone={})).offset=function(e){if(!e)return 0;if("Z"===e)return 0;var t=e.match(/([+-]|\d\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:"+"===t[0]?-n:n}(t)}],u=function(e){var t=h[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=h.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?"pm":"PM");return n},m={A:[s,function(t){(this||e).afternoon=d(t,!1)}],a:[s,function(t){(this||e).afternoon=d(t,!0)}],Q:[r,function(t){(this||e).month=3*(t-1)+1}],S:[r,function(t){(this||e).milliseconds=100*+t}],SS:[i,function(t){(this||e).milliseconds=10*+t}],SSS:[/\d{3}/,function(t){(this||e).milliseconds=+t}],s:[o,f("seconds")],ss:[o,f("seconds")],m:[o,f("minutes")],mm:[o,f("minutes")],H:[o,f("hours")],h:[o,f("hours")],HH:[o,f("hours")],hh:[o,f("hours")],D:[o,f("day")],DD:[i,f("day")],Do:[s,function(t){var n=h.ordinal,r=t.match(/\d+/);if((this||e).day=r[0],n)for(var i=1;i<=31;i+=1)n(i).replace(/\[|\]/g,"")===t&&((this||e).day=i)}],w:[o,f("week")],ww:[i,f("week")],M:[o,f("month")],MM:[i,f("month")],MMM:[s,function(t){var n=u("months"),r=(u("monthsShort")||n.map((function(e){return e.slice(0,3)}))).indexOf(t)+1;if(r<1)throw new Error;(this||e).month=r%12||r}],MMMM:[s,function(t){var n=u("months").indexOf(t)+1;if(n<1)throw new Error;(this||e).month=n%12||n}],Y:[/[+-]?\d+/,f("year")],YY:[i,function(t){(this||e).year=a(t)}],YYYY:[/\d{4}/,f("year")],Z:c,ZZ:c};function l(e){var r,i;r=e,i=h&&h.formats;for(var o=(e=r.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(e,n,r){var o=r&&r.toUpperCase();return n||i[r]||t[r]||i[o].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(n),s=o.length,c=0;c<s;c+=1){var M=o[c],Y=m[M],v=Y&&Y[0],D=Y&&Y[1];o[c]=D?{regex:v,parser:D}:M.replace(/^\[|\]$/g,"")}return function(e){for(var t={},n=0,r=0;n<s;n+=1){var i=o[n];if("string"==typeof i)r+=i.length;else{var h=i.regex,c=i.parser,m=e.slice(r),M=h.exec(m)[0];c.call(t,M),e=e.replace(M,"")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(t,n,r){r.p.customParseFormat=!0,t&&t.parseTwoDigitYear&&(a=t.parseTwoDigitYear);var i=n.prototype,o=i.parse;i.parse=function(t){var n=t.date,i=t.utc,s=t.args;(this||e).$u=i;var c=s[1];if("string"==typeof c){var m=!0===s[2],M=!0===s[3],Y=m||M,v=s[2];M&&(v=s[2]),h=this.$locale(),!m&&v&&(h=r.Ls[v]),(this||e).$d=function(e,t,n,r){try{if(["x","X"].indexOf(t)>-1)return new Date(("X"===t?1e3:1)*e);var i=l(t)(e),o=i.year,s=i.month,h=i.day,c=i.hours,m=i.minutes,M=i.seconds,Y=i.milliseconds,v=i.zone,D=i.week,p=new Date,w=h||(o||s?1:p.getDate()),g=o||p.getFullYear(),L=0;o&&!s||(L=s>0?s-1:p.getMonth());var y,$=c||0,x=m||0,S=M||0,T=Y||0;return v?new Date(Date.UTC(g,L,w,$,x,S,T+60*v.offset*1e3)):n?new Date(Date.UTC(g,L,w,$,x,S,T)):(y=new Date(g,L,w,$,x,S,T),D&&(y=r(y).week(D).toDate()),y)}catch(e){return new Date("")}}(n,c,i,r),this.init(),v&&!0!==v&&((this||e).$L=this.locale(v).$L),Y&&n!=this.format(c)&&((this||e).$d=new Date("")),h={}}else if(c instanceof Array)for(var D=c.length,p=1;p<=D;p+=1){s[1]=c[p-1];var w=r.apply(this||e,s);if(w.isValid()){(this||e).$d=w.$d,(this||e).$L=w.$L,this.init();break}p===D&&((this||e).$d=new Date(""))}else o.call(this||e,t)}}}));var n=t;export{n as default};
|
4
|
+
|
@@ -0,0 +1,4 @@
|
|
1
|
+
// dayjs/plugin/localizedFormat@1.11.13 downloaded from https://ga.jspm.io/npm:dayjs@1.11.13/plugin/localizedFormat.js
|
2
|
+
|
3
|
+
var r=typeof globalThis!=="undefined"?globalThis:typeof self!=="undefined"?self:global;var e={};!function(r,t){e=t()}(0,(function(){var e={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};return function(t,n,o){var M=n.prototype,a=M.format;o.en.formats=e,M.format=function(t){void 0===t&&(t="YYYY-MM-DDTHH:mm:ssZ");var n=this.$locale().formats,o=function(r,t){return r.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(r,n,o){var M=o&&o.toUpperCase();return n||t[o]||e[o]||t[M].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(r,e,t){return e||t.slice(1)}))}))}(t,void 0===n?{}:n);return a.call(this||r,o)}}}));var t=e;export{t as default};
|
4
|
+
|
@@ -0,0 +1,4 @@
|
|
1
|
+
// dayjs/plugin/utc@1.11.13 downloaded from https://ga.jspm.io/npm:dayjs@1.11.13/plugin/utc.js
|
2
|
+
|
3
|
+
var t=typeof globalThis!=="undefined"?globalThis:typeof self!=="undefined"?self:global;var i={};!function(t,s){i=s()}(0,(function(){var i="minute",s=/[+-]\d\d(?::?\d\d)?/g,e=/([+-]|\d\d)/g;return function(f,n,r){var u=n.prototype;r.utc=function(t){var i={date:t,utc:!0,args:arguments};return new n(i)},u.utc=function(s){var e=r(this.toDate(),{locale:(this||t).$L,utc:!0});return s?e.add(this.utcOffset(),i):e},u.local=function(){return r(this.toDate(),{locale:(this||t).$L,utc:!1})};var a=u.parse;u.parse=function(i){i.utc&&((this||t).$u=!0),this.$utils().u(i.$offset)||((this||t).$offset=i.$offset),a.call(this||t,i)};var o=u.init;u.init=function(){if((this||t).$u){var i=(this||t).$d;(this||t).$y=i.getUTCFullYear(),(this||t).$M=i.getUTCMonth(),(this||t).$D=i.getUTCDate(),(this||t).$W=i.getUTCDay(),(this||t).$H=i.getUTCHours(),(this||t).$m=i.getUTCMinutes(),(this||t).$s=i.getUTCSeconds(),(this||t).$ms=i.getUTCMilliseconds()}else o.call(this||t)};var h=u.utcOffset;u.utcOffset=function(f,n){var r=this.$utils().u;if(r(f))return(this||t).$u?0:r((this||t).$offset)?h.call(this||t):(this||t).$offset;if("string"==typeof f&&(f=function(t){void 0===t&&(t="");var i=t.match(s);if(!i)return null;var f=(""+i[0]).match(e)||["-",0,0],n=f[0],r=60*+f[1]+ +f[2];return 0===r?0:"+"===n?r:-r}(f),null===f))return this||t;var u=Math.abs(f)<=16?60*f:f,a=this||t;if(n)return a.$offset=u,a.$u=0===f,a;if(0!==f){var o=(this||t).$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(a=this.local().add(u+o,i)).$offset=u,a.$x.$localOffset=o}else a=this.utc();return a};var l=u.format;u.format=function(i){var s=i||((this||t).$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return l.call(this||t,s)},u.valueOf=function(){var i=this.$utils().u((this||t).$offset)?0:(this||t).$offset+((this||t).$x.$localOffset||(this||t).$d.getTimezoneOffset());return(this||t).$d.valueOf()-6e4*i},u.isUTC=function(){return!!(this||t).$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var c=u.toDate;u.toDate=function(i){return"s"===i&&(this||t).$offset?r(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():c.call(this||t)};var $=u.diff;u.diff=function(i,s,e){if(i&&(this||t).$u===i.$u)return $.call(this||t,i,s,e);var f=this.local(),n=r(i).local();return $.call(f,n,s,e)}}}));var s=i;export{s as default};
|
4
|
+
|
@@ -0,0 +1,4 @@
|
|
1
|
+
// dayjs@1.11.13 downloaded from https://ga.jspm.io/npm:dayjs@1.11.13/dayjs.min.js
|
2
|
+
|
3
|
+
var e=typeof globalThis!=="undefined"?globalThis:typeof self!=="undefined"?self:global;var n={};!function(e,r){n=r()}(0,(function(){var n=1e3,r=6e4,s=36e5,i="millisecond",u="second",a="minute",o="hour",c="day",f="week",v="month",g="quarter",p="year",w="date",b="Invalid Date",_=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,k=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,T={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var n=["th","st","nd","rd"],r=e%100;return"["+e+(n[(r-20)%10]||n[r]||n[0])+"]"}},m=function(e,n,r){var s=String(e);return!s||s.length>=n?e:""+Array(n+1-s.length).join(r)+e},Y={s:m,z:function(e){var n=-e.utcOffset(),r=Math.abs(n),s=Math.floor(r/60),i=r%60;return(n<=0?"+":"-")+m(s,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),s=e.clone().add(r,v),i=n-s<0,u=e.clone().add(r+(i?-1:1),v);return+(-(r+(n-s)/(i?s-u:u-s))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:v,y:p,w:f,d:c,D:w,h:o,m:a,s:u,ms:i,Q:g}[e]||String(e||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},H="en",x={};x[H]=T;var L="$isDayjsObject",S=function(e){return e instanceof A||!(!e||!e[L])},W=function t(e,n,r){var s;if(!e)return H;if("string"==typeof e){var i=e.toLowerCase();x[i]&&(s=i),n&&(x[i]=n,s=i);var u=e.split("-");if(!s&&u.length>1)return t(u[0])}else{var a=e.name;x[a]=e,s=a}return!r&&s&&(H=s),s||!r&&H},O=function(e,n){if(S(e))return e.clone();var r="object"==typeof n?n:{};return r.date=e,r.args=arguments,new A(r)},C=Y;C.l=W,C.i=S,C.w=function(e,n){return O(e,{locale:n.$L,utc:n.$u,x:n.$x,$offset:n.$offset})};var A=function(){function M(n){(this||e).$L=W(n.locale,null,!0),this.parse(n),(this||e).$x=(this||e).$x||n.x||{},(this||e)[L]=!0}var T=M.prototype;return T.parse=function(n){(this||e).$d=function(e){var n=e.date,r=e.utc;if(null===n)return new Date(NaN);if(C.u(n))return new Date;if(n instanceof Date)return new Date(n);if("string"==typeof n&&!/Z$/i.test(n)){var s=n.match(_);if(s){var i=s[2]-1||0,u=(s[7]||"0").substring(0,3);return r?new Date(Date.UTC(s[1],i,s[3]||1,s[4]||0,s[5]||0,s[6]||0,u)):new Date(s[1],i,s[3]||1,s[4]||0,s[5]||0,s[6]||0,u)}}return new Date(n)}(n),this.init()},T.init=function(){var n=(this||e).$d;(this||e).$y=n.getFullYear(),(this||e).$M=n.getMonth(),(this||e).$D=n.getDate(),(this||e).$W=n.getDay(),(this||e).$H=n.getHours(),(this||e).$m=n.getMinutes(),(this||e).$s=n.getSeconds(),(this||e).$ms=n.getMilliseconds()},T.$utils=function(){return C},T.isValid=function(){return!((this||e).$d.toString()===b)},T.isSame=function(e,n){var r=O(e);return this.startOf(n)<=r&&r<=this.endOf(n)},T.isAfter=function(e,n){return O(e)<this.startOf(n)},T.isBefore=function(e,n){return this.endOf(n)<O(e)},T.$g=function(n,r,s){return C.u(n)?(this||e)[r]:this.set(s,n)},T.unix=function(){return Math.floor(this.valueOf()/1e3)},T.valueOf=function(){return(this||e).$d.getTime()},T.startOf=function(n,r){var s=this||e,i=!!C.u(r)||r,g=C.p(n),l=function(e,n){var r=C.w(s.$u?Date.UTC(s.$y,n,e):new Date(s.$y,n,e),s);return i?r:r.endOf(c)},$=function(e,n){return C.w(s.toDate()[e].apply(s.toDate("s"),(i?[0,0,0,0]:[23,59,59,999]).slice(n)),s)},b=(this||e).$W,_=(this||e).$M,k=(this||e).$D,T="set"+((this||e).$u?"UTC":"");switch(g){case p:return i?l(1,0):l(31,11);case v:return i?l(1,_):l(0,_+1);case f:var Y=this.$locale().weekStart||0,H=(b<Y?b+7:b)-Y;return l(i?k-H:k+(6-H),_);case c:case w:return $(T+"Hours",0);case o:return $(T+"Minutes",1);case a:return $(T+"Seconds",2);case u:return $(T+"Milliseconds",3);default:return this.clone()}},T.endOf=function(e){return this.startOf(e,!1)},T.$set=function(n,r){var s,f=C.p(n),g="set"+((this||e).$u?"UTC":""),b=(s={},s[c]=g+"Date",s[w]=g+"Date",s[v]=g+"Month",s[p]=g+"FullYear",s[o]=g+"Hours",s[a]=g+"Minutes",s[u]=g+"Seconds",s[i]=g+"Milliseconds",s)[f],_=f===c?(this||e).$D+(r-(this||e).$W):r;if(f===v||f===p){var k=this.clone().set(w,1);k.$d[b](_),k.init(),(this||e).$d=k.set(w,Math.min((this||e).$D,k.daysInMonth())).$d}else b&&(this||e).$d[b](_);return this.init(),this||e},T.set=function(e,n){return this.clone().$set(e,n)},T.get=function(e){return this[C.p(e)]()},T.add=function(i,g){var w,b=this||e;i=Number(i);var _=C.p(g),y=function(e){var n=O(b);return C.w(n.date(n.date()+Math.round(e*i)),b)};if(_===v)return this.set(v,(this||e).$M+i);if(_===p)return this.set(p,(this||e).$y+i);if(_===c)return y(1);if(_===f)return y(7);var k=(w={},w[a]=r,w[o]=s,w[u]=n,w)[_]||1,T=(this||e).$d.getTime()+i*k;return C.w(T,this||e)},T.subtract=function(e,n){return this.add(-1*e,n)},T.format=function(n){var r=this||e,s=this.$locale();if(!this.isValid())return s.invalidDate||b;var i=n||"YYYY-MM-DDTHH:mm:ssZ",u=C.z(this||e),a=(this||e).$H,o=(this||e).$m,c=(this||e).$M,f=s.weekdays,v=s.months,g=s.meridiem,h=function(e,n,s,u){return e&&(e[n]||e(r,i))||s[n].slice(0,u)},d=function(e){return C.s(a%12||12,e,"0")},p=g||function(e,n,r){var s=e<12?"AM":"PM";return r?s.toLowerCase():s};return i.replace(k,(function(e,n){return n||function(e){switch(e){case"YY":return String(r.$y).slice(-2);case"YYYY":return C.s(r.$y,4,"0");case"M":return c+1;case"MM":return C.s(c+1,2,"0");case"MMM":return h(s.monthsShort,c,v,3);case"MMMM":return h(v,c);case"D":return r.$D;case"DD":return C.s(r.$D,2,"0");case"d":return String(r.$W);case"dd":return h(s.weekdaysMin,r.$W,f,2);case"ddd":return h(s.weekdaysShort,r.$W,f,3);case"dddd":return f[r.$W];case"H":return String(a);case"HH":return C.s(a,2,"0");case"h":return d(1);case"hh":return d(2);case"a":return p(a,o,!0);case"A":return p(a,o,!1);case"m":return String(o);case"mm":return C.s(o,2,"0");case"s":return String(r.$s);case"ss":return C.s(r.$s,2,"0");case"SSS":return C.s(r.$ms,3,"0");case"Z":return u}return null}(e)||u.replace(":","")}))},T.utcOffset=function(){return 15*-Math.round((this||e).$d.getTimezoneOffset()/15)},T.diff=function(i,w,b){var _,k=this||e,T=C.p(w),Y=O(i),H=(Y.utcOffset()-this.utcOffset())*r,x=(this||e)-Y,D=function(){return C.m(k,Y)};switch(T){case p:_=D()/12;break;case v:_=D();break;case g:_=D()/3;break;case f:_=(x-H)/6048e5;break;case c:_=(x-H)/864e5;break;case o:_=x/s;break;case a:_=x/r;break;case u:_=x/n;break;default:_=x}return b?_:C.a(_)},T.daysInMonth=function(){return this.endOf(v).$D},T.$locale=function(){return x[(this||e).$L]},T.locale=function(n,r){if(!n)return(this||e).$L;var s=this.clone(),i=W(n,r,!0);return i&&(s.$L=i),s},T.clone=function(){return C.w((this||e).$d,this||e)},T.toDate=function(){return new Date(this.valueOf())},T.toJSON=function(){return this.isValid()?this.toISOString():null},T.toISOString=function(){return(this||e).$d.toISOString()},T.toString=function(){return(this||e).$d.toUTCString()},M}(),I=A.prototype;return O.prototype=I,[["$ms",i],["$s",u],["$m",a],["$H",o],["$W",c],["$M",v],["$y",p],["$D",w]].forEach((function(e){I[e[1]]=function(n){return this.$g(n,e[0],e[1])}})),O.extend=function(e,n){return e.$i||(e(n,A,O),e.$i=!0),O},O.locale=W,O.isDayjs=S,O.unix=function(e){return O(1e3*e)},O.en=x[H],O.Ls=x,O.p={},O}));var r=n;export{r as default};
|
4
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: satis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.53
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom de Grunt
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-01-
|
11
|
+
date: 2025-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: browser
|
@@ -959,6 +959,10 @@ files:
|
|
959
959
|
- vendor/javascript/codemirror.js
|
960
960
|
- vendor/javascript/crelt.js
|
961
961
|
- vendor/javascript/data.min.js
|
962
|
+
- vendor/javascript/dayjs--plugin--customParseFormat.js
|
963
|
+
- vendor/javascript/dayjs--plugin--localizedFormat.js
|
964
|
+
- vendor/javascript/dayjs--plugin--utc.js
|
965
|
+
- vendor/javascript/dayjs.js
|
962
966
|
- vendor/javascript/intl-tel-input-utils.js
|
963
967
|
- vendor/javascript/intl-tel-input.js
|
964
968
|
- vendor/javascript/leaflet.js
|