@limetech/lime-elements 37.64.1 → 37.64.3

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 (177) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/cjs/limel-action-bar_4.cjs.entry.js +1 -1
  3. package/dist/cjs/limel-action-bar_4.cjs.entry.js.map +1 -1
  4. package/dist/cjs/limel-breadcrumbs_5.cjs.entry.js +3 -3
  5. package/dist/cjs/limel-breadcrumbs_5.cjs.entry.js.map +1 -1
  6. package/dist/cjs/limel-button-group.cjs.entry.js +1 -1
  7. package/dist/cjs/limel-button-group.cjs.entry.js.map +1 -1
  8. package/dist/cjs/limel-button.cjs.entry.js +1 -1
  9. package/dist/cjs/limel-button.cjs.entry.js.map +1 -1
  10. package/dist/cjs/limel-chip_2.cjs.entry.js +2 -2
  11. package/dist/cjs/limel-chip_2.cjs.entry.js.map +1 -1
  12. package/dist/cjs/limel-code-editor.cjs.entry.js +1 -1
  13. package/dist/cjs/limel-code-editor.cjs.entry.js.map +1 -1
  14. package/dist/cjs/limel-color-picker-palette.cjs.entry.js +1 -1
  15. package/dist/cjs/limel-color-picker-palette.cjs.entry.js.map +1 -1
  16. package/dist/cjs/limel-color-picker.cjs.entry.js +1 -1
  17. package/dist/cjs/limel-color-picker.cjs.entry.js.map +1 -1
  18. package/dist/cjs/limel-dialog.cjs.entry.js +2 -6
  19. package/dist/cjs/limel-dialog.cjs.entry.js.map +1 -1
  20. package/dist/cjs/limel-dock-button.cjs.entry.js +1 -1
  21. package/dist/cjs/limel-dock-button.cjs.entry.js.map +1 -1
  22. package/dist/cjs/limel-dock.cjs.entry.js +1 -1
  23. package/dist/cjs/limel-dock.cjs.entry.js.map +1 -1
  24. package/dist/cjs/limel-dynamic-label_4.cjs.entry.js +1 -1
  25. package/dist/cjs/limel-dynamic-label_4.cjs.entry.js.map +1 -1
  26. package/dist/cjs/limel-file-viewer.cjs.entry.js +1 -1
  27. package/dist/cjs/limel-file-viewer.cjs.entry.js.map +1 -1
  28. package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js +1 -1
  29. package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js.map +1 -1
  30. package/dist/cjs/limel-help.cjs.entry.js +1 -1
  31. package/dist/cjs/limel-help.cjs.entry.js.map +1 -1
  32. package/dist/cjs/limel-icon-button.cjs.entry.js +1 -1
  33. package/dist/cjs/limel-icon-button.cjs.entry.js.map +1 -1
  34. package/dist/cjs/limel-info-tile.cjs.entry.js +1 -1
  35. package/dist/cjs/limel-info-tile.cjs.entry.js.map +1 -1
  36. package/dist/cjs/limel-select.cjs.entry.js +1 -1
  37. package/dist/cjs/limel-select.cjs.entry.js.map +1 -1
  38. package/dist/cjs/limel-shortcut.cjs.entry.js +1 -1
  39. package/dist/cjs/limel-shortcut.cjs.entry.js.map +1 -1
  40. package/dist/cjs/limel-split-button.cjs.entry.js +1 -1
  41. package/dist/cjs/limel-split-button.cjs.entry.js.map +1 -1
  42. package/dist/cjs/limel-table.cjs.entry.js +1 -1
  43. package/dist/cjs/limel-table.cjs.entry.js.map +1 -1
  44. package/dist/collection/components/action-bar/action-bar-item/action-bar-item.css +16 -2
  45. package/dist/collection/components/breadcrumbs/breadcrumbs.css +16 -2
  46. package/dist/collection/components/button/button.css +16 -2
  47. package/dist/collection/components/button-group/button-group.css +16 -2
  48. package/dist/collection/components/chip/chip.css +32 -4
  49. package/dist/collection/components/chip-set/chip-set.css +16 -2
  50. package/dist/collection/components/code-editor/code-editor.css +16 -2
  51. package/dist/collection/components/color-picker/color-picker-palette.css +16 -2
  52. package/dist/collection/components/color-picker/color-picker.css +16 -2
  53. package/dist/collection/components/date-picker/flatpickr-adapter/flatpickr-adapter.css +78 -6
  54. package/dist/collection/components/dialog/dialog.css +5 -0
  55. package/dist/collection/components/dialog/dialog.js +1 -5
  56. package/dist/collection/components/dialog/dialog.js.map +1 -1
  57. package/dist/collection/components/dock/dock-button/dock-button.css +16 -2
  58. package/dist/collection/components/dock/dock.css +16 -2
  59. package/dist/collection/components/file-viewer/file-viewer.css +16 -2
  60. package/dist/collection/components/help/help.css +16 -2
  61. package/dist/collection/components/icon-button/icon-button.css +16 -2
  62. package/dist/collection/components/info-tile/info-tile.css +16 -2
  63. package/dist/collection/components/input-field/input-field.css +16 -2
  64. package/dist/collection/components/list/list.css +16 -2
  65. package/dist/collection/components/menu-list/menu-list.css +16 -2
  66. package/dist/collection/components/select/select.css +16 -2
  67. package/dist/collection/components/shortcut/shortcut.css +16 -2
  68. package/dist/collection/components/split-button/split-button.css +16 -2
  69. package/dist/collection/components/table/table.css +16 -2
  70. package/dist/collection/style/color-palette-extended.css +25 -25
  71. package/dist/collection/style/mixins.scss +90 -24
  72. package/dist/collection/style/shadows.scss +59 -175
  73. package/dist/esm/limel-action-bar_4.entry.js +1 -1
  74. package/dist/esm/limel-action-bar_4.entry.js.map +1 -1
  75. package/dist/esm/limel-breadcrumbs_5.entry.js +3 -3
  76. package/dist/esm/limel-breadcrumbs_5.entry.js.map +1 -1
  77. package/dist/esm/limel-button-group.entry.js +1 -1
  78. package/dist/esm/limel-button-group.entry.js.map +1 -1
  79. package/dist/esm/limel-button.entry.js +1 -1
  80. package/dist/esm/limel-button.entry.js.map +1 -1
  81. package/dist/esm/limel-chip_2.entry.js +2 -2
  82. package/dist/esm/limel-chip_2.entry.js.map +1 -1
  83. package/dist/esm/limel-code-editor.entry.js +1 -1
  84. package/dist/esm/limel-code-editor.entry.js.map +1 -1
  85. package/dist/esm/limel-color-picker-palette.entry.js +1 -1
  86. package/dist/esm/limel-color-picker-palette.entry.js.map +1 -1
  87. package/dist/esm/limel-color-picker.entry.js +1 -1
  88. package/dist/esm/limel-color-picker.entry.js.map +1 -1
  89. package/dist/esm/limel-dialog.entry.js +2 -6
  90. package/dist/esm/limel-dialog.entry.js.map +1 -1
  91. package/dist/esm/limel-dock-button.entry.js +1 -1
  92. package/dist/esm/limel-dock-button.entry.js.map +1 -1
  93. package/dist/esm/limel-dock.entry.js +1 -1
  94. package/dist/esm/limel-dock.entry.js.map +1 -1
  95. package/dist/esm/limel-dynamic-label_4.entry.js +1 -1
  96. package/dist/esm/limel-dynamic-label_4.entry.js.map +1 -1
  97. package/dist/esm/limel-file-viewer.entry.js +1 -1
  98. package/dist/esm/limel-file-viewer.entry.js.map +1 -1
  99. package/dist/esm/limel-flatpickr-adapter.entry.js +1 -1
  100. package/dist/esm/limel-flatpickr-adapter.entry.js.map +1 -1
  101. package/dist/esm/limel-help.entry.js +1 -1
  102. package/dist/esm/limel-help.entry.js.map +1 -1
  103. package/dist/esm/limel-icon-button.entry.js +1 -1
  104. package/dist/esm/limel-icon-button.entry.js.map +1 -1
  105. package/dist/esm/limel-info-tile.entry.js +1 -1
  106. package/dist/esm/limel-info-tile.entry.js.map +1 -1
  107. package/dist/esm/limel-select.entry.js +1 -1
  108. package/dist/esm/limel-select.entry.js.map +1 -1
  109. package/dist/esm/limel-shortcut.entry.js +1 -1
  110. package/dist/esm/limel-shortcut.entry.js.map +1 -1
  111. package/dist/esm/limel-split-button.entry.js +1 -1
  112. package/dist/esm/limel-split-button.entry.js.map +1 -1
  113. package/dist/esm/limel-table.entry.js +1 -1
  114. package/dist/esm/limel-table.entry.js.map +1 -1
  115. package/dist/lime-elements/lime-elements.css +42 -49
  116. package/dist/lime-elements/lime-elements.esm.js +1 -1
  117. package/dist/lime-elements/p-09434f79.entry.js +2 -0
  118. package/dist/lime-elements/{p-1367c295.entry.js.map → p-09434f79.entry.js.map} +1 -1
  119. package/dist/lime-elements/p-0af1417f.entry.js +2 -0
  120. package/dist/lime-elements/{p-d9b7a208.entry.js.map → p-0af1417f.entry.js.map} +1 -1
  121. package/dist/lime-elements/p-1a0aaf41.entry.js +2 -0
  122. package/dist/lime-elements/{p-31a0bdac.entry.js.map → p-1a0aaf41.entry.js.map} +1 -1
  123. package/dist/lime-elements/p-211456f2.entry.js +2 -0
  124. package/dist/lime-elements/{p-f60702fd.entry.js.map → p-211456f2.entry.js.map} +1 -1
  125. package/dist/lime-elements/{p-dab818a1.entry.js → p-259c1bef.entry.js} +2 -2
  126. package/dist/lime-elements/{p-dab818a1.entry.js.map → p-259c1bef.entry.js.map} +1 -1
  127. package/dist/lime-elements/{p-11d775ca.entry.js → p-28c76ae8.entry.js} +2 -2
  128. package/dist/lime-elements/{p-11d775ca.entry.js.map → p-28c76ae8.entry.js.map} +1 -1
  129. package/dist/lime-elements/p-32844d2b.entry.js +2 -0
  130. package/dist/lime-elements/{p-7d215789.entry.js.map → p-32844d2b.entry.js.map} +1 -1
  131. package/dist/lime-elements/p-493e2b10.entry.js +2 -0
  132. package/dist/lime-elements/{p-c1cbba2c.entry.js.map → p-493e2b10.entry.js.map} +1 -1
  133. package/dist/lime-elements/{p-02e9b8ce.entry.js → p-4b7ea1b9.entry.js} +2 -2
  134. package/dist/lime-elements/p-4b7ea1b9.entry.js.map +1 -0
  135. package/dist/lime-elements/p-609b34fd.entry.js +2 -0
  136. package/dist/lime-elements/{p-968c49d9.entry.js.map → p-609b34fd.entry.js.map} +1 -1
  137. package/dist/lime-elements/p-6500050d.entry.js +2 -0
  138. package/dist/lime-elements/{p-eb5ff7ca.entry.js.map → p-6500050d.entry.js.map} +1 -1
  139. package/dist/lime-elements/{p-e973fd15.entry.js → p-782aa617.entry.js} +2 -2
  140. package/dist/lime-elements/{p-e973fd15.entry.js.map → p-782aa617.entry.js.map} +1 -1
  141. package/dist/lime-elements/{p-3cd95c9f.entry.js → p-84e87a39.entry.js} +2 -2
  142. package/dist/lime-elements/{p-3cd95c9f.entry.js.map → p-84e87a39.entry.js.map} +1 -1
  143. package/dist/lime-elements/p-8f1b76df.entry.js +2 -0
  144. package/dist/lime-elements/{p-48652dbe.entry.js.map → p-8f1b76df.entry.js.map} +1 -1
  145. package/dist/lime-elements/{p-7a202104.entry.js → p-9c5f2c45.entry.js} +2 -2
  146. package/dist/lime-elements/{p-7a202104.entry.js.map → p-9c5f2c45.entry.js.map} +1 -1
  147. package/dist/lime-elements/{p-497b65ba.entry.js → p-9c92c1db.entry.js} +3 -3
  148. package/dist/lime-elements/{p-497b65ba.entry.js.map → p-9c92c1db.entry.js.map} +1 -1
  149. package/dist/lime-elements/{p-d86f8aea.entry.js → p-9d5436bb.entry.js} +3 -3
  150. package/dist/lime-elements/{p-d86f8aea.entry.js.map → p-9d5436bb.entry.js.map} +1 -1
  151. package/dist/lime-elements/{p-126ed7d5.entry.js → p-b5dba995.entry.js} +2 -2
  152. package/dist/lime-elements/{p-126ed7d5.entry.js.map → p-b5dba995.entry.js.map} +1 -1
  153. package/dist/lime-elements/p-dbac0053.entry.js +2 -0
  154. package/dist/lime-elements/{p-484ecb49.entry.js.map → p-dbac0053.entry.js.map} +1 -1
  155. package/dist/lime-elements/p-f3a613a3.entry.js +2 -0
  156. package/dist/lime-elements/{p-6b2bc81b.entry.js.map → p-f3a613a3.entry.js.map} +1 -1
  157. package/dist/lime-elements/p-fda881a3.entry.js +2 -0
  158. package/dist/lime-elements/{p-5d01dc2a.entry.js.map → p-fda881a3.entry.js.map} +1 -1
  159. package/dist/lime-elements/style/color-palette-extended.css +25 -25
  160. package/dist/lime-elements/style/mixins.scss +90 -24
  161. package/dist/lime-elements/style/shadows.scss +59 -175
  162. package/dist/scss/mixins.scss +90 -24
  163. package/dist/types/components/dialog/dialog.d.ts +0 -1
  164. package/package.json +10 -10
  165. package/dist/lime-elements/p-02e9b8ce.entry.js.map +0 -1
  166. package/dist/lime-elements/p-1367c295.entry.js +0 -2
  167. package/dist/lime-elements/p-31a0bdac.entry.js +0 -2
  168. package/dist/lime-elements/p-484ecb49.entry.js +0 -2
  169. package/dist/lime-elements/p-48652dbe.entry.js +0 -2
  170. package/dist/lime-elements/p-5d01dc2a.entry.js +0 -2
  171. package/dist/lime-elements/p-6b2bc81b.entry.js +0 -2
  172. package/dist/lime-elements/p-7d215789.entry.js +0 -2
  173. package/dist/lime-elements/p-968c49d9.entry.js +0 -2
  174. package/dist/lime-elements/p-c1cbba2c.entry.js +0 -2
  175. package/dist/lime-elements/p-d9b7a208.entry.js +0 -2
  176. package/dist/lime-elements/p-eb5ff7ca.entry.js +0 -2
  177. package/dist/lime-elements/p-f60702fd.entry.js +0 -2
