@dso-toolkit/core 60.0.0 → 61.2.0

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 (159) hide show
  1. package/dist/cjs/dso-accordion-section.cjs.entry.js +39 -27
  2. package/dist/cjs/dso-accordion-section.cjs.entry.js.map +1 -1
  3. package/dist/cjs/dso-date-picker.cjs.entry.js +28 -85
  4. package/dist/cjs/dso-date-picker.cjs.entry.js.map +1 -1
  5. package/dist/cjs/dso-expandable.cjs.entry.js +4 -0
  6. package/dist/cjs/dso-expandable.cjs.entry.js.map +1 -1
  7. package/dist/cjs/dso-header.cjs.entry.js +2 -7
  8. package/dist/cjs/dso-header.cjs.entry.js.map +1 -1
  9. package/dist/cjs/dso-info_2.cjs.entry.js +9 -2
  10. package/dist/cjs/dso-info_2.cjs.entry.js.map +1 -1
  11. package/dist/cjs/dso-list-button.cjs.entry.js +1 -1
  12. package/dist/cjs/dso-list-button.cjs.entry.js.map +1 -1
  13. package/dist/cjs/dso-logo.cjs.entry.js +23 -0
  14. package/dist/cjs/dso-logo.cjs.entry.js.map +1 -0
  15. package/dist/cjs/dso-map-overlays.cjs.entry.js +1 -1
  16. package/dist/cjs/dso-map-overlays.cjs.entry.js.map +1 -1
  17. package/dist/cjs/dso-progress-indicator.cjs.entry.js +1 -1
  18. package/dist/cjs/dso-progress-indicator.cjs.entry.js.map +1 -1
  19. package/dist/cjs/dso-toolkit.cjs.js +1 -1
  20. package/dist/cjs/dso-viewer-grid.cjs.entry.js.map +1 -1
  21. package/dist/cjs/loader.cjs.js +1 -1
  22. package/dist/collection/collection-manifest.json +1 -0
  23. package/dist/collection/components/accordion/components/accordion-section.css +1 -1
  24. package/dist/collection/components/accordion/components/accordion-section.interfaces.js.map +1 -1
  25. package/dist/collection/components/accordion/components/accordion-section.js +129 -9
  26. package/dist/collection/components/accordion/components/accordion-section.js.map +1 -1
  27. package/dist/collection/components/date-picker/date-picker.interfaces.js.map +1 -1
  28. package/dist/collection/components/date-picker/date-picker.js +17 -28
  29. package/dist/collection/components/date-picker/date-picker.js.map +1 -1
  30. package/dist/collection/components/date-picker/date-utils.js +13 -59
  31. package/dist/collection/components/date-picker/date-utils.js.map +1 -1
  32. package/dist/collection/components/expandable/expandable.js +25 -1
  33. package/dist/collection/components/expandable/expandable.js.map +1 -1
  34. package/dist/collection/components/header/header.css +4 -8
  35. package/dist/collection/components/header/header.js +1 -7
  36. package/dist/collection/components/header/header.js.map +1 -1
  37. package/dist/collection/components/list-button/list-button.css +1 -0
  38. package/dist/collection/components/logo/logo.css +109 -0
  39. package/dist/collection/components/logo/logo.js +61 -0
  40. package/dist/collection/components/logo/logo.js.map +1 -0
  41. package/dist/collection/components/map-overlays/map-overlays.js +1 -1
  42. package/dist/collection/components/map-overlays/map-overlays.js.map +1 -1
  43. package/dist/collection/components/progress-indicator/progress-indicator.js +1 -1
  44. package/dist/collection/components/progress-indicator/progress-indicator.js.map +1 -1
  45. package/dist/collection/components/selectable/selectable.css +1 -3
  46. package/dist/collection/components/selectable/selectable.interfaces.js.map +1 -1
  47. package/dist/collection/components/selectable/selectable.js +8 -1
  48. package/dist/collection/components/selectable/selectable.js.map +1 -1
  49. package/dist/collection/components/viewer-grid/viewer-grid.js +3 -3
  50. package/dist/collection/components/viewer-grid/viewer-grid.js.map +1 -1
  51. package/dist/components/attachments-counter.js +41 -0
  52. package/dist/components/attachments-counter.js.map +1 -0
  53. package/dist/components/dso-accordion-section.js +50 -31
  54. package/dist/components/dso-accordion-section.js.map +1 -1
  55. package/dist/components/dso-attachments-counter.js +1 -37
  56. package/dist/components/dso-attachments-counter.js.map +1 -1
  57. package/dist/components/dso-date-picker.js +29 -86
  58. package/dist/components/dso-date-picker.js.map +1 -1
  59. package/dist/components/dso-header.js +2 -8
  60. package/dist/components/dso-header.js.map +1 -1
  61. package/dist/components/dso-list-button.js +1 -1
  62. package/dist/components/dso-list-button.js.map +1 -1
  63. package/dist/components/dso-logo.d.ts +11 -0
  64. package/dist/components/dso-logo.js +40 -0
  65. package/dist/components/dso-logo.js.map +1 -0
  66. package/dist/components/dso-map-overlays.js +1 -1
  67. package/dist/components/dso-map-overlays.js.map +1 -1
  68. package/dist/components/dso-viewer-grid.js +3 -3
  69. package/dist/components/dso-viewer-grid.js.map +1 -1
  70. package/dist/components/expandable.js +4 -0
  71. package/dist/components/expandable.js.map +1 -1
  72. package/dist/components/index.d.ts +2 -0
  73. package/dist/components/index.js +1 -0
  74. package/dist/components/index.js.map +1 -1
  75. package/dist/components/progress-indicator.js +1 -1
  76. package/dist/components/progress-indicator.js.map +1 -1
  77. package/dist/components/selectable.js +9 -2
  78. package/dist/components/selectable.js.map +1 -1
  79. package/dist/dso-toolkit/dso-toolkit.esm.js +1 -1
  80. package/dist/dso-toolkit/dso-toolkit.esm.js.map +1 -1
  81. package/dist/dso-toolkit/p-000f7731.entry.js +2 -0
  82. package/dist/dso-toolkit/p-000f7731.entry.js.map +1 -0
  83. package/dist/dso-toolkit/p-04662263.entry.js +2 -0
  84. package/dist/dso-toolkit/p-04662263.entry.js.map +1 -0
  85. package/dist/dso-toolkit/{p-7d90b3b2.entry.js → p-4239e3d6.entry.js} +2 -2
  86. package/dist/dso-toolkit/p-4239e3d6.entry.js.map +1 -0
  87. package/dist/dso-toolkit/p-6dfe9062.entry.js +2 -0
  88. package/dist/dso-toolkit/p-6dfe9062.entry.js.map +1 -0
  89. package/dist/dso-toolkit/p-7edafced.entry.js +2 -0
  90. package/dist/dso-toolkit/p-7edafced.entry.js.map +1 -0
  91. package/dist/dso-toolkit/p-a91673a9.entry.js +2 -0
  92. package/dist/dso-toolkit/p-a91673a9.entry.js.map +1 -0
  93. package/dist/dso-toolkit/{p-a2a82d7c.entry.js → p-ca222ec3.entry.js} +2 -2
  94. package/dist/dso-toolkit/{p-a2a82d7c.entry.js.map → p-ca222ec3.entry.js.map} +1 -1
  95. package/dist/dso-toolkit/p-caf4d880.entry.js +2 -0
  96. package/dist/dso-toolkit/{p-d37a6c95.entry.js.map → p-caf4d880.entry.js.map} +1 -1
  97. package/dist/dso-toolkit/p-dbea5bbd.entry.js.map +1 -1
  98. package/dist/dso-toolkit/p-e729bdf2.entry.js +2 -0
  99. package/dist/dso-toolkit/p-e729bdf2.entry.js.map +1 -0
  100. package/dist/esm/dso-accordion-section.entry.js +40 -28
  101. package/dist/esm/dso-accordion-section.entry.js.map +1 -1
  102. package/dist/esm/dso-date-picker.entry.js +28 -85
  103. package/dist/esm/dso-date-picker.entry.js.map +1 -1
  104. package/dist/esm/dso-expandable.entry.js +4 -0
  105. package/dist/esm/dso-expandable.entry.js.map +1 -1
  106. package/dist/esm/dso-header.entry.js +2 -7
  107. package/dist/esm/dso-header.entry.js.map +1 -1
  108. package/dist/esm/dso-info_2.entry.js +9 -2
  109. package/dist/esm/dso-info_2.entry.js.map +1 -1
  110. package/dist/esm/dso-list-button.entry.js +1 -1
  111. package/dist/esm/dso-list-button.entry.js.map +1 -1
  112. package/dist/esm/dso-logo.entry.js +19 -0
  113. package/dist/esm/dso-logo.entry.js.map +1 -0
  114. package/dist/esm/dso-map-overlays.entry.js +1 -1
  115. package/dist/esm/dso-map-overlays.entry.js.map +1 -1
  116. package/dist/esm/dso-progress-indicator.entry.js +1 -1
  117. package/dist/esm/dso-progress-indicator.entry.js.map +1 -1
  118. package/dist/esm/dso-toolkit.js +1 -1
  119. package/dist/esm/dso-viewer-grid.entry.js.map +1 -1
  120. package/dist/esm/loader.js +1 -1
  121. package/dist/types/components/accordion/components/accordion-section.d.ts +15 -1
  122. package/dist/types/components/accordion/components/accordion-section.interfaces.d.ts +11 -1
  123. package/dist/types/components/date-picker/date-picker.d.ts +0 -1
  124. package/dist/types/components/date-picker/date-picker.interfaces.d.ts +30 -3
  125. package/dist/types/components/date-picker/date-utils.d.ts +3 -13
  126. package/dist/types/components/expandable/expandable.d.ts +7 -1
  127. package/dist/types/components/header/header.d.ts +0 -2
  128. package/dist/types/components/logo/logo.d.ts +15 -0
  129. package/dist/types/components/selectable/selectable.d.ts +1 -0
  130. package/dist/types/components/selectable/selectable.interfaces.d.ts +3 -1
  131. package/dist/types/components.d.ts +54 -5
  132. package/package.json +2 -2
  133. package/dist/collection/components/accordion/components/handles/element.handle.js +0 -8
  134. package/dist/collection/components/accordion/components/handles/element.handle.js.map +0 -1
  135. package/dist/collection/components/accordion/components/handles/heading.handle.js +0 -15
  136. package/dist/collection/components/accordion/components/handles/heading.handle.js.map +0 -1
  137. package/dist/collection/components/accordion/components/handles/icon.handle.js +0 -14
  138. package/dist/collection/components/accordion/components/handles/icon.handle.js.map +0 -1
  139. package/dist/collection/components/accordion/components/handles/index.js +0 -5
  140. package/dist/collection/components/accordion/components/handles/index.js.map +0 -1
  141. package/dist/collection/components/accordion/components/handles/state-icon.handle.js +0 -19
  142. package/dist/collection/components/accordion/components/handles/state-icon.handle.js.map +0 -1
  143. package/dist/dso-toolkit/p-51cfeed4.entry.js +0 -2
  144. package/dist/dso-toolkit/p-51cfeed4.entry.js.map +0 -1
  145. package/dist/dso-toolkit/p-7d90b3b2.entry.js.map +0 -1
  146. package/dist/dso-toolkit/p-8b24f933.entry.js +0 -2
  147. package/dist/dso-toolkit/p-8b24f933.entry.js.map +0 -1
  148. package/dist/dso-toolkit/p-a3dc08f4.entry.js +0 -2
  149. package/dist/dso-toolkit/p-a3dc08f4.entry.js.map +0 -1
  150. package/dist/dso-toolkit/p-aadd6311.entry.js +0 -2
  151. package/dist/dso-toolkit/p-aadd6311.entry.js.map +0 -1
  152. package/dist/dso-toolkit/p-d37a6c95.entry.js +0 -2
  153. package/dist/dso-toolkit/p-f55b3647.entry.js +0 -2
  154. package/dist/dso-toolkit/p-f55b3647.entry.js.map +0 -1
  155. package/dist/types/components/accordion/components/handles/element.handle.d.ts +0 -6
  156. package/dist/types/components/accordion/components/handles/heading.handle.d.ts +0 -6
  157. package/dist/types/components/accordion/components/handles/icon.handle.d.ts +0 -7
  158. package/dist/types/components/accordion/components/handles/index.d.ts +0 -4
  159. package/dist/types/components/accordion/components/handles/state-icon.handle.d.ts +0 -5
