@limetech/lime-elements 38.31.0 → 38.31.2

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 (193) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/lime-elements.cjs.js +1 -1
  3. package/dist/cjs/limel-action-bar_2.cjs.entry.js +1 -1
  4. package/dist/cjs/limel-ai-avatar.cjs.entry.js +1 -1
  5. package/dist/cjs/limel-callout.cjs.entry.js +1 -1
  6. package/dist/cjs/limel-chart.cjs.entry.js +1 -1
  7. package/dist/cjs/limel-chip_2.cjs.entry.js +1 -1
  8. package/dist/cjs/limel-collapsible-section.cjs.entry.js +2 -2
  9. package/dist/cjs/limel-collapsible-section.cjs.entry.js.map +1 -1
  10. package/dist/cjs/limel-drag-handle.cjs.entry.js +34 -0
  11. package/dist/cjs/limel-drag-handle.cjs.entry.js.map +1 -0
  12. package/dist/cjs/limel-file-viewer.cjs.entry.js +1 -1
  13. package/dist/cjs/limel-file.cjs.entry.js +1 -1
  14. package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js +1 -1
  15. package/dist/cjs/limel-form.cjs.entry.js +3220 -305
  16. package/dist/cjs/limel-form.cjs.entry.js.map +1 -1
  17. package/dist/cjs/limel-info-tile.cjs.entry.js +1 -1
  18. package/dist/cjs/limel-info-tile.cjs.entry.js.map +1 -1
  19. package/dist/cjs/limel-linear-progress.cjs.entry.js +1 -1
  20. package/dist/cjs/limel-list-item.cjs.entry.js +1 -1
  21. package/dist/cjs/limel-profile-picture.cjs.entry.js +1 -1
  22. package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +1 -1
  23. package/dist/cjs/limel-snackbar.cjs.entry.js +1 -1
  24. package/dist/cjs/limel-table.cjs.entry.js +1 -1
  25. package/dist/cjs/loader.cjs.js +1 -1
  26. package/dist/cjs/{translations-d2be6dd7.js → translations-a42886f2.js} +17 -1
  27. package/dist/cjs/translations-a42886f2.js.map +1 -0
  28. package/dist/collection/collection-manifest.json +1 -0
  29. package/dist/collection/components/action-bar/action-bar-item/action-bar-item.css +3 -0
  30. package/dist/collection/components/action-bar/action-bar.css +3 -0
  31. package/dist/collection/components/badge/badge.css +3 -0
  32. package/dist/collection/components/breadcrumbs/breadcrumbs.css +3 -0
  33. package/dist/collection/components/button/button.css +3 -0
  34. package/dist/collection/components/button-group/button-group.css +3 -0
  35. package/dist/collection/components/card/card.css +3 -0
  36. package/dist/collection/components/chart/chart.css +6 -0
  37. package/dist/collection/components/checkbox/checkbox.css +3 -0
  38. package/dist/collection/components/chip/chip.css +3 -0
  39. package/dist/collection/components/chip-set/chip-set.css +6 -0
  40. package/dist/collection/components/circular-progress/circular-progress.css +3 -0
  41. package/dist/collection/components/code-editor/code-editor.css +3 -0
  42. package/dist/collection/components/collapsible-section/collapsible-section.css +17 -8
  43. package/dist/collection/components/color-picker/color-picker-palette.css +3 -0
  44. package/dist/collection/components/color-picker/color-picker.css +3 -0
  45. package/dist/collection/components/date-picker/flatpickr-adapter/flatpickr-adapter.css +3 -0
  46. package/dist/collection/components/dialog/dialog.css +3 -0
  47. package/dist/collection/components/dock/dock-button/dock-button.css +3 -0
  48. package/dist/collection/components/dock/dock.css +3 -0
  49. package/dist/collection/components/drag-handle/drag-handle.css +174 -0
  50. package/dist/collection/components/drag-handle/drag-handle.js +125 -0
  51. package/dist/collection/components/drag-handle/drag-handle.js.map +1 -0
  52. package/dist/collection/components/file/file.css +3 -0
  53. package/dist/collection/components/file-viewer/file-viewer.css +3 -0
  54. package/dist/collection/components/form/form.css +143 -14
  55. package/dist/collection/components/form/templates/array-field-collapsible-item.js +13 -16
  56. package/dist/collection/components/form/templates/array-field-collapsible-item.js.map +1 -1
  57. package/dist/collection/components/form/templates/array-field-simple-item.js +16 -49
  58. package/dist/collection/components/form/templates/array-field-simple-item.js.map +1 -1
  59. package/dist/collection/components/form/templates/array-field.js +306 -19
  60. package/dist/collection/components/form/templates/array-field.js.map +1 -1
  61. package/dist/collection/components/header/header.css +3 -0
  62. package/dist/collection/components/help/help.css +3 -0
  63. package/dist/collection/components/help/limel-help-content.css +3 -0
  64. package/dist/collection/components/icon-button/icon-button.css +3 -0
  65. package/dist/collection/components/info-tile/info-tile.css +3 -0
  66. package/dist/collection/components/input-field/input-field.css +3 -0
  67. package/dist/collection/components/list/list.css +6 -0
  68. package/dist/collection/components/list-item/list-item.css +3 -0
  69. package/dist/collection/components/list-item/menu-item-meta/menu-item-meta.css +3 -0
  70. package/dist/collection/components/markdown/markdown.css +3 -0
  71. package/dist/collection/components/menu-list/menu-list.css +6 -0
  72. package/dist/collection/components/notched-outline/notched-outline.css +3 -0
  73. package/dist/collection/components/popover-surface/popover-surface.css +3 -0
  74. package/dist/collection/components/profile-picture/profile-picture.css +3 -0
  75. package/dist/collection/components/progress-flow/progress-flow-item/progress-flow-item.css +3 -0
  76. package/dist/collection/components/radio-button-group/radio-button.css +3 -0
  77. package/dist/collection/components/select/select.css +6 -0
  78. package/dist/collection/components/shortcut/shortcut.css +3 -0
  79. package/dist/collection/components/slider/slider.css +3 -0
  80. package/dist/collection/components/split-button/split-button.css +3 -0
  81. package/dist/collection/components/switch/switch.css +3 -0
  82. package/dist/collection/components/tab-bar/tab-bar.css +3 -0
  83. package/dist/collection/components/table/table.css +12 -0
  84. package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.css +3 -0
  85. package/dist/collection/components/text-editor/text-editor.css +3 -0
  86. package/dist/collection/style/mixins.scss +53 -0
  87. package/dist/collection/translations/da.js +2 -0
  88. package/dist/collection/translations/da.js.map +1 -1
  89. package/dist/collection/translations/de.js +2 -0
  90. package/dist/collection/translations/de.js.map +1 -1
  91. package/dist/collection/translations/en.js +2 -0
  92. package/dist/collection/translations/en.js.map +1 -1
  93. package/dist/collection/translations/fi.js +2 -0
  94. package/dist/collection/translations/fi.js.map +1 -1
  95. package/dist/collection/translations/fr.js +2 -0
  96. package/dist/collection/translations/fr.js.map +1 -1
  97. package/dist/collection/translations/nl.js +2 -0
  98. package/dist/collection/translations/nl.js.map +1 -1
  99. package/dist/collection/translations/no.js +2 -0
  100. package/dist/collection/translations/no.js.map +1 -1
  101. package/dist/collection/translations/sv.js +2 -0
  102. package/dist/collection/translations/sv.js.map +1 -1
  103. package/dist/esm/lime-elements.js +1 -1
  104. package/dist/esm/limel-action-bar_2.entry.js +1 -1
  105. package/dist/esm/limel-ai-avatar.entry.js +1 -1
  106. package/dist/esm/limel-callout.entry.js +1 -1
  107. package/dist/esm/limel-chart.entry.js +1 -1
  108. package/dist/esm/limel-chip_2.entry.js +1 -1
  109. package/dist/esm/limel-collapsible-section.entry.js +2 -2
  110. package/dist/esm/limel-collapsible-section.entry.js.map +1 -1
  111. package/dist/esm/limel-drag-handle.entry.js +30 -0
  112. package/dist/esm/limel-drag-handle.entry.js.map +1 -0
  113. package/dist/esm/limel-file-viewer.entry.js +1 -1
  114. package/dist/esm/limel-file.entry.js +1 -1
  115. package/dist/esm/limel-flatpickr-adapter.entry.js +1 -1
  116. package/dist/esm/limel-form.entry.js +3214 -299
  117. package/dist/esm/limel-form.entry.js.map +1 -1
  118. package/dist/esm/limel-info-tile.entry.js +1 -1
  119. package/dist/esm/limel-info-tile.entry.js.map +1 -1
  120. package/dist/esm/limel-linear-progress.entry.js +1 -1
  121. package/dist/esm/limel-list-item.entry.js +1 -1
  122. package/dist/esm/limel-profile-picture.entry.js +1 -1
  123. package/dist/esm/limel-prosemirror-adapter.entry.js +1 -1
  124. package/dist/esm/limel-snackbar.entry.js +1 -1
  125. package/dist/esm/limel-table.entry.js +1 -1
  126. package/dist/esm/loader.js +1 -1
  127. package/dist/esm/{translations-91c611da.js → translations-9bfde9f4.js} +17 -1
  128. package/dist/esm/translations-9bfde9f4.js.map +1 -0
  129. package/dist/lime-elements/lime-elements.esm.js +1 -1
  130. package/dist/lime-elements/lime-elements.esm.js.map +1 -1
  131. package/dist/lime-elements/p-309d0652.entry.js +2 -0
  132. package/dist/lime-elements/{p-e6245ef7.entry.js.map → p-309d0652.entry.js.map} +1 -1
  133. package/dist/lime-elements/p-31f1cb08.entry.js +2 -0
  134. package/dist/lime-elements/p-31f1cb08.entry.js.map +1 -0
  135. package/dist/lime-elements/{p-cc7f4c81.entry.js → p-3311eaf3.entry.js} +2 -2
  136. package/dist/lime-elements/{p-aeba4aa4.entry.js → p-40542ccc.entry.js} +2 -2
  137. package/dist/lime-elements/{p-d349e355.entry.js → p-42e889d8.entry.js} +2 -2
  138. package/dist/lime-elements/p-5df2361b.js +2 -0
  139. package/dist/lime-elements/p-5df2361b.js.map +1 -0
  140. package/dist/lime-elements/{p-b5abf284.entry.js → p-5e976a59.entry.js} +2 -2
  141. package/dist/lime-elements/{p-6c60172e.entry.js → p-787be044.entry.js} +2 -2
  142. package/dist/lime-elements/p-8ea3b80a.entry.js +2 -0
  143. package/dist/lime-elements/p-8ea3b80a.entry.js.map +1 -0
  144. package/dist/lime-elements/{p-d1aa44e1.entry.js → p-92aa9610.entry.js} +2 -2
  145. package/dist/lime-elements/{p-8e3c4418.entry.js → p-aa1e7319.entry.js} +2 -2
  146. package/dist/lime-elements/p-ae267255.entry.js +27 -0
  147. package/dist/lime-elements/p-ae267255.entry.js.map +1 -0
  148. package/dist/lime-elements/{p-ed04acfc.entry.js → p-b0acf522.entry.js} +2 -2
  149. package/dist/lime-elements/{p-f83ebd28.entry.js → p-b7bbb6a5.entry.js} +2 -2
  150. package/dist/lime-elements/{p-eb396630.entry.js → p-cd2f780a.entry.js} +2 -2
  151. package/dist/lime-elements/{p-aae161ef.entry.js → p-d79c85e2.entry.js} +2 -2
  152. package/dist/lime-elements/{p-1b036add.entry.js → p-e00465fa.entry.js} +2 -2
  153. package/dist/lime-elements/{p-29c2cdc6.entry.js → p-ee5c4112.entry.js} +2 -2
  154. package/dist/lime-elements/{p-e6bb4d1a.entry.js → p-fbac230b.entry.js} +2 -2
  155. package/dist/lime-elements/style/mixins.scss +53 -0
  156. package/dist/scss/mixins.scss +53 -0
  157. package/dist/types/components/drag-handle/drag-handle.d.ts +46 -0
  158. package/dist/types/components/form/templates/array-field-collapsible-item.d.ts +3 -1
  159. package/dist/types/components/form/templates/array-field-simple-item.d.ts +5 -9
  160. package/dist/types/components/form/templates/array-field.d.ts +35 -4
  161. package/dist/types/components.d.ts +113 -0
  162. package/dist/types/translations/da.d.ts +2 -0
  163. package/dist/types/translations/de.d.ts +2 -0
  164. package/dist/types/translations/en.d.ts +2 -0
  165. package/dist/types/translations/fi.d.ts +2 -0
  166. package/dist/types/translations/fr.d.ts +2 -0
  167. package/dist/types/translations/nl.d.ts +2 -0
  168. package/dist/types/translations/no.d.ts +2 -0
  169. package/dist/types/translations/sv.d.ts +2 -0
  170. package/package.json +5 -2
  171. package/dist/cjs/translations-d2be6dd7.js.map +0 -1
  172. package/dist/esm/translations-91c611da.js.map +0 -1
  173. package/dist/lime-elements/p-4c88e5d3.js +0 -2
  174. package/dist/lime-elements/p-4c88e5d3.js.map +0 -1
  175. package/dist/lime-elements/p-d6d66daa.entry.js +0 -21
  176. package/dist/lime-elements/p-d6d66daa.entry.js.map +0 -1
  177. package/dist/lime-elements/p-e6245ef7.entry.js +0 -2
  178. package/dist/lime-elements/p-ed8aa16c.entry.js +0 -2
  179. package/dist/lime-elements/p-ed8aa16c.entry.js.map +0 -1
  180. /package/dist/lime-elements/{p-cc7f4c81.entry.js.map → p-3311eaf3.entry.js.map} +0 -0
  181. /package/dist/lime-elements/{p-aeba4aa4.entry.js.map → p-40542ccc.entry.js.map} +0 -0
  182. /package/dist/lime-elements/{p-d349e355.entry.js.map → p-42e889d8.entry.js.map} +0 -0
  183. /package/dist/lime-elements/{p-b5abf284.entry.js.map → p-5e976a59.entry.js.map} +0 -0
  184. /package/dist/lime-elements/{p-6c60172e.entry.js.map → p-787be044.entry.js.map} +0 -0
  185. /package/dist/lime-elements/{p-d1aa44e1.entry.js.map → p-92aa9610.entry.js.map} +0 -0
  186. /package/dist/lime-elements/{p-8e3c4418.entry.js.map → p-aa1e7319.entry.js.map} +0 -0
  187. /package/dist/lime-elements/{p-ed04acfc.entry.js.map → p-b0acf522.entry.js.map} +0 -0
  188. /package/dist/lime-elements/{p-f83ebd28.entry.js.map → p-b7bbb6a5.entry.js.map} +0 -0
  189. /package/dist/lime-elements/{p-eb396630.entry.js.map → p-cd2f780a.entry.js.map} +0 -0
  190. /package/dist/lime-elements/{p-aae161ef.entry.js.map → p-d79c85e2.entry.js.map} +0 -0
  191. /package/dist/lime-elements/{p-1b036add.entry.js.map → p-e00465fa.entry.js.map} +0 -0
  192. /package/dist/lime-elements/{p-29c2cdc6.entry.js.map → p-ee5c4112.entry.js.map} +0 -0
  193. /package/dist/lime-elements/{p-e6bb4d1a.entry.js.map → p-fbac230b.entry.js.map} +0 -0
