@gravitee/ui-components 3.25.3-typescript-fdacf14 → 3.25.3-typescript-493e1dd

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,130 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.GvCard=void 0;const e=require("lit"),t=require("../styles/skeleton"),r=require("lit/directives/class-map");require("../atoms/gv-image"),require("../atoms/gv-button");const i=require("../lib/i18n"),s=require("../mixins/item-resource"),o=require("../lib/item");class a extends((0,s.ItemResource)(e.LitElement)){static get styles(){return[...super.styles,e.css`:host{box-sizing:border-box;display:inline-block;margin:.2rem;vertical-align:middle;width:144px;max-height:144px}gv-identity-picture{width:65px;height:65px;--gv-image--of:contain}.card{position:relative;display:flex;flex-direction:column;max-width:144px;min-height:144px;border-radius:2px;background-color:var(--gv-card--bgc,var(--gv-theme-neutral-color-lightest,#fff));color:var(--gv-theme-font-color-dark,#262626);box-shadow:0 0 0 1px var(--gv-theme-neutral-color,#f5f5f5),0 1px 3px var(--gv-theme-neutral-color-dark,#bfbfbf);transition:all .3s}.card:hover{transform:translateY(-4px);box-shadow:0 10px 20px -10px var(--gv-theme-neutral-color-dark,#bfbfbf);cursor:pointer}.content>div{display:flex;justify-content:center;margin-bottom:.2rem}.image{display:flex;flex:1;align-items:center;justify-content:center;position:relative;padding-top:.2rem}.title{line-height:22px;font-size:var(--gv-theme-font-size-s,12px);text-transform:capitalize;font-weight:700;white-space:nowrap;overflow:hidden}.content{flex:1;padding:6px 16px 12px}.version{color:var(--gv-theme-neutral-color-dark,#d9d9d9);top:.4rem;right:.4rem;position:absolute}`,t.skeleton]}render(){const t=(0,o.getTitle)(this._item);return e.html`<div class="card" title="${t}"><span class="${(0,r.classMap)({skeleton:this._skeleton,version:!0})}">${(0,o.getVersion)(this._item)}</span><div class="${(0,r.classMap)({image:!0,skeleton:this._skeleton})}">${this._renderImage()}</div><div class="${(0,r.classMap)({content:!0,empty:this._error||this._empty})}">${this._error||this._empty?e.html`<span>${this._error?(0,i.i18n)("gv-card.error"):(0,i.i18n)("gv-card.empty")}</span>`:e.html`<div class="${(0,r.classMap)({skeleton:this._skeleton})}"><span class="title">${t}</span></div><div>${this._renderStates()}</div>`}</div></div>`}}exports.GvCard=a,window.customElements.define("gv-card",a);
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, LitElement, html } from 'lit';
17
+ import { skeleton } from '../styles/skeleton';
18
+ import { classMap } from 'lit/directives/class-map';
19
+ import '../atoms/gv-image';
20
+ import '../atoms/gv-button';
21
+ import { i18n } from '../lib/i18n';
22
+ import { ItemResource } from '../mixins/item-resource';
23
+ import { getVersion, getTitle } from '../lib/item';
24
+ /**
25
+ * Card component
26
+ *
27
+ * ## Details
28
+ * * has @theme facet
29
+ *
30
+ * @attr {Promise<any>} item - An item.
31
+ *
32
+ * @cssprop {Color} [--gv-card--bgc=var(--gv-theme-neutral-color-lightest, #ffffff)] - Background color
33
+ */
34
+ export class GvCard extends ItemResource(LitElement) {
35
+ static get styles() {
36
+ return [
37
+ ...super.styles,
38
+ // language=CSS
39
+ css `
40
+ :host {
41
+ box-sizing: border-box;
42
+ display: inline-block;
43
+ margin: 0.2rem;
44
+ vertical-align: middle;
45
+ width: 144px;
46
+ max-height: 144px;
47
+ }
48
+
49
+ gv-identity-picture {
50
+ width: 65px;
51
+ height: 65px;
52
+ --gv-image--of: contain;
53
+ }
54
+
55
+ .card {
56
+ position: relative;
57
+ display: flex;
58
+ flex-direction: column;
59
+ max-width: 144px;
60
+ min-height: 144px;
61
+ border-radius: 2px;
62
+ background-color: var(--gv-card--bgc, var(--gv-theme-neutral-color-lightest, #ffffff));
63
+ color: var(--gv-theme-font-color-dark, #262626);
64
+ box-shadow: 0 0 0 1px var(--gv-theme-neutral-color, #f5f5f5), 0 1px 3px var(--gv-theme-neutral-color-dark, #bfbfbf);
65
+ transition: all 0.3s;
66
+ }
67
+
68
+ .card:hover {
69
+ transform: translateY(-4px);
70
+ box-shadow: 0 10px 20px -10px var(--gv-theme-neutral-color-dark, #bfbfbf);
71
+ cursor: pointer;
72
+ }
73
+
74
+ .content > div {
75
+ display: flex;
76
+ justify-content: center;
77
+ margin-bottom: 0.2rem;
78
+ }
79
+
80
+ .image {
81
+ display: flex;
82
+ flex: 1;
83
+ align-items: center;
84
+ justify-content: center;
85
+ position: relative;
86
+ padding-top: 0.2rem;
87
+ }
88
+
89
+ .title {
90
+ line-height: 22px;
91
+ font-size: var(--gv-theme-font-size-s, 12px);
92
+ text-transform: capitalize;
93
+ font-weight: bold;
94
+ white-space: nowrap;
95
+ overflow: hidden;
96
+ }
97
+
98
+ .content {
99
+ flex: 1;
100
+ padding: 6px 16px 12px;
101
+ }
102
+
103
+ .version {
104
+ color: var(--gv-theme-neutral-color-dark, #d9d9d9);
105
+ top: 0.4rem;
106
+ right: 0.4rem;
107
+ position: absolute;
108
+ }
109
+ `,
110
+ skeleton,
111
+ ];
112
+ }
113
+ render() {
114
+ const title = getTitle(this._item);
115
+ return html `<div class="card" title="${title}">
116
+ <span class="${classMap({ skeleton: this._skeleton, version: true })}">${getVersion(this._item)}</span>
117
+ <div class="${classMap({ image: true, skeleton: this._skeleton })}">${this._renderImage()}</div>
118
+
119
+ <div class="${classMap({ content: true, empty: this._error || this._empty })}">
120
+ ${this._error || this._empty
121
+ ? html ` <span>${this._error ? i18n('gv-card.error') : i18n('gv-card.empty')}</span> `
122
+ : html ` <div class="${classMap({ skeleton: this._skeleton })}">
123
+ <span class="title">${title}</span>
124
+ </div>
125
+ <div>${this._renderStates()}</div>`}
126
+ </div>
127
+ </div>`;
128
+ }
129
+ }
130
+ window.customElements.define('gv-card', GvCard);
@@ -1 +1,56 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.GvCategoryList=void 0;const e=require("lit");require("./gv-category");const t=require("./gv-card-list");class r extends t.GvCardList{static get styles(){return[...super.styles,e.css`:host{--bgc-1:var(--gv-category-list--bgc-1, #cce6eb);--bgc-2:var(--gv-category-list--bgc-2, #fcf1a8);--bgc-3:var(--gv-category-list--bgc-3, #d9d4f1);--bgc-4:var(--gv-category-list--bgc-4, #f9c15e);--bgc-5:var(--gv-category-list--bgc-5, #d4fccd);--bgc-6:var(--gv-category-list--bgc-6, #e0c8b2)}`]}renderItem(t,r){return e.html`<gv-category class="item" .category="${t||null}" style="${this._getCategoryBackgroundColor(r)}"></gv-category>`}_getCategoryBackgroundColor(e){return`--gv-category--bgc: var(--bgc-${e%6+1})`}}exports.GvCategoryList=r,window.customElements.define("gv-category-list",r);
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 } from 'lit';
17
+ import './gv-category';
18
+ import { GvCardList } from './gv-card-list';
19
+ /**
20
+ * List of categories
21
+ *
22
+ * ## Details
23
+ * * has @theme facet
24
+ *
25
+ * @cssprop {Color} [--gv-category-list--bgc-1=#cce6eb] - Category background color 1
26
+ * @cssprop {Color} [--gv-category-list--bgc-2=#fcf1a8] - Category background color 2
27
+ * @cssprop {Color} [--gv-category-list--bgc-3=#d9d4f1] - Category background color 3
28
+ * @cssprop {Color} [--gv-category-list--bgc-4=#f9c15e] - Category background color 4
29
+ * @cssprop {Color} [--gv-category-list--bgc-5=#d4fccd] - Category background color 5
30
+ * @cssprop {Color} [--gv-category-list--bgc-6=#e0c8b2] - Category background color 6
31
+ */
32
+ export class GvCategoryList extends GvCardList {
33
+ static get styles() {
34
+ return [
35
+ ...super.styles,
36
+ // language=CSS
37
+ css `
38
+ :host {
39
+ --bgc-1: var(--gv-category-list--bgc-1, #cce6eb);
40
+ --bgc-2: var(--gv-category-list--bgc-2, #fcf1a8);
41
+ --bgc-3: var(--gv-category-list--bgc-3, #d9d4f1);
42
+ --bgc-4: var(--gv-category-list--bgc-4, #f9c15e);
43
+ --bgc-5: var(--gv-category-list--bgc-5, #d4fccd);
44
+ --bgc-6: var(--gv-category-list--bgc-6, #e0c8b2);
45
+ }
46
+ `,
47
+ ];
48
+ }
49
+ renderItem(item, index) {
50
+ return html `<gv-category class="item" .category="${item || null}" style="${this._getCategoryBackgroundColor(index)}"> </gv-category>`;
51
+ }
52
+ _getCategoryBackgroundColor(index) {
53
+ return `--gv-category--bgc: var(--bgc-${(index % 6) + 1})`;
54
+ }
55
+ }
56
+ window.customElements.define('gv-category-list', GvCategoryList);
@@ -1 +1,163 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.GvCategory=void 0;const e=require("lit"),t=require("../lib/utils"),i=require("lit/directives/class-map"),r=require("../lib/events"),s=require("../lib/i18n"),o=require("../mixins/with-skeleton-attribute");class a extends((0,o.withSkeletonAttribute)(e.LitElement)){static get properties(){return{category:{type:Object},limit:{type:Number},_category:{type:Object,attribute:!1}}}static get styles(){return[...super.styles,e.css`:host{box-sizing:border-box;display:inline-block;margin:.2rem;vertical-align:middle;min-width:415px}.card{background-color:var(--gv-category--bgc,var(--gv-theme-neutral-color-lightest,#fff));border-radius:4px;display:flex;flex-direction:column;height:var(--gv-category--h,200px);padding:2rem;box-shadow:0 0 0 1px var(--gv-theme-neutral-color-dark,#bfbfbf),0 1px 3px var(--gv-theme-neutral-color-dark,#bfbfbf);transition:all .3s;position:relative}.card:hover{transform:translateY(-4px);box-shadow:0 20px 40px -14px var(--gv-theme-neutral-color,#f5f5f5);cursor:pointer}.box{display:flex}.title{flex:1;align-self:center}.title span{font-size:var(--gv-theme-font-size-s);font-weight:600;line-height:var(--gv-theme-font-size-s);margin-left:8px;opacity:.7}gv-identity-picture{height:80px;width:80px;margin:.5rem 1rem .5rem 0}.title{color:var(--gv-category--c,var(--gv-theme-font-color-dark,#262626));font-size:var(--gv-theme-font-size-xxl,30px);font-style:normal;font-weight:600;line-height:calc(var(--gv-theme-font-size-xxl,30px) + 6px)}.description{color:var(--gv-category--c,var(--gv-theme-font-color-dark,#262626));font-size:var(--gv-theme-font-size-l,16px);font-style:normal;font-weight:400;line-height:24px;opacity:.7;max-height:150px;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}`]}constructor(){super(),this._skeletonAttribute="category"}_get(e){return this._category?this._category[e]:""}_onClick(){(0,r.dispatchCustomEvent)(this,"click",this._category)}render(){const r=this._get("total_apis");return e.html`<div @click="${this._onClick}" class="${(0,i.classMap)({card:!0,skeleton:this._skeleton,empty:this._error||this._empty})}">${this._error||this._empty?e.html`<div class="${(0,i.classMap)({skeleton:this._skeleton})}"><span>${this._error?(0,s.i18n)("gv-category.error"):(0,s.i18n)("gv-category.empty")}</span></div>`:e.html`<div class="box"><gv-identity-picture .skeleton="${this._skeleton}" display_name="${this._get("name")}" picture="${this._get("_links")?this._get("_links").picture:""}"></gv-identity-picture><div class="title">${this._get("name")}${r?e.html`<span>(${r})</span>`:""}</div></div><div class="description">${(0,t.truncate)(this._get("description"),this.limit)}</div>`}</div>`}}exports.GvCategory=a,window.customElements.define("gv-category",a);
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 { truncate } from '../lib/utils';
18
+ import { classMap } from 'lit/directives/class-map';
19
+ import { dispatchCustomEvent } from '../lib/events';
20
+ import { i18n } from '../lib/i18n';
21
+ import { withSkeletonAttribute } from '../mixins/with-skeleton-attribute';
22
+ /**
23
+ * A card used to display a category
24
+ *
25
+ * ## Details
26
+ * * has @theme facet
27
+ *
28
+ * @fires gv-category:click - Custom click event
29
+ *
30
+ * @attr {Promise<{name, description, _links: { picture }, total_apis}>} category - A category object
31
+ * @attr {Length} limit - number of characters that can be display in the description. If _description_ is greater, it will be truncated.
32
+ *
33
+ * @cssprop {Color} [--gv-category--bgc=var(--gv-theme-neutral-color-lightest, #ffffff)] - Background color
34
+ * @cssprop {Color} [--gv-category--c=var(--gv-theme-font-color-dark, #262626)] - Color
35
+ * @cssprop {Length} [--gv-category--h=200px] - Height
36
+ */
37
+ export class GvCategory extends withSkeletonAttribute(LitElement) {
38
+ static get properties() {
39
+ return {
40
+ category: { type: Object },
41
+ limit: { type: Number },
42
+ _category: { type: Object, attribute: false },
43
+ };
44
+ }
45
+ static get styles() {
46
+ return [
47
+ ...super.styles,
48
+ // language=CSS
49
+ css `
50
+ :host {
51
+ box-sizing: border-box;
52
+ display: inline-block;
53
+ margin: 0.2rem;
54
+ vertical-align: middle;
55
+ min-width: 415px;
56
+ }
57
+
58
+ .card {
59
+ background-color: var(--gv-category--bgc, var(--gv-theme-neutral-color-lightest, #ffffff));
60
+ border-radius: 4px;
61
+ display: flex;
62
+ flex-direction: column;
63
+ height: var(--gv-category--h, 200px);
64
+ padding: 2rem;
65
+ box-shadow: 0 0 0 1px var(--gv-theme-neutral-color-dark, #bfbfbf), 0 1px 3px var(--gv-theme-neutral-color-dark, #bfbfbf);
66
+ transition: all 0.3s;
67
+ position: relative;
68
+ }
69
+
70
+ .card:hover {
71
+ transform: translateY(-4px);
72
+ box-shadow: 0 20px 40px -14px var(--gv-theme-neutral-color, #f5f5f5);
73
+ cursor: pointer;
74
+ }
75
+
76
+ .box {
77
+ display: flex;
78
+ }
79
+
80
+ .title {
81
+ flex: 1;
82
+ align-self: center;
83
+ }
84
+
85
+ .title span {
86
+ font-size: var(--gv-theme-font-size-s);
87
+ font-weight: 600;
88
+ line-height: var(--gv-theme-font-size-s);
89
+ margin-left: 8px;
90
+ opacity: 0.7;
91
+ }
92
+
93
+ gv-identity-picture {
94
+ height: 80px;
95
+ width: 80px;
96
+ margin: 0.5rem 1rem 0.5rem 0;
97
+ }
98
+
99
+ .title {
100
+ color: var(--gv-category--c, var(--gv-theme-font-color-dark, #262626));
101
+ font-size: var(--gv-theme-font-size-xxl, 30px);
102
+ font-style: normal;
103
+ font-weight: 600;
104
+ line-height: calc(var(--gv-theme-font-size-xxl, 30px) + 6px);
105
+ }
106
+
107
+ .description {
108
+ color: var(--gv-category--c, var(--gv-theme-font-color-dark, #262626));
109
+ font-size: var(--gv-theme-font-size-l, 16px);
110
+ font-style: normal;
111
+ font-weight: normal;
112
+ line-height: 24px;
113
+ opacity: 0.7;
114
+
115
+ /** text-overflow **/
116
+ max-height: 150px;
117
+ display: -webkit-box;
118
+ -webkit-line-clamp: 4;
119
+ -webkit-box-orient: vertical;
120
+ overflow: hidden;
121
+ }
122
+ `,
123
+ ];
124
+ }
125
+ constructor() {
126
+ super();
127
+ this._skeletonAttribute = 'category';
128
+ }
129
+ _get(property) {
130
+ if (this._category) {
131
+ return this._category[property];
132
+ }
133
+ return '';
134
+ }
135
+ _onClick() {
136
+ dispatchCustomEvent(this, 'click', this._category);
137
+ }
138
+ render() {
139
+ const total = this._get('total_apis');
140
+ return html `<div
141
+ @click=${this._onClick}
142
+ class="${classMap({ card: true, skeleton: this._skeleton, empty: this._error || this._empty })}"
143
+ >
144
+ ${this._error || this._empty
145
+ ? html `
146
+ <div class="${classMap({ skeleton: this._skeleton })}">
147
+ <span>${this._error ? i18n('gv-category.error') : i18n('gv-category.empty')}</span>
148
+ </div>
149
+ `
150
+ : html ` <div class="box">
151
+ <gv-identity-picture
152
+ .skeleton="${this._skeleton}"
153
+ display_name="${this._get('name')}"
154
+ picture="${this._get('_links') ? this._get('_links').picture : ''}"
155
+ ></gv-identity-picture>
156
+ <div class="title">${this._get('name')}${total ? html `<span>(${total})</span>` : ''}</div>
157
+ </div>
158
+
159
+ <div class="description">${truncate(this._get('description'), this.limit)}</div>`}
160
+ </div> `;
161
+ }
162
+ }
163
+ window.customElements.define('gv-category', GvCategory);