@gravitee/ui-components 3.25.3-typescript-50960c3 → 3.25.3-typescript-9d19b68

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 (183) hide show
  1. package/package.json +5 -13
  2. package/src/atoms/gv-autocomplete.js +422 -1
  3. package/src/atoms/gv-button.js +397 -1
  4. package/src/atoms/gv-checkbox.js +178 -1
  5. package/src/atoms/gv-date-picker-calendar.js +812 -1
  6. package/src/atoms/gv-date-picker-cell.js +174 -1
  7. package/src/atoms/gv-date-picker.js +638 -1
  8. package/src/atoms/gv-file-upload.js +348 -1
  9. package/src/atoms/gv-icon.js +93 -1
  10. package/src/atoms/gv-image.js +135 -1
  11. package/src/atoms/gv-input-message.js +78 -1
  12. package/src/atoms/gv-input.js +508 -1
  13. package/src/atoms/gv-link.js +204 -1
  14. package/src/atoms/gv-message.js +133 -1
  15. package/src/atoms/gv-metric.js +112 -1
  16. package/src/atoms/gv-relative-time.js +143 -1
  17. package/src/atoms/gv-select-native.js +363 -1
  18. package/src/atoms/gv-select.js +413 -1
  19. package/src/atoms/gv-spinner.js +54 -1
  20. package/src/atoms/gv-state.js +125 -1
  21. package/src/atoms/gv-switch.js +235 -1
  22. package/src/atoms/gv-tag.js +162 -1
  23. package/src/atoms/gv-text.js +160 -1
  24. package/src/charts/gv-chart-bar.js +101 -1
  25. package/src/charts/gv-chart-gauge.js +92 -1
  26. package/src/charts/gv-chart-histogram.js +78 -1
  27. package/src/charts/gv-chart-line.js +218 -1
  28. package/src/charts/gv-chart-map.js +111 -1
  29. package/src/charts/gv-chart-pie.js +89 -1
  30. package/src/index.js +77 -1
  31. package/src/lib/cron-expression.js +176 -1
  32. package/src/lib/date.js +43 -1
  33. package/src/lib/events.js +26 -1
  34. package/src/lib/http-client-schema-form.js +67 -1
  35. package/src/lib/http.js +237 -1
  36. package/src/lib/i18n.js +93 -1
  37. package/src/lib/item.js +110 -1
  38. package/src/lib/properties.js +171 -1
  39. package/src/lib/schema-form.js +39 -1
  40. package/src/lib/studio.js +144 -1
  41. package/src/lib/style.js +39 -1
  42. package/src/lib/text-format.js +65 -1
  43. package/src/lib/theme.js +60 -1
  44. package/src/lib/utils.js +106 -1
  45. package/src/mixins/chart-element.js +153 -1
  46. package/src/mixins/input-element.js +136 -1
  47. package/src/mixins/item-resource.js +102 -1
  48. package/src/mixins/keyboard-element.js +62 -1
  49. package/src/mixins/update-after-browser.js +30 -1
  50. package/src/mixins/with-resize-observer.js +62 -1
  51. package/src/mixins/with-skeleton-attribute.js +109 -1
  52. package/src/molecules/gv-card-full.js +209 -1
  53. package/src/molecules/gv-card-list.js +101 -1
  54. package/src/molecules/gv-card.js +130 -1
  55. package/src/molecules/gv-category-list.js +56 -1
  56. package/src/molecules/gv-category.js +163 -1
  57. package/src/molecules/gv-code.js +334 -1
  58. package/src/molecules/gv-confirm.js +175 -1
  59. package/src/molecules/gv-cron-editor.js +685 -1
  60. package/src/molecules/gv-dropdown-menu.js +108 -1
  61. package/src/molecules/gv-expandable.js +116 -1
  62. package/src/molecules/gv-expression-language.js +263 -1
  63. package/src/molecules/gv-identity-picture.js +139 -1
  64. package/src/molecules/gv-list.js +214 -1
  65. package/src/molecules/gv-metrics.js +147 -1
  66. package/src/molecules/gv-modal.js +203 -1
  67. package/src/molecules/gv-nav.js +180 -1
  68. package/src/molecules/gv-option.js +230 -1
  69. package/src/molecules/gv-plans.js +400 -1
  70. package/src/molecules/gv-popover.js +323 -1
  71. package/src/molecules/gv-promote.js +203 -1
  72. package/src/molecules/gv-rating-list.js +341 -1
  73. package/src/molecules/gv-rating.js +234 -1
  74. package/src/molecules/gv-row-expandable.js +42 -1
  75. package/src/molecules/gv-row.js +205 -1
  76. package/src/molecules/gv-stats.js +110 -1
  77. package/src/molecules/gv-stepper.js +274 -1
  78. package/src/molecules/gv-table.js +644 -1
  79. package/src/molecules/gv-tree.js +238 -1
  80. package/src/organisms/gv-documentation.js +205 -1
  81. package/src/organisms/gv-header.js +276 -1
  82. package/src/organisms/gv-http-client.js +258 -1
  83. package/src/organisms/gv-menu.js +258 -1
  84. package/src/organisms/gv-newsletter-subscription.js +258 -1
  85. package/src/organisms/gv-pagination.js +179 -1
  86. package/src/organisms/gv-properties.js +860 -1
  87. package/src/organisms/gv-resizable-views.js +371 -1
  88. package/src/organisms/gv-resources.js +496 -1
  89. package/src/organisms/gv-schema-form-array.js +237 -1
  90. package/src/organisms/gv-schema-form-control-object.js +141 -1
  91. package/src/organisms/gv-schema-form-control.js +419 -1
  92. package/src/organisms/gv-schema-form.js +700 -1
  93. package/src/organisms/gv-tabs.js +201 -1
  94. package/src/organisms/gv-user-menu.js +298 -1
  95. package/src/organisms/gv-vertical-menu.js +119 -1
  96. package/src/policy-studio/gv-flow-step.js +443 -1
  97. package/src/policy-studio/gv-flow.js +595 -1
  98. package/src/policy-studio/gv-policy-studio-menu.js +689 -1
  99. package/src/policy-studio/gv-policy-studio.js +1712 -1
  100. package/src/styles/empty.js +35 -1
  101. package/src/styles/input.js +262 -1
  102. package/src/styles/link.js +31 -1
  103. package/src/styles/shapes.js +17 -1
  104. package/src/styles/skeleton.js +52 -1
  105. package/src/styles/zoom.js +39 -1
  106. package/src/theme/gv-theme.js +197 -1
  107. package/wc/gv-autocomplete.js +1 -1
  108. package/wc/gv-button.js +1 -1
  109. package/wc/gv-card-full.js +1 -1
  110. package/wc/gv-card-list.js +1 -1
  111. package/wc/gv-card.js +1 -1
  112. package/wc/gv-category-list.js +1 -1
  113. package/wc/gv-category.js +1 -1
  114. package/wc/gv-chart-bar.js +1 -1
  115. package/wc/gv-chart-gauge.js +1 -1
  116. package/wc/gv-chart-histogram.js +1 -1
  117. package/wc/gv-chart-line.js +1 -1
  118. package/wc/gv-chart-map.js +1 -1
  119. package/wc/gv-chart-pie.js +1 -1
  120. package/wc/gv-checkbox.js +1 -1
  121. package/wc/gv-code.js +1 -1
  122. package/wc/gv-confirm.js +1 -1
  123. package/wc/gv-cron-editor.js +1 -1
  124. package/wc/gv-date-picker-calendar.js +1 -1
  125. package/wc/gv-date-picker-cell.js +1 -1
  126. package/wc/gv-date-picker.js +1 -1
  127. package/wc/gv-documentation.js +1 -1
  128. package/wc/gv-dropdown-menu.js +1 -1
  129. package/wc/gv-expandable.js +1 -1
  130. package/wc/gv-expression-language.js +1 -1
  131. package/wc/gv-file-upload.js +1 -1
  132. package/wc/gv-flow-step.js +1 -1
  133. package/wc/gv-flow.js +1 -1
  134. package/wc/gv-header.js +1 -1
  135. package/wc/gv-http-client.js +1 -1
  136. package/wc/gv-icon.js +1 -1
  137. package/wc/gv-identity-picture.js +1 -1
  138. package/wc/gv-image.js +1 -1
  139. package/wc/gv-input-message.js +1 -1
  140. package/wc/gv-input.js +1 -1
  141. package/wc/gv-link.js +1 -1
  142. package/wc/gv-list.js +1 -1
  143. package/wc/gv-menu.js +1 -1
  144. package/wc/gv-message.js +1 -1
  145. package/wc/gv-metric.js +1 -1
  146. package/wc/gv-metrics.js +1 -1
  147. package/wc/gv-modal.js +1 -1
  148. package/wc/gv-nav.js +1 -1
  149. package/wc/gv-newsletter-subscription.js +1 -1
  150. package/wc/gv-option.js +1 -1
  151. package/wc/gv-pagination.js +1 -1
  152. package/wc/gv-plans.js +1 -1
  153. package/wc/gv-policy-studio-menu.js +1 -1
  154. package/wc/gv-policy-studio.js +1 -1
  155. package/wc/gv-popover.js +1 -1
  156. package/wc/gv-promote.js +1 -1
  157. package/wc/gv-properties.js +1 -1
  158. package/wc/gv-rating-list.js +1 -1
  159. package/wc/gv-rating.js +1 -1
  160. package/wc/gv-relative-time.js +1 -1
  161. package/wc/gv-resizable-views.js +1 -1
  162. package/wc/gv-resources.js +1 -1
  163. package/wc/gv-row-expandable.js +1 -1
  164. package/wc/gv-row.js +1 -1
  165. package/wc/gv-schema-form-array.js +1 -1
  166. package/wc/gv-schema-form-control-object.js +1 -1
  167. package/wc/gv-schema-form-control.js +1 -1
  168. package/wc/gv-schema-form.js +1 -1
  169. package/wc/gv-select-native.js +1 -1
  170. package/wc/gv-select.js +1 -1
  171. package/wc/gv-spinner.js +1 -1
  172. package/wc/gv-state.js +1 -1
  173. package/wc/gv-stats.js +1 -1
  174. package/wc/gv-stepper.js +1 -1
  175. package/wc/gv-switch.js +1 -1
  176. package/wc/gv-table.js +1 -1
  177. package/wc/gv-tabs.js +1 -1
  178. package/wc/gv-tag.js +1 -1
  179. package/wc/gv-text.js +1 -1
  180. package/wc/gv-theme.js +1 -1
  181. package/wc/gv-tree.js +1 -1
  182. package/wc/gv-user-menu.js +1 -1
  183. package/wc/gv-vertical-menu.js +1 -1
