@paperless/core 2.0.1-beta.27 → 2.0.1-beta.29

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.
Files changed (80) hide show
  1. package/CHANGELOG.md +174 -0
  2. package/dist/build/{p-3e3983ec.js → p-66e5fc31.js} +1 -1
  3. package/dist/build/p-84863ba0.entry.js +2 -0
  4. package/dist/build/p-84863ba0.entry.js.map +1 -0
  5. package/dist/build/p-98e3f82a.entry.js +2 -0
  6. package/dist/build/p-98e3f82a.entry.js.map +1 -0
  7. package/dist/build/p-b51dcf11.js +2 -0
  8. package/dist/build/p-b51dcf11.js.map +1 -0
  9. package/dist/build/p-ed06230b.entry.js +2 -0
  10. package/dist/build/p-ed06230b.entry.js.map +1 -0
  11. package/dist/build/paperless.esm.js +1 -1
  12. package/dist/build/paperless.esm.js.map +1 -1
  13. package/dist/cjs/{index-08db8a87.js → index-64168fc4.js} +28 -1
  14. package/dist/cjs/index-64168fc4.js.map +1 -0
  15. package/dist/cjs/loader.cjs.js +1 -1
  16. package/dist/cjs/p-calendar.cjs.entry.js +6 -36
  17. package/dist/cjs/p-calendar.cjs.entry.js.map +1 -1
  18. package/dist/cjs/p-datepicker.cjs.entry.js +38 -10
  19. package/dist/cjs/p-datepicker.cjs.entry.js.map +1 -1
  20. package/dist/cjs/p-stepper.cjs.entry.js +66 -41
  21. package/dist/cjs/p-stepper.cjs.entry.js.map +1 -1
  22. package/dist/cjs/paperless.cjs.js +1 -1
  23. package/dist/collection/components/molecules/calendar/calendar.component.js +3 -7
  24. package/dist/collection/components/molecules/calendar/calendar.component.js.map +1 -1
  25. package/dist/collection/components/molecules/datepicker/datepicker.component.js +11 -10
  26. package/dist/collection/components/molecules/datepicker/datepicker.component.js.map +1 -1
  27. package/dist/collection/components/molecules/stepper/stepper.component.js +86 -46
  28. package/dist/collection/components/molecules/stepper/stepper.component.js.map +1 -1
  29. package/dist/components/calendar.component.js +4 -8
  30. package/dist/components/calendar.component.js.map +1 -1
  31. package/dist/components/p-datepicker.js +38 -10
  32. package/dist/components/p-datepicker.js.map +1 -1
  33. package/dist/components/p-stepper.js +68 -43
  34. package/dist/components/p-stepper.js.map +1 -1
  35. package/dist/esm/{index-64e10183.js → index-27408d5b.js} +28 -2
  36. package/dist/esm/index-27408d5b.js.map +1 -0
  37. package/dist/esm/loader.js +1 -1
  38. package/dist/esm/p-calendar.entry.js +4 -34
  39. package/dist/esm/p-calendar.entry.js.map +1 -1
  40. package/dist/esm/p-datepicker.entry.js +38 -10
  41. package/dist/esm/p-datepicker.entry.js.map +1 -1
  42. package/dist/esm/p-stepper.entry.js +66 -41
  43. package/dist/esm/p-stepper.entry.js.map +1 -1
  44. package/dist/esm/paperless.js +1 -1
  45. package/dist/index.html +1 -1
  46. package/dist/paperless/p-84863ba0.entry.js +2 -0
  47. package/dist/paperless/p-84863ba0.entry.js.map +1 -0
  48. package/dist/paperless/p-98e3f82a.entry.js +2 -0
  49. package/dist/paperless/p-98e3f82a.entry.js.map +1 -0
  50. package/dist/paperless/p-b51dcf11.js +2 -0
  51. package/dist/paperless/p-b51dcf11.js.map +1 -0
  52. package/dist/paperless/p-ed06230b.entry.js +2 -0
  53. package/dist/paperless/p-ed06230b.entry.js.map +1 -0
  54. package/dist/paperless/paperless.esm.js +1 -1
  55. package/dist/paperless/paperless.esm.js.map +1 -1
  56. package/dist/sw.js +1 -1
  57. package/dist/sw.js.map +1 -1
  58. package/dist/types/components/molecules/stepper/stepper.component.d.ts +9 -4
  59. package/dist/types/components.d.ts +8 -0
  60. package/hydrate/index.js +108 -59
  61. package/hydrate/index.mjs +108 -59
  62. package/package.json +1 -1
  63. package/dist/build/p-28601ee5.entry.js +0 -2
  64. package/dist/build/p-28601ee5.entry.js.map +0 -1
  65. package/dist/build/p-38edcb47.entry.js +0 -2
  66. package/dist/build/p-38edcb47.entry.js.map +0 -1
  67. package/dist/build/p-3fec2247.entry.js +0 -2
  68. package/dist/build/p-3fec2247.entry.js.map +0 -1
  69. package/dist/build/p-6bcfa4d5.js +0 -2
  70. package/dist/build/p-6bcfa4d5.js.map +0 -1
  71. package/dist/cjs/index-08db8a87.js.map +0 -1
  72. package/dist/esm/index-64e10183.js.map +0 -1
  73. package/dist/paperless/p-28601ee5.entry.js +0 -2
  74. package/dist/paperless/p-28601ee5.entry.js.map +0 -1
  75. package/dist/paperless/p-38edcb47.entry.js +0 -2
  76. package/dist/paperless/p-38edcb47.entry.js.map +0 -1
  77. package/dist/paperless/p-3fec2247.entry.js +0 -2
  78. package/dist/paperless/p-3fec2247.entry.js.map +0 -1
  79. package/dist/paperless/p-6bcfa4d5.js +0 -2
  80. package/dist/paperless/p-6bcfa4d5.js.map +0 -1
