inviton-powerduck 0.0.310 → 0.0.311

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.
@@ -1,43 +1,43 @@
1
- import TemporalUtils from './temporal-utils';
2
-
3
- export default class ObjectPostProcessor {
4
- /**
5
- * Post-process JS object to auto-load some common framework types
6
- *
7
- * @param jsObj
8
- * @param jsonAdapter
9
- */
10
- static postProcessJsObject<T>(jsObj: T, jsonAdapter?: any): T {
11
- const recIterate = function (obj) {
12
- for (const key in obj) {
13
- const keyVal = obj[key];
14
- if (jsonAdapter != null) {
15
- jsonAdapter(
16
- keyVal,
17
- key,
18
- obj,
19
- );
20
- }
21
-
22
- if (Array.isArray(keyVal)) {
23
- keyVal.forEach((arrItem) => {
24
- recIterate(arrItem);
25
- });
26
- } else if (keyVal != null && typeof keyVal === 'object') {
27
- recIterate(keyVal);
28
- } else {
29
- if (keyVal != null && keyVal.indexOf && TemporalUtils.isSerializedDate(keyVal)) {
30
- try {
31
- obj[key] = TemporalUtils.fromString(keyVal);
32
- } catch (e) {
33
- obj[key] = keyVal;
34
- }
35
- }
36
- }
37
- }
38
- };
39
-
40
- recIterate(jsObj);
41
- return jsObj;
42
- }
43
- }
1
+ import TemporalUtils from './temporal-utils';
2
+
3
+ export default class ObjectPostProcessor {
4
+ /**
5
+ * Post-process JS object to auto-load some common framework types
6
+ *
7
+ * @param jsObj
8
+ * @param jsonAdapter
9
+ */
10
+ static postProcessJsObject<T>(jsObj: T, jsonAdapter?: any): T {
11
+ const recIterate = function (obj) {
12
+ for (const key in obj) {
13
+ const keyVal = obj[key];
14
+ if (jsonAdapter != null) {
15
+ jsonAdapter(
16
+ keyVal,
17
+ key,
18
+ obj,
19
+ );
20
+ }
21
+
22
+ if (Array.isArray(keyVal)) {
23
+ keyVal.forEach((arrItem) => {
24
+ recIterate(arrItem);
25
+ });
26
+ } else if (keyVal != null && typeof keyVal === 'object') {
27
+ recIterate(keyVal);
28
+ } else {
29
+ if (keyVal != null && keyVal.indexOf && TemporalUtils.isSerializedDate(keyVal)) {
30
+ try {
31
+ obj[key] = TemporalUtils.fromString(keyVal);
32
+ } catch (e) {
33
+ obj[key] = keyVal;
34
+ }
35
+ }
36
+ }
37
+ }
38
+ };
39
+
40
+ recIterate(jsObj);
41
+ return jsObj;
42
+ }
43
+ }
@@ -732,7 +732,7 @@
732
732
 
733
733
  .drpn-mvs-table .day {
734
734
  height: 38px;
735
- width: 100%;
735
+ width: 38px;
736
736
  max-width: 38px;
737
737
  margin: 0 auto;
738
738
  font-size: 13px;
@@ -740,6 +740,11 @@
740
740
  color: #393562;
741
741
  cursor: pointer;
742
742
  line-height: 38px;
743
+ display: inline-flex;
744
+ align-items: center;
745
+ justify-content: center;
746
+ border-radius: 50%;
747
+ box-sizing: border-box;
743
748
  }
744
749
 
745
750
  .drpn-mvs-table .day.lastMonth,
@@ -769,3 +774,41 @@
769
774
  padding: 10px 14px;
770
775
  background: #fff;
771
776
  }
777
+
778
+ /* ── Currency info footer row ────────────────────────────────────────── */
779
+
780
+ .drpn-footer-info {
781
+ display: flex;
782
+ align-items: center;
783
+ gap: 8px;
784
+ padding-top: 10px;
785
+ margin-top: 10px;
786
+ border-top: 1px solid #eff1f8;
787
+ font-size: 14px;
788
+ font-weight: 400;
789
+ line-height: 20px;
790
+ color: #4b5565;
791
+ }
792
+
793
+ .drpn-footer-info-icon {
794
+ display: inline-flex;
795
+ align-items: center;
796
+ justify-content: center;
797
+ width: 16px;
798
+ height: 16px;
799
+ flex-shrink: 0;
800
+ font-size: 16px;
801
+ color: #4b5565;
802
+ }
803
+
804
+ .drpn-footer-info-text {
805
+ display: inline-flex;
806
+ align-items: center;
807
+ gap: 4px;
808
+ flex-wrap: nowrap;
809
+ white-space: nowrap;
810
+ }
811
+
812
+ .drpn-footer-info-text strong {
813
+ font-weight: 700;
814
+ }
@@ -99,6 +99,12 @@ interface DaterangePickerArgs extends FormItemWrapperArgs {
99
99
  * the next field in a multi-step form.
100
100
  */
101
101
  confirmedByEnter?: () => void;
102
+ /**
103
+ * Optional footer info row rendered below the calendar months (and time row
104
+ * if enabled). Displayed as `(i) <text>` with a top-border separator.
105
+ * Intended for currency disclaimers, e.g. "Ceny zobrazené v mene EUR".
106
+ */
107
+ footerInfo?: VNode | string;
102
108
  }
103
109
 
104
110
  // ── Translations ───────────────────────────────────────────────────────────
@@ -416,6 +422,7 @@ class DaterangePickerComponent extends TsxComponent<DaterangePickerArgs> impleme
416
422
  @Prop() confirmText?: string;
417
423
  @Prop() cancelText?: string;
418
424
  @Prop() confirmedByEnter?: () => void;
425
+ @Prop() footerInfo?: VNode | string;
419
426
 
420
427
  // State
421
428
  _startDate: Temporal.PlainDateTime = null;
@@ -2027,6 +2034,19 @@ class DaterangePickerComponent extends TsxComponent<DaterangePickerArgs> impleme
2027
2034
  return null;
2028
2035
  }
2029
2036
 
2037
+ private renderFooterInfo(): VNode {
2038
+ if (!this.footerInfo) {
2039
+ return null;
2040
+ }
2041
+
2042
+ return (
2043
+ <div class="drpn-footer-info">
2044
+ <i class="gp gp-info-circle drpn-footer-info-icon" />
2045
+ <span class="drpn-footer-info-text">{this.footerInfo}</span>
2046
+ </div>
2047
+ );
2048
+ }
2049
+
2030
2050
  private confirmClicked() {
2031
2051
  this.raiseChanged();
2032
2052
  this.close();
@@ -2217,6 +2237,7 @@ class DaterangePickerComponent extends TsxComponent<DaterangePickerArgs> impleme
2217
2237
  )}
2218
2238
  {this.renderTooltip(renderCtx)}
2219
2239
  {this.renderFooter(false)}
2240
+ {this.renderFooterInfo()}
2220
2241
  </div>
2221
2242
  );
2222
2243
  }
@@ -2271,6 +2292,7 @@ class DaterangePickerComponent extends TsxComponent<DaterangePickerArgs> impleme
2271
2292
  {months}
2272
2293
  </div>
2273
2294
  {this.renderFooter(true)}
2295
+ {this.renderFooterInfo()}
2274
2296
  </div>
2275
2297
  );
2276
2298
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "inviton-powerduck",
3
3
  "type": "module",
4
- "version": "0.0.310",
4
+ "version": "0.0.311",
5
5
  "files": [
6
6
  "app/",
7
7
  "common/",