@@ -1,4 +1,91 @@
1
1
  @charset "UTF-8";
2
+ /**
3
+ * Note! This file is exported to `dist/scss/` in the published
4
+ * node module, for consumer projects to import.
5
+ * That means this file cannot import from any file that isn't
6
+ * also exported, keeping the same relative path.
7
+ *
8
+ * Or, just don't import anything, that works too.
9
+ */
10
+ /**
11
+ * This can be used on a trigger element that opens a dropdown menu or a popover.
12
+ */
13
+ /**
14
+ * This mixin will mask out the content that is close to
15
+ * the edges of a scrollable area.
16
+ * - If the scrollable content has `overflow-y`, use `vertically`
17
+ * as an argument for `$direction`.
18
+ - If the scrollable content has `overflow-x`, use `horizontally`
19
+ * as an argument for `$direction`.
20
+ *
21
+ * For the visual effect to work smoothly, we need to make sure that
22
+ * the size of the fade-out edge effect is the same as the
23
+ * internal paddings of the scrollable area. Otherwise, content of a
24
+ * scrollable area that does not have a padding will fade out before
25
+ * any scrolling has been done.
26
+ * This is why this mixin already adds paddings, which automatically
27
+ * default to the size of the fade-out effect.
28
+ * This size defaults to `1rem`, but to override the size use
29
+ * `--limel-top-edge-fade-height` & `--limel-bottom-edge-fade-height`
30
+ * when `vertically` argument is set, and use
31
+ * `--limel-left-edge-fade-width` & `--limel-right-edge-fade-width`
32
+ * when `horizontally` argument is set.
33
+ * Of course you can also programmatically increase and decrease the
34
+ * size of these variables for each edge, based on the amount of
35
+ * scrolling that has been done by the user. In this case, make sure
36
+ * to add a custom padding where the mixin is used, to override
37
+ * the paddings that are automatically added by the mixin in the
38
+ * compiled CSS code.
39
+ */
40
+ /**
41
+ * This mixin will add an animated underline to the bottom of an `a` elements.
42
+ * Note that you may need to add `all: unset;` –depending on your use case–
43
+ * before using this mixin.
44
+ */
45
+ /**
46
+ * This mixin creates a cross-browser font stack.
47
+ * - `sans-serif` can be used for the UI of the components.
48
+ * - `monospace` can be used for code.
49
+ *
50
+ * ⚠️ If we change the font stacks, we need to update
51
+ * 1. the consumer documentation in `README.md`, and
52
+ * 2. the CSS variables of `--kompendium-example-font-family`
53
+ * in the `<style>` tag of `index.html`.
54
+ */
55
+ /**
56
+ * This mixin is a hack, using old CSS syntax
57
+ * to enable you to truncate a piece of text,
58
+ * after a certain number of lines.
59
+ */
60
+ /**
61
+ * This mixin will add a chessboard background pattern,
62
+ * typically used to visualize transparency.
63
+ */
64
+ /**
65
+ * Make a container resizable by the user.
66
+ * This is used in the documentations and examples
67
+ * of some components, to demonstrate how the component
68
+ * behaves in a resizable container.
69
+ */
70
+ /**
71
+ * Drag to reorder mixins
72
+ */
73
+ /**
74
+ * The breakpoints below are used to create responsive designs
75
+ * in Lime's products. Therefore, they are here to get distributed
76
+ * to all components in other private repos, which rely on this `mixins`
77
+ * file, to create consistent styles.
78
+ *
79
+ * :::important
80
+ * In very rare cases you should used media queries!
81
+ * Nowadays, there are many better ways of achieving responsive design
82
+ * without media queries. For example, using CSS Grid, Flexbox, and their features.
83
+ * :::
84
+ */
85
+ /**
86
+ * Media query mixins for responsive design based on screen width.
87
+ * Note that these mixins do not detect the device type!
88
+ */
2
89
  /*
3
90
  * This file is imported into every component!
4
91
  *
@@ -13,6 +100,12 @@
13
100
  * @prop --form-background-color-of-even-rows: Background of even rows in the form, when layout type is `row`. Defaults to `transparent`.
14
101
  * @prop --form-background-color-of-odd-rows:Background of odd rows in the form, when layout type is `row`. Defaults to `--contrast-200`.
15
102
  */