@@ -91,20 +91,34 @@ button {
91
91
  padding: 0 0.25rem;
92
92
  }
93
93
  button:not([disabled]) {
94
- transition: color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, transform 0.1s ease-out;
94
+ transition: color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);
95
95
  cursor: pointer;
96
96
  color: var(--limel-action-bar-item-text-color);
97
97
  background-color: var(--action-bar-background-color);
98
98
  }
99
+ button:not([disabled]):hover, button:not([disabled]):focus, button:not([disabled]):focus-visible {
100
+ will-change: color, background-color, box-shadow, transform;
101
+ }
99
102
  button:not([disabled]):hover {
103
+ transform: translate3d(0, -0.04rem, 0);
100
104
  color: var(--limel-action-bar-item-text-color);
101
105
  background-color: var(--action-bar-background-color);
102
106
  box-shadow: var(--button-shadow-hovered);
103
107
  }
104
108
  button:not([disabled]):active {
109
+ --limel-clickable-transform-timing-function: cubic-bezier(
110
+ 0.83,
111
+ -0.15,
112
+ 0.49,
113
+ 1.16
114
+ );
115
+ transform: translate3d(0, 0.05rem, 0);
105
116
  background-color: var(--action-bar-background-color);
106
117
  box-shadow: var(--button-shadow-inset-pressed);
107
- transform: translate3d(0, 0.05rem, 0);
118
+ }
119
+ button:not([disabled]):hover, button:not([disabled]):active {
120
+ --limel-clickable-transition-speed: 0.2s;
121
+ --limel-clickable-transform-speed: 0.16s;
108
122
  }