@@ -1,7 +1,7 @@
1
1
  import { r as registerInstance, c as createEvent, h, a as getElement } from './index-f82ed648.js';
2
2
 
3
3
  /**
4
- * @param value date string in Dutch format DD-MM-YYYY
4
+ * dd-mm-yyyy to yyyy-mm-dd
5
5
  */
6
6
  function parseToValueFormat(value) {
7
7
  if (!value) {
@@ -11,72 +11,26 @@ function parseToValueFormat(value) {
11
11
  if (matches.length === 3 &&
12
12
  typeof matches[0] === "string" &&
13
13
  typeof matches[1] === "string" &&
14
- typeof matches[2] === "string" &&
15
- matches[2].length === 4) {
16
- return matches
17
- .map((match) => (match.length === 1 ? `0${match}` : match))
18
- .reverse()
19
- .join("-");
14
+ typeof matches[2] === "string") {
15
+ const [d, m, y] = matches;
16
+ const dd = d.padStart(2, "0");
17
+ const mm = m.padStart(2, "0");
18
+ const yyyy = y.padStart(4, "0");
19
+ return [yyyy, mm, dd].join("-");
20
20
  }
21
21
  return value;
22
22
  }
23
- function createDate(year, month, day) {
24
- const dayInt = parseInt(day, 10);
25
- const monthInt = parseInt(month, 10);
26
- const yearInt = parseInt(year, 10);
27
- const isValid = Number.isInteger(yearInt) && // all parts should be integers
28
- Number.isInteger(monthInt) &&
29
- Number.isInteger(dayInt) &&
30
- monthInt > 0 && // month must be 1-12
31
- monthInt <= 12 &&
32
- dayInt > 0 && // day must be 1-31
33
- dayInt <= 31 &&
34
- yearInt > 0;
35
- if (isValid) {
36
- return new Date(yearInt, monthInt - 1, dayInt);
37
- }
38
- }
39
23
  /**
40
- * @param value date string in format D-M-YYYY
24
+ * yyyy-mm-dd to dd-mm-yyyy
41
25
  */
42
- function parseDate(value) {
43
- if (!value) {
44
- return;
45
- }
46
- const matches = value.split("-");
47
- if (matches.length === 3 &&
48
- typeof matches[0] === "string" &&
49
- typeof matches[1] === "string" &&
50
- typeof matches[2] === "string" &&
51
- matches[0].length === 4) {
52
- return createDate(matches[0], matches[1], matches[2]);
53
- }
54
- }
55
- /**
56
- * print date in format DD-MM-YYYY
57
- * @param date
58
- */
59
- function printDutchDate(date) {
26
+ function parseToDutchFormat(date) {
60
27
  if (!date) {
61
28
  return "";
62
29
  }
63
- const d = date.getDate().toString(10).padStart(2, "0");
64
- const m = (date.getMonth() + 1).toString(10).padStart(2, "0");
65
- const y = date.getFullYear().toString(10).padStart(2, "0");
66
- return `${d}-${m}-${y}`;
67
- }
68
- /**
69
- * Ensures date is within range, returns min or max if out of bounds
70
- */
71
- function clamp(date, min, max) {
72
- const time = date.getTime();
73
- if (min && min instanceof Date && time < min.getTime()) {
74
- return min;
75
- }
76
- if (max && max instanceof Date && time > max.getTime()) {
77
- return max;
78
- }
79
- return date;
30
+ const dd = date.getDate().toString(10).padStart(2, "0");
31
+ const mm = (date.getMonth() + 1).toString(10).padStart(2, "0");
32
+ const yyyy = date.getFullYear().toString(10).padStart(4, "0");
33
+ return [dd, mm, yyyy].join("-");
80
34
  }
81
35
 
82
36
  const datePickerCss = ".sc-dso-date-picker-h{display:block}[invalid].sc-dso-date-picker-h:not([invalid=false]) .dso-date__input.sc-dso-date-picker{border-color:#ce3f51}.dso-date__input.sc-dso-date-picker{display:block;width:100%;height:40px;padding:6px 14px;font-size:1rem;line-height:1.5;color:#191919;background-color:#fff;background-image:none;border:1px solid #275937;border-radius:4px;transition:border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s}.dso-date__input.sc-dso-date-picker::-moz-placeholder{color:#666;opacity:1}.dso-date__input.sc-dso-date-picker:-ms-input-placeholder{color:#666}.dso-date__input.sc-dso-date-picker::-webkit-input-placeholder{color:#666}.dso-date__input.sc-dso-date-picker::-ms-expand{background-color:transparent;border:0}.dso-date__input.sc-dso-date-picker:focus{border-color:#275937;outline:0;box-shadow:inset 0 0 0 1px #275937}.dso-date__input[disabled].sc-dso-date-picker,.dso-date__input[readonly].sc-dso-date-picker,fieldset[disabled].sc-dso-date-picker .dso-date__input.sc-dso-date-picker{background-color:#fff;opacity:1}.dso-date__input[disabled].sc-dso-date-picker,fieldset[disabled].sc-dso-date-picker .dso-date__input.sc-dso-date-picker{cursor:default}.dso-date__input[disabled].sc-dso-date-picker{border-color:#e5e5e5;color:#999}.dso-date__input[readonly].sc-dso-date-picker{border-width:1px}.dso-date__input[type=text].sc-dso-date-picker{line-height:40px}.dso-date__input[size].sc-dso-date-picker{width:auto}.dso-date__input.sc-dso-date-picker::-webkit-calendar-picker-indicator{position:relative;inset-inline-end:-8px;font-size:1.75rem;filter:invert(50%) sepia(66%) saturate(6528%) hue-rotate(71deg) brightness(94%) contrast(91%)}";
@@ -122,40 +76,29 @@ const DsoDatePicker = class {
122
76
  if (!(target instanceof HTMLInputElement)) {
123
77
  return;
124
78
  }
125
- const { value } = target;
79
+ const { valueAsDate, validity } = target;
126
80
  const event = {
127
- originalEvent: e,
128
81
  component: "dso-date-picker",
129
- value,
130
- valueAsDate: parseDate(value),
82
+ originalEvent: e,
83
+ validity,
84
+ value: parseToDutchFormat(valueAsDate),
85
+ valueAsDate: valueAsDate !== null && valueAsDate !== void 0 ? valueAsDate : undefined,
131
86
  };
132
- if (event.valueAsDate) {
133
- event.value = printDutchDate(event.valueAsDate);
134
- }
135
- if (!event.valueAsDate && this.required) {
87
+ if (validity.valueMissing) {
136
88
  event.error = "required";
137
89
  }
138
- if (event.value && !event.valueAsDate) {
139
- event.error = "invalid";
90
+ else if (validity.rangeUnderflow) {
91
+ event.error = "min-range";
92
+ event.valueAsDate = undefined;
140
93
  }
141
- if (event.valueAsDate && (this.min || this.max)) {
142
- const min = parseDate(this.min);
143
- const max = parseDate(this.max);
144
- const clampValue = clamp(event.valueAsDate, min, max);
145
- if (clampValue !== event.valueAsDate && clampValue === min) {
146
- event.valueAsDate = undefined;
147
- event.error = "min-range";
148
- }
149
- else if (clampValue !== event.valueAsDate && clampValue === max) {
150
- event.valueAsDate = undefined;
151
- event.error = "max-range";
152
- }
94
+ else if (validity.rangeOverflow) {
95
+ event.error = "max-range";
96
+ event.valueAsDate = undefined;
153
97
  }
154
- this.value = typeof value === "string" ? value : event.value;
155
- if (this.value !== this.previousValue) {
156
- this.dsoDateChange.emit(event);
157
- this.previousValue = this.value;
98
+ else if (!validity.valid) {
99
+ event.error = "invalid";
158
100
  }
101
+ this.dsoDateChange.emit(event);
159
102
  };
160
103
  this.name = "dso-date";
161
104
  this.identifier = undefined;
@@ -1 +1 @@
1
- {"file":"dso-date-picker.entry.js","mappings":"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","names":[],"sources":["src/components/date-picker/date-utils.ts","src/components/date-picker/date-picker.scss?tag=dso-date-picker&encapsulation=scoped","src/components/date-picker/date-picker.tsx"],"sourcesContent":["/**\r\n * @param value date string in Dutch format DD-MM-YYYY\r\n */\r\nexport function parseToValueFormat(value: string | undefined): string | undefined {\r\n if (!value) {\r\n return;\r\n }\r\n\r\n const matches = value.split(\"-\");\r\n\r\n if (\r\n matches.length === 3 &&\r\n typeof matches[0] === \"string\" &&\r\n typeof matches[1] === \"string\" &&\r\n typeof matches[2] === \"string\" &&\r\n matches[2].length === 4\r\n ) {\r\n return matches\r\n .map((match) => (match.length === 1 ? `0${match}` : match))\r\n .reverse()\r\n .join(\"-\");\r\n }\r\n\r\n return value;\r\n}\r\n\r\nexport function createDate(year: string, month: string, day: string): Date | undefined {\r\n const dayInt = parseInt(day, 10);\r\n const monthInt = parseInt(month, 10);\r\n const yearInt = parseInt(year, 10);\r\n\r\n const isValid =\r\n Number.isInteger(yearInt) && // all parts should be integers\r\n Number.isInteger(monthInt) &&\r\n Number.isInteger(dayInt) &&\r\n monthInt > 0 && // month must be 1-12\r\n monthInt <= 12 &&\r\n dayInt > 0 && // day must be 1-31\r\n dayInt <= 31 &&\r\n yearInt > 0;\r\n\r\n if (isValid) {\r\n return new Date(yearInt, monthInt - 1, dayInt);\r\n }\r\n}\r\n\r\n/**\r\n * @param value date string in format D-M-YYYY\r\n */\r\nexport function parseDate(value: string | undefined): Date | undefined {\r\n if (!value) {\r\n return;\r\n }\r\n\r\n const matches = value.split(\"-\");\r\n\r\n if (\r\n matches.length === 3 &&\r\n typeof matches[0] === \"string\" &&\r\n typeof matches[1] === \"string\" &&\r\n typeof matches[2] === \"string\" &&\r\n matches[0].length === 4\r\n ) {\r\n return createDate(matches[0], matches[1], matches[2]);\r\n }\r\n}\r\n\r\n/**\r\n * print date in format DD-MM-YYYY\r\n * @param date\r\n */\r\nexport function printDutchDate(date: Date | undefined): string {\r\n if (!date) {\r\n return \"\";\r\n }\r\n\r\n const d = date.getDate().toString(10).padStart(2, \"0\");\r\n const m = (date.getMonth() + 1).toString(10).padStart(2, \"0\");\r\n const y = date.getFullYear().toString(10).padStart(2, \"0\");\r\n\r\n return `${d}-${m}-${y}`;\r\n}\r\n\r\n/**\r\n * Ensures date is within range, returns min or max if out of bounds\r\n */\r\nexport function clamp(date: Date, min?: Date, max?: Date): Date {\r\n const time = date.getTime();\r\n\r\n if (min && min instanceof Date && time < min.getTime()) {\r\n return min;\r\n }\r\n\r\n if (max && max instanceof Date && time > max.getTime()) {\r\n return max;\r\n }\r\n\r\n return date;\r\n}\r\n","@use \"~dso-toolkit/src/variables/units\";\r\n@use \"~dso-toolkit/src/variables/colors\";\r\n@use \"~dso-toolkit/src/variables/zindex\";\r\n@use \"~dso-toolkit/src/components/form-control\";\r\n\r\n@use \"date-picker.variables\" as core-date-picker-variables;\r\n\r\n:host {\r\n display: block;\r\n\r\n &[invalid]:not([invalid=\"false\"]) {\r\n .dso-date__input {\r\n border-color: colors.$danger-color;\r\n }\r\n }\r\n}\r\n\r\n.dso-date__input {\r\n @include form-control.root();\r\n\r\n &::-webkit-calendar-picker-indicator {\r\n position: relative;\r\n inset-inline-end: -8px;\r\n\r\n font-size: 1.75rem;\r\n\r\n filter: invert(50%) sepia(66%) saturate(6528%) hue-rotate(71deg) brightness(94%) contrast(91%);\r\n }\r\n}\r\n","import { Component, ComponentInterface, Prop, Element, h, Event, EventEmitter } from \"@stencil/core\";\r\n\r\nimport { DatePickerChangeEvent, DatePickerFocusEvent, DatePickerKeyboardEvent } from \"./date-picker.interfaces\";\r\nimport { clamp, parseDate, parseToValueFormat, printDutchDate } from \"./date-utils\";\r\n\r\n@Component({\r\n tag: \"dso-date-picker\",\r\n styleUrl: \"date-picker.scss\",\r\n shadow: false,\r\n scoped: true,\r\n})\r\nexport class DsoDatePicker implements ComponentInterface {\r\n private previousValue?: string;\r\n\r\n /**\r\n * Reference to host HTML element.\r\n */\r\n @Element()\r\n element!: HTMLDsoDatePickerElement;\r\n\r\n /**\r\n * Name of the date picker input.\r\n */\r\n @Prop()\r\n name = \"dso-date\";\r\n\r\n /**\r\n * Adds a unique identifier for the date picker input. Use this instead of html `id` attribute.\r\n */\r\n @Prop()\r\n identifier: string | undefined;\r\n\r\n /**\r\n * Makes the date picker input component disabled. This prevents users from being able to\r\n * interact with the input, and conveys its inactive state to assistive technologies.\r\n */\r\n @Prop({ reflect: true })\r\n disabled = false;\r\n\r\n /**\r\n * Should the input be marked as required?\r\n */\r\n @Prop({ reflect: true })\r\n required = false;\r\n\r\n /**\r\n * Is input invalid?\r\n */\r\n @Prop({ reflect: true })\r\n invalid?: boolean;\r\n\r\n /**\r\n * ID of element that describes the input element\r\n */\r\n @Prop()\r\n describedBy?: string;\r\n\r\n /**\r\n * Should the input be focused on load?\r\n */\r\n @Prop()\r\n dsoAutofocus = false;\r\n\r\n /**\r\n * Date value. Must be in Dutch date format: DD-MM-YYYY.\r\n */\r\n @Prop()\r\n value = \"\";\r\n\r\n /**\r\n * Minimum date allowed to be picked. Must be in Dutch date format: DD-MM-YYYY.\r\n * This setting can be used alone or together with the max property.\r\n */\r\n @Prop()\r\n min: string | undefined;\r\n\r\n /**\r\n * Maximum date allowed to be picked. Must be in Dutch date format: DD-MM-YYYY.\r\n * This setting can be used alone or together with the min property.\r\n */\r\n @Prop()\r\n max: string | undefined;\r\n\r\n /**\r\n * Events section.\r\n */\r\n\r\n /**\r\n * Event emitted when a date is selected.\r\n */\r\n @Event()\r\n dsoDateChange!: EventEmitter<DatePickerChangeEvent>;\r\n\r\n /**\r\n * Event emitted the date picker input is blurred.\r\n */\r\n @Event()\r\n dsoBlur!: EventEmitter<DatePickerFocusEvent>;\r\n\r\n /**\r\n * Event emitted on key up in the date picker input.\r\n */\r\n @Event()\r\n dsoKeyUp!: EventEmitter<DatePickerKeyboardEvent>;\r\n\r\n /**\r\n * Event emitted on key down in the date picker input.\r\n */\r\n @Event()\r\n dsoKeyDown!: EventEmitter<DatePickerKeyboardEvent>;\r\n\r\n /**\r\n * Event emitted the date picker input is focused.\r\n */\r\n @Event()\r\n dsoFocus!: EventEmitter<DatePickerFocusEvent>;\r\n\r\n private handleBlur = (event: FocusEvent) => {\r\n event.stopPropagation();\r\n\r\n this.dsoBlur.emit({\r\n originalEvent: event,\r\n component: \"dso-date-picker\",\r\n });\r\n };\r\n\r\n private handleFocus = (event: FocusEvent) => {\r\n event.stopPropagation();\r\n\r\n this.dsoFocus.emit({\r\n originalEvent: event,\r\n component: \"dso-date-picker\",\r\n });\r\n };\r\n\r\n private handleKeyUp = (event: KeyboardEvent) => {\r\n event.stopPropagation();\r\n\r\n this.dsoKeyUp.emit({\r\n component: \"dso-date-picker\",\r\n originalEvent: event,\r\n });\r\n };\r\n\r\n private handleKeyDown = (event: KeyboardEvent) => {\r\n event.stopPropagation();\r\n\r\n this.dsoKeyDown.emit({\r\n component: \"dso-date-picker\",\r\n originalEvent: event,\r\n });\r\n };\r\n\r\n private handleInputChange = (e: Event) => {\r\n const target = e.target;\r\n\r\n if (!(target instanceof HTMLInputElement)) {\r\n return;\r\n }\r\n\r\n const { value } = target;\r\n\r\n const event: DatePickerChangeEvent = {\r\n originalEvent: e,\r\n component: \"dso-date-picker\",\r\n value,\r\n valueAsDate: parseDate(value),\r\n };\r\n\r\n if (event.valueAsDate) {\r\n event.value = printDutchDate(event.valueAsDate);\r\n }\r\n\r\n if (!event.valueAsDate && this.required) {\r\n event.error = \"required\";\r\n }\r\n\r\n if (event.value && !event.valueAsDate) {\r\n event.error = \"invalid\";\r\n }\r\n\r\n if (event.valueAsDate && (this.min || this.max)) {\r\n const min = parseDate(this.min);\r\n const max = parseDate(this.max);\r\n const clampValue = clamp(event.valueAsDate, min, max);\r\n\r\n if (clampValue !== event.valueAsDate && clampValue === min) {\r\n event.valueAsDate = undefined;\r\n event.error = \"min-range\";\r\n } else if (clampValue !== event.valueAsDate && clampValue === max) {\r\n event.valueAsDate = undefined;\r\n event.error = \"max-range\";\r\n }\r\n }\r\n\r\n this.value = typeof value === \"string\" ? value : event.value;\r\n\r\n if (this.value !== this.previousValue) {\r\n this.dsoDateChange.emit(event);\r\n this.previousValue = this.value;\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n <input\r\n type=\"date\"\r\n id={this.identifier}\r\n class=\"dso-date__input\"\r\n value={parseToValueFormat(this.value)}\r\n name={this.name}\r\n min={parseToValueFormat(this.min)}\r\n max={parseToValueFormat(this.max)}\r\n disabled={this.disabled || undefined}\r\n required={this.required || undefined}\r\n aria-autocomplete=\"none\"\r\n aria-invalid={this.invalid?.toString()}\r\n aria-describedby={this.describedBy}\r\n autoComplete=\"off\"\r\n autofocus={this.dsoAutofocus || undefined}\r\n onBlur={this.handleBlur}\r\n onFocus={this.handleFocus}\r\n onKeyUp={this.handleKeyUp}\r\n onKeyDown={this.handleKeyDown}\r\n onChange={this.handleInputChange}\r\n />\r\n );\r\n }\r\n}\r\n"],"version":3}
1
+ {"file":"dso-date-picker.entry.js","mappings":";;AAAA;;;SAGgB,kBAAkB,CAAC,KAAyB;EAC1D,IAAI,CAAC,KAAK,EAAE;IACV,OAAO;GACR;EAED,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAEjC,IACE,OAAO,CAAC,MAAM,KAAK,CAAC;IACpB,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ;IAC9B,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ;IAC9B,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,EAC9B;IACA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC;IAE1B,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEhC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;GACjC;EAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;SAGgB,kBAAkB,CAAC,IAAiB;EAClD,IAAI,CAAC,IAAI,EAAE;IACT,OAAO,EAAE,CAAC;GACX;EAED,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;EACxD,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;EAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;EAE9D,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC;;ACzCA,MAAM,aAAa,GAAG,moDAAmoD;;MCW5oD,aAAa;;;;;;;;IAwGhB,eAAU,GAAG,CAAC,KAAiB;MACrC,KAAK,CAAC,eAAe,EAAE,CAAC;MAExB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAChB,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,iBAAiB;OAC7B,CAAC,CAAC;KACJ,CAAC;IAEM,gBAAW,GAAG,CAAC,KAAiB;MACtC,KAAK,CAAC,eAAe,EAAE,CAAC;MAExB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACjB,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,iBAAiB;OAC7B,CAAC,CAAC;KACJ,CAAC;IAEM,gBAAW,GAAG,CAAC,KAAoB;MACzC,KAAK,CAAC,eAAe,EAAE,CAAC;MAExB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACjB,SAAS,EAAE,iBAAiB;QAC5B,aAAa,EAAE,KAAK;OACrB,CAAC,CAAC;KACJ,CAAC;IAEM,kBAAa,GAAG,CAAC,KAAoB;MAC3C,KAAK,CAAC,eAAe,EAAE,CAAC;MAExB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QACnB,SAAS,EAAE,iBAAiB;QAC5B,aAAa,EAAE,KAAK;OACrB,CAAC,CAAC;KACJ,CAAC;IAEM,sBAAiB,GAAG,CAAC,CAAQ;MACnC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;MAExB,IAAI,EAAE,MAAM,YAAY,gBAAgB,CAAC,EAAE;QACzC,OAAO;OACR;MAED,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;MAEzC,MAAM,KAAK,GAA0B;QACnC,SAAS,EAAE,iBAAiB;QAC5B,aAAa,EAAE,CAAC;QAChB,QAAQ;QACR,KAAK,EAAE,kBAAkB,CAAC,WAAW,CAAC;QACtC,WAAW,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,SAAS;OACtC,CAAC;MAEF,IAAI,QAAQ,CAAC,YAAY,EAAE;QACzB,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC;OAC1B;WAAM,IAAI,QAAQ,CAAC,cAAc,EAAE;QAClC,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC;QAC1B,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC;OAC/B;WAAM,IAAI,QAAQ,CAAC,aAAa,EAAE;QACjC,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC;QAC1B,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC;OAC/B;WAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;QAC1B,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;OACzB;MAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC,CAAC;gBA/JK,UAAU;;oBAaN,KAAK;oBAML,KAAK;;;wBAkBD,KAAK;iBAMZ,EAAE;;;;EAsHV,MAAM;;IACJ,QACE,aACE,IAAI,EAAC,MAAM,EACX,EAAE,EAAE,IAAI,CAAC,UAAU,EACnB,KAAK,EAAC,iBAAiB,EACvB,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EACrC,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,GAAG,EAAE,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EACjC,GAAG,EAAE,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,SAAS,EACpC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,SAAS,uBAClB,MAAM,kBACV,MAAA,IAAI,CAAC,OAAO,0CAAE,QAAQ,EAAE,sBACpB,IAAI,CAAC,WAAW,EAClC,YAAY,EAAC,KAAK,EAClB,SAAS,EAAE,IAAI,CAAC,YAAY,IAAI,SAAS,EACzC,MAAM,EAAE,IAAI,CAAC,UAAU,EACvB,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,SAAS,EAAE,IAAI,CAAC,aAAa,EAC7B,QAAQ,EAAE,IAAI,CAAC,iBAAiB,GAChC,EACF;GACH;;;;;;;","names":[],"sources":["src/components/date-picker/date-utils.ts","src/components/date-picker/date-picker.scss?tag=dso-date-picker&encapsulation=scoped","src/components/date-picker/date-picker.tsx"],"sourcesContent":["/**\r\n * dd-mm-yyyy to yyyy-mm-dd\r\n */\r\nexport function parseToValueFormat(value: string | undefined): string | undefined {\r\n if (!value) {\r\n return;\r\n }\r\n\r\n const matches = value.split(\"-\");\r\n\r\n if (\r\n matches.length === 3 &&\r\n typeof matches[0] === \"string\" &&\r\n typeof matches[1] === \"string\" &&\r\n typeof matches[2] === \"string\"\r\n ) {\r\n const [d, m, y] = matches;\r\n\r\n const dd = d.padStart(2, \"0\");\r\n const mm = m.padStart(2, \"0\");\r\n const yyyy = y.padStart(4, \"0\");\r\n\r\n return [yyyy, mm, dd].join(\"-\");\r\n }\r\n\r\n return value;\r\n}\r\n\r\n/**\r\n * yyyy-mm-dd to dd-mm-yyyy\r\n */\r\nexport function parseToDutchFormat(date: Date | null): string {\r\n if (!date) {\r\n return \"\";\r\n }\r\n\r\n const dd = date.getDate().toString(10).padStart(2, \"0\");\r\n const mm = (date.getMonth() + 1).toString(10).padStart(2, \"0\");\r\n const yyyy = date.getFullYear().toString(10).padStart(4, \"0\");\r\n\r\n return [dd, mm, yyyy].join(\"-\");\r\n}\r\n","@use \"~dso-toolkit/src/variables/units\";\r\n@use \"~dso-toolkit/src/variables/colors\";\r\n@use \"~dso-toolkit/src/variables/zindex\";\r\n@use \"~dso-toolkit/src/components/form-control\";\r\n\r\n@use \"date-picker.variables\" as core-date-picker-variables;\r\n\r\n:host {\r\n display: block;\r\n\r\n &[invalid]:not([invalid=\"false\"]) {\r\n .dso-date__input {\r\n border-color: colors.$danger-color;\r\n }\r\n }\r\n}\r\n\r\n.dso-date__input {\r\n @include form-control.root();\r\n\r\n &::-webkit-calendar-picker-indicator {\r\n position: relative;\r\n inset-inline-end: -8px;\r\n\r\n font-size: 1.75rem;\r\n\r\n filter: invert(50%) sepia(66%) saturate(6528%) hue-rotate(71deg) brightness(94%) contrast(91%);\r\n }\r\n}\r\n","import { Component, ComponentInterface, Prop, Element, h, Event, EventEmitter } from \"@stencil/core\";\r\n\r\nimport { DatePickerChangeEvent, DatePickerFocusEvent, DatePickerKeyboardEvent } from \"./date-picker.interfaces\";\r\nimport { parseToValueFormat, parseToDutchFormat } from \"./date-utils\";\r\n\r\n@Component({\r\n tag: \"dso-date-picker\",\r\n styleUrl: \"date-picker.scss\",\r\n shadow: false,\r\n scoped: true,\r\n})\r\nexport class DsoDatePicker implements ComponentInterface {\r\n /**\r\n * Reference to host HTML element.\r\n */\r\n @Element()\r\n element!: HTMLDsoDatePickerElement;\r\n\r\n /**\r\n * Name of the date picker input.\r\n */\r\n @Prop()\r\n name = \"dso-date\";\r\n\r\n /**\r\n * Adds a unique identifier for the date picker input. Use this instead of html `id` attribute.\r\n */\r\n @Prop()\r\n identifier: string | undefined;\r\n\r\n /**\r\n * Makes the date picker input component disabled. This prevents users from being able to\r\n * interact with the input, and conveys its inactive state to assistive technologies.\r\n */\r\n @Prop({ reflect: true })\r\n disabled = false;\r\n\r\n /**\r\n * Should the input be marked as required?\r\n */\r\n @Prop({ reflect: true })\r\n required = false;\r\n\r\n /**\r\n * Is input invalid?\r\n */\r\n @Prop({ reflect: true })\r\n invalid?: boolean;\r\n\r\n /**\r\n * ID of element that describes the input element\r\n */\r\n @Prop()\r\n describedBy?: string;\r\n\r\n /**\r\n * Should the input be focused on load?\r\n */\r\n @Prop()\r\n dsoAutofocus = false;\r\n\r\n /**\r\n * Date value. Must be in Dutch date format: DD-MM-YYYY.\r\n */\r\n @Prop({ reflect: true })\r\n value = \"\";\r\n\r\n /**\r\n * Minimum date allowed to be picked. Must be in Dutch date format: DD-MM-YYYY.\r\n * This setting can be used alone or together with the max property.\r\n */\r\n @Prop()\r\n min: string | undefined;\r\n\r\n /**\r\n * Maximum date allowed to be picked. Must be in Dutch date format: DD-MM-YYYY.\r\n * This setting can be used alone or together with the min property.\r\n */\r\n @Prop()\r\n max: string | undefined;\r\n\r\n /**\r\n * Events section.\r\n */\r\n\r\n /**\r\n * Event emitted when a date is selected.\r\n */\r\n @Event()\r\n dsoDateChange!: EventEmitter<DatePickerChangeEvent>;\r\n\r\n /**\r\n * Event emitted the date picker input is blurred.\r\n */\r\n @Event()\r\n dsoBlur!: EventEmitter<DatePickerFocusEvent>;\r\n\r\n /**\r\n * Event emitted on key up in the date picker input.\r\n */\r\n @Event()\r\n dsoKeyUp!: EventEmitter<DatePickerKeyboardEvent>;\r\n\r\n /**\r\n * Event emitted on key down in the date picker input.\r\n */\r\n @Event()\r\n dsoKeyDown!: EventEmitter<DatePickerKeyboardEvent>;\r\n\r\n /**\r\n * Event emitted the date picker input is focused.\r\n */\r\n @Event()\r\n dsoFocus!: EventEmitter<DatePickerFocusEvent>;\r\n\r\n private handleBlur = (event: FocusEvent) => {\r\n event.stopPropagation();\r\n\r\n this.dsoBlur.emit({\r\n originalEvent: event,\r\n component: \"dso-date-picker\",\r\n });\r\n };\r\n\r\n private handleFocus = (event: FocusEvent) => {\r\n event.stopPropagation();\r\n\r\n this.dsoFocus.emit({\r\n originalEvent: event,\r\n component: \"dso-date-picker\",\r\n });\r\n };\r\n\r\n private handleKeyUp = (event: KeyboardEvent) => {\r\n event.stopPropagation();\r\n\r\n this.dsoKeyUp.emit({\r\n component: \"dso-date-picker\",\r\n originalEvent: event,\r\n });\r\n };\r\n\r\n private handleKeyDown = (event: KeyboardEvent) => {\r\n event.stopPropagation();\r\n\r\n this.dsoKeyDown.emit({\r\n component: \"dso-date-picker\",\r\n originalEvent: event,\r\n });\r\n };\r\n\r\n private handleInputChange = (e: Event) => {\r\n const target = e.target;\r\n\r\n if (!(target instanceof HTMLInputElement)) {\r\n return;\r\n }\r\n\r\n const { valueAsDate, validity } = target;\r\n\r\n const event: DatePickerChangeEvent = {\r\n component: \"dso-date-picker\",\r\n originalEvent: e,\r\n validity,\r\n value: parseToDutchFormat(valueAsDate),\r\n valueAsDate: valueAsDate ?? undefined,\r\n };\r\n\r\n if (validity.valueMissing) {\r\n event.error = \"required\";\r\n } else if (validity.rangeUnderflow) {\r\n event.error = \"min-range\";\r\n event.valueAsDate = undefined;\r\n } else if (validity.rangeOverflow) {\r\n event.error = \"max-range\";\r\n event.valueAsDate = undefined;\r\n } else if (!validity.valid) {\r\n event.error = \"invalid\";\r\n }\r\n\r\n this.dsoDateChange.emit(event);\r\n };\r\n\r\n render() {\r\n return (\r\n <input\r\n type=\"date\"\r\n id={this.identifier}\r\n class=\"dso-date__input\"\r\n value={parseToValueFormat(this.value)}\r\n name={this.name}\r\n min={parseToValueFormat(this.min)}\r\n max={parseToValueFormat(this.max)}\r\n disabled={this.disabled || undefined}\r\n required={this.required || undefined}\r\n aria-autocomplete=\"none\"\r\n aria-invalid={this.invalid?.toString()}\r\n aria-describedby={this.describedBy}\r\n autoComplete=\"off\"\r\n autofocus={this.dsoAutofocus || undefined}\r\n onBlur={this.handleBlur}\r\n onFocus={this.handleFocus}\r\n onKeyUp={this.handleKeyUp}\r\n onKeyDown={this.handleKeyDown}\r\n onChange={this.handleInputChange}\r\n />\r\n );\r\n }\r\n}\r\n"],"version":3}
@@ -1315,6 +1315,7 @@ const expandableCss = ":host{display:block;overflow-y:hidden}:host(.dso-hide){di
1315
1315
  const Expandable = class {
1316
1316
  constructor(hostRef) {
1317
1317
  registerInstance(this, hostRef);
1318
+ this.dsoExpandableAnimationStart = createEvent(this, "dsoExpandableAnimationStart", 3);
1318
1319
  this.dsoExpandableAnimationEnd = createEvent(this, "dsoExpandableAnimationEnd", 3);
1319
1320
  this.open = undefined;
1320
1321
  this.enableAnimation = false;
@@ -1380,6 +1381,9 @@ const Expandable = class {
1380
1381
  duration: 260,
1381
1382
  autoplay: false,
1382
1383
  direction: "normal",
1384
+ changeBegin: () => {
1385
+ this.dsoExpandableAnimationStart.emit({});
1386
+ },
1383
1387
  begin: () => {
1384
1388
  if (this.open) {
1385
1389
  this.host.style.visibility = "";