@@ -1 +1,204 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.GvLink=void 0;const e=require("lit"),t=require("../styles/skeleton"),i=require("../styles/link"),n=require("lit/directives/class-map"),r=require("lit/directives/style-map"),a=require("lit/directives/until"),l=require("../lib/events");require("./gv-icon");const c=require("lit/directives/if-defined");class s extends e.LitElement{static get properties(){return{active:{type:Boolean,reflect:!0},icon:{type:String},path:{type:String},title:{type:String},target:{type:String},_title:{type:String,attribute:!1},help:{type:String},skeleton:{type:Boolean},small:{type:Boolean}}}static get styles(){return[i.link,e.css`:host{display:inline-flex;vertical-align:middle;--gv-icon--s:var(--gv-link-icon--s, 24px);--link-active--c:var(--gv-link-active--c, var(--gv-theme-font-color-light, #ffffff));--link--c:var(--gv-link--c, var(--gv-theme-font-color-dark, #262626));--pv:var(--gv-link-a--pv, 15px);--ph:var(--gv-link-a--ph, 15px)}*,:after,:before{box-sizing:border-box}a{opacity:1;padding:var(--pv) var(--ph);color:var(--link--c);background-color:var(--gv-link--bgc,transparent);width:100%;display:inline-flex;align-content:center;text-align:var(--gv-link--ta,center);text-shadow:var(--gv-link--tsh,none);border-color:var(--gv-link--bgc,transparent);border-style:var(--gv-link-active--bds,none);border-width:var(--gv-link-active--bdw,none)}a>*{align-self:center}.active{color:var(--link-active--c);background-color:var(--gv-link-active--bgc,var(--gv-theme-color-dark,#28444f));border-color:var(--gv-link-active--bdc,none)}.link.active:hover{opacity:1}a gv-icon,a span{align-self:center}a span{flex:1;align-self:center;white-space:nowrap;margin:.3rem .5rem;text-decoration:var(--gv-link--td,none);text-overflow:ellipsis;overflow:hidden}a.small span{margin:.3rem 0;width:0;visibility:hidden}.help{margin:0 .2rem;opacity:.5;font-size:var(--gv-theme-font-size-xs,10px)}.help::before{content:'('}.help::after{content:')'}.skeleton{min-width:100px;margin:0 .2rem;opacity:.5}`,t.skeleton]}async _onClick(e){e.preventDefault(),(0,l.dispatchCustomEvent)(this,"click",{active:this.active,icon:this.icon,path:this.path,title:this._title,target:this.target})}set title(e){Promise.resolve(e).then((e=>{this._title=e})).catch((e=>{}))}render(){const t={active:this.active,link:!0,skeleton:this.skeleton,small:this.small},i=this.active?{"--gv-icon--c":"var(--link-active--c)","--gv-icon-opacity--c":"var(--link-active--c)"}:{"--gv-icon--c":"var(--link--c)","--gv-icon-opacity--c":"var(--link--c)"};return e.html`<a @click="${this._onClick}" class="${(0,n.classMap)(t)}" .href="${(0,c.ifDefined)(this.path)}" .target="${(0,c.ifDefined)(this.target)}" ?title="${(0,a.until)(this._title,"")}">${this.icon?e.html`<gv-icon shape="${this.icon}" style="${(0,r.styleMap)(i)}"></gv-icon>`:""} <span>${(0,a.until)(this._title,"")}${this.help?e.html`<span class="help">${(0,a.until)(this.help,"")}</span>`:""}</span></a>`}}exports.GvLink=s,window.customElements.define("gv-link",s);
1
+ /*
2
+ * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { LitElement, html, css } from 'lit';
17
+ import { skeleton } from '../styles/skeleton';
18
+ import { link } from '../styles/link';
19
+ import { classMap } from 'lit/directives/class-map';
20
+ import { styleMap } from 'lit/directives/style-map';
21
+ import { until } from 'lit/directives/until';
22
+ import { dispatchCustomEvent } from '../lib/events';
23
+ import './gv-icon';
24
+ import { ifDefined } from 'lit/directives/if-defined';
25
+ /**
26
+ * A link
27
+ *
28
+ * ## Details
29
+ * * has @theme facet
30
+ *
31
+ * @fires gv-link:click - Custom click event from inner link element
32
+ *
33
+ * @slot - The content of the link (text or HTML)
34
+ *
35
+ * @attr {Boolean} active - set if link is active
36
+ * @attr {String} path - link path
37
+ * @attr {String} title - link title
38
+ * @attr {String} target - link target
39
+ * @attr {String} help - help text left between parentheses
40
+ *
41
+ * @cssprop {Length} [--gv-link-a--pv=15px] - Vertical padding for the inner <a> tag
42
+ * @cssprop {Length} [--gv-link-a--ph=15px] - Horizontal padding for the inner <a> tag
43
+ * @cssprop {Color} [--gv-link--c=var(--gv-theme-font-color-dark, #262626)] - Color
44
+ * @cssprop {Color} [--gv-link-active--c=var(--gv-theme-font-color-light, #ffffff)] - Active color
45
+ * @cssprop {Color} [--gv-link--bgc=transparent] - Background color
46
+ * @cssprop {Color} [--gv-link-active--bgc=var(--gv-theme-color-dark, #28444f)] - Active background color
47
+ * @cssprop {Color} [--gv-link-active--bdc=none] - Active border color
48
+ * @cssprop {String} [--gv-link-active--bds=none] - Active border style
49
+ * @cssprop {Length} [--gv-link-active--bdw=none] - Active border width
50
+ * @cssprop {String} [--gv-link--ta=center] - Text align
51
+ * @cssprop {String} [--gv-link--td=none] - Text decoration
52
+ * @cssprop {String} [--gv-link--tsh=none]- Text shadow
53
+ * @cssprop {Length} [--gv-link-icon--s=24px] - Height and icon width
54
+ */
55
+ export class GvLink extends LitElement {
56
+ static get properties() {
57
+ return {
58
+ active: { type: Boolean, reflect: true },
59
+ icon: { type: String },
60
+ path: { type: String },
61
+ title: { type: String },
62
+ target: { type: String },
63
+ _title: { type: String, attribute: false },
64
+ help: { type: String },
65
+ skeleton: { type: Boolean },
66
+ small: { type: Boolean },
67
+ };
68
+ }
69
+ static get styles() {
70
+ return [
71
+ link,
72
+ // language=css
73
+ css `
74
+ :host {
75
+ display: inline-flex;
76
+ vertical-align: middle;
77
+ --gv-icon--s: var(--gv-link-icon--s, 24px);
78
+ --link-active--c: var(--gv-link-active--c, var(--gv-theme-font-color-light, #ffffff));
79
+ --link--c: var(--gv-link--c, var(--gv-theme-font-color-dark, #262626));
80
+ --pv: var(--gv-link-a--pv, 15px);
81
+ --ph: var(--gv-link-a--ph, 15px);
82
+ }
83
+
84
+ *,
85
+ *:before,
86
+ *:after {
87
+ box-sizing: border-box;
88
+ }
89
+
90
+ a {
91
+ opacity: 1;
92
+ padding: var(--pv) var(--ph);
93
+ color: var(--link--c);
94
+ background-color: var(--gv-link--bgc, transparent);
95
+ width: 100%;
96
+ display: inline-flex;
97
+ align-content: center;
98
+ text-align: var(--gv-link--ta, center);
99
+ text-shadow: var(--gv-link--tsh, none);
100
+ border-color: var(--gv-link--bgc, transparent);
101
+ border-style: var(--gv-link-active--bds, none);
102
+ border-width: var(--gv-link-active--bdw, none);
103
+ }
104
+
105
+ a > * {
106
+ align-self: center;
107
+ }
108
+
109
+ .active {
110
+ color: var(--link-active--c);
111
+ background-color: var(--gv-link-active--bgc, var(--gv-theme-color-dark, #28444f));
112
+ border-color: var(--gv-link-active--bdc, none);
113
+ }
114
+
115
+ .link.active:hover {
116
+ opacity: 1;
117
+ }
118
+
119
+ a span,
120
+ a gv-icon {
121
+ align-self: center;
122
+ }
123
+
124
+ a span {
125
+ flex: 1;
126
+ align-self: center;
127
+ white-space: nowrap;
128
+ margin: 0.3rem 0.5rem;
129
+ text-decoration: var(--gv-link--td, none);
130
+ text-overflow: ellipsis;
131
+ overflow: hidden;
132
+ }
133
+
134
+ a.small span {
135
+ margin: 0.3rem 0;
136
+ width: 0;
137
+ visibility: hidden;
138
+ }
139
+
140
+ .help {
141
+ margin: 0 0.2rem;
142
+ opacity: 0.5;
143
+ font-size: var(--gv-theme-font-size-xs, 10px);
144
+ }
145
+
146
+ .help::before {
147
+ content: '(';
148
+ }
149
+
150
+ .help::after {
151
+ content: ')';
152
+ }
153
+
154
+ .skeleton {
155
+ min-width: 100px;
156
+ margin: 0 0.2rem;
157
+ opacity: 0.5;
158
+ }
159
+ `,
160
+ skeleton,
161
+ ];
162
+ }
163
+ async _onClick(e) {
164
+ e.preventDefault();
165
+ dispatchCustomEvent(this, 'click', {
166
+ active: this.active,
167
+ icon: this.icon,
168
+ path: this.path,
169
+ title: this._title,
170
+ target: this.target,
171
+ });
172
+ }
173
+ set title(value) {
174
+ Promise.resolve(value)
175
+ .then((title) => {
176
+ this._title = title;
177
+ })
178
+ .catch((e) => { });
179
+ }
180
+ render() {
181
+ const classes = {
182
+ active: this.active,
183
+ link: true,
184
+ skeleton: this.skeleton,
185
+ small: this.small,
186
+ };
187
+ const iconStyle = this.active
188
+ ? { '--gv-icon--c': 'var(--link-active--c)', '--gv-icon-opacity--c': 'var(--link-active--c)' }
189
+ : { '--gv-icon--c': 'var(--link--c)', '--gv-icon-opacity--c': 'var(--link--c)' };
190
+ return html `
191
+ <a
192
+ @click=${this._onClick}
193
+ class="${classMap(classes)}"
194
+ .href="${ifDefined(this.path)}"
195
+ .target="${ifDefined(this.target)}"
196
+ ?title="${until(this._title, '')}"
197
+ >
198
+ ${this.icon ? html `<gv-icon shape=${this.icon} style=${styleMap(iconStyle)}></gv-icon>` : ''}
199
+ <span>${until(this._title, '')}${this.help ? html `<span class="help">${until(this.help, '')}</span>` : ''}</span>
200
+ </a>
201
+ `;
202
+ }
203
+ }
204
+ window.customElements.define('gv-link', GvLink);
@@ -1 +1,133 @@
1
- var e=function(e,t,o,r){var s,i=arguments.length,c=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,o):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)c=Reflect.decorate(e,t,o,r);else for(var l=e.length-1;l>=0;l--)(s=e[l])&&(c=(i<3?s(c):i>3?s(t,o,c):s(t,o))||c);return i>3&&c&&Object.defineProperty(t,o,c),c};Object.defineProperty(exports,"__esModule",{value:!0}),exports.GvMessage=void 0;const t=require("lit/directives/class-map"),o=require("lit"),r=require("lit/decorators.js"),s=require("../lib/events");require("./gv-icon");let i=class extends o.LitElement{constructor(){super(...arguments),this._close=!1,this.closable=!1,this.type=""}_onClick(){this._close=!0,setTimeout((()=>{(0,s.dispatchCustomEvent)(this,"close")}),250)}render(){const e={box:!0,simple:!this.type||"info"!==this.type&&"success"!==this.type&&"error"!==this.type&&"warning"!==this.type,info:"info"===this.type,warning:"warning"===this.type,success:"success"===this.type,error:"error"===this.type,close:this._close};return o.html`<div class="${(0,t.classMap)(e)}"><div class="content"><slot></slot></div>${this.closable?o.html`<gv-icon shape="general:close" @click="${this._onClick}"></gv-icon>`:""}</div>`}};i.styles=o.css`:host{display:block;vertical-align:middle}.box{display:flex;align-items:center;font-style:normal;font-weight:400;line-height:normal;padding:12px 0;text-align:center;width:100%}.info{background-color:var(--gv-theme-color-info-light,#64b5f6)}.success{background-color:var(--gv-theme-color-success-light,#81c784)}.warning{background-color:var(--gv-theme-color-warning-light,#ffb74d)}.error{background-color:var(--gv-theme-color-error-light,#e57373)}.close{transition:opacity 250ms ease-in-out;opacity:0}gv-icon{--gv-icon--s:24px;margin-right:12px}gv-icon:hover{cursor:pointer}.content{flex:1 1 auto;margin-left:12px}`,e([(0,r.property)()],i.prototype,"closable",void 0),e([(0,r.property)()],i.prototype,"type",void 0),i=e([(0,r.customElement)("gv-message")],i),exports.GvMessage=i;
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ /*
8
+ * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
9
+ *
10
+ * Licensed under the Apache License, Version 2.0 (the "License");
11
+ * you may not use this file except in compliance with the License.
12
+ * You may obtain a copy of the License at
13
+ *
14
+ * http://www.apache.org/licenses/LICENSE-2.0
15
+ *
16
+ * Unless required by applicable law or agreed to in writing, software
17
+ * distributed under the License is distributed on an "AS IS" BASIS,
18
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
+ * See the License for the specific language governing permissions and
20
+ * limitations under the License.
21
+ */
22
+ import { classMap } from 'lit/directives/class-map';
23
+ import { LitElement, html, css } from 'lit';
24
+ import { customElement, property } from 'lit/decorators.js';
25
+ import { dispatchCustomEvent } from '../lib/events';
26
+ import './gv-icon';
27
+ /**
28
+ * Message component
29
+ *
30
+ * ## Details
31
+ * * has @theme facet
32
+ *
33
+ * @fires gv-message:close - Click event from inner button element
34
+ *
35
+ * @slot - The content of the button (text or HTML)
36
+ *
37
+ * @attr {String} type - type of the message. Can be default, success, error, warning or info.
38
+ * @attr {boolean} closable - determines if the message can be hidden.
39
+ */
40
+ let GvMessage = class GvMessage extends LitElement {
41
+ constructor() {
42
+ super(...arguments);
43
+ this._close = false;
44
+ this.closable = false;
45
+ this.type = '';
46
+ }
47
+ _onClick() {
48
+ this._close = true;
49
+ setTimeout(() => {
50
+ dispatchCustomEvent(this, 'close');
51
+ }, 250);
52
+ }
53
+ render() {
54
+ const modes = {
55
+ box: true,
56
+ simple: !this.type || (this.type !== 'info' && this.type !== 'success' && this.type !== 'error' && this.type !== 'warning'),
57
+ info: this.type === 'info',
58
+ warning: this.type === 'warning',
59
+ success: this.type === 'success',
60
+ error: this.type === 'error',
61
+ close: this._close,
62
+ };
63
+ return html `
64
+ <div class=${classMap(modes)}>
65
+ <div class="content">
66
+ <slot></slot>
67
+ </div>
68
+ ${this.closable ? html `<gv-icon shape="general:close" @click="${this._onClick}"></gv-icon>` : ''}
69
+ </div>
70
+ `;
71
+ }
72
+ };
73
+ GvMessage.styles = css `
74
+ :host {
75
+ display: block;
76
+ vertical-align: middle;
77
+ }
78
+
79
+ .box {
80
+ display: flex;
81
+ align-items: center;
82
+ font-style: normal;
83
+ font-weight: normal;
84
+ line-height: normal;
85
+ padding: 12px 0px;
86
+ text-align: center;
87
+ width: 100%;
88
+ }
89
+
90
+ .info {
91
+ background-color: var(--gv-theme-color-info-light, #64b5f6);
92
+ }
93
+
94
+ .success {
95
+ background-color: var(--gv-theme-color-success-light, #81c784);
96
+ }
97
+
98
+ .warning {
99
+ background-color: var(--gv-theme-color-warning-light, #ffb74d);
100
+ }
101
+
102
+ .error {
103
+ background-color: var(--gv-theme-color-error-light, #e57373);
104
+ }
105
+
106
+ .close {
107
+ transition: opacity 250ms ease-in-out;
108
+ opacity: 0;
109
+ }
110
+
111
+ gv-icon {
112
+ --gv-icon--s: 24px;
113
+ margin-right: 12px;
114
+ }
115
+
116
+ gv-icon:hover {
117
+ cursor: pointer;
118
+ }
119
+ .content {
120
+ flex: 1 1 auto;
121
+ margin-left: 12px;
122
+ }
123
+ `;
124
+ __decorate([
125
+ property()
126
+ ], GvMessage.prototype, "closable", void 0);
127
+ __decorate([
128
+ property()
129
+ ], GvMessage.prototype, "type", void 0);
130
+ GvMessage = __decorate([
131
+ customElement('gv-message')
132
+ ], GvMessage);
133
+ export { GvMessage };
@@ -1 +1,112 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.GvMetric=void 0;const e=require("lit/directives/class-map"),i=require("lit"),t=require("../styles/skeleton");require("./gv-icon");class s extends i.LitElement{static get properties(){return{icon:{type:String},name:{type:String},value:{type:String},skeleton:{type:Boolean}}}static get styles(){return[i.css`:host{box-sizing:border-box}.metric{--gv-icon--s:var(--gv-metric-icon--s, 24px);--gv-icon--c:var(--gv-metric--c, var(--gv-theme-color, #5a7684));min-width:75px;height:100%;width:100%;display:flex;flex-direction:row}.icon{align-self:center;margin-right:4px}div{display:block}.metric-data{display:flex;flex-direction:column;justify-content:flex-end}.metric-value{font-size:var(--gv-theme-font-size-m,14px);line-height:var(--gv-theme-font-size-m,14px)}.metric-name{font-size:var(--gv-theme-font-size-xs,10px);line-height:var(--gv-theme-font-size-xs,10px);opacity:.5}`,t.skeleton]}render(){const t={skeleton:this.skeleton,metric:!0};return i.html`<div class="${(0,e.classMap)(t)}">${this.value?i.html`<div class="icon"><gv-icon shape="${this.icon}"></gv-icon></div><div class="metric-data"><div class="metric-value">${this.value}</div><div class="metric-name">${this.name}</div></div>`:""}</div>`}}exports.GvMetric=s,window.customElements.define("gv-metric",s);
1
+ /*
2
+ * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { classMap } from 'lit/directives/class-map';
17
+ import { LitElement, html, css } from 'lit';
18
+ import { skeleton } from '../styles/skeleton';
19
+ import './gv-icon';
20
+ /**
21
+ * A Metric
22
+ *
23
+ * ## Details
24
+ * * has @theme facet
25
+ *
26
+ * @attr {String} icon - name of shape
27
+ * @attr {String} name - the name of the metric
28
+ * @attr {String} value - the value of the metric
29
+ * @attr {Boolean} skeleton - enable skeleton screen UI pattern (loading hint)
30
+ *
31
+ * @cssprop {Color} [--gv-metric--c=var(--gv-theme-color, #5a7684)] - Color
32
+ * @cssprop {Length} [--gv-metric-icon--s=24px] - Height and icon width
33
+ */
34
+ export class GvMetric extends LitElement {
35
+ static get properties() {
36
+ return {
37
+ icon: { type: String },
38
+ name: { type: String },
39
+ value: { type: String },
40
+ skeleton: { type: Boolean },
41
+ };
42
+ }
43
+ static get styles() {
44
+ return [
45
+ // language=CSS
46
+ css `
47
+ :host {
48
+ box-sizing: border-box;
49
+ }
50
+
51
+ .metric {
52
+ --gv-icon--s: var(--gv-metric-icon--s, 24px);
53
+ --gv-icon--c: var(--gv-metric--c, var(--gv-theme-color, #5a7684));
54
+ min-width: 75px;
55
+ height: 100%;
56
+ width: 100%;
57
+ display: flex;
58
+ flex-direction: row;
59
+ }
60
+
61
+ .icon {
62
+ align-self: center;
63
+ margin-right: 4px;
64
+ }
65
+
66
+ div {
67
+ display: block;
68
+ }
69
+
70
+ .metric-data {
71
+ display: flex;
72
+ flex-direction: column;
73
+ justify-content: flex-end;
74
+ }
75
+
76
+ .metric-value {
77
+ font-size: var(--gv-theme-font-size-m, 14px);
78
+ line-height: var(--gv-theme-font-size-m, 14px);
79
+ }
80
+
81
+ .metric-name {
82
+ font-size: var(--gv-theme-font-size-xs, 10px);
83
+ line-height: var(--gv-theme-font-size-xs, 10px);
84
+ opacity: 0.5;
85
+ }
86
+ `,
87
+ skeleton,
88
+ ];
89
+ }
90
+ render() {
91
+ const modes = {
92
+ skeleton: this.skeleton,
93
+ metric: true,
94
+ };
95
+ return html `
96
+ <div class=${classMap(modes)}>
97
+ ${this.value
98
+ ? html `
99
+ <div class="icon">
100
+ <gv-icon shape="${this.icon}"></gv-icon>
101
+ </div>
102
+ <div class="metric-data">
103
+ <div class="metric-value">${this.value}</div>
104
+ <div class="metric-name">${this.name}</div>
105
+ </div>
106
+ `
107
+ : ''}
108
+ </div>
109
+ `;
110
+ }
111
+ }
112
+ window.customElements.define('gv-metric', GvMetric);
@@ -1 +1,143 @@
1
- var e=Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]},t=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t},r=function(r){if(r&&r.__esModule)return r;var i={};if(null!=r)for(var n in r)"default"!==n&&Object.prototype.hasOwnProperty.call(r,n)&&e(i,r,n);return t(i,r),i};Object.defineProperty(exports,"__esModule",{value:!0}),exports.GvRelativeTime=void 0;const i=require("../lib/i18n"),n=require("lit"),a=require("lit/directives/until"),o=require("@formatjs/intl-relativetimeformat/should-polyfill"),l={year:"numeric",month:"short",day:"numeric",hour:"numeric",minute:"numeric",timeZoneName:"short"},u=[{unit:"year",duration:315576e5},{unit:"month",duration:26298e5},{unit:"week",duration:6048e5},{unit:"day",duration:864e5},{unit:"hour",duration:36e5},{unit:"minute",duration:6e4},{unit:"second",duration:1e3}];class s extends n.LitElement{static get properties(){return{datetime:{type:String},title:{type:String,reflect:!0},noFuture:{type:Boolean},_relativeTime:{type:String,attribute:!1},_updateIntervalId:{type:String,attribute:!1}}}constructor(){super(),this._formatter=null}async getFormatter(){return null==this._formatter?(0,o.shouldPolyfill)()?Promise.resolve().then((()=>r(require("@formatjs/intl-locale/polyfill")))).then((()=>Promise.resolve().then((()=>r(require("@formatjs/intl-relativetimeformat/polyfill")))))).then((()=>Promise.all([...Object.values((0,i.getAvailableLanguages)()).map((e=>Promise.resolve().then((()=>r(require(`@formatjs/intl-relativetimeformat/locale-data/${e}`))))))]))).then((()=>(this._formatter=Intl.RelativeTimeFormat,this._formatter))).catch((e=>{throw console.error(e),new Error("Cannot load @formatjs/intl polyfills")})):(this._formatter=Intl.RelativeTimeFormat,this._formatter):this._formatter}set datetime(e){e=this.noFuture?this._formatDateInThePast(e):e;const t=new Intl.DateTimeFormat((0,i.getLanguage)(),l);this.title=t.format(new Date(e)),this._datetime=e}_formatDateInThePast(e){if(e){const t=new Date;t.getTime()<new Date(e).getTime()&&(e=t)}return e}async _format(e,t){const r=await this.getFormatter(),i=(e,i)=>{if(!isNaN(e))return new r(t,{numeric:"auto"}).format(-e,i)},n=(new Date).getTime()-new Date(e).getTime();for(const{unit:e,duration:t}of u){const r=n/t,a=Math.round(r);if(Math.abs(r)>=1)return i(a,e)}return i(Math.round(n/1e3),"second")}connectedCallback(){super.connectedCallback(),null==this.updateIntervalId&&(setTimeout((()=>{this.performUpdate()})),this.updateIntervalId=setInterval((()=>{this.performUpdate()}),1e4))}disconnectedCallback(){super.disconnectedCallback(),clearInterval(this.updateIntervalId),this.updateIntervalId=null}render(){return n.html`<span title="${this.title}">${(0,a.until)(this._format(this._datetime,(0,i.getLanguage)()))}</span>`}}exports.GvRelativeTime=s,window.customElements.define("gv-relative-time",s);
1
+ /*
2
+ * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { getLanguage, getAvailableLanguages } from '../lib/i18n';
17
+ import { LitElement, html } from 'lit';
18
+ import { until } from 'lit/directives/until';
19
+ import { shouldPolyfill as shouldPolyfillIntlRelativeTimeFormat } from '@formatjs/intl-relativetimeformat/should-polyfill';
20
+ const options = {
21
+ year: 'numeric',
22
+ month: 'short',
23
+ day: 'numeric',
24
+ hour: 'numeric',
25
+ minute: 'numeric',
26
+ timeZoneName: 'short',
27
+ };
28
+ const UNITS = [
29
+ { unit: 'year', duration: 1000 * 60 * 60 * 24 * 365.25 },
30
+ { unit: 'month', duration: 1000 * 60 * 60 * 24 * (365.25 / 12) },
31
+ { unit: 'week', duration: 1000 * 60 * 60 * 24 * 7 },
32
+ { unit: 'day', duration: 1000 * 60 * 60 * 24 },
33
+ { unit: 'hour', duration: 1000 * 60 * 60 },
34
+ { unit: 'minute', duration: 1000 * 60 },
35
+ { unit: 'second', duration: 1000 },
36
+ ];
37
+ /**
38
+ * Component to display a localized humanized relative date (ex: "two minutes ago").
39
+ *
40
+ * ## Details
41
+ * * has @theme facet
42
+ *
43
+ * @prop {String|Number} datetime - Date as ISO string or timestamp.
44
+ * @prop {Boolean} noFuture - Whether a date in future is allowed or not (useful when not sync).
45
+ */
46
+ export class GvRelativeTime extends LitElement {
47
+ static get properties() {
48
+ return {
49
+ datetime: { type: String },
50
+ title: { type: String, reflect: true },
51
+ noFuture: { type: Boolean },
52
+ _relativeTime: { type: String, attribute: false },
53
+ _updateIntervalId: { type: String, attribute: false },
54
+ };
55
+ }
56
+ constructor() {
57
+ super();
58
+ this._formatter = null;
59
+ }
60
+ async getFormatter() {
61
+ if (this._formatter == null) {
62
+ if (!shouldPolyfillIntlRelativeTimeFormat()) {
63
+ this._formatter = Intl.RelativeTimeFormat;
64
+ return this._formatter;
65
+ }
66
+ else {
67
+ // Load the needed polyfills 1st BEFORE loading data
68
+ return import('@formatjs/intl-locale/polyfill')
69
+ .then(() => import('@formatjs/intl-relativetimeformat/polyfill'))
70
+ .then(() => Promise.all([
71
+ ...Object.values(getAvailableLanguages()).map((_lang) => {
72
+ return import(`@formatjs/intl-relativetimeformat/locale-data/${_lang}`);
73
+ }),
74
+ ]))
75
+ .then(() => {
76
+ this._formatter = Intl.RelativeTimeFormat;
77
+ return this._formatter;
78
+ })
79
+ .catch((err) => {
80
+ console.error(err);
81
+ throw new Error('Cannot load @formatjs/intl polyfills');
82
+ });
83
+ }
84
+ }
85
+ else {
86
+ return this._formatter;
87
+ }
88
+ }
89
+ set datetime(value) {
90
+ value = this.noFuture ? this._formatDateInThePast(value) : value;
91
+ const dtf = new Intl.DateTimeFormat(getLanguage(), options);
92
+ this.title = dtf.format(new Date(value));
93
+ this._datetime = value;
94
+ }
95
+ _formatDateInThePast(date) {
96
+ // to avoid to have date in the future in case of desynchronization between browser and server
97
+ if (date) {
98
+ const now = new Date();
99
+ if (now.getTime() < new Date(date).getTime()) {
100
+ date = now;
101
+ }
102
+ }
103
+ return date;
104
+ }
105
+ async _format(dateStr, lang) {
106
+ const Formatter = await this.getFormatter();
107
+ const format = (value, unit) => {
108
+ if (!isNaN(value)) {
109
+ return new Formatter(lang, { numeric: 'auto' }).format(-value, unit);
110
+ }
111
+ };
112
+ const now = new Date().getTime();
113
+ const diff = now - new Date(dateStr).getTime();
114
+ for (const { unit, duration } of UNITS) {
115
+ const value = diff / duration;
116
+ const roundedValue = Math.round(value);
117
+ if (Math.abs(value) >= 1) {
118
+ return format(roundedValue, unit);
119
+ }
120
+ }
121
+ return format(Math.round(diff / 1000), 'second');
122
+ }
123
+ connectedCallback() {
124
+ super.connectedCallback();
125
+ if (this.updateIntervalId == null) {
126
+ setTimeout(() => {
127
+ this.performUpdate();
128
+ });
129
+ this.updateIntervalId = setInterval(() => {
130
+ this.performUpdate();
131
+ }, 10 * 1000);
132
+ }
133
+ }
134
+ disconnectedCallback() {
135
+ super.disconnectedCallback();
136
+ clearInterval(this.updateIntervalId);
137
+ this.updateIntervalId = null;
138
+ }
139
+ render() {
140
+ return html `<span title="${this.title}">${until(this._format(this._datetime, getLanguage()))}</span>`;
141
+ }
142
+ }
143
+ window.customElements.define('gv-relative-time', GvRelativeTime);