109
123
  button:not([disabled]):focus {
110
124
  outline: none;
@@ -164,19 +164,33 @@ a.step:hover:before {
164
164
  }
165
165
 
166
166
  button.step:not(.last) {
167
- transition: color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, transform 0.1s ease-out;
167
+ transition: color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);
168
168
  cursor: pointer;
169
169
  color: var(--limel-breadcrumbs-item-text-color);
170
170
  background-color: transparent;
171
171
  }
172
+ button.step:not(.last):hover, button.step:not(.last):focus, button.step:not(.last):focus-visible {
173
+ will-change: color, background-color, box-shadow, transform;
174
+ }
172
175
  button.step:not(.last):hover {
176
+ transform: translate3d(0, 0.01rem, 0);
173
177
  color: var(--mdc-theme-on-surface);
174
178
  background-color: var(--lime-elevated-surface-background-color);
175
179
  box-shadow: var(--button-shadow-hovered);
176
180
  }
177
181
  button.step:not(.last):active {
182
+ --limel-clickable-transform-timing-function: cubic-bezier(
183
+ 0.83,
184
+ -0.15,
185
+ 0.49,
186
+ 1.16
187
+ );
188
+ transform: translate3d(0, 0.05rem, 0);
178
189
  box-shadow: var(--button-shadow-pressed);
179
- transform: translate3d(0, 0.08rem, 0);
190
+ }
191
+ button.step:not(.last):hover, button.step:not(.last):active {
192
+ --limel-clickable-transition-speed: 0.2s;
193
+ --limel-clickable-transform-speed: 0.16s;
180
194
  }
181
195
 
182
196
  limel-icon {
@@ -161,7 +161,7 @@ button:disabled.outlined {
161
161
  border-color: rgba(var(--contrast-1700), 0.2);
162
162
  }
163
163
  button:not(:disabled) {
164
- transition: color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, transform 0.1s ease-out;
164
+ transition: color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);
165
165
  cursor: pointer;
166
166
  color: var(--mdc-theme-on-surface);
167
167
  background-color: var(--lime-elevated-surface-background-color);
@@ -174,14 +174,28 @@ button:not(:disabled):focus-visible {
174
174
  outline: none;
175
175
  box-shadow: var(--shadow-depth-8-focused);
176
176
  }
177
+ button:not(:disabled):hover, button:not(:disabled):focus, button:not(:disabled):focus-visible {
178
+ will-change: color, background-color, box-shadow, transform;
179
+ }
177
180
  button:not(:disabled):hover {
181
+ transform: translate3d(0, -0.04rem, 0);
178
182
  color: var(--mdc-theme-on-surface);
179
183
  background-color: var(--lime-elevated-surface-background-color);
180
184
  box-shadow: var(--button-shadow-hovered);
181
185
  }
182
186
  button:not(:disabled):active {
187
+ --limel-clickable-transform-timing-function: cubic-bezier(
188
+ 0.83,
189
+ -0.15,
190
+ 0.49,
191
+ 1.16
192
+ );
193
+ transform: translate3d(0, 0.05rem, 0);
183
194
  box-shadow: var(--button-shadow-pressed);
184
- transform: translate3d(0, 0.08rem, 0);
195
+ }
196
+ button:not(:disabled):hover, button:not(:disabled):active {
197
+ --limel-clickable-transition-speed: 0.2s;
198
+ --limel-clickable-transform-speed: 0.16s;
185
199
  }
186
200
  :host(limel-button[primary]) button:not(:disabled) {
187
201
  color: var(--mdc-theme-on-primary, rgb(var(--color-white)));
@@ -744,7 +744,7 @@
744
744
  }
745
745
 
746
746
  .mdc-chip {
747
- transition: color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, transform 0.1s ease-out;
747
+ transition: color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);
748
748
  cursor: pointer;
749
749
  color: var(--mdc-theme-on-surface);
750
750
  background-color: transparent;
@@ -756,15 +756,29 @@
756
756
  margin: 0.125rem !important;
757
757
  font-size: 0.875rem;
758
758
  }
759
+ .mdc-chip:hover, .mdc-chip:focus, .mdc-chip:focus-visible {
760
+ will-change: color, background-color, box-shadow, transform;
761
+ }
759
762
  .mdc-chip:hover {
763
+ transform: translate3d(0, -0.04rem, 0);
760
764
  color: var(--mdc-theme-on-surface);
761
765
  background-color: var(--lime-elevated-surface-background-color);
762
766
  box-shadow: var(--button-shadow-hovered);
763
767
  }
764
768
  .mdc-chip:active {
769
+ --limel-clickable-transform-timing-function: cubic-bezier(
770
+ 0.83,
771
+ -0.15,
772
+ 0.49,
773
+ 1.16
774
+ );
775
+ transform: translate3d(0, 0.05rem, 0);
765
776
  background-color: var(--mdc-theme-surface);
766
777
  box-shadow: var(--button-shadow-inset-pressed);
767
- transform: translate3d(0, 0.05rem, 0);
778
+ }
779
+ .mdc-chip:hover, .mdc-chip:active {
780
+ --limel-clickable-transition-speed: 0.2s;
781
+ --limel-clickable-transform-speed: 0.16s;
768
782
  }
769
783
  .mdc-chip:not(:last-child):after {
770
784
  content: "";
@@ -92,7 +92,7 @@
92
92
  padding-left: 0;
93
93
  }
94
94
  .chip:not([disabled]) {
95
- transition: color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, transform 0.1s ease-out;
95
+ transition: color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);
96
96
  cursor: pointer;
97
97
  color: var(--mdc-theme-on-surface);
98
98
  background-color: var(--lime-elevated-surface-background-color);
@@ -105,15 +105,29 @@
105
105
  outline: none;
106
106
  box-shadow: var(--shadow-depth-8-focused);
107
107
  }
108
+ .chip:not([disabled]):hover, .chip:not([disabled]):focus, .chip:not([disabled]):focus-visible {
109
+ will-change: color, background-color, box-shadow, transform;
110
+ }
108
111
  .chip:not([disabled]):hover {
112
+ transform: translate3d(0, 0.01rem, 0);
109
113
  color: var(--mdc-theme-on-surface);
110
114
  background-color: var(--lime-elevated-surface-background-color);
111
115
  box-shadow: var(--button-shadow-hovered);
112
116
  }
113
117
  .chip:not([disabled]):active {
118
+ --limel-clickable-transform-timing-function: cubic-bezier(
119
+ 0.83,
120
+ -0.15,
121
+ 0.49,
122
+ 1.16
123
+ );
124
+ transform: translate3d(0, 0.05rem, 0);
114
125
  background-color: var(--mdc-theme-surface);
115
126
  box-shadow: var(--button-shadow-inset-pressed);
116
- transform: translate3d(0, 0.05rem, 0);
127
+ }
128
+ .chip:not([disabled]):hover, .chip:not([disabled]):active {
129
+ --limel-clickable-transition-speed: 0.2s;
130
+ --limel-clickable-transform-speed: 0.16s;
117
131
  }
118
132
  .chip:has(limel-badge) {
119
133
  padding-right: 0.375rem;
@@ -216,7 +230,7 @@ limel-badge {
216
230
 
217
231
  .trailing-button {
218
232
  all: unset;
219
- transition: color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, transform 0.1s ease-out;
233
+ transition: color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);
220
234
  cursor: pointer;
221
235
  color: var(--mdc-theme-on-surface);
222
236
  background-color: transparent;
@@ -231,14 +245,28 @@ limel-badge {
231
245
  height: calc(var(--limel-chip-height) - 0.25rem);
232
246
  border-radius: 50%;
233
247
  }
248
+ .trailing-button:hover, .trailing-button:focus, .trailing-button:focus-visible {
249
+ will-change: color, background-color, box-shadow, transform;
250
+ }
234
251
  .trailing-button:hover {
252
+ transform: translate3d(0, 0.01rem, 0);
235
253
  color: var(--mdc-theme-on-surface);
236
254
  background-color: var(--lime-elevated-surface-background-color);
237
255
  box-shadow: var(--button-shadow-hovered);
238
256
  }
239
257
  .trailing-button:active {
258
+ --limel-clickable-transform-timing-function: cubic-bezier(
259
+ 0.83,
260
+ -0.15,
261
+ 0.49,
262
+ 1.16
263
+ );
264
+ transform: translate3d(0, 0.05rem, 0);
240
265
  box-shadow: var(--button-shadow-pressed);
241
- transform: translate3d(0, 0.08rem, 0);
266
+ }
267
+ .trailing-button:hover, .trailing-button:active {
268
+ --limel-clickable-transition-speed: 0.2s;
269
+ --limel-clickable-transform-speed: 0.16s;
242
270
  }
243
271
  .trailing-button svg {
244
272
  transition: color 0.2s ease, transform 0.2s ease;
@@ -2055,7 +2055,7 @@
2055
2055
  }
2056
2056
 
2057
2057
  .clear-all-button {
2058
- transition: color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, transform 0.1s ease-out;
2058
+ transition: color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);
2059
2059
  cursor: pointer;
2060
2060
  color: var(--mdc-theme-on-surface);
2061
2061
  background-color: rgb(var(--contrast-900));
@@ -2072,14 +2072,28 @@
2072
2072
  top: calc(2.5rem / 4);
2073
2073
  opacity: 0;
2074
2074
  }
2075
+ .clear-all-button:hover, .clear-all-button:focus, .clear-all-button:focus-visible {
2076
+ will-change: color, background-color, box-shadow, transform;
2077
+ }
2075
2078
  .clear-all-button:hover {
2079
+ transform: translate3d(0, 0.01rem, 0);
2076
2080
  color: var(--mdc-theme-on-surface);
2077
2081
  background-color: rgb(var(--contrast-1100));
2078
2082
  box-shadow: var(--button-shadow-hovered);
2079
2083
  }
2080
2084
  .clear-all-button:active {
2085
+ --limel-clickable-transform-timing-function: cubic-bezier(
2086
+ 0.83,
2087
+ -0.15,
2088
+ 0.49,
2089
+ 1.16
2090
+ );
2091
+ transform: translate3d(0, 0.05rem, 0);
2081
2092
  box-shadow: var(--button-shadow-pressed);
2082
- transform: translate3d(0, 0.08rem, 0);
2093
+ }
2094
+ .clear-all-button:hover, .clear-all-button:active {
2095
+ --limel-clickable-transition-speed: 0.2s;
2096
+ --limel-clickable-transform-speed: 0.16s;
2083
2097
  }
2084
2098
  .clear-all-button:focus {
2085
2099
  outline: none;
@@ -719,7 +719,7 @@ span.CodeMirror-selectedtext { background: none; }
719
719
  }
720
720
  .cm-s-lime .CodeMirror-foldmarker {
721
721
  position: relative;
722
- transition: color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, transform 0.1s ease-out;
722
+ transition: color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);
723
723
  cursor: pointer;
724
724
  color: transparent;
725
725
  background-color: var(--lime-elevated-surface-background-color);
@@ -732,14 +732,28 @@ span.CodeMirror-selectedtext { background: none; }
732
732
  background-repeat: no-repeat;
733
733
  background-position: center;
734
734
  }
735
+ .cm-s-lime .CodeMirror-foldmarker:hover, .cm-s-lime .CodeMirror-foldmarker:focus, .cm-s-lime .CodeMirror-foldmarker:focus-visible {
736
+ will-change: color, background-color, box-shadow, transform;
737
+ }
735
738
  .cm-s-lime .CodeMirror-foldmarker:hover {
739
+ transform: translate3d(0, -0.04rem, 0);
736
740
  color: var(--mdc-theme-on-surface);
737
741
  background-color: var(--lime-elevated-surface-background-color);
738
742
  box-shadow: var(--button-shadow-hovered);
739
743
  }
740
744
  .cm-s-lime .CodeMirror-foldmarker:active {
745
+ --limel-clickable-transform-timing-function: cubic-bezier(
746
+ 0.83,
747
+ -0.15,
748
+ 0.49,
749
+ 1.16
750
+ );
751
+ transform: translate3d(0, 0.05rem, 0);
741
752
  box-shadow: var(--button-shadow-pressed);
742
- transform: translate3d(0, 0.08rem, 0);
753
+ }
754
+ .cm-s-lime .CodeMirror-foldmarker:hover, .cm-s-lime .CodeMirror-foldmarker:active {
755
+ --limel-clickable-transition-speed: 0.2s;
756
+ --limel-clickable-transform-speed: 0.16s;
743
757
  }
744
758
  .cm-s-lime [class^=CodeMirror-foldgutter] {
745
759
  color: var(--code-editor-neutral-text-color);
@@ -785,20 +785,34 @@
785
785
  .picker-trigger {
786
786
  all: unset;
787
787
  border-radius: 0.5rem;
788
- transition: color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, transform 0.1s ease-out;
788
+ transition: color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);
789
789
  cursor: pointer;
790
790
  color: var(--mdc-theme-on-surface);
791
791
  background-color: var(--lime-elevated-surface-background-color);
792
792
  box-shadow: var(--button-shadow-normal);
793
793
  }
794
+ .picker-trigger:hover, .picker-trigger:focus, .picker-trigger:focus-visible {
795
+ will-change: color, background-color, box-shadow, transform;
796
+ }
794
797
  .picker-trigger:hover {
798
+ transform: translate3d(0, -0.04rem, 0);
795
799
  color: var(--mdc-theme-on-surface);
796
800
  background-color: var(--lime-elevated-surface-background-color);
797
801
  box-shadow: var(--button-shadow-hovered);
798
802
  }
799
803
  .picker-trigger:active {
804
+ --limel-clickable-transform-timing-function: cubic-bezier(
805
+ 0.83,
806
+ -0.15,
807
+ 0.49,
808
+ 1.16
809
+ );
810
+ transform: translate3d(0, 0.05rem, 0);
800
811
  box-shadow: var(--button-shadow-pressed);
801
- transform: translate3d(0, 0.08rem, 0);
812
+ }
813
+ .picker-trigger:hover, .picker-trigger:active {
814
+ --limel-clickable-transition-speed: 0.2s;
815
+ --limel-clickable-transform-speed: 0.16s;
802
816
  }