package/hydrate/index.js CHANGED
@@ -3783,6 +3783,33 @@ function startOfMonth(dirtyDate) {
3783
3783
  return date;
3784
3784
  }
3785
3785
 
3786
+ /**
3787
+ * @name startOfYear
3788
+ * @category Year Helpers
3789
+ * @summary Return the start of a year for the given date.
3790
+ *
3791
+ * @description
3792
+ * Return the start of a year for the given date.
3793
+ * The result will be in the local timezone.
3794
+ *
3795
+ * @param {Date|Number} date - the original date
3796
+ * @returns {Date} the start of a year
3797
+ * @throws {TypeError} 1 argument required
3798
+ *
3799
+ * @example
3800
+ * // The start of a year for 2 September 2014 11:55:00:
3801
+ * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))
3802
+ * //=> Wed Jan 01 2014 00:00:00
3803
+ */
3804
+ function startOfYear(dirtyDate) {
3805
+ requiredArgs(1, arguments);
3806
+ var cleanDate = toDate(dirtyDate);
3807
+ var date = new Date(0);
3808
+ date.setFullYear(cleanDate.getFullYear(), 0, 1);
3809
+ date.setHours(0, 0, 0, 0);
3810
+ return date;
3811
+ }
3812
+
3786
3813
  /**
3787
3814
  * @name subMilliseconds
3788
3815
  * @category Millisecond Helpers
@@ -11653,15 +11680,11 @@ const calendar$2 = cva(['p-calendar bg-white w-[17.5rem] flex flex-col gap-4'],
11653
11680
  },
11654
11681
  },
11655
11682
  });
11656
- const header = cva([
11657
- 'flex items-center justify-between gap-1',
11658
- 'w-full p-2',
11659
- 'bg-off-white-300 rounded-lg',
11660
- ], {
11683
+ const header = cva(['flex items-center gap-1', 'w-full p-2', 'bg-off-white-300 rounded-lg'], {
11661
11684
  variants: {
11662
11685
  type: {
11663
- day: null,
11664
- month: null,
11686
+ day: 'justify-between',
11687
+ month: 'justify-between',
11665
11688
  year: 'justify-center',
11666
11689
  },
11667
11690
  },
@@ -19971,9 +19994,9 @@ class Datepicker {
19971
19994
  this.parseValue(this.value);
19972
19995
  }
19973
19996
  render() {
19974
- return (hAsync(Host, { key: 'e881e5fa8232fc6492bf9a51bb8221267e0e0af4', class: 'p-datepicker' }, hAsync("p-dropdown", { key: 'ca71772e6beb08ecd7c728a86f37f68fdb43f009', strategy: this.strategy, placement: this.placement, disableTriggerClick: true, applyMaxWidth: false, applyFullWidth: false, insideClick: true, show: this._showDropdown }, hAsync("p-field", { key: '8fbf40b4638c4a7dff3b25acaba3ba5ee097b08b', slot: 'trigger', icon: this.hideIconWhenFilled && !!this._value ? null : 'calendar-multi', iconPosition: 'start', size: this.size, prefix: this.prefix, label: this.label, helper: this.helper, required: this.required, error: this.error, disabled: this.disabled, focused: this._showDropdown, value: this._getFormattedDate(), placeholder: this.placeholder, onFocus: () => this._onFocus(), onBlur: () => this._onBlur(), onValueChange: ev => this._onValueChange(ev.detail), onInputRefChange: ev => (this._inputRef = ev.detail) }), this.enableNativePicker && this._isMobileBrowser && (hAsync("input", { key: 'b7bc7ee8e3f52d9d86df4d1b539e2a3126094bf2', slot: 'trigger', type: 'date', class: 'h-0 overflow-hidden' // we use h-0 here so location dependent pickers can correctly place itself
19997
+ return (hAsync(Host, { key: '9f4cbca6b6da0763821be40c0e09642f545c7cff', class: 'p-datepicker' }, hAsync("p-dropdown", { key: '2ea5f19cebda672238c612a345c09f6bfd7f7e00', strategy: this.strategy, placement: this.placement, disableTriggerClick: true, applyMaxWidth: false, applyFullWidth: false, insideClick: true, show: this._showDropdown }, hAsync("p-field", { key: 'da24612f5cc20e307a2b68917ac3376320bc600a', slot: 'trigger', icon: this.hideIconWhenFilled && !!this._value ? null : 'calendar-multi', iconPosition: 'start', size: this.size, prefix: this.prefix, label: this.label, helper: this.helper, required: this.required, error: this.error, disabled: this.disabled, focused: this._showDropdown, value: this._getFormattedDate(), placeholder: this.placeholder, onFocus: () => this._onFocus(), onBlur: () => this._onBlur(), onValueChange: ev => this._onValueChange(ev.detail), onInputRefChange: ev => (this._inputRef = ev.detail) }), this.enableNativePicker && this._isMobileBrowser && (hAsync("input", { key: '07946ad09d2dfa65db206f420c7082b96ac57cf1', slot: 'trigger', type: this.mode === 'day' ? 'date' : 'month', class: 'h-0 overflow-hidden' // we use h-0 here so location dependent pickers can correctly place itself
19975
19998
  ,
19976
- onInput: ev => this._onNativeInput(ev), ref: ref => (this._dateInputRef = ref), value: this._value && format(this._value, 'yyyy-MM-dd'), min: this.minDate && format(new Date(this.minDate), 'yyyy-MM-dd'), max: this.maxDate && format(new Date(this.maxDate), 'yyyy-MM-dd') })), hAsync("div", { key: 'd72b8546a971766cef7aa700b07f5b182c9ced44', slot: 'items' }, hAsync("p-calendar", { key: '2d49eda89f6f88a1f332f7b14748eaa42732475b', variant: 'embedded', value: this._value, onValueChange: ({ detail }) => (this.value = detail), preselectToday: this.preselectToday, disabledDates: this.disabledDates, minDate: this.minDate, maxDate: this.maxDate, disableWeekends: this.disableWeekends, mode: this.mode })))));
19999
+ onInput: ev => this._onNativeInput(ev), ref: ref => (this._dateInputRef = ref), value: this._value && format(this._value, 'yyyy-MM-dd'), min: this.minDate && format(new Date(this.minDate), 'yyyy-MM-dd'), max: this.maxDate && format(new Date(this.maxDate), 'yyyy-MM-dd') })), hAsync("div", { key: '724843eedf1d43d6d5f908c0f8618ed8822696ec', slot: 'items' }, hAsync("p-calendar", { key: '89d114f6e2ac22e24d9b965318aa04c9690a1989', variant: 'embedded', value: this._value, onValueChange: ({ detail }) => (this.value = detail), preselectToday: this.preselectToday, disabledDates: this.disabledDates, minDate: this.minDate, maxDate: this.maxDate, disableWeekends: this.disableWeekends, mode: this.mode })))));
19977
20000
  }
19978
20001
  documentClickHandler({ target }) {
19979
20002
  if (!this._showDropdown || childOf(target, this._el)) {
@@ -20021,7 +20044,7 @@ class Datepicker {
20021
20044
  }, 300);
20022
20045
  }
20023
20046
  _onNativeInput(ev) {
20024
- if (!ev.target.value) {
20047
+ if (!ev.target) {
20025
20048
  return;
20026
20049
  }
20027
20050
  if (this._onInputTimeout) {
@@ -20029,11 +20052,7 @@ class Datepicker {
20029
20052
  this._onInputTimeout = null;
20030
20053
  }
20031
20054
  this._onInputTimeout = setTimeout(() => {
20032
- const parsedValue = new Date(ev.target.value);
20033
- if (!isValid(parsedValue)) {
20034
- return;
20035
- }
20036
- this._setValue(parsedValue, false);
20055
+ this._setValue(ev.target.value === '' ? null : new Date(ev.target.value), false);
20037
20056
  });
20038
20057
  }
20039
20058
  _setValue(value, hideDropdown = true) {
@@ -20053,7 +20072,12 @@ class Datepicker {
20053
20072
  }
20054
20073
  return;
20055
20074
  }
20056
- value = startOfDay(value);
20075
+ value =
20076
+ this.mode === 'day'
20077
+ ? startOfDay(value)
20078
+ : this.mode === 'month'
20079
+ ? startOfMonth(value)
20080
+ : startOfYear(value);
20057
20081
  const isSameValue = isSameDay(value, this._value);
20058
20082
  if (isSameValue) {
20059
20083
  return;
@@ -25308,25 +25332,34 @@ class Stepper {
25308
25332
  constructor(hostRef) {
25309
25333
  registerInstance(this, hostRef);
25310
25334
  this.activeStep = 1;
25335
+ this.enableAutoStatus = true;
25311
25336
  this.direction = 'horizontal';
25312
25337
  this.contentPosition = 'end';
25313
- this._rendering = false;
25314
25338
  }
25315
25339
  get _el() { return getElement(this); }
25316
- _loaded = false;
25317
- // private _steps: Array<HTMLPStepperItemElement>;
25318
- _delay = (amount) => new Promise(resolve => setTimeout(resolve, amount));
25319
- _onSlotChange = async (_e) => this._generateSteps();
25320
- _generateSteps = async (firstLoad = false) => {
25321
- if (!firstLoad && (!this._el || this._rendering || !this._loaded)) {
25340
+ _generateTimeout;
25341
+ _resizeObserver;
25342
+ _generateStepsOnce = () => {
25343
+ if (this._generateTimeout) {
25344
+ clearTimeout(this._generateTimeout);
25345
+ this._generateTimeout = null;
25346
+ }
25347
+ this._generateTimeout = setTimeout(() => this._generateSteps(), 50);
25348
+ };
25349
+ _generateSteps = async () => {
25350
+ if (!this._el) {
25322
25351
  return;
25323
25352
  }
25324
- this._rendering = true;
25325
25353
  let activeStep = this.activeStep - 1 || 0;
25326
25354
  const items = this._el.querySelectorAll('p-stepper-item');
25327
- if (!this.activeStep || activeStep < 0) {
25328
- for (let i = 0; i < items?.length; i++) {
25329
- const item = items.item(i);
25355
+ let directionChanged = false;
25356
+ for (let i = 0; i < items?.length; i++) {
25357
+ const item = items.item(i);
25358
+ if (this.enableAutoStatus) {
25359
+ item.active = i === activeStep;
25360
+ item.finished = i < activeStep;
25361
+ }
25362
+ if (!this.activeStep || activeStep < 0) {
25330
25363
  if (item.active) {
25331
25364
  activeStep = i;
25332
25365
  }
@@ -25334,49 +25367,50 @@ class Stepper {
25334
25367
  activeStep = i + 1;
25335
25368
  }
25336
25369
  }
25337
- }
25338
- for (let i = 0; i < items?.length; i++) {
25339
- let directionChanged = false;
25340
- const item = items.item(i);
25341
- item.active = i === activeStep;
25342
- item.finished = i < activeStep;
25343
- if (item.direction !== this.direction) {
25370
+ if (item.direction !== this.direction && !directionChanged) {
25344
25371
  directionChanged = true;
25345
25372
  }
25346
25373
  item.direction = this.direction;
25347
25374
  item.align =
25348
- i === 0 ? 'start' : i === items?.length - 1 ? 'end' : 'center';
25375
+ this.direction === 'vertical'
25376
+ ? 'start'
25377
+ : i === 0
25378
+ ? 'start'
25379
+ : i === items?.length - 1
25380
+ ? 'end'
25381
+ : 'center';
25349
25382
  item.contentPosition = this.contentPosition;
25383
+ }
25384
+ if (directionChanged) {
25385
+ // super hacky way to ensure all elements that have a direction changed are re-rendered
25386
+ await new Promise(resolve => setTimeout(resolve, 200));
25387
+ }
25388
+ for (let i = 0; i < items?.length; i++) {
25389
+ const item = items.item(i);
25350
25390
  if (i < items.length - 1) {
25351
- const nextItem = item.nextElementSibling;
25391
+ let nextItem = item.nextElementSibling;
25352
25392
  if (nextItem && nextItem.tagName.toLowerCase() === 'p-stepper-item') {
25353
- // super hacky, but we want to wait for the css of the `item.direction` change to be applied before querying for the item.clientHeight
25354
- // otherwise we always get the initial "16"
25355
- if (directionChanged) {
25356
- await this._delay(10);
25357
- }
25358
- const heightDiff = (item.clientHeight > 16
25359
- ? item.clientHeight - 16
25360
- : item.clientHeight) / 2;
25361
25393
  const stepperLine = document.createElement('p-stepper-line');
25362
- stepperLine.direction = this.direction;
25363
- stepperLine.active = i < activeStep;
25364
- if (heightDiff > 0 && this.direction === 'vertical') {
25365
- stepperLine.style.marginTop = `-${heightDiff / 16}rem`;
25366
- stepperLine.style.marginBottom = `-${heightDiff / 16}rem`;
25367
- stepperLine.style.minHeight = `calc(1rem + ${(heightDiff * 2) / 16}rem)`;
25368
- }
25369
25394
  this._el.insertBefore(stepperLine, nextItem);
25395
+ this._setStepperLineData(stepperLine, item, nextItem, i, activeStep);
25370
25396
  const previous = stepperLine.previousElementSibling;
25371
25397
  if (previous && previous.tagName.toLowerCase() === 'p-stepper-line') {
25372
25398
  previous.remove();
25373
25399
  }
25374
25400
  continue;
25375
25401
  }
25402
+ if (nextItem && nextItem.tagName.toLowerCase() === 'p-stepper-line') {
25403
+ const stepperLine = nextItem;
25404
+ nextItem = nextItem.nextElementSibling;
25405
+ if (nextItem && nextItem.tagName.toLowerCase() === 'p-stepper-item') {
25406
+ this._setStepperLineData(stepperLine, item, nextItem, i, activeStep);
25407
+ }
25408
+ }
25376
25409
  }
25377
25410
  if (i > 0) {
25378
25411
  const previousItem = item.previousElementSibling;
25379
- if (previousItem.tagName.toLowerCase() === 'p-stepper-line') {
25412
+ if (previousItem &&
25413
+ previousItem.tagName.toLowerCase() === 'p-stepper-line') {
25380
25414
  previousItem.direction = this.direction;
25381
25415
  previousItem.active = item.active || item.finished;
25382
25416
  }
@@ -25387,17 +25421,32 @@ class Stepper {
25387
25421
  const line = lines.item(j);
25388
25422
  line.remove();
25389
25423
  }
25390
- setTimeout(() => (this._rendering = false), 100);
25424
+ };
25425
+ _setStepperLineData = (stepperLine, item, nextItem, i, activeStep) => {
25426
+ const heightDiff = item.clientHeight / 2;
25427
+ const heightDiffNext = nextItem.clientHeight / 2;
25428
+ stepperLine.direction = this.direction;
25429
+ stepperLine.active = i < activeStep;
25430
+ if (heightDiff > 0 && this.direction === 'vertical') {
25431
+ stepperLine.style.marginTop = `-${heightDiff / 16}rem`;
25432
+ stepperLine.style.marginBottom = `-${heightDiffNext / 16}rem`;
25433
+ stepperLine.style.minHeight = `calc(1rem + ${(heightDiff + heightDiffNext) / 16}rem)`;
25434
+ }
25391
25435
  };
25392
25436
  componentDidLoad() {
25393
- this._loaded = true;
25394
- this._generateSteps(true);
25437
+ this._resizeObserver = new ResizeObserver(() => this._generateStepsOnce());
25438
+ this._resizeObserver.observe(this._el);
25439
+ }
25440
+ disconnectCallback() {
25441
+ if (this._resizeObserver) {
25442
+ this._resizeObserver.disconnect();
25443
+ }
25395
25444
  }
25396
25445
  render() {
25397
- return (hAsync(Host, { key: '51f99206402f99e4376b21ab8d62467c48ebee4d', class: 'p-stepper' }, hAsync("slot", { key: 'e5d42ec1843f8a98034d1fade84a39ec9ecd17f5', onSlotchange: this._onSlotChange })));
25446
+ return (hAsync(Host, { key: '562a3a8c9d341492a63a60028d25dc4dfb184493', class: 'p-stepper' }, hAsync("slot", { key: '573cee9039397f0ff989f37815c96a0dc57ade87', onSlotchange: () => this._generateStepsOnce() })));
25398
25447
  }
25399
25448
  _onActiveStepChange() {
25400
- this._generateSteps();
25449
+ this._generateStepsOnce();
25401
25450
  }
25402
25451
  static get watchers() { return {
25403
25452
  "activeStep": ["_onActiveStepChange"]
@@ -25408,9 +25457,9 @@ class Stepper {
25408
25457
  "$tagName$": "p-stepper",
25409
25458
  "$members$": {
25410
25459
  "activeStep": [2, "active-step"],
25460
+ "enableAutoStatus": [4, "enable-auto-status"],
25411
25461
  "direction": [513],
25412
- "contentPosition": [513, "content-position"],
25413
- "_rendering": [32]
25462
+ "contentPosition": [513, "content-position"]
25414
25463
  },
25415
25464
  "$listeners$": undefined,
25416
25465
  "$lazyBundleId$": "-",
package/hydrate/index.mjs CHANGED
@@ -3779,6 +3779,33 @@ function startOfMonth(dirtyDate) {
3779
3779
  return date;
3780
3780
  }
3781
3781
 
3782
+ /**
3783
+ * @name startOfYear
3784
+ * @category Year Helpers
3785
+ * @summary Return the start of a year for the given date.
3786
+ *
3787
+ * @description
3788
+ * Return the start of a year for the given date.
3789
+ * The result will be in the local timezone.
3790
+ *
3791
+ * @param {Date|Number} date - the original date
3792
+ * @returns {Date} the start of a year
3793
+ * @throws {TypeError} 1 argument required
3794
+ *
3795
+ * @example
3796
+ * // The start of a year for 2 September 2014 11:55:00:
3797
+ * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))
3798
+ * //=> Wed Jan 01 2014 00:00:00
3799
+ */
3800
+ function startOfYear(dirtyDate) {
3801
+ requiredArgs(1, arguments);
3802
+ var cleanDate = toDate(dirtyDate);
3803
+ var date = new Date(0);
3804
+ date.setFullYear(cleanDate.getFullYear(), 0, 1);
3805
+ date.setHours(0, 0, 0, 0);
3806
+ return date;
3807
+ }
3808
+
3782
3809
  /**
3783
3810
  * @name subMilliseconds
3784
3811
  * @category Millisecond Helpers
@@ -11649,15 +11676,11 @@ const calendar$2 = cva(['p-calendar bg-white w-[17.5rem] flex flex-col gap-4'],
11649
11676
  },
11650
11677
  },
11651
11678
  });
11652
- const header = cva([
11653
- 'flex items-center justify-between gap-1',
11654
- 'w-full p-2',
11655
- 'bg-off-white-300 rounded-lg',
11656
- ], {
11679
+ const header = cva(['flex items-center gap-1', 'w-full p-2', 'bg-off-white-300 rounded-lg'], {
11657
11680
  variants: {
11658
11681
  type: {
11659
- day: null,
11660
- month: null,
11682
+ day: 'justify-between',
11683
+ month: 'justify-between',
11661
11684
  year: 'justify-center',
11662
11685
  },
11663
11686
  },
@@ -19967,9 +19990,9 @@ class Datepicker {
19967
19990
  this.parseValue(this.value);
19968
19991
  }
19969
19992
  render() {
19970
- return (hAsync(Host, { key: 'e881e5fa8232fc6492bf9a51bb8221267e0e0af4', class: 'p-datepicker' }, hAsync("p-dropdown", { key: 'ca71772e6beb08ecd7c728a86f37f68fdb43f009', strategy: this.strategy, placement: this.placement, disableTriggerClick: true, applyMaxWidth: false, applyFullWidth: false, insideClick: true, show: this._showDropdown }, hAsync("p-field", { key: '8fbf40b4638c4a7dff3b25acaba3ba5ee097b08b', slot: 'trigger', icon: this.hideIconWhenFilled && !!this._value ? null : 'calendar-multi', iconPosition: 'start', size: this.size, prefix: this.prefix, label: this.label, helper: this.helper, required: this.required, error: this.error, disabled: this.disabled, focused: this._showDropdown, value: this._getFormattedDate(), placeholder: this.placeholder, onFocus: () => this._onFocus(), onBlur: () => this._onBlur(), onValueChange: ev => this._onValueChange(ev.detail), onInputRefChange: ev => (this._inputRef = ev.detail) }), this.enableNativePicker && this._isMobileBrowser && (hAsync("input", { key: 'b7bc7ee8e3f52d9d86df4d1b539e2a3126094bf2', slot: 'trigger', type: 'date', class: 'h-0 overflow-hidden' // we use h-0 here so location dependent pickers can correctly place itself
19993
+ return (hAsync(Host, { key: '9f4cbca6b6da0763821be40c0e09642f545c7cff', class: 'p-datepicker' }, hAsync("p-dropdown", { key: '2ea5f19cebda672238c612a345c09f6bfd7f7e00', strategy: this.strategy, placement: this.placement, disableTriggerClick: true, applyMaxWidth: false, applyFullWidth: false, insideClick: true, show: this._showDropdown }, hAsync("p-field", { key: 'da24612f5cc20e307a2b68917ac3376320bc600a', slot: 'trigger', icon: this.hideIconWhenFilled && !!this._value ? null : 'calendar-multi', iconPosition: 'start', size: this.size, prefix: this.prefix, label: this.label, helper: this.helper, required: this.required, error: this.error, disabled: this.disabled, focused: this._showDropdown, value: this._getFormattedDate(), placeholder: this.placeholder, onFocus: () => this._onFocus(), onBlur: () => this._onBlur(), onValueChange: ev => this._onValueChange(ev.detail), onInputRefChange: ev => (this._inputRef = ev.detail) }), this.enableNativePicker && this._isMobileBrowser && (hAsync("input", { key: '07946ad09d2dfa65db206f420c7082b96ac57cf1', slot: 'trigger', type: this.mode === 'day' ? 'date' : 'month', class: 'h-0 overflow-hidden' // we use h-0 here so location dependent pickers can correctly place itself
19971
19994
  ,
19972
- onInput: ev => this._onNativeInput(ev), ref: ref => (this._dateInputRef = ref), value: this._value && format(this._value, 'yyyy-MM-dd'), min: this.minDate && format(new Date(this.minDate), 'yyyy-MM-dd'), max: this.maxDate && format(new Date(this.maxDate), 'yyyy-MM-dd') })), hAsync("div", { key: 'd72b8546a971766cef7aa700b07f5b182c9ced44', slot: 'items' }, hAsync("p-calendar", { key: '2d49eda89f6f88a1f332f7b14748eaa42732475b', variant: 'embedded', value: this._value, onValueChange: ({ detail }) => (this.value = detail), preselectToday: this.preselectToday, disabledDates: this.disabledDates, minDate: this.minDate, maxDate: this.maxDate, disableWeekends: this.disableWeekends, mode: this.mode })))));
19995
+ onInput: ev => this._onNativeInput(ev), ref: ref => (this._dateInputRef = ref), value: this._value && format(this._value, 'yyyy-MM-dd'), min: this.minDate && format(new Date(this.minDate), 'yyyy-MM-dd'), max: this.maxDate && format(new Date(this.maxDate), 'yyyy-MM-dd') })), hAsync("div", { key: '724843eedf1d43d6d5f908c0f8618ed8822696ec', slot: 'items' }, hAsync("p-calendar", { key: '89d114f6e2ac22e24d9b965318aa04c9690a1989', variant: 'embedded', value: this._value, onValueChange: ({ detail }) => (this.value = detail), preselectToday: this.preselectToday, disabledDates: this.disabledDates, minDate: this.minDate, maxDate: this.maxDate, disableWeekends: this.disableWeekends, mode: this.mode })))));
19973
19996
  }
19974
19997
  documentClickHandler({ target }) {
19975
19998
  if (!this._showDropdown || childOf(target, this._el)) {
@@ -20017,7 +20040,7 @@ class Datepicker {
20017
20040
  }, 300);
20018
20041
  }
20019
20042
  _onNativeInput(ev) {
20020
- if (!ev.target.value) {
20043
+ if (!ev.target) {
20021
20044
  return;
20022
20045
  }
20023
20046
  if (this._onInputTimeout) {
@@ -20025,11 +20048,7 @@ class Datepicker {
20025
20048
  this._onInputTimeout = null;
20026
20049
  }
20027
20050
  this._onInputTimeout = setTimeout(() => {
20028
- const parsedValue = new Date(ev.target.value);
20029
- if (!isValid(parsedValue)) {
20030
- return;
20031
- }
20032
- this._setValue(parsedValue, false);
20051
+ this._setValue(ev.target.value === '' ? null : new Date(ev.target.value), false);
20033
20052
  });
20034
20053
  }
20035
20054
  _setValue(value, hideDropdown = true) {
@@ -20049,7 +20068,12 @@ class Datepicker {
20049
20068
  }
20050
20069
  return;
20051
20070
  }
20052
- value = startOfDay(value);
20071
+ value =
20072
+ this.mode === 'day'
20073
+ ? startOfDay(value)
20074
+ : this.mode === 'month'
20075
+ ? startOfMonth(value)
20076
+ : startOfYear(value);
20053
20077
  const isSameValue = isSameDay(value, this._value);
20054
20078
  if (isSameValue) {
20055
20079
  return;
@@ -25304,25 +25328,34 @@ class Stepper {
25304
25328
  constructor(hostRef) {
25305
25329
  registerInstance(this, hostRef);
25306
25330
  this.activeStep = 1;
25331
+ this.enableAutoStatus = true;
25307
25332
  this.direction = 'horizontal';
25308
25333
  this.contentPosition = 'end';
25309
- this._rendering = false;
25310
25334
  }
25311
25335
  get _el() { return getElement(this); }
25312
- _loaded = false;
25313
- // private _steps: Array<HTMLPStepperItemElement>;
25314
- _delay = (amount) => new Promise(resolve => setTimeout(resolve, amount));
25315
- _onSlotChange = async (_e) => this._generateSteps();
25316
- _generateSteps = async (firstLoad = false) => {
25317
- if (!firstLoad && (!this._el || this._rendering || !this._loaded)) {
25336
+ _generateTimeout;
25337
+ _resizeObserver;
25338
+ _generateStepsOnce = () => {
25339
+ if (this._generateTimeout) {
25340
+ clearTimeout(this._generateTimeout);
25341
+ this._generateTimeout = null;
25342
+ }
25343
+ this._generateTimeout = setTimeout(() => this._generateSteps(), 50);
25344
+ };
25345
+ _generateSteps = async () => {
25346
+ if (!this._el) {
25318
25347
  return;
25319
25348
  }
25320
- this._rendering = true;
25321
25349
  let activeStep = this.activeStep - 1 || 0;
25322
25350
  const items = this._el.querySelectorAll('p-stepper-item');
25323
- if (!this.activeStep || activeStep < 0) {
25324
- for (let i = 0; i < items?.length; i++) {
25325
- const item = items.item(i);
25351
+ let directionChanged = false;
25352
+ for (let i = 0; i < items?.length; i++) {
25353
+ const item = items.item(i);
25354
+ if (this.enableAutoStatus) {
25355
+ item.active = i === activeStep;
25356
+ item.finished = i < activeStep;
25357
+ }
25358
+ if (!this.activeStep || activeStep < 0) {
25326
25359
  if (item.active) {
25327
25360
  activeStep = i;
25328
25361
  }
@@ -25330,49 +25363,50 @@ class Stepper {
25330
25363
  activeStep = i + 1;
25331
25364
  }
25332
25365
  }
25333
- }
25334
- for (let i = 0; i < items?.length; i++) {
25335
- let directionChanged = false;
25336
- const item = items.item(i);
25337
- item.active = i === activeStep;
25338
- item.finished = i < activeStep;
25339
- if (item.direction !== this.direction) {
25366
+ if (item.direction !== this.direction && !directionChanged) {
25340
25367
  directionChanged = true;
25341
25368
  }
25342
25369
  item.direction = this.direction;
25343
25370
  item.align =
25344
- i === 0 ? 'start' : i === items?.length - 1 ? 'end' : 'center';
25371
+ this.direction === 'vertical'
25372
+ ? 'start'
25373
+ : i === 0
25374
+ ? 'start'
25375
+ : i === items?.length - 1
25376
+ ? 'end'
25377
+ : 'center';
25345
25378
  item.contentPosition = this.contentPosition;
25379
+ }
25380
+ if (directionChanged) {
25381
+ // super hacky way to ensure all elements that have a direction changed are re-rendered
25382
+ await new Promise(resolve => setTimeout(resolve, 200));
25383
+ }
25384
+ for (let i = 0; i < items?.length; i++) {
25385
+ const item = items.item(i);
25346
25386
  if (i < items.length - 1) {
25347
- const nextItem = item.nextElementSibling;
25387
+ let nextItem = item.nextElementSibling;
25348
25388
  if (nextItem && nextItem.tagName.toLowerCase() === 'p-stepper-item') {
25349
- // super hacky, but we want to wait for the css of the `item.direction` change to be applied before querying for the item.clientHeight
25350
- // otherwise we always get the initial "16"
25351
- if (directionChanged) {
25352
- await this._delay(10);
25353
- }
25354
- const heightDiff = (item.clientHeight > 16
25355
- ? item.clientHeight - 16
25356
- : item.clientHeight) / 2;
25357
25389
  const stepperLine = document.createElement('p-stepper-line');
25358
- stepperLine.direction = this.direction;
25359
- stepperLine.active = i < activeStep;
25360
- if (heightDiff > 0 && this.direction === 'vertical') {
25361
- stepperLine.style.marginTop = `-${heightDiff / 16}rem`;
25362
- stepperLine.style.marginBottom = `-${heightDiff / 16}rem`;
25363
- stepperLine.style.minHeight = `calc(1rem + ${(heightDiff * 2) / 16}rem)`;
25364
- }
25365
25390
  this._el.insertBefore(stepperLine, nextItem);
25391
+ this._setStepperLineData(stepperLine, item, nextItem, i, activeStep);
25366
25392
  const previous = stepperLine.previousElementSibling;
25367
25393
  if (previous && previous.tagName.toLowerCase() === 'p-stepper-line') {
25368
25394
  previous.remove();
25369
25395
  }
25370
25396
  continue;
25371
25397
  }
25398
+ if (nextItem && nextItem.tagName.toLowerCase() === 'p-stepper-line') {
25399
+ const stepperLine = nextItem;
25400
+ nextItem = nextItem.nextElementSibling;
25401
+ if (nextItem && nextItem.tagName.toLowerCase() === 'p-stepper-item') {
25402
+ this._setStepperLineData(stepperLine, item, nextItem, i, activeStep);
25403
+ }
25404
+ }
25372
25405
  }
25373
25406
  if (i > 0) {
25374
25407
  const previousItem = item.previousElementSibling;
25375
- if (previousItem.tagName.toLowerCase() === 'p-stepper-line') {
25408
+ if (previousItem &&
25409
+ previousItem.tagName.toLowerCase() === 'p-stepper-line') {
25376
25410
  previousItem.direction = this.direction;
25377
25411
  previousItem.active = item.active || item.finished;
25378
25412
  }
@@ -25383,17 +25417,32 @@ class Stepper {
25383
25417
  const line = lines.item(j);
25384
25418
  line.remove();
25385
25419
  }
25386
- setTimeout(() => (this._rendering = false), 100);
25420
+ };
25421
+ _setStepperLineData = (stepperLine, item, nextItem, i, activeStep) => {
25422
+ const heightDiff = item.clientHeight / 2;
25423
+ const heightDiffNext = nextItem.clientHeight / 2;
25424
+ stepperLine.direction = this.direction;
25425
+ stepperLine.active = i < activeStep;
25426
+ if (heightDiff > 0 && this.direction === 'vertical') {
25427
+ stepperLine.style.marginTop = `-${heightDiff / 16}rem`;
25428
+ stepperLine.style.marginBottom = `-${heightDiffNext / 16}rem`;
25429
+ stepperLine.style.minHeight = `calc(1rem + ${(heightDiff + heightDiffNext) / 16}rem)`;
25430
+ }
25387
25431
  };
25388
25432
  componentDidLoad() {
25389
- this._loaded = true;
25390
- this._generateSteps(true);
25433
+ this._resizeObserver = new ResizeObserver(() => this._generateStepsOnce());
25434
+ this._resizeObserver.observe(this._el);
25435
+ }
25436
+ disconnectCallback() {
25437
+ if (this._resizeObserver) {
25438
+ this._resizeObserver.disconnect();
25439
+ }
25391
25440
  }
25392
25441
  render() {
25393
- return (hAsync(Host, { key: '51f99206402f99e4376b21ab8d62467c48ebee4d', class: 'p-stepper' }, hAsync("slot", { key: 'e5d42ec1843f8a98034d1fade84a39ec9ecd17f5', onSlotchange: this._onSlotChange })));
25442
+ return (hAsync(Host, { key: '562a3a8c9d341492a63a60028d25dc4dfb184493', class: 'p-stepper' }, hAsync("slot", { key: '573cee9039397f0ff989f37815c96a0dc57ade87', onSlotchange: () => this._generateStepsOnce() })));
25394
25443
  }
25395
25444
  _onActiveStepChange() {
25396
- this._generateSteps();
25445
+ this._generateStepsOnce();
25397
25446
  }
25398
25447
  static get watchers() { return {
25399
25448
  "activeStep": ["_onActiveStepChange"]
@@ -25404,9 +25453,9 @@ class Stepper {
25404
25453
  "$tagName$": "p-stepper",
25405
25454
  "$members$": {
25406
25455
  "activeStep": [2, "active-step"],
25456
+ "enableAutoStatus": [4, "enable-auto-status"],
25407
25457
  "direction": [513],
25408
- "contentPosition": [513, "content-position"],
25409
- "_rendering": [32]
25458
+ "contentPosition": [513, "content-position"]
25410
25459
  },
25411
25460
  "$listeners$": undefined,
25412
25461
  "$lazyBundleId$": "-",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paperless/core",
3
- "version": "2.0.1-beta.27",
3
+ "version": "2.0.1-beta.29",
4
4
  "description": "Stencil Component Starter",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.js",