103
+ *,
104
+ *::after,
105
+ *::before {
106
+ box-sizing: border-box;
107
+ }
108
+
16
109
  .form-group {
17
110
  min-width: 0;
18
111
  }
@@ -20,18 +113,58 @@
20
113
  .limel-form-array-item--simple {
21
114
  display: flex;
22
115
  align-items: center;
23
- padding-bottom: var(--form-row-gap, 1rem);
116
+ padding: 0.25rem;
24
117
  }
25
- .limel-form-array-item--simple *:first-child {
26
- flex-grow: 1;
118
+ .limel-form-array-item--simple > *:first-child {
119
+ flex: 1;
120
+ min-width: 0;
27
121
  }
28
122
 
29
- limel-code-editor {
30
- margin-bottom: 0.75rem;
123
+ .array-items {
124
+ isolation: isolate;
125
+ display: flex;
126
+ flex-direction: column;
127
+ row-gap: var(--form-row-gap, 0.5rem);
128
+ margin-top: 1rem;
129
+ }
130
+ .array-items.has-an-item-which-is-being-dragged limel-collapsible-section {
131
+ --limel-cs-grid-template-rows: 0fr;
132
+ --limel-cs-opacity-transition-speed: 0.2s;
133
+ --limel-cs-grid-template-rows-transition-speed: 0.2s;
134
+ --limel-cs-open-header-bottom-border-radius: 0.75rem;
31
135
  }
32
136
 
33
- .limel-form-array-item--object {
34
- margin-bottom: 0.25rem;
137
+ .array-item:has(limel-drag-handle:hover), .array-item:has(limel-drag-handle:focus-within), .array-item.is-elevated, .array-item.sortable-chosen {
138
+ will-change: transform, box-shadow, border-radius, background-color;
139
+ }
140
+ .array-item.sortable-ghost {
141
+ border-radius: 0.5rem;
142
+ box-shadow: var(--shadow-depth-64), 0 0.65rem 0.75rem -0.425rem rgb(var(--color-black), 0.3);
143
+ }
144
+ .array-item.sortable-chosen {
145
+ border-radius: 0.5rem;
146
+ background-color: var(--lime-elevated-surface-background-color);
147
+ }
148
+ .array-item.is-elevated[draggable=false] {
149
+ animation: sit-here 0.8s forwards;
150
+ }
151
+ @keyframes sit-here {
152
+ 0% {
153
+ border-radius: 0.5rem;
154
+ background-color: var(--lime-elevated-surface-background-color);
155
+ box-shadow: var(--shadow-depth-64), 0 0.65rem 0.75rem -0.425rem rgb(var(--color-black), 0.3);
156
+ }
157
+ 100% {
158
+ box-shadow: none;
159
+ }
160
+ }
161
+
162
+ limel-drag-handle {
163
+ order: 10;
164
+ }
165
+
166
+ limel-collapsible-section.is-being-dragged {
167
+ border-radius: 0.75rem !important;
35
168
  }
36
169
 
37
170
  .limel-form-layout--default {
@@ -157,13 +290,6 @@ p {
157
290
  font-size: var(--limel-theme-default-font-size);
158
291
  }
159
292
 
160
- p + limel-collapsible-section,
161
- p + .limel-form-array-item--simple,
162
- h1 + limel-collapsible-section,
163
- h1 + .limel-form-array-item--simple {
164
- margin-top: 1rem;
165
- }
166
-
167
293
  .form-group {
168
294
  position: relative;
169
295
  }
@@ -292,6 +418,9 @@ h1 + .limel-form-array-item--simple {
292
418
  * of some components, to demonstrate how the component
293
419
  * behaves in a resizable container.
294
420
  */
421
+ /**
422
+ * Drag to reorder mixins
423
+ */
295
424
  /**
296
425
  * The breakpoints below are used to create responsive designs
297
426
  * in Lime's products. Therefore, they are here to get distributed
@@ -39,31 +39,28 @@ export class CollapsibleItemTemplate extends React.Component {
39
39
  if (this.state.isOpen) {
40
40
  children = this.props.item.children;
41
41
  }
42
+ const dragHandle = this.props.allowItemReorder
43
+ ? React.createElement('limel-drag-handle', {
44
+ slot: 'header',
45
+ class: 'drag-handle',
46
+ })
47
+ : null;
42
48
  return React.createElement('limel-collapsible-section', {
43
49
  header: findTitle(data, schema, formSchema) || 'New item',
44
- class: 'limel-form-array-item--object',
50
+ class: 'array-item limel-form-array-item--object',
45
51
  ref: (section) => {
46
52
  this.section = section;
47
53
  },
48
54
  'is-open': this.state.isOpen,
49
- }, children);
55
+ 'data-reorder-id': String(this.props.index),
56
+ 'data-reorderable': this.props.allowItemReorder
57
+ ? 'true'
58
+ : 'false',
59
+ }, dragHandle, children);
50
60
  }
51
61
  setActions(element) {
52
- const { item, index, allowItemRemoval, allowItemReorder } = this.props;
62
+ const { item, index, allowItemRemoval } = this.props;
53
63
  const actions = [];
54
- if (allowItemReorder) {
55
- actions.push({
56
- id: 'down',
57
- icon: 'down_arrow',
58
- disabled: !item.hasMoveDown,
59
- run: item.onReorderClick(index, index + 1),
60
- }, {
61
- id: 'up',
62
- icon: 'up_arrow',
63
- disabled: !item.hasMoveUp,
64
- run: item.onReorderClick(index, index - 1),
65
- });
66
- }
67
64
  if (allowItemRemoval) {
68
65
  actions.push({
69
66
  id: 'remove',
@@ -1 +1 @@
1
- {"version":3,"file":"array-field-collapsible-item.js","sourceRoot":"","sources":["../../../../src/components/form/templates/array-field-collapsible-item.ts"],"names":[],"mappings":"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","sourcesContent":["import { Action } from '../../collapsible-section/action';\nimport React from 'react';\nimport { findTitle } from './common';\nimport { ArrayFieldItem, Runnable } from './types';\nimport { isEmpty } from 'lodash-es';\nimport { JSONSchema7 } from 'json-schema';\n\ninterface CollapsibleItemProps {\n /**\n * Data from reach-jsonschema-form\n */\n item: ArrayFieldItem;\n\n /**\n * The index of the field in the array\n */\n index: number;\n\n /**\n * The value of the field\n */\n data: any;\n\n /**\n * Schema for the field\n */\n schema: JSONSchema7;\n\n /**\n * Schema for the entire form\n */\n formSchema: JSONSchema7;\n\n /**\n * Control whether items can be removed.\n */\n allowItemRemoval: boolean;\n\n /**\n * Control whether items can be reordered.\n */\n allowItemReorder: boolean;\n}\n\nexport class CollapsibleItemTemplate extends React.Component<CollapsibleItemProps> {\n state = {\n isOpen: false,\n };\n\n constructor(public props: CollapsibleItemProps) {\n super(props);\n this.handleAction = this.handleAction.bind(this);\n this.isDeepEmpty = this.isDeepEmpty.bind(this);\n\n this.state = {\n isOpen: this.isDeepEmpty(props.data),\n };\n }\n\n private section: HTMLLimelCollapsibleSectionElement;\n\n public componentDidMount() {\n const section = this.section;\n section.addEventListener('action', this.handleAction);\n section.addEventListener('open', this.handleOpen);\n\n this.setActions(section);\n }\n\n public componentDidUpdate() {\n this.setActions(this.section);\n }\n\n public componentWillUnmount() {\n const section = this.section;\n section.removeEventListener('action', this.handleAction);\n section.removeEventListener('open', this.handleOpen);\n }\n\n public render() {\n const { data, schema, formSchema } = this.props;\n let children: any;\n if (this.state.isOpen) {\n children = this.props.item.children;\n }\n\n return React.createElement(\n 'limel-collapsible-section',\n {\n header: findTitle(data, schema, formSchema) || 'New item',\n class: 'limel-form-array-item--object',\n ref: (section: HTMLLimelCollapsibleSectionElement) => {\n this.section = section;\n },\n 'is-open': this.state.isOpen,\n },\n children\n );\n }\n\n private setActions(element: HTMLLimelCollapsibleSectionElement) {\n const { item, index, allowItemRemoval, allowItemReorder } = this.props;\n const actions: Array<Action & Runnable> = [];\n\n if (allowItemReorder) {\n actions.push(\n {\n id: 'down',\n icon: 'down_arrow',\n disabled: !item.hasMoveDown,\n run: item.onReorderClick(index, index + 1),\n },\n {\n id: 'up',\n icon: 'up_arrow',\n disabled: !item.hasMoveUp,\n run: item.onReorderClick(index, index - 1),\n }\n );\n }\n\n if (allowItemRemoval) {\n actions.push({\n id: 'remove',\n icon: 'trash',\n disabled: !item.hasRemove,\n run: item.onDropIndexClick(index),\n });\n }\n\n element.actions = actions;\n }\n\n private handleAction(event: CustomEvent<Action & Runnable>) {\n event.stopPropagation();\n event.detail.run(event);\n }\n\n private handleOpen = () => {\n this.setState({\n isOpen: true,\n });\n };\n\n private isDeepEmpty(data) {\n if (typeof data !== 'object') {\n return false;\n }\n\n if (isEmpty(data)) {\n return true;\n }\n\n return Object.values(data).every(this.isDeepEmpty);\n }\n}\n"]}
1
+ {"version":3,"file":"array-field-collapsible-item.js","sourceRoot":"","sources":["../../../../src/components/form/templates/array-field-collapsible-item.ts"],"names":[],"mappings":"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","sourcesContent":["import { Action } from '../../collapsible-section/action';\nimport React from 'react';\nimport { findTitle } from './common';\nimport { ArrayFieldItem, Runnable } from './types';\nimport { isEmpty } from 'lodash-es';\nimport { JSONSchema7 } from 'json-schema';\n\ninterface CollapsibleItemProps {\n /**\n * Data from reach-jsonschema-form\n */\n item: ArrayFieldItem;\n\n /**\n * The index of the field in the array\n */\n index: number;\n\n /**\n * The value of the field\n */\n data: any;\n\n /**\n * Schema for the field\n */\n schema: JSONSchema7;\n\n /**\n * Schema for the entire form\n */\n formSchema: JSONSchema7;\n\n /**\n * Control whether items can be removed.\n */\n allowItemRemoval: boolean;\n\n /**\n * Whether this particular item can be reordered.\n */\n allowItemReorder: boolean;\n}\n\nexport class CollapsibleItemTemplate extends React.Component<CollapsibleItemProps> {\n state = {\n isOpen: false,\n };\n\n constructor(public props: CollapsibleItemProps) {\n super(props);\n this.handleAction = this.handleAction.bind(this);\n this.isDeepEmpty = this.isDeepEmpty.bind(this);\n\n this.state = {\n isOpen: this.isDeepEmpty(props.data),\n };\n }\n\n private section: HTMLLimelCollapsibleSectionElement;\n\n public componentDidMount() {\n const section = this.section;\n section.addEventListener('action', this.handleAction);\n section.addEventListener('open', this.handleOpen);\n\n this.setActions(section);\n }\n\n public componentDidUpdate() {\n this.setActions(this.section);\n }\n\n public componentWillUnmount() {\n const section = this.section;\n section.removeEventListener('action', this.handleAction);\n section.removeEventListener('open', this.handleOpen);\n }\n\n public render() {\n const { data, schema, formSchema } = this.props;\n let children: any;\n if (this.state.isOpen) {\n children = this.props.item.children;\n }\n\n const dragHandle = this.props.allowItemReorder\n ? React.createElement('limel-drag-handle', {\n slot: 'header',\n class: 'drag-handle',\n })\n : null;\n\n return React.createElement(\n 'limel-collapsible-section',\n {\n header: findTitle(data, schema, formSchema) || 'New item',\n class: 'array-item limel-form-array-item--object',\n ref: (section: HTMLLimelCollapsibleSectionElement) => {\n this.section = section;\n },\n 'is-open': this.state.isOpen,\n 'data-reorder-id': String(this.props.index),\n 'data-reorderable': this.props.allowItemReorder\n ? 'true'\n : 'false',\n },\n dragHandle,\n children\n );\n }\n\n private setActions(element: HTMLLimelCollapsibleSectionElement) {\n const { item, index, allowItemRemoval } = this.props;\n const actions: Array<Action & Runnable> = [];\n\n if (allowItemRemoval) {\n actions.push({\n id: 'remove',\n icon: 'trash',\n disabled: !item.hasRemove,\n run: item.onDropIndexClick(index),\n });\n }\n\n element.actions = actions;\n }\n\n private handleAction(event: CustomEvent<Action & Runnable>) {\n event.stopPropagation();\n event.detail.run(event);\n }\n\n private handleOpen = () => {\n this.setState({\n isOpen: true,\n });\n };\n\n private isDeepEmpty(data) {\n if (typeof data !== 'object') {\n return false;\n }\n\n if (isEmpty(data)) {\n return true;\n }\n\n return Object.values(data).every(this.isDeepEmpty);\n }\n}\n"]}
@@ -8,14 +8,6 @@ export class SimpleItemTemplate extends React.Component {
8
8
  const { item, index } = this.props;
9
9
  item.onDropIndexClick(index)(event);
10
10
  };
11
- this.handleMoveUp = (event) => {
12
- const { item, index } = this.props;
13
- item.onReorderClick(index, index - 1)(event);
14
- };
15
- this.handleMoveDown = (event) => {
16
- const { item, index } = this.props;
17
- item.onReorderClick(index, index + 1)(event);
18
- };
19
11
  this.setRemoveButton = (button) => {
20
12
  if (this.removeButton) {
21
13
  this.removeButton.removeEventListener('click', this.handleRemove);
@@ -25,39 +17,30 @@ export class SimpleItemTemplate extends React.Component {
25
17
  this.removeButton.addEventListener('click', this.handleRemove);
26
18
  }
27
19
  };
28
- this.setMoveUpButton = (button) => {
29
- if (this.moveUpButton) {
30
- this.moveUpButton.removeEventListener('click', this.handleMoveUp);
31
- }
32
- this.moveUpButton = button || undefined;
33
- if (this.moveUpButton) {
34
- this.moveUpButton.addEventListener('click', this.handleMoveUp);
35
- }
36
- };
37
- this.setMoveDownButton = (button) => {
38
- if (this.moveDownButton) {
39
- this.moveDownButton.removeEventListener('click', this.handleMoveDown);
40
- }
41
- this.moveDownButton = button || undefined;
42
- if (this.moveDownButton) {
43
- this.moveDownButton.addEventListener('click', this.handleMoveDown);
44
- }
45
- };
46
20
  }
47
21
  componentWillUnmount() {
48
22
  this.setRemoveButton(undefined);
49
- this.setMoveUpButton(undefined);
50
- this.setMoveDownButton(undefined);
51
23
  }
52
24
  render() {
53
- const { item } = this.props;
25
+ const { item, allowItemReorder } = this.props;
54
26
  return React.createElement('div', {
55
- className: 'limel-form-array-item--simple',
56
- }, this.props.item.children, this.props.allowItemReorder
57
- ? this.renderMoveDownButton(item)
58
- : null, this.props.allowItemReorder ? this.renderMoveUpButton(item) : null, this.props.allowItemRemoval ? this.renderRemoveButton(item) : null);
27
+ className: 'array-item limel-form-array-item--simple',
28
+ 'data-reorder-id': String(this.props.dataIndex),
29
+ 'data-reorderable': allowItemReorder ? 'true' : 'false',
30
+ }, this.props.item.children, this.renderRemoveButton(item), this.renderDragHandle());
31
+ }
32
+ renderDragHandle() {
33
+ if (!this.props.allowItemReorder) {
34
+ return;
35
+ }
36
+ return React.createElement('limel-drag-handle', {
37
+ class: 'drag-handle',
38
+ });
59
39
  }
60
40
  renderRemoveButton(item) {
41
+ if (!this.props.allowItemRemoval) {
42
+ return;
43
+ }
61
44
  const props = {
62
45
  icon: 'trash',
63
46
  disabled: !item.hasRemove,
@@ -65,21 +48,5 @@ export class SimpleItemTemplate extends React.Component {
65
48
  };
66
49
  return React.createElement(LIMEL_ICON_BUTTON, props);
67
50
  }
68
- renderMoveUpButton(item) {
69
- const props = {
70
- icon: 'up_arrow',
71
- disabled: !item.hasMoveUp,
72
- ref: this.setMoveUpButton,
73
- };
74
- return React.createElement(LIMEL_ICON_BUTTON, props);
75
- }
76
- renderMoveDownButton(item) {
77
- const props = {
78
- icon: 'down_arrow',
79
- disabled: !item.hasMoveDown,
80
- ref: this.setMoveDownButton,
81
- };
82
- return React.createElement(LIMEL_ICON_BUTTON, props);
83
- }
84
51
  }
85
52
  //# sourceMappingURL=array-field-simple-item.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"array-field-simple-item.js","sourceRoot":"","sources":["../../../../src/components/form/templates/array-field-simple-item.ts"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { ArrayFieldItem } from './types';\n\ninterface SimpleItemProps {\n item: ArrayFieldItem;\n index: number;\n allowItemRemoval: boolean;\n allowItemReorder: boolean;\n}\n\nconst LIMEL_ICON_BUTTON = 'limel-icon-button';\n\nexport class SimpleItemTemplate extends React.Component<SimpleItemProps> {\n constructor(public props: SimpleItemProps) {\n super(props);\n }\n\n private removeButton?: HTMLLimelButtonElement;\n private moveUpButton?: HTMLLimelButtonElement;\n private moveDownButton?: HTMLLimelButtonElement;\n\n public componentWillUnmount() {\n this.setRemoveButton(undefined);\n this.setMoveUpButton(undefined);\n this.setMoveDownButton(undefined);\n }\n\n public render() {\n const { item } = this.props;\n\n return React.createElement(\n 'div',\n {\n className: 'limel-form-array-item--simple',\n },\n this.props.item.children,\n this.props.allowItemReorder\n ? this.renderMoveDownButton(item)\n : null,\n this.props.allowItemReorder ? this.renderMoveUpButton(item) : null,\n this.props.allowItemRemoval ? this.renderRemoveButton(item) : null\n );\n }\n\n private renderRemoveButton(item: ArrayFieldItem) {\n const props: any = {\n icon: 'trash',\n disabled: !item.hasRemove,\n ref: this.setRemoveButton,\n };\n\n return React.createElement(LIMEL_ICON_BUTTON, props);\n }\n\n private renderMoveUpButton(item: ArrayFieldItem) {\n const props: any = {\n icon: 'up_arrow',\n disabled: !item.hasMoveUp,\n ref: this.setMoveUpButton,\n };\n\n return React.createElement(LIMEL_ICON_BUTTON, props);\n }\n\n private renderMoveDownButton(item: ArrayFieldItem) {\n const props: any = {\n icon: 'down_arrow',\n disabled: !item.hasMoveDown,\n ref: this.setMoveDownButton,\n };\n\n return React.createElement(LIMEL_ICON_BUTTON, props);\n }\n\n private handleRemove = (event: PointerEvent): void => {\n const { item, index } = this.props;\n item.onDropIndexClick(index)(event);\n };\n\n private handleMoveUp = (event: PointerEvent): void => {\n const { item, index } = this.props;\n item.onReorderClick(index, index - 1)(event);\n };\n\n private handleMoveDown = (event: PointerEvent): void => {\n const { item, index } = this.props;\n item.onReorderClick(index, index + 1)(event);\n };\n\n private setRemoveButton = (button?: HTMLLimelButtonElement | null) => {\n if (this.removeButton) {\n this.removeButton.removeEventListener('click', this.handleRemove);\n }\n\n this.removeButton = button || undefined;\n\n if (this.removeButton) {\n this.removeButton.addEventListener('click', this.handleRemove);\n }\n };\n\n private setMoveUpButton = (button?: HTMLLimelButtonElement | null) => {\n if (this.moveUpButton) {\n this.moveUpButton.removeEventListener('click', this.handleMoveUp);\n }\n\n this.moveUpButton = button || undefined;\n\n if (this.moveUpButton) {\n this.moveUpButton.addEventListener('click', this.handleMoveUp);\n }\n };\n\n private setMoveDownButton = (button?: HTMLLimelButtonElement | null) => {\n if (this.moveDownButton) {\n this.moveDownButton.removeEventListener(\n 'click',\n this.handleMoveDown\n );\n }\n\n this.moveDownButton = button || undefined;\n\n if (this.moveDownButton) {\n this.moveDownButton.addEventListener('click', this.handleMoveDown);\n }\n };\n}\n"]}
1
+ {"version":3,"file":"array-field-simple-item.js","sourceRoot":"","sources":["../../../../src/components/form/templates/array-field-simple-item.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAE9C,MAAM,OAAO,kBAAmB,SAAQ,KAAK,CAAC,SAA0B;EACpE,YAAmB,KAAsB;IACrC,KAAK,CAAC,KAAK,CAAC,CAAC;IADE,UAAK,GAAL,KAAK,CAAiB;IAkDjC,iBAAY,GAAG,CAAC,KAAmB,EAAQ,EAAE;MACjD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;MACnC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC;IAEe,oBAAe,GAAG,CAC/B,MAA0C,EAC5C,EAAE;MACA,IAAI,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;OACrE;MAED,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,SAAS,CAAC;MAExC,IAAI,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;OAClE;IACL,CAAC,CAAC;EAjEF,CAAC;EAIM,oBAAoB;IACvB,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;EACpC,CAAC;EAEM,MAAM;IACT,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;IAE9C,OAAO,KAAK,CAAC,aAAa,CACtB,KAAK,EACL;MACI,SAAS,EAAE,0CAA0C;MACrD,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;MAC/C,kBAAkB,EAAE,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;KAC1D,EACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EACxB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAC7B,IAAI,CAAC,gBAAgB,EAAE,CAC1B,CAAC;EACN,CAAC;EAEO,gBAAgB;IACpB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;MAC9B,OAAO;KACV;IAED,OAAO,KAAK,CAAC,aAAa,CAAC,mBAAmB,EAAE;MAC5C,KAAK,EAAE,aAAa;KACvB,CAAC,CAAC;EACP,CAAC;EAEO,kBAAkB,CAAC,IAAoB;IAC3C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;MAC9B,OAAO;KACV;IAED,MAAM,KAAK,GAAQ;MACf,IAAI,EAAE,OAAO;MACb,QAAQ,EAAE,CAAC,IAAI,CAAC,SAAS;MACzB,GAAG,EAAE,IAAI,CAAC,eAAe;KAC5B,CAAC;IAEF,OAAO,KAAK,CAAC,aAAa,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;EACzD,CAAC;CAoBJ","sourcesContent":["import React from 'react';\nimport { ArrayFieldItem } from './types';\n\ninterface SimpleItemProps {\n item: ArrayFieldItem;\n index: number;\n allowItemRemoval: boolean;\n allowItemReorder: boolean;\n dataIndex: number;\n}\n\nconst LIMEL_ICON_BUTTON = 'limel-icon-button';\n\nexport class SimpleItemTemplate extends React.Component<SimpleItemProps> {\n constructor(public props: SimpleItemProps) {\n super(props);\n }\n\n private removeButton?: HTMLLimelIconButtonElement;\n\n public componentWillUnmount() {\n this.setRemoveButton(undefined);\n }\n\n public render() {\n const { item, allowItemReorder } = this.props;\n\n return React.createElement(\n 'div',\n {\n className: 'array-item limel-form-array-item--simple',\n 'data-reorder-id': String(this.props.dataIndex),\n 'data-reorderable': allowItemReorder ? 'true' : 'false',\n },\n this.props.item.children,\n this.renderRemoveButton(item),\n this.renderDragHandle()\n );\n }\n\n private renderDragHandle() {\n if (!this.props.allowItemReorder) {\n return;\n }\n\n return React.createElement('limel-drag-handle', {\n class: 'drag-handle',\n });\n }\n\n private renderRemoveButton(item: ArrayFieldItem) {\n if (!this.props.allowItemRemoval) {\n return;\n }\n\n const props: any = {\n icon: 'trash',\n disabled: !item.hasRemove,\n ref: this.setRemoveButton,\n };\n\n return React.createElement(LIMEL_ICON_BUTTON, props);\n }\n\n private handleRemove = (event: PointerEvent): void => {\n const { item, index } = this.props;\n item.onDropIndexClick(index)(event);\n };\n\n private readonly setRemoveButton = (\n button?: HTMLLimelIconButtonElement | null\n ) => {\n if (this.removeButton) {\n this.removeButton.removeEventListener('click', this.handleRemove);\n }\n\n this.removeButton = button || undefined;\n\n if (this.removeButton) {\n this.removeButton.addEventListener('click', this.handleRemove);\n }\n };\n}\n"]}