803
817
  .picker-trigger:focus {
804
818
  outline: none;
@@ -175,20 +175,34 @@
175
175
  .picker-trigger {
176
176
  all: unset;
177
177
  border-radius: 0.5rem;
178
- transition: color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, transform 0.1s ease-out;
178
+ transition: color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);
179
179
  cursor: pointer;
180
180
  color: var(--mdc-theme-on-surface);
181
181
  background-color: var(--lime-elevated-surface-background-color);
182
182
  box-shadow: var(--button-shadow-normal);
183
183
  }
184
+ .picker-trigger:hover, .picker-trigger:focus, .picker-trigger:focus-visible {
185
+ will-change: color, background-color, box-shadow, transform;
186
+ }
184
187
  .picker-trigger:hover {
188
+ transform: translate3d(0, -0.04rem, 0);
185
189
  color: var(--mdc-theme-on-surface);
186
190
  background-color: var(--lime-elevated-surface-background-color);
187
191
  box-shadow: var(--button-shadow-hovered);
188
192
  }
189
193
  .picker-trigger:active {
194
+ --limel-clickable-transform-timing-function: cubic-bezier(
195
+ 0.83,
196
+ -0.15,
197
+ 0.49,
198
+ 1.16
199
+ );
200
+ transform: translate3d(0, 0.05rem, 0);
190
201
  box-shadow: var(--button-shadow-pressed);
191
- transform: translate3d(0, 0.08rem, 0);
202
+ }
203
+ .picker-trigger:hover, .picker-trigger:active {
204
+ --limel-clickable-transition-speed: 0.2s;
205
+ --limel-clickable-transform-speed: 0.16s;
192
206
  }
193
207
  .picker-trigger:focus {
194
208
  outline: none;
@@ -690,19 +690,33 @@ svg {
690
690
  line-height: 2.5rem;
691
691
  }
692
692
  .dayContainer .flatpickr-day {
693
- transition: color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, transform 0.1s ease-out;
693
+ transition: color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);
694
694
  cursor: pointer;
695
695
  color: var(--mdc-theme-on-surface);
696
696
  background-color: transparent;
697
697
  }
698
+ .dayContainer .flatpickr-day:hover, .dayContainer .flatpickr-day:focus, .dayContainer .flatpickr-day:focus-visible {
699
+ will-change: color, background-color, box-shadow, transform;
700
+ }
698
701
  .dayContainer .flatpickr-day:hover {
702
+ transform: translate3d(0, 0.01rem, 0);
699
703
  color: var(--mdc-theme-on-surface);
700
704
  background-color: var(--lime-elevated-surface-background-color);
701
705
  box-shadow: var(--button-shadow-hovered);
702
706
  }
703
707
  .dayContainer .flatpickr-day:active {
708
+ --limel-clickable-transform-timing-function: cubic-bezier(
709
+ 0.83,
710
+ -0.15,
711
+ 0.49,
712
+ 1.16
713
+ );
714
+ transform: translate3d(0, 0.05rem, 0);
704
715
  box-shadow: var(--button-shadow-pressed);
705
- transform: translate3d(0, 0.08rem, 0);
716
+ }
717
+ .dayContainer .flatpickr-day:hover, .dayContainer .flatpickr-day:active {
718
+ --limel-clickable-transition-speed: 0.2s;
719
+ --limel-clickable-transform-speed: 0.16s;
706
720
  }
