@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,276 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.GvHeader=void 0;const e=require("lit");require("../atoms/gv-button"),require("../atoms/gv-tag");const t=require("../lib/i18n"),i=require("../lib/utils"),r=require("lit/directives/repeat"),s=require("lit/directives/until"),n=require("../lib/events"),a=require("lit/directives/class-map"),l=require("../mixins/with-resize-observer"),o=require("../mixins/item-resource"),c=require("../lib/item"),h=require("lit/directives/style-map");class v extends((0,l.withResizeObserver)((0,o.ItemResource)(e.LitElement))){static get properties(){return{breadcrumbs:{type:Array},sticky:{type:Boolean,reflect:!0},_breadcrumbs:{type:Array,attribute:!1},canSubscribe:{type:Boolean,attribute:"can-subscribe"}}}static get styles(){return[...super.styles,e.css`:host{--img-w:120px;--img-h:120px;--gv-button--fz:var(--gv-header-button--fz, var(--gv-theme-font-size-l, 16px));--gv-button--p:var(--gv-header-button--p, 10px 24px);--gv-link--bgc:transparent;--gv-link-active-bgc:transparent;--c:var(--gv-header--c, var(--gv-theme-font-color-dark, #262626));--gv-link--c:var(--c);--gv-link-active--c:var(--c);--gv-link-a--ph:5px;--gv-link--td:underline;--bgc:var(--gv-header--bgc, var(--gv-theme-color-light, #86c3d0));box-sizing:border-box;display:block}:host([w-lt-768]){--img--w:calc(var(--img-w) / 2);--img--h:calc(var(--img-h) / 2);--gv-button--fz:var(--gv-theme-font-size-s, 12px);font-size:var(--gv-theme-font-size-s,12px)}:host([w-lt-580]){--gv-button--p:3px 9px;--gv-link-a--ph:0px}:host([w-lt-580]) .actions{display:flex;flex-direction:column}:host([w-lt-580]) .version{font-size:var(--gv-theme-font-size-s,12px);line-height:var(--gv-theme-font-size-s,12px)}:host([w-lt-580]) .image gv-image{top:-5px}:host([w-lt-580]) h1{font-size:calc(var(--gv-theme-font-size-xl,26px) - 4px);line-height:calc(var(--gv-theme-font-size-xl,26px) - 4px)}:host([w-lt-400]) h1{font-size:calc(var(--gv-theme-font-size-xl,26px) - 8px)}.header{display:flex;background-color:var(--bgc);flex-direction:row;color:var(--c);transition:all 350ms ease-in-out;padding:.5rem var(--gv-theme-layout--pr,4rem) .5rem var(--gv-theme-layout--pl,4rem);position:relative}.title{flex:1;margin:.5rem 0 .5rem var(--img-w);padding-left:2rem}:host([sticky]) .title{margin-left:calc(var(--img-w)/ 2);transition:all 250ms ease-in-out}.actions,.title{align-self:flex-end}gv-link:last-child{--gv-link--td:none}gv-link::after{content:'>';color:var(--gv-theme-font-color-dark,#262626);align-self:center}gv-link:last-child::after{content:''}.error{text-align:center;margin-right:125px}.version{letter-spacing:.05em;opacity:.5;font-size:var(--gv-theme-font-size-l,16px);line-height:var(--gv-theme-font-size-l,16px);font-weight:500}gv-identity-picture{height:var(--img-h);width:var(--img-w);position:absolute;--gv-image--of:contain;transition:all 150ms ease-in-out}:host([sticky]) gv-identity-picture{height:calc(var(--img-h)/ 2);width:calc(var(--img-w)/ 2);transition:all 150ms ease;top:20%}h1{margin:0;font-size:var(--gv-theme-font-size-xl,26px);font-weight:500;line-height:var(--gv-theme-font-size-xl,26px);letter-spacing:.05em}h1 span{opacity:.5;font-size:var(--gv-theme-font-size-l,16px)}.skeleton .error,.skeleton gv-button{visibility:hidden}`]}constructor(){super(),this.breakpoints={width:[400,580,768]},this._breadcrumbs=[],this.canSubscribe=!1}set breadcrumbs(e){e?Promise.resolve(e).then((e=>{e?Promise.all(e).then((e=>{(0,i.isSameRoutes)(this._breadcrumbs,e)||(this._breadcrumbs=e.filter((e=>null!=e)))})):this._breadcrumbs=null})):this._breadcrumbs=null}_getLink(t,i){return Promise.resolve(t).then((t=>{const r=i===this._breadcrumbs.length-1?(0,c.getTitle)(this._item):t.title;return e.html`<gv-link @gv-link:click="${this._onClick}" .active="${t.active}" .icon="${t.icon}" .path="${t.path}" .title="${r}" .help="${(0,s.until)(t.help,null)}"></gv-link>`})).catch((()=>{delete this._routes[i]}))}_renderBreadcrumbs(){return e.html`<nav>${(0,r.repeat)(this._breadcrumbs,(e=>e),((t,i)=>(0,s.until)(this._getLink(t,i),e.html`<gv-link skeleton></gv-link>`)))}</nav>`}_onSubscribe(e){e.stopPropagation(),(0,n.dispatchCustomEvent)(this,"subscribe",this._item)}render(){const i=(0,c.getNbApisInView)(this._item);return e.html`<div class="${(0,a.classMap)({header:!0,skeleton:this._skeleton})}" style="${(0,h.styleMap)({background:'url("'+(0,c.getBackground)(this._item)+'") var(--bgc) center center no-repeat'})}">${this._renderImage()}<div class="title">${this._error||this._empty||this.sticky?"":e.html`<div class="version">${(0,c.getVersion)(this._item)}</div>`} ${this._error||this._empty?e.html`<div class="error">${this._error?(0,t.i18n)("gv-header.error"):(0,t.i18n)("gv-header.empty")}</div>`:e.html`<h1>${(0,c.getTitle)(this._item)} ${null!==i?e.html`<span>(${i})</span>`:""}</h1>`}</div>${this._error||this._empty||!this.canSubscribe?"":e.html`<div class="actions"><gv-button primary @click="${this._onSubscribe}">${(0,t.i18n)("gv-header.subscribe")}</gv-button></div>`}</div>`}}exports.GvHeader=v,window.customElements.define("gv-header",v);
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 { css, html, LitElement } from 'lit';
17
+ import '../atoms/gv-button';
18
+ import '../atoms/gv-tag';
19
+ import { i18n } from '../lib/i18n';
20
+ import { isSameRoutes } from '../lib/utils';
21
+ import { repeat } from 'lit/directives/repeat';
22
+ import { until } from 'lit/directives/until';
23
+ import { dispatchCustomEvent } from '../lib/events';
24
+ import { classMap } from 'lit/directives/class-map';
25
+ import { withResizeObserver } from '../mixins/with-resize-observer';
26
+ import { ItemResource } from '../mixins/item-resource';
27
+ import { getNbApisInView, getBackground, getTitle, getVersion } from '../lib/item';
28
+ import { styleMap } from 'lit/directives/style-map';
29
+ /**
30
+ * Header component
31
+ *
32
+ * ## Details
33
+ * * has @theme facet
34
+ *
35
+ * @attr {Promise<any>} item - An item
36
+ * @attr {Promise<Array<{ path: String, title: String }>>} breadcrumbs - definition of routes in order
37
+ * @attr {Boolean} canSubscribe - for display actions (default: false)
38
+ *
39
+ * @cssprop {Color} [--gv-header--bgc=var(--gv-theme-color-light, #86c3d0)] - Background color.
40
+ * @cssprop {Color} [--gv-header--c=var(--gv-theme-font-color-dark, #262626)] - Color
41
+ *
42
+ * @cssprop {Length} [--gv-header-button--p=10px 24px] - Button adding
43
+ * @cssprop {Length} [--gv-header-button--fz=var(--gv-theme-font-size-l, 16px)] - Button font size
44
+ *
45
+ */
46
+ export class GvHeader extends withResizeObserver(ItemResource(LitElement)) {
47
+ static get properties() {
48
+ return {
49
+ breadcrumbs: { type: Array },
50
+ sticky: { type: Boolean, reflect: true },
51
+ _breadcrumbs: { type: Array, attribute: false },
52
+ canSubscribe: { type: Boolean, attribute: 'can-subscribe' },
53
+ };
54
+ }
55
+ static get styles() {
56
+ return [
57
+ ...super.styles,
58
+ // language=CSS
59
+ css `
60
+ :host {
61
+ --img-w: 120px;
62
+ --img-h: 120px;
63
+ --gv-button--fz: var(--gv-header-button--fz, var(--gv-theme-font-size-l, 16px));
64
+ --gv-button--p: var(--gv-header-button--p, 10px 24px);
65
+ --gv-link--bgc: transparent;
66
+ --gv-link-active-bgc: transparent;
67
+ --c: var(--gv-header--c, var(--gv-theme-font-color-dark, #262626));
68
+ --gv-link--c: var(--c);
69
+ --gv-link-active--c: var(--c);
70
+ --gv-link-a--ph: 5px;
71
+ --gv-link--td: underline;
72
+ --bgc: var(--gv-header--bgc, var(--gv-theme-color-light, #86c3d0));
73
+ box-sizing: border-box;
74
+ display: block;
75
+ }
76
+
77
+ :host([w-lt-768]) {
78
+ --img--w: calc(var(--img-w) / 2);
79
+ --img--h: calc(var(--img-h) / 2);
80
+ --gv-button--fz: var(--gv-theme-font-size-s, 12px);
81
+ font-size: var(--gv-theme-font-size-s, 12px);
82
+ }
83
+
84
+ :host([w-lt-580]) {
85
+ --gv-button--p: 3px 9px;
86
+ --gv-link-a--ph: 0px;
87
+ }
88
+
89
+ :host([w-lt-580]) .actions {
90
+ display: flex;
91
+ flex-direction: column;
92
+ }
93
+
94
+ :host([w-lt-580]) .version {
95
+ font-size: var(--gv-theme-font-size-s, 12px);
96
+ line-height: var(--gv-theme-font-size-s, 12px);
97
+ }
98
+
99
+ :host([w-lt-580]) .image gv-image {
100
+ top: -5px;
101
+ }
102
+
103
+ :host([w-lt-580]) h1 {
104
+ font-size: calc(var(--gv-theme-font-size-xl, 26px) - 4px);
105
+ line-height: calc(var(--gv-theme-font-size-xl, 26px) - 4px);
106
+ }
107
+
108
+ :host([w-lt-400]) h1 {
109
+ font-size: calc(var(--gv-theme-font-size-xl, 26px) - 8px);
110
+ }
111
+
112
+ .header {
113
+ display: flex;
114
+ background-color: var(--bgc);
115
+ flex-direction: row;
116
+ color: var(--c);
117
+ transition: all 350ms ease-in-out;
118
+ padding: 0.5rem var(--gv-theme-layout--pr, 4rem) 0.5rem var(--gv-theme-layout--pl, 4rem);
119
+ position: relative;
120
+ }
121
+
122
+ .title {
123
+ flex: 1;
124
+ margin: 0.5rem 0 0.5rem var(--img-w);
125
+ padding-left: 2rem;
126
+ }
127
+
128
+ :host([sticky]) .title {
129
+ margin-left: calc(var(--img-w) / 2);
130
+ transition: all 250ms ease-in-out;
131
+ }
132
+
133
+ .title,
134
+ .actions {
135
+ align-self: flex-end;
136
+ }
137
+
138
+ gv-link:last-child {
139
+ --gv-link--td: none;
140
+ }
141
+
142
+ gv-link::after {
143
+ content: '>';
144
+ color: var(--gv-theme-font-color-dark, #262626);
145
+ align-self: center;
146
+ }
147
+
148
+ gv-link:last-child::after {
149
+ content: '';
150
+ }
151
+
152
+ .error {
153
+ text-align: center;
154
+ margin-right: 125px;
155
+ }
156
+
157
+ .version {
158
+ letter-spacing: 0.05em;
159
+ opacity: 0.5;
160
+ font-size: var(--gv-theme-font-size-l, 16px);
161
+ line-height: var(--gv-theme-font-size-l, 16px);
162
+ font-weight: 500;
163
+ }
164
+
165
+ gv-identity-picture {
166
+ height: var(--img-h);
167
+ width: var(--img-w);
168
+ position: absolute;
169
+ --gv-image--of: contain;
170
+ transition: all 150ms ease-in-out;
171
+ }
172
+
173
+ :host([sticky]) gv-identity-picture {
174
+ height: calc(var(--img-h) / 2);
175
+ width: calc(var(--img-w) / 2);
176
+ transition: all 150ms ease;
177
+ top: 20%;
178
+ }
179
+
180
+ h1 {
181
+ margin: 0;
182
+ font-size: var(--gv-theme-font-size-xl, 26px);
183
+ font-weight: 500;
184
+ line-height: var(--gv-theme-font-size-xl, 26px);
185
+ letter-spacing: 0.05em;
186
+ }
187
+
188
+ h1 span {
189
+ opacity: 0.5;
190
+ font-size: var(--gv-theme-font-size-l, 16px);
191
+ }
192
+
193
+ .skeleton gv-button,
194
+ .skeleton .error {
195
+ visibility: hidden;
196
+ }
197
+ `,
198
+ ];
199
+ }
200
+ constructor() {
201
+ super();
202
+ this.breakpoints = {
203
+ width: [400, 580, 768],
204
+ };
205
+ this._breadcrumbs = [];
206
+ this.canSubscribe = false;
207
+ }
208
+ set breadcrumbs(candidate) {
209
+ if (candidate) {
210
+ Promise.resolve(candidate).then((candidates) => {
211
+ if (candidates) {
212
+ Promise.all(candidates).then((futureRoutes) => {
213
+ if (!isSameRoutes(this._breadcrumbs, futureRoutes)) {
214
+ this._breadcrumbs = futureRoutes.filter((r) => r != null);
215
+ }
216
+ });
217
+ }
218
+ else {
219
+ this._breadcrumbs = null;
220
+ }
221
+ });
222
+ }
223
+ else {
224
+ this._breadcrumbs = null;
225
+ }
226
+ }
227
+ _getLink(route, index) {
228
+ return Promise.resolve(route)
229
+ .then((_route) => {
230
+ const title = index === this._breadcrumbs.length - 1 ? getTitle(this._item) : _route.title;
231
+ return html ` <gv-link
232
+ @gv-link:click=${this._onClick}
233
+ .active="${_route.active}"
234
+ .icon="${_route.icon}"
235
+ .path="${_route.path}"
236
+ .title="${title}"
237
+ .help="${until(_route.help, null)}"
238
+ ></gv-link>`;
239
+ })
240
+ .catch(() => {
241
+ delete this._routes[index];
242
+ });
243
+ }
244
+ _renderBreadcrumbs() {
245
+ return html `<nav>
246
+ ${repeat(this._breadcrumbs, (route) => route, (route, index) => until(this._getLink(route, index), html `<gv-link skeleton></gv-link>`))}
247
+ </nav>`;
248
+ }
249
+ _onSubscribe(e) {
250
+ e.stopPropagation();
251
+ dispatchCustomEvent(this, 'subscribe', this._item);
252
+ }
253
+ render() {
254
+ const nbApisInView = getNbApisInView(this._item);
255
+ return html `
256
+ <div
257
+ class="${classMap({ header: true, skeleton: this._skeleton })}"
258
+ style="${styleMap({ background: 'url("' + getBackground(this._item) + '") var(--bgc) center center no-repeat' })}"
259
+ >
260
+ ${this._renderImage()}
261
+ <div class="title">
262
+ ${!(this._error || this._empty) && !this.sticky ? html `<div class="version">${getVersion(this._item)}</div>` : ''}
263
+ ${this._error || this._empty
264
+ ? html `<div class="error">${this._error ? i18n('gv-header.error') : i18n('gv-header.empty')}</div>`
265
+ : html `<h1>${getTitle(this._item)} ${nbApisInView !== null ? html `<span>(${nbApisInView})</span>` : ''}</h1>`}
266
+ </div>
267
+ ${!(this._error || this._empty) && this.canSubscribe
268
+ ? html `<div class="actions">
269
+ <gv-button primary @click="${this._onSubscribe}">${i18n('gv-header.subscribe')}</gv-button>
270
+ </div>`
271
+ : ``}
272
+ </div>
273
+ `;
274
+ }
275
+ }
276
+ window.customElements.define('gv-header', GvHeader);
@@ -1 +1,258 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.GvHttpClient=void 0;const e=require("lit");require("./gv-schema-form"),require("./gv-resizable-views"),require("./gv-documentation"),require("../molecules/gv-table"),require("../atoms/gv-button"),require("../molecules/gv-option"),require("../atoms/gv-switch"),require("../atoms/gv-icon");const s=require("../mixins/keyboard-element"),t=require("../styles/empty"),i=require("../lib/http-client-schema-form"),o=require("../lib/events"),r=require("../lib/http"),n=require("lit-html/directives/repeat");class d extends((0,s.KeyboardElement)(e.LitElement)){static get properties(){return{response:{type:Object},path:{type:String},method:{type:String},loading:{type:Boolean}}}constructor(){super(),this.response=void 0,this.loading=!1,this.path=void 0,this.method=void 0,this.request={method:"GET",path:"/"}}_sendRequest(){(0,o.dispatchCustomEvent)(this,"send",{request:this.request})}_updateRequest(e){this.isFormValid=e.detail.validation.valid,this.request=e.detail.values,this.requestUpdate()}render(){return e.html`<div class="container"><div class="request"><div class="top-bar">Request</div><div class="request-form"><gv-schema-form .schema="${i.httpClientSchemaForm}" id="request-form" @gv-schema-form:change="${this._updateRequest}"></gv-schema-form><gv-button class="request-form-button" icon-right="content:send" .disabled="${!1===this.isFormValid||!0===this.loading}" @gv-button:click="${this._sendRequest}">Send</gv-button></div></div><div class="response">${this.loading||this.response?"":this._renderEmptyResponse()} ${this.loading?this._renderLoading():""} ${this.response?this._renderDebugResponse():""}</div></div>`}_renderEmptyResponse(){return e.html`<div class="empty-response"><gv-icon class="empty-response-icon" shape="editor:format_align_left"></gv-icon><div>Define and run the request you want to test!</div></div>`}_renderLoading(){return e.html`<div class="loading"><gv-icon class="loading-icon" shape="communication:sending"></gv-icon><div>Request in progress!</div></div>`}_renderDebugResponse(){let s=this.response.body,t="text";if(this.response.headers){const e=Object.entries(this.response.headers).find((([e,s])=>"content-type"===e.toLowerCase())),i=e?e[1].split(";")[0]:void 0;"text/html"===i?(t="htmlmixed",s=this.response.body):"application/json"===i&&(t="application/json",s=JSON.stringify(JSON.parse(this.response.body),null,2))}const i={lineNumbers:!0,mode:t};return e.html`${this._renderResponseHeader()}<div class="response-headers">Headers</div><div class="response-headers-content">${(0,n.repeat)(Object.keys(this.response.headers),(s=>e.html`<div><code>${s}: ${this.response.headers[s]}</code></div>`))}</div><div class="response-body">Body</div><div class="code-container"><gv-code .value="${s}" .options="${i}" readonly="readonly"></gv-code></div>`}_renderResponseHeader(){const s=200<=this.response.statusCode&&this.response.statusCode<300,t=400<=this.response.statusCode&&this.response.statusCode<600;return e.html`<div class="top-bar"><div class="response-row-item">Response</div>${this.method?e.html`<div class="response-row-item-method">${this.method}</div>`:""} ${this.path?e.html`<div class="response-row-item">${this.path}</div>`:""} ${this.response.statusCode?e.html`<div class="response-row-item"><gv-state ?success="${s}" ?error="${t}">${this.response.statusCode} - ${r.statusCode[this.response.statusCode].description}</gv-state></div>`:""}</div>`}static get styles(){return[t.empty,e.css`:host{box-sizing:border-box;height:100%;width:100%;display:block}.container{display:flex;flex-direction:row;height:100%}.request{width:40%;height:100%}.request-form{padding:8px;display:flex;flex-direction:column}.request-form-button{margin-top:16px}.response{border-left:1px solid #d9d9d9;border-right:1px solid #d9d9d9;height:100%;width:60%;overflow:hidden}.top-bar{background-color:#f5f5f5}.response-row-item{margin-right:16px}.response-row-item-method{margin-right:4px;font-weight:700}.response-body,.response-headers,.status-code,.top-bar{font-size:16px;height:40px;display:flex;flex-direction:row;align-items:center;padding:0 16px;border-bottom:1px solid #d9d9d9}.response-headers-content{padding:16px;border-bottom:1px solid #d9d9d9;max-height:40%}.empty-response,.loading{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;font-size:16px}.empty-response-icon,.loading-icon{--gv-icon--s:128px;--gv-icon--c:var(--gv-theme-color-dark)}.code-container{height:100%;overflow:auto}`]}}exports.GvHttpClient=d,window.customElements.define("gv-http-client",d);
1
+ /* eslint-disable yoda */
2
+ /*
3
+ * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { css, html, LitElement } from 'lit';
18
+ import './gv-schema-form';
19
+ import './gv-resizable-views';
20
+ import './gv-documentation';
21
+ import '../molecules/gv-table';
22
+ import '../atoms/gv-button';
23
+ import '../molecules/gv-option';
24
+ import '../atoms/gv-switch';
25
+ import '../atoms/gv-icon';
26
+ import { KeyboardElement } from '../mixins/keyboard-element';
27
+ import { empty } from '../styles/empty';
28
+ import { httpClientSchemaForm } from '../lib/http-client-schema-form';
29
+ import { dispatchCustomEvent } from '../lib/events';
30
+ import { statusCode } from '../lib/http';
31
+ import { repeat } from 'lit-html/directives/repeat';
32
+ /**
33
+ * @fires gv-http-client:send - Event sent when
34
+ *
35
+ * @attr {String} path - Path of the request
36
+ * @attr {String} method - Method of the request
37
+ * @attr {Boolean} loading - True if the request is in progress
38
+ * @attr {Object} response - Response of the request
39
+ */
40
+ export class GvHttpClient extends KeyboardElement(LitElement) {
41
+ static get properties() {
42
+ return {
43
+ response: { type: Object },
44
+ path: { type: String },
45
+ method: { type: String },
46
+ loading: { type: Boolean },
47
+ };
48
+ }
49
+ constructor() {
50
+ super();
51
+ this.response = undefined;
52
+ this.loading = false;
53
+ this.path = undefined;
54
+ this.method = undefined;
55
+ this.request = {
56
+ method: 'GET',
57
+ path: '/',
58
+ };
59
+ }
60
+ _sendRequest() {
61
+ dispatchCustomEvent(this, 'send', { request: this.request });
62
+ }
63
+ _updateRequest(formData) {
64
+ this.isFormValid = formData.detail.validation.valid;
65
+ this.request = formData.detail.values;
66
+ this.requestUpdate();
67
+ }
68
+ render() {
69
+ return html ` <div class="container">
70
+ <div class="request">
71
+ <div class="top-bar">Request</div>
72
+ <div class="request-form">
73
+ <gv-schema-form .schema="${httpClientSchemaForm}" id="request-form" @gv-schema-form:change="${this._updateRequest}">
74
+ </gv-schema-form>
75
+ <gv-button
76
+ class="request-form-button"
77
+ icon-right="content:send"
78
+ .disabled="${this.isFormValid === false || this.loading === true}"
79
+ @gv-button:click="${this._sendRequest}"
80
+ >
81
+ Send
82
+ </gv-button>
83
+ </div>
84
+ </div>
85
+
86
+ <div class="response">
87
+ ${!this.loading && !this.response ? this._renderEmptyResponse() : ''} ${this.loading ? this._renderLoading() : ''}
88
+ ${this.response ? this._renderDebugResponse() : ''}
89
+ </div>
90
+ </div>`;
91
+ }
92
+ _renderEmptyResponse() {
93
+ return html `
94
+ <div class="empty-response">
95
+ <gv-icon class="empty-response-icon" shape="editor:format_align_left"></gv-icon>
96
+ <div>Define and run the request you want to test!</div>
97
+ </div>
98
+ `;
99
+ }
100
+ _renderLoading() {
101
+ return html `
102
+ <div class="loading">
103
+ <gv-icon class="loading-icon" shape="communication:sending"></gv-icon>
104
+ <div>Request in progress!</div>
105
+ </div>
106
+ `;
107
+ }
108
+ _renderDebugResponse() {
109
+ let prettifiedResponse = this.response.body;
110
+ let mode = 'text';
111
+ if (this.response.headers) {
112
+ // eslint-disable-next-line no-unused-vars
113
+ const contentTypeHeader = Object.entries(this.response.headers).find(([key, value]) => {
114
+ return key.toLowerCase() === 'content-type';
115
+ });
116
+ const contentType = contentTypeHeader ? contentTypeHeader[1].split(';')[0] : undefined;
117
+ if (contentType === 'text/html') {
118
+ mode = 'htmlmixed';
119
+ prettifiedResponse = this.response.body;
120
+ }
121
+ else if (contentType === 'application/json') {
122
+ mode = 'application/json';
123
+ // Convert JSON body to a human readable form with 2 spaces indentation
124
+ prettifiedResponse = JSON.stringify(JSON.parse(this.response.body), null, 2);
125
+ }
126
+ }
127
+ const gvCodeOptions = {
128
+ lineNumbers: true,
129
+ mode: mode,
130
+ };
131
+ return html `
132
+ ${this._renderResponseHeader()}
133
+ <div class="response-headers">Headers</div>
134
+ <div class="response-headers-content">
135
+ ${repeat(Object.keys(this.response.headers), (key) => {
136
+ return html `<div><code>${key}: ${this.response.headers[key]}</code></div>`;
137
+ })}
138
+ </div>
139
+ <div class="response-body">Body</div>
140
+ <div class="code-container">
141
+ <gv-code .value="${prettifiedResponse}" .options="${gvCodeOptions}" readonly></gv-code>
142
+ </div>
143
+ `;
144
+ }
145
+ _renderResponseHeader() {
146
+ const successfulRequest = 200 <= this.response.statusCode && this.response.statusCode < 300;
147
+ const errorRequest = 400 <= this.response.statusCode && this.response.statusCode < 600;
148
+ return html `<div class="top-bar">
149
+ <div class="response-row-item">Response</div>
150
+ ${this.method ? html ` <div class="response-row-item-method">${this.method}</div>` : ''}
151
+ ${this.path ? html ` <div class="response-row-item">${this.path}</div>` : ''}
152
+ ${this.response.statusCode
153
+ ? html ` <div class="response-row-item">
154
+ <gv-state ?success="${successfulRequest}" ?error="${errorRequest}">
155
+ ${this.response.statusCode} - ${statusCode[this.response.statusCode].description}
156
+ </gv-state>
157
+ </div>`
158
+ : ''}
159
+ </div> `;
160
+ }
161
+ static get styles() {
162
+ return [
163
+ empty,
164
+ // language=CSS
165
+ css `
166
+ :host {
167
+ box-sizing: border-box;
168
+ height: 100%;
169
+ width: 100%;
170
+ display: block;
171
+ }
172
+
173
+ .container {
174
+ display: flex;
175
+ flex-direction: row;
176
+ height: 100%;
177
+ }
178
+
179
+ .request {
180
+ width: 40%;
181
+ height: 100%;
182
+ }
183
+
184
+ .request-form {
185
+ padding: 8px;
186
+ display: flex;
187
+ flex-direction: column;
188
+ }
189
+
190
+ .request-form-button {
191
+ margin-top: 16px;
192
+ }
193
+
194
+ .response {
195
+ border-left: 1px solid #d9d9d9;
196
+ border-right: 1px solid #d9d9d9;
197
+ height: 100%;
198
+ width: 60%;
199
+ overflow: hidden;
200
+ }
201
+
202
+ .top-bar {
203
+ background-color: #f5f5f5;
204
+ }
205
+
206
+ .response-row-item {
207
+ margin-right: 16px;
208
+ }
209
+
210
+ .response-row-item-method {
211
+ margin-right: 4px;
212
+ font-weight: bold;
213
+ }
214
+
215
+ .status-code,
216
+ .top-bar,
217
+ .response-headers,
218
+ .response-body {
219
+ font-size: 16px;
220
+ height: 40px;
221
+ display: flex;
222
+ flex-direction: row;
223
+ align-items: center;
224
+ padding: 0 16px;
225
+ border-bottom: 1px solid #d9d9d9;
226
+ }
227
+
228
+ .response-headers-content {
229
+ padding: 16px;
230
+ border-bottom: 1px solid #d9d9d9;
231
+ max-height: 40%;
232
+ }
233
+
234
+ .loading,
235
+ .empty-response {
236
+ display: flex;
237
+ flex-direction: column;
238
+ justify-content: center;
239
+ align-items: center;
240
+ height: 100%;
241
+ font-size: 16px;
242
+ }
243
+
244
+ .loading-icon,
245
+ .empty-response-icon {
246
+ --gv-icon--s: 128px;
247
+ --gv-icon--c: var(--gv-theme-color-dark);
248
+ }
249
+
250
+ .code-container {
251
+ height: 100%;
252
+ overflow: auto;
253
+ }
254
+ `,
255
+ ];
256
+ }
257
+ }
258
+ window.customElements.define('gv-http-client', GvHttpClient);