707
721
  .flatpickr-day:hover {
708
722
  z-index: 1;
@@ -816,17 +830,33 @@ svg {
816
830
  .flatpickr-next-month,
817
831
  .arrowUp,
818
832
  .arrowDown {
819
- transition: color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, transform 0.1s ease-out;
833
+ transition: color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);
820
834
  cursor: pointer;
821
835
  color: var(--mdc-theme-on-surface);
822
836
  background-color: transparent;
823
837
  border-radius: 0.25rem;
824
838
  }
839
+ .flatpickr-monthDropdown-months:hover, .flatpickr-monthDropdown-months:focus, .flatpickr-monthDropdown-months:focus-visible,
840
+ .flatpickr-prev-month:hover,
841
+ .flatpickr-prev-month:focus,
842
+ .flatpickr-prev-month:focus-visible,
843
+ .flatpickr-next-month:hover,
844
+ .flatpickr-next-month:focus,
845
+ .flatpickr-next-month:focus-visible,
846
+ .arrowUp:hover,
847
+ .arrowUp:focus,
848
+ .arrowUp:focus-visible,
849
+ .arrowDown:hover,
850
+ .arrowDown:focus,
851
+ .arrowDown:focus-visible {
852
+ will-change: color, background-color, box-shadow, transform;
853
+ }
825
854
  .flatpickr-monthDropdown-months:hover,
826
855
  .flatpickr-prev-month:hover,
827
856
  .flatpickr-next-month:hover,
828
857
  .arrowUp:hover,
829
858
  .arrowDown:hover {
859
+ transform: translate3d(0, 0.01rem, 0);
830
860
  color: var(--mdc-theme-on-surface);
831
861
  background-color: var(--lime-elevated-surface-background-color);
832
862
  box-shadow: var(--button-shadow-hovered);
@@ -836,8 +866,26 @@ svg {
836
866
  .flatpickr-next-month:active,
837
867
  .arrowUp:active,
838
868
  .arrowDown:active {
869
+ --limel-clickable-transform-timing-function: cubic-bezier(
870
+ 0.83,
871
+ -0.15,
872
+ 0.49,
873
+ 1.16
874
+ );
875
+ transform: translate3d(0, 0.05rem, 0);
839
876
  box-shadow: var(--button-shadow-pressed);
840
- transform: translate3d(0, 0.08rem, 0);
877
+ }
878
+ .flatpickr-monthDropdown-months:hover, .flatpickr-monthDropdown-months:active,
879
+ .flatpickr-prev-month:hover,
880
+ .flatpickr-prev-month:active,
881
+ .flatpickr-next-month:hover,
882
+ .flatpickr-next-month:active,
883
+ .arrowUp:hover,
884
+ .arrowUp:active,
885
+ .arrowDown:hover,
886
+ .arrowDown:active {
887
+ --limel-clickable-transition-speed: 0.2s;
888
+ --limel-clickable-transform-speed: 0.16s;
841
889
  }
842
890
 
843
891
  .arrowUp {
@@ -887,16 +935,26 @@ svg {
887
935
  .datepicker-month,
888
936
  .datepicker-quarter,
889
937
  .datepicker-year {
890
- transition: color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, transform 0.1s ease-out;
938
+ transition: color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);
891
939
  cursor: pointer;
892
940
  color: var(--mdc-theme-on-surface);
893
941
  background-color: transparent;
894
942
  min-width: 0;
895
943
  text-align: center;
896
944
  }
945
+ .datepicker-month:hover, .datepicker-month:focus, .datepicker-month:focus-visible,
946
+ .datepicker-quarter:hover,
947
+ .datepicker-quarter:focus,
948
+ .datepicker-quarter:focus-visible,
949
+ .datepicker-year:hover,
950
+ .datepicker-year:focus,
951
+ .datepicker-year:focus-visible {
952
+ will-change: color, background-color, box-shadow, transform;
953
+ }
897
954
  .datepicker-month:hover,
898
955
  .datepicker-quarter:hover,
899
956
  .datepicker-year:hover {
957
+ transform: translate3d(0, 0.01rem, 0);
900
958
  color: var(--mdc-theme-on-surface);
901
959
  background-color: var(--lime-elevated-surface-background-color);
902
960
  box-shadow: var(--button-shadow-hovered);
@@ -904,8 +962,22 @@ svg {
904
962
  .datepicker-month:active,
905
963
  .datepicker-quarter:active,
906
964
  .datepicker-year:active {
965
+ --limel-clickable-transform-timing-function: cubic-bezier(
966
+ 0.83,
967
+ -0.15,
968
+ 0.49,
969
+ 1.16
970
+ );
971
+ transform: translate3d(0, 0.05rem, 0);
907
972
  box-shadow: var(--button-shadow-pressed);
908
- transform: translate3d(0, 0.08rem, 0);
973
+ }
974
+ .datepicker-month:hover, .datepicker-month:active,
975
+ .datepicker-quarter:hover,
976
+ .datepicker-quarter:active,
977
+ .datepicker-year:hover,
978
+ .datepicker-year:active {
979
+ --limel-clickable-transition-speed: 0.2s;
980
+ --limel-clickable-transform-speed: 0.16s;
909
981
  }
910
982
  .datepicker-month.selected,
911
983
  .datepicker-quarter.selected,
@@ -794,6 +794,11 @@ slot[name=button] {
794
794
  justify-content: flex-end;
795
795
  }
796
796
 
797
+ footer.mdc-dialog__actions {
798
+ min-height: unset;
799
+ padding: 0.375rem;
800
+ }
801
+
797
802
  @media screen and (max-width: 760px) {
798
803
  slot[name=button] {
799
804
  flex-direction: column-reverse;
@@ -35,7 +35,6 @@ import { createRandomString } from '../../util/random-string';
35
35
  */
36
36
  export class Dialog {
37
37
  constructor() {
38
- this.showFooter = true;
39
38
  this.heading = undefined;
40
39
  this.fullscreen = false;
41
40
  this.open = false;
@@ -52,7 +51,6 @@ export class Dialog {
52
51
  }
53
52
  componentWillLoad() {
54
53
  this.id = createRandomString();
55
- this.showFooter = !!this.host.querySelector('[slot="button"]');
56
54
  }
57
55
  componentDidLoad() {
58
56
  this.initialize();
@@ -134,9 +132,7 @@ export class Dialog {
134
132
  return null;
135
133
  }
136
134
  renderFooter() {
137
- if (this.showFooter) {
138
- return (h("footer", { class: "mdc-dialog__actions" }, h("slot", { name: "button" })));
139
- }
135
+ return (h("footer", { class: "mdc-dialog__actions" }, h("slot", { name: "button" })));
140
136
  }
141
137
  setClosingActions() {
142
138
  this.mdcDialog.scrimClickAction = '';
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../../src/components/dialog/dialog.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACH,SAAS,EACT,OAAO,EACP,KAAK,EAEL,CAAC,EACD,IAAI,EACJ,KAAK,GACR,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAMH,MAAM,OAAO,MAAM;EAiDf;IAFQ,eAAU,GAAG,IAAI,CAAC;;sBApCN,KAAK;gBAMX,KAAK;0BAMqB;MACpC,SAAS,EAAE,IAAI;MACf,UAAU,EAAE,IAAI;KACnB;IAwBG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;GAC5D;EAEM,iBAAiB;IACpB,IAAI,CAAC,UAAU,EAAE,CAAC;EACtB,CAAC;EAEM,iBAAiB;IACpB,IAAI,CAAC,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAC/B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;EACnE,CAAC;EAEM,gBAAgB;IACnB,IAAI,CAAC,UAAU,EAAE,CAAC;EACtB,CAAC;EAEO,UAAU;IACd,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAClE,IAAI,CAAC,OAAO,EAAE;MACV,OAAO;KACV;IAED,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,IAAI,CAAC,IAAI,EAAE;MACX,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KACzB;IAED,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAChE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAChE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAElE,IAAI,CAAC,iBAAiB,EAAE,CAAC;EAC7B,CAAC;EAEM,oBAAoB;IACvB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAClE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAClE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACpE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;EAC7B,CAAC;EAEM,MAAM;IACT,OAAO,CACH,WACI,KAAK,EAAE;QACH,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU;OACnC,EACD,IAAI,EAAC,aAAa,gBACP,MAAM,qBACA,qBAAqB,GAAG,IAAI,CAAC,EAAE,sBAC9B,uBAAuB,GAAG,IAAI,CAAC,EAAE;MAEnD,aAAO,MAAM,EAAE,IAAI,EAAE,EAAE,EAAC,gBAAgB,GAAG;MAC3C,WAAK,KAAK,EAAC,uBAAuB;QAC9B,WAAK,KAAK,EAAC,qBAAqB;UAS5B,aAAO,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,qBAAqB,GAAG;UAC/C,IAAI,CAAC,aAAa,EAAE;UACrB,WACI,KAAK,EAAC,qBAAqB,EAC3B,EAAE,EAAE,uBAAuB,GAAG,IAAI,CAAC,EAAE;YAErC,eAAQ,CACN;UACL,IAAI,CAAC,YAAY,EAAE,CAClB,CACJ;MACN,WAAK,KAAK,EAAC,mBAAmB,GAAG,CAC/B,CACT,CAAC;EACN,CAAC;EAGS,YAAY,CAAC,QAAiB,EAAE,QAAiB;IACvD,IAAI,QAAQ,KAAK,QAAQ,EAAE;MACvB,OAAO;KACV;IAED,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;MACjB,OAAO;KACV;IAED,IAAI,QAAQ,EAAE;MACV,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KACzB;SAAM;MACH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;KAC1B;EACL,CAAC;EAGS,qBAAqB,CAC3B,QAAwB,EACxB,QAAwB;IAExB,IAAI,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;MAC7B,OAAO;KACV;IAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;EAC7B,CAAC;EAEO,eAAe;IACnB,uDAAuD;IACvD,mDAAmD;IACnD,sDAAsD;IACtD,mCAAmC;IACnC,MAAM,iBAAiB,GAAG,GAAG,CAAC;IAC9B,UAAU,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;EACvD,CAAC;EAEO,eAAe;IACnB,IAAI,IAAI,CAAC,IAAI,EAAE;MACX,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;KACrB;IAED,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;EACtB,CAAC;EAEO,gBAAgB;IACpB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;EACxB,CAAC;EAEO,cAAc,CAClB,OAA+B;IAE/B,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;EAC5E,CAAC;EAEO,aAAa;IACjB,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;MACnC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;MAE/D,OAAO,CACH,oBACI,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,KAAK,EACd,UAAU,EAAE,QAAQ,EACpB,cAAc,EAAE,cAAc;QAE9B,YAAM,IAAI,EAAC,gBAAgB,EAAC,IAAI,EAAC,SAAS,GAAG,CAClC,CAClB,CAAC;KACL;SAAM,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE;MACzC,OAAO,oBAAc,OAAO,EAAE,IAAI,CAAC,OAAO,GAAiB,CAAC;KAC/D;IAED,OAAO,IAAI,CAAC;EAChB,CAAC;EAEO,YAAY;IAChB,IAAI,IAAI,CAAC,UAAU,EAAE;MACjB,OAAO,CACH,cAAQ,KAAK,EAAC,qBAAqB;QAC/B,YAAM,IAAI,EAAC,QAAQ,GAAG,CACjB,CACZ,CAAC;KACL;EACL,CAAC;EAEO,iBAAiB;IACrB,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,EAAE,CAAC;IACrC,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;MAChC,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,OAAO,CAAC;KAC7C;IAED,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,EAAE,CAAC;IACpC,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;MAC/B,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,OAAO,CAAC;KAC5C;EACL,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACJ","sourcesContent":["import { DialogHeading, ClosingActions } from './dialog.types';\nimport { MDCDialog } from '@material/dialog';\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Prop,\n Watch,\n} from '@stencil/core';\nimport { isEqual } from 'lodash-es';\nimport { dispatchResizeEvent } from '../../util/dispatch-resize-event';\nimport { createRandomString } from '../../util/random-string';\n\n/**\n * :::note\n * Regarding the `close` event: When putting other elements that emit `close`\n * events inside a dialog, those events must be caught and stopped inside the\n * dialog. If not, they will bubble to the event handler listening for `close`\n * events on the dialog, which will close the dialog too.\n *\n * See the example _Nested `close` events_.\n * :::\n *\n * :::important\n * Are you developing for\n * [Lime CRM](https://www.lime-technologies.com/en/lime-crm/)? Please note that\n * you should use the [DialogRenderer](https://lundalogik.github.io/lime-web-components/versions/latest/interfaces/DialogRenderer.html)\n * from Lime Web Components to open dialogs in Lime CRM.\n * :::\n *\n * @exampleComponent limel-example-dialog\n * @exampleComponent limel-example-dialog-nested-close-events\n * @exampleComponent limel-example-dialog-heading\n * @exampleComponent limel-example-dialog-heading-actions\n * @exampleComponent limel-example-dialog-form\n * @exampleComponent limel-example-dialog-size\n * @exampleComponent limel-example-dialog-fullscreen\n * @exampleComponent limel-example-dialog-closing-actions\n * @exampleComponent limel-example-dialog-action-buttons\n * @slot - Content to put inside the dialog\n * @slot header-actions - The dialog header buttons\n * @slot button - The dialog buttons\n */\n@Component({\n tag: 'limel-dialog',\n shadow: true,\n styleUrl: 'dialog.scss',\n})\nexport class Dialog {\n /**\n * The heading for the dialog, if any.\n */\n @Prop()\n public heading: string | DialogHeading;\n\n /**\n * Set to `true` to make the dialog \"fullscreen\".\n */\n @Prop({ reflect: true })\n public fullscreen = false;\n\n /**\n * `true` if the dialog is open, `false` otherwise.\n */\n @Prop({ mutable: true, reflect: true })\n public open = false;\n\n /**\n * Defines which action triggers a close-event.\n */\n @Prop({ reflect: true })\n public closingActions: ClosingActions = {\n escapeKey: true,\n scrimClick: true,\n };\n /**\n * Emitted when the dialog is closed from inside the component.\n * (*Not* emitted when the consumer sets the `open`-property to `false`.)\n */\n @Event()\n private close: EventEmitter<void>;\n\n /**\n * Emitted when the dialog is in the process of being closed.\n */\n @Event()\n private closing: EventEmitter<void>;\n\n @Element()\n private host: HTMLLimelDialogElement;\n\n private mdcDialog: MDCDialog;\n\n private id: string;\n\n private showFooter = true;\n\n constructor() {\n this.handleMdcOpened = this.handleMdcOpened.bind(this);\n this.handleMdcClosed = this.handleMdcClosed.bind(this);\n this.handleMdcClosing = this.handleMdcClosing.bind(this);\n }\n\n public connectedCallback() {\n this.initialize();\n }\n\n public componentWillLoad() {\n this.id = createRandomString();\n this.showFooter = !!this.host.querySelector('[slot=\"button\"]');\n }\n\n public componentDidLoad() {\n this.initialize();\n }\n\n private initialize() {\n const element = this.host.shadowRoot.querySelector('.mdc-dialog');\n if (!element) {\n return;\n }\n\n this.mdcDialog = new MDCDialog(element);\n if (this.open) {\n this.mdcDialog.open();\n }\n\n this.mdcDialog.listen('MDCDialog:opened', this.handleMdcOpened);\n this.mdcDialog.listen('MDCDialog:closed', this.handleMdcClosed);\n this.mdcDialog.listen('MDCDialog:closing', this.handleMdcClosing);\n\n this.setClosingActions();\n }\n\n public disconnectedCallback() {\n this.mdcDialog.unlisten('MDCDialog:opened', this.handleMdcOpened);\n this.mdcDialog.unlisten('MDCDialog:closed', this.handleMdcClosed);\n this.mdcDialog.unlisten('MDCDialog:closing', this.handleMdcClosing);\n this.mdcDialog.destroy();\n }\n\n public render() {\n return (\n <div\n class={{\n 'mdc-dialog': true,\n 'full-screen': !!this.fullscreen,\n }}\n role=\"alertdialog\"\n aria-modal=\"true\"\n aria-labelledby={'limel-dialog-title-' + this.id}\n aria-describedby={'limel-dialog-content-' + this.id}\n >\n <input hidden={true} id=\"initialFocusEl\" />\n <div class=\"mdc-dialog__container\">\n <div class=\"mdc-dialog__surface\">\n {/*\n The `initialFocusElement` below is needed to make\n focus trapping work. At the time of writing, the\n focusable elements inside the slots are not\n detected, so we supply our own hidden element for\n the focus trap to use. Read more here:\n https://github.com/material-components/material-components-web/tree/v11.0.0/packages/mdc-dialog#handling-focus-trapping\n */}\n <input type=\"button\" id=\"initialFocusElement\" />\n {this.renderHeading()}\n <div\n class=\"mdc-dialog__content\"\n id={'limel-dialog-content-' + this.id}\n >\n <slot />\n </div>\n {this.renderFooter()}\n </div>\n </div>\n <div class=\"mdc-dialog__scrim\" />\n </div>\n );\n }\n\n @Watch('open')\n protected watchHandler(newValue: boolean, oldValue: boolean) {\n if (oldValue === newValue) {\n return;\n }\n\n if (!this.mdcDialog) {\n return;\n }\n\n if (newValue) {\n this.mdcDialog.open();\n } else {\n this.mdcDialog.close();\n }\n }\n\n @Watch('closingActions')\n protected closingActionsChanged(\n newValue: ClosingActions,\n oldValue: ClosingActions,\n ) {\n if (isEqual(newValue, oldValue)) {\n return;\n }\n\n this.setClosingActions();\n }\n\n private handleMdcOpened() {\n // When the opening-animation has completed, dispatch a\n // resize-event so that any content that depends on\n // javascript for layout has a chance to update to the\n // final layout of the dialog. /Ads\n const waitForUiToRender = 100;\n setTimeout(dispatchResizeEvent, waitForUiToRender);\n }\n\n private handleMdcClosed() {\n if (this.open) {\n this.close.emit();\n }\n\n this.open = false;\n }\n\n private handleMdcClosing() {\n this.closing.emit();\n }\n\n private isBadgeHeading(\n heading: string | DialogHeading,\n ): heading is DialogHeading {\n return typeof heading === 'object' && !!heading.title && !!heading.icon;\n }\n\n private renderHeading() {\n if (this.isBadgeHeading(this.heading)) {\n const { title, subtitle, supportingText, icon } = this.heading;\n\n return (\n <limel-header\n icon={icon}\n heading={title}\n subheading={subtitle}\n supportingText={supportingText}\n >\n <slot name=\"header-actions\" slot=\"actions\" />\n </limel-header>\n );\n } else if (typeof this.heading === 'string') {\n return <limel-header heading={this.heading}></limel-header>;\n }\n\n return null;\n }\n\n private renderFooter() {\n if (this.showFooter) {\n return (\n <footer class=\"mdc-dialog__actions\">\n <slot name=\"button\" />\n </footer>\n );\n }\n }\n\n private setClosingActions() {\n this.mdcDialog.scrimClickAction = '';\n if (this.closingActions.scrimClick) {\n this.mdcDialog.scrimClickAction = 'close';\n }\n\n this.mdcDialog.escapeKeyAction = '';\n if (this.closingActions.escapeKey) {\n this.mdcDialog.escapeKeyAction = 'close';\n }\n }\n}\n"]}
1
+ {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../../src/components/dialog/dialog.tsx"],"names":[],"mappings":"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","sourcesContent":["import { DialogHeading, ClosingActions } from './dialog.types';\nimport { MDCDialog } from '@material/dialog';\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Prop,\n Watch,\n} from '@stencil/core';\nimport { isEqual } from 'lodash-es';\nimport { dispatchResizeEvent } from '../../util/dispatch-resize-event';\nimport { createRandomString } from '../../util/random-string';\n\n/**\n * :::note\n * Regarding the `close` event: When putting other elements that emit `close`\n * events inside a dialog, those events must be caught and stopped inside the\n * dialog. If not, they will bubble to the event handler listening for `close`\n * events on the dialog, which will close the dialog too.\n *\n * See the example _Nested `close` events_.\n * :::\n *\n * :::important\n * Are you developing for\n * [Lime CRM](https://www.lime-technologies.com/en/lime-crm/)? Please note that\n * you should use the [DialogRenderer](https://lundalogik.github.io/lime-web-components/versions/latest/interfaces/DialogRenderer.html)\n * from Lime Web Components to open dialogs in Lime CRM.\n * :::\n *\n * @exampleComponent limel-example-dialog\n * @exampleComponent limel-example-dialog-nested-close-events\n * @exampleComponent limel-example-dialog-heading\n * @exampleComponent limel-example-dialog-heading-actions\n * @exampleComponent limel-example-dialog-form\n * @exampleComponent limel-example-dialog-size\n * @exampleComponent limel-example-dialog-fullscreen\n * @exampleComponent limel-example-dialog-closing-actions\n * @exampleComponent limel-example-dialog-action-buttons\n * @slot - Content to put inside the dialog\n * @slot header-actions - The dialog header buttons\n * @slot button - The dialog buttons\n */\n@Component({\n tag: 'limel-dialog',\n shadow: true,\n styleUrl: 'dialog.scss',\n})\nexport class Dialog {\n /**\n * The heading for the dialog, if any.\n */\n @Prop()\n public heading: string | DialogHeading;\n\n /**\n * Set to `true` to make the dialog \"fullscreen\".\n */\n @Prop({ reflect: true })\n public fullscreen = false;\n\n /**\n * `true` if the dialog is open, `false` otherwise.\n */\n @Prop({ mutable: true, reflect: true })\n public open = false;\n\n /**\n * Defines which action triggers a close-event.\n */\n @Prop({ reflect: true })\n public closingActions: ClosingActions = {\n escapeKey: true,\n scrimClick: true,\n };\n /**\n * Emitted when the dialog is closed from inside the component.\n * (*Not* emitted when the consumer sets the `open`-property to `false`.)\n */\n @Event()\n private close: EventEmitter<void>;\n\n /**\n * Emitted when the dialog is in the process of being closed.\n */\n @Event()\n private closing: EventEmitter<void>;\n\n @Element()\n private host: HTMLLimelDialogElement;\n\n private mdcDialog: MDCDialog;\n\n private id: string;\n\n constructor() {\n this.handleMdcOpened = this.handleMdcOpened.bind(this);\n this.handleMdcClosed = this.handleMdcClosed.bind(this);\n this.handleMdcClosing = this.handleMdcClosing.bind(this);\n }\n\n public connectedCallback() {\n this.initialize();\n }\n\n public componentWillLoad() {\n this.id = createRandomString();\n }\n\n public componentDidLoad() {\n this.initialize();\n }\n\n private initialize() {\n const element = this.host.shadowRoot.querySelector('.mdc-dialog');\n if (!element) {\n return;\n }\n\n this.mdcDialog = new MDCDialog(element);\n if (this.open) {\n this.mdcDialog.open();\n }\n\n this.mdcDialog.listen('MDCDialog:opened', this.handleMdcOpened);\n this.mdcDialog.listen('MDCDialog:closed', this.handleMdcClosed);\n this.mdcDialog.listen('MDCDialog:closing', this.handleMdcClosing);\n\n this.setClosingActions();\n }\n\n public disconnectedCallback() {\n this.mdcDialog.unlisten('MDCDialog:opened', this.handleMdcOpened);\n this.mdcDialog.unlisten('MDCDialog:closed', this.handleMdcClosed);\n this.mdcDialog.unlisten('MDCDialog:closing', this.handleMdcClosing);\n this.mdcDialog.destroy();\n }\n\n public render() {\n return (\n <div\n class={{\n 'mdc-dialog': true,\n 'full-screen': !!this.fullscreen,\n }}\n role=\"alertdialog\"\n aria-modal=\"true\"\n aria-labelledby={'limel-dialog-title-' + this.id}\n aria-describedby={'limel-dialog-content-' + this.id}\n >\n <input hidden={true} id=\"initialFocusEl\" />\n <div class=\"mdc-dialog__container\">\n <div class=\"mdc-dialog__surface\">\n {/*\n The `initialFocusElement` below is needed to make\n focus trapping work. At the time of writing, the\n focusable elements inside the slots are not\n detected, so we supply our own hidden element for\n the focus trap to use. Read more here:\n https://github.com/material-components/material-components-web/tree/v11.0.0/packages/mdc-dialog#handling-focus-trapping\n */}\n <input type=\"button\" id=\"initialFocusElement\" />\n {this.renderHeading()}\n <div\n class=\"mdc-dialog__content\"\n id={'limel-dialog-content-' + this.id}\n >\n <slot />\n </div>\n {this.renderFooter()}\n </div>\n </div>\n <div class=\"mdc-dialog__scrim\" />\n </div>\n );\n }\n\n @Watch('open')\n protected watchHandler(newValue: boolean, oldValue: boolean) {\n if (oldValue === newValue) {\n return;\n }\n\n if (!this.mdcDialog) {\n return;\n }\n\n if (newValue) {\n this.mdcDialog.open();\n } else {\n this.mdcDialog.close();\n }\n }\n\n @Watch('closingActions')\n protected closingActionsChanged(\n newValue: ClosingActions,\n oldValue: ClosingActions,\n ) {\n if (isEqual(newValue, oldValue)) {\n return;\n }\n\n this.setClosingActions();\n }\n\n private handleMdcOpened() {\n // When the opening-animation has completed, dispatch a\n // resize-event so that any content that depends on\n // javascript for layout has a chance to update to the\n // final layout of the dialog. /Ads\n const waitForUiToRender = 100;\n setTimeout(dispatchResizeEvent, waitForUiToRender);\n }\n\n private handleMdcClosed() {\n if (this.open) {\n this.close.emit();\n }\n\n this.open = false;\n }\n\n private handleMdcClosing() {\n this.closing.emit();\n }\n\n private isBadgeHeading(\n heading: string | DialogHeading,\n ): heading is DialogHeading {\n return typeof heading === 'object' && !!heading.title && !!heading.icon;\n }\n\n private renderHeading() {\n if (this.isBadgeHeading(this.heading)) {\n const { title, subtitle, supportingText, icon } = this.heading;\n\n return (\n <limel-header\n icon={icon}\n heading={title}\n subheading={subtitle}\n supportingText={supportingText}\n >\n <slot name=\"header-actions\" slot=\"actions\" />\n </limel-header>\n );\n } else if (typeof this.heading === 'string') {\n return <limel-header heading={this.heading}></limel-header>;\n }\n\n return null;\n }\n\n private renderFooter() {\n return (\n <footer class=\"mdc-dialog__actions\">\n <slot name=\"button\" />\n </footer>\n );\n }\n\n private setClosingActions() {\n this.mdcDialog.scrimClickAction = '';\n if (this.closingActions.scrimClick) {\n this.mdcDialog.scrimClickAction = 'close';\n }\n\n this.mdcDialog.escapeKeyAction = '';\n if (this.closingActions.escapeKey) {\n this.mdcDialog.escapeKeyAction = 'close';\n }\n }\n}\n"]}