@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,334 @@
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 o in r)"default"!==o&&Object.prototype.hasOwnProperty.call(r,o)&&e(i,r,o);return t(i,r),i};Object.defineProperty(exports,"__esModule",{value:!0}),exports.GvCode=void 0;const i=require("lit"),o=require("@codemirror/basic-setup"),s=require("@codemirror/state"),a=require("@codemirror/autocomplete"),n=require("@codemirror/lang-json"),d=require("@codemirror/language-data"),l=require("@codemirror/view"),c=require("../styles/shapes"),u=require("../lib/events"),p=require("../lib/utils"),h=require("lit/directives/class-map"),m=require("../atoms/gv-input"),g=require("../styles/skeleton"),v=require("../styles/empty"),f=require("../styles/input");class b extends m.GvInput{static get properties(){return{...super.properties,options:{type:Object},rows:{type:Number},_error:{type:String,attribute:!1}}}constructor(){super(),this._id=`gv-code-${(0,p.uuid)()}`,this.value="",this.readonly=!1,this.autofocus=!1,this.clipboard=!1,this._clipboardIcon=c.shapeClipboard,this.languageCompartment=new s.Compartment,this.readonlyCompartment=new s.Compartment,this.placeholderCompartment=new s.Compartment}render(){const e={box:!0,"box-invisible":this.skeleton,large:this.large,medium:this.medium||!this.large&&!this.small,small:this.small,copied:this.hasClipboard&&this._copied},t={content:!0,code:!this.hasInputStyle,input:this.hasInputStyle};return i.html`<div class="${(0,h.classMap)(e)}">${this.label?i.html`<label for="code">${this.label}</label>`:""}<div id="${this._id}" class="${(0,h.classMap)(t)}">${this.renderIcon()}</div></div>${null!=this.description?i.html`<div class="description" .innerHTML="${this.description}"></div>`:""}`}bindInputEvents(){(0,u.dispatchCustomEvent)(this,"ready",{currentTarget:this})}get hasInputStyle(){return 1===this.rows}_autocomplete(e){const{handler:t,match:r}=this.findBestAutocompleteHandler(e);return t.run.call(this,e,r)}findBestAutocompleteHandler(e){return{handler:this.defaultCompletionHandler,match:!0}}get defaultCompletionHandler(){return{run(e){const t=e.state.languageDataAt("autocomplete",e.pos);return t.length>0?t[0](e):{from:e.pos,options:[]}}}}_getExtensions(){return[o.basicSetup,b.codemirrorTheme,this.languageCompartment.of((0,n.json)()),this.placeholderCompartment.of((0,l.placeholder)(this.placeholder||"")),s.EditorState.transactionFilter.of((e=>this.hasInputStyle&&e.newDoc.lines>1?[]:e)),this.readonlyCompartment.of(o.EditorView.editable.of(!this.readonly&&!this.disabled)),o.EditorView.updateListener.of((e=>{e.docChanged&&(this.value=this._editorView.state.doc.toString(),(0,u.dispatchCustomEvent)(this,"input",this.value))})),(0,a.autocompletion)({activateOnTyping:!0,override:[this._autocomplete.bind(this)]}),...this.getExtensions()]}getExtensions(){return[]}getInputElement(){return this.shadowRoot.querySelector(`[id=${this._id}]`)}firstUpdated(){super.firstUpdated(),this._editorState=s.EditorState.create({doc:this.value,extensions:this._getExtensions()});const e=this.getInputElement();this._editorView=new o.EditorView({root:this.shadowRoot,parent:e,state:this._editorState,dispatch:e=>{try{this._editorView.update([e])}catch(e){}}}),e.appendChild(this._editorView.dom)}async updated(e){super.updated(e),e.has("placeholder")&&this._reflectPlaceholder(),e.has("value")&&this._reflectValue(),(e.has("readonly")||e.has("disabled"))&&this._reflectReadonlyDisabled(),e.has("options")&&this.options&&await this._reflectOptions()}_reflectPlaceholder(){this._editorView.dispatch({effects:this.placeholderCompartment.reconfigure((0,l.placeholder)(this.placeholder))})}_reflectValue(){const e=this._editorState.update({changes:{from:0,to:this._editorState.doc.length,insert:this.value}});this._editorState=e.state}_reflectReadonlyDisabled(){this._editorView.dispatch({effects:this.readonlyCompartment.reconfigure(o.EditorView.editable.of(!this.readonly&&!this.disabled))})}static async findLanguage(e){if(e){const t=e.split("/").pop();if("asciidoc"===t){const[{asciidoc:e},{StreamLanguage:t}]=await Promise.all([Promise.resolve().then((()=>r(require("codemirror-asciidoc/lib/asciidoc")))),Promise.resolve().then((()=>r(require("@codemirror/stream-parser"))))]);return{name:"asciidoc",support:{extension:t.define(e)}}}{const r=d.languages.find((e=>e.name.toUpperCase()===t.toUpperCase()||e.alias.includes(t)));return null==r&&console.warn(`Cannot find language ${e}, please use language supported by CodeMirror 6`,d.languages.map((e=>e.name))),r}}return null}async _reflectOptions(){const e=await b.findLanguage(this.options.mode);null!=e&&(null==e.support&&await e.load(),this._editorView.dispatch({effects:this.languageCompartment.reconfigure(e.support.extension)}))}static get codemirrorTheme(){return o.EditorView.theme({"&.cm-editor.cm-focused":{outline:"none"},".cm-gutters":{backgroundColor:"var(--gv-input-icon--bgc, var(--gv-theme-neutral-color, #f5f5f5))",color:"var(--gv-theme-font-color-dark, #262626)",borderLeft:"5px solid",borderColor:"var(--gv-input--bdc, var(--gv-theme-neutral-color-dark, #d9d9d9))"}})}static get styles(){return[...super.styles,g.skeleton,v.empty,f.input,i.css`:host{box-sizing:border-box;display:block;margin:0 .2rem .2rem .2rem}.content{position:relative;border:var(--gv-input--bdw,1px) var(--gv-input--bds,solid) var(--gv-input--bdc,var(--gv-theme-neutral-color-dark,#d9d9d9));box-sizing:border-box;border-radius:4px}.box-icon{bottom:-1px;right:-1px;z-index:1}.code .box-icon{border-radius:3px}.code .cm-content,.code .cm-gutters{height:var(--input-medium--h)}.large .code .cm-content,.large .code .cm-gutters{height:var(--input-large--h)}.small .code .cm-content,.small .code .cm-gutters{height:var(--input-small--h)}.input .cm-gutters{display:none}.input .cm-scroller{overflow:hidden}.input .cm-activeLine,:host([readonly]) .cm-activeLine{background-color:transparent}.input .cm-content{padding:0}:host([invalid]) .cm-gutters{border-color:var(--gv-theme-color-error,#da1a1b)}`]}}exports.GvCode=b,window.customElements.define("gv-code",b);
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 { EditorView, basicSetup } from '@codemirror/basic-setup';
18
+ import { EditorState, Compartment } from '@codemirror/state';
19
+ import { autocompletion } from '@codemirror/autocomplete';
20
+ import { json } from '@codemirror/lang-json';
21
+ import { languages } from '@codemirror/language-data';
22
+ import { placeholder } from '@codemirror/view';
23
+ import { shapeClipboard } from '../styles/shapes';
24
+ import { dispatchCustomEvent } from '../lib/events';
25
+ import { uuid } from '../lib/utils';
26
+ import { classMap } from 'lit/directives/class-map';
27
+ import { GvInput } from '../atoms/gv-input';
28
+ import { skeleton } from '../styles/skeleton';
29
+ import { empty } from '../styles/empty';
30
+ import { input } from '../styles/input';
31
+ /**
32
+ * Code component
33
+ *
34
+ * ## Details
35
+ * * has @theme facet
36
+ *
37
+ * @fires gv-code:input - input events with the `value` on `detail`
38
+ * @fires gv-code:ready - event dispatch when component is ready
39
+ * @fires gv-code:clipboard-copy - event dispatch when component the `value` has been copied to clipboard
40
+ *
41
+ * @attr {String} label - code language
42
+ * @attr {String} value - code content to be highlighted
43
+ * @attr {options} Object - options based on codemirror
44
+ * @attr {String} placeholder - an example value to display in the input when empty
45
+ * @attr {Number} rows - number of rows of the text element
46
+ * @attr {Boolean} large - for a large input (only if the field has one row)
47
+ * @attr {Boolean} medium - for a medium input (only if the field has one row) (Default)
48
+ * @attr {Boolean} small - for a small input (only if the field has one row)
49
+ *
50
+ * @attr {Boolean} [clipboard=false]- true if field has clipboard button
51
+ * @attr {Boolean} [autofocus=false] - true to put the focus on the input
52
+ * @attr {Boolean} [readonly=false] - true if field is readonly mode
53
+ */
54
+ export class GvCode extends GvInput {
55
+ static get properties() {
56
+ return {
57
+ ...super.properties,
58
+ options: { type: Object },
59
+ rows: { type: Number },
60
+ _error: { type: String, attribute: false },
61
+ };
62
+ }
63
+ constructor() {
64
+ super();
65
+ this._id = `gv-code-${uuid()}`;
66
+ this.value = '';
67
+ this.readonly = false;
68
+ this.autofocus = false;
69
+ this.clipboard = false;
70
+ this._clipboardIcon = shapeClipboard;
71
+ this.languageCompartment = new Compartment();
72
+ this.readonlyCompartment = new Compartment();
73
+ this.placeholderCompartment = new Compartment();
74
+ }
75
+ render() {
76
+ const classes = {
77
+ box: true,
78
+ 'box-invisible': this.skeleton,
79
+ large: this.large,
80
+ medium: this.medium || (!this.large && !this.small),
81
+ small: this.small,
82
+ copied: this.hasClipboard && this._copied,
83
+ };
84
+ const inputClasses = {
85
+ content: true,
86
+ code: !this.hasInputStyle,
87
+ input: this.hasInputStyle,
88
+ };
89
+ return html `
90
+ <div class="${classMap(classes)}">
91
+ ${this.label ? html `<label for="code">${this.label}</label>` : ''}
92
+ <div id="${this._id}" class="${classMap(inputClasses)}">
93
+ <!-- No format please -->
94
+ ${this.renderIcon()}
95
+ </div>
96
+ </div>
97
+ ${this.description != null ? html `<div class="description" .innerHTML="${this.description}"></div>` : ''}
98
+ `;
99
+ }
100
+ bindInputEvents() {
101
+ dispatchCustomEvent(this, 'ready', { currentTarget: this });
102
+ }
103
+ get hasInputStyle() {
104
+ return this.rows === 1;
105
+ }
106
+ _autocomplete(completionContext) {
107
+ const { handler, match } = this.findBestAutocompleteHandler(completionContext);
108
+ return handler.run.call(this, completionContext, match);
109
+ }
110
+ findBestAutocompleteHandler(completionContext) {
111
+ return { handler: this.defaultCompletionHandler, match: true };
112
+ }
113
+ get defaultCompletionHandler() {
114
+ return {
115
+ run(completionContext) {
116
+ const language = completionContext.state.languageDataAt('autocomplete', completionContext.pos);
117
+ if (language.length > 0) {
118
+ return language[0](completionContext);
119
+ }
120
+ return { from: completionContext.pos, options: [] };
121
+ },
122
+ };
123
+ }
124
+ _getExtensions() {
125
+ return [
126
+ basicSetup,
127
+ GvCode.codemirrorTheme,
128
+ this.languageCompartment.of(json()),
129
+ this.placeholderCompartment.of(placeholder(this.placeholder || '')),
130
+ EditorState.transactionFilter.of((tr) => (this.hasInputStyle && tr.newDoc.lines > 1 ? [] : tr)),
131
+ this.readonlyCompartment.of(EditorView.editable.of(!this.readonly && !this.disabled)),
132
+ EditorView.updateListener.of((viewUpdate) => {
133
+ if (viewUpdate.docChanged) {
134
+ this.value = this._editorView.state.doc.toString();
135
+ dispatchCustomEvent(this, 'input', this.value);
136
+ }
137
+ }),
138
+ autocompletion({
139
+ activateOnTyping: true,
140
+ override: [this._autocomplete.bind(this)],
141
+ }),
142
+ ...this.getExtensions(),
143
+ ];
144
+ }
145
+ getExtensions() {
146
+ return [];
147
+ }
148
+ getInputElement() {
149
+ return this.shadowRoot.querySelector(`[id=${this._id}]`);
150
+ }
151
+ firstUpdated() {
152
+ super.firstUpdated();
153
+ this._editorState = EditorState.create({
154
+ doc: this.value,
155
+ extensions: this._getExtensions(),
156
+ });
157
+ const parent = this.getInputElement();
158
+ this._editorView = new EditorView({
159
+ root: this.shadowRoot,
160
+ parent,
161
+ state: this._editorState,
162
+ dispatch: (transaction) => {
163
+ try {
164
+ this._editorView.update([transaction]);
165
+ }
166
+ catch (e) {
167
+ // Sometimes the default dispatch fn throws an NS_ERROR_FAILURE at runtime.
168
+ // It's so strange but with this catch everything is okay
169
+ }
170
+ },
171
+ });
172
+ parent.appendChild(this._editorView.dom);
173
+ }
174
+ async updated(properties) {
175
+ super.updated(properties);
176
+ if (properties.has('placeholder')) {
177
+ this._reflectPlaceholder();
178
+ }
179
+ if (properties.has('value')) {
180
+ this._reflectValue();
181
+ }
182
+ if (properties.has('readonly') || properties.has('disabled')) {
183
+ this._reflectReadonlyDisabled();
184
+ }
185
+ if (properties.has('options') && this.options) {
186
+ await this._reflectOptions();
187
+ }
188
+ }
189
+ _reflectPlaceholder() {
190
+ this._editorView.dispatch({
191
+ effects: this.placeholderCompartment.reconfigure(placeholder(this.placeholder)),
192
+ });
193
+ }
194
+ _reflectValue() {
195
+ const transaction = this._editorState.update({
196
+ changes: {
197
+ from: 0,
198
+ to: this._editorState.doc.length,
199
+ insert: this.value,
200
+ },
201
+ });
202
+ this._editorState = transaction.state;
203
+ }
204
+ _reflectReadonlyDisabled() {
205
+ this._editorView.dispatch({
206
+ effects: this.readonlyCompartment.reconfigure(EditorView.editable.of(!this.readonly && !this.disabled)),
207
+ });
208
+ }
209
+ static async findLanguage(mode) {
210
+ if (mode) {
211
+ const modeOnly = mode.split('/').pop();
212
+ if (modeOnly === 'asciidoc') {
213
+ const [{ asciidoc }, { StreamLanguage }] = await Promise.all([
214
+ import('codemirror-asciidoc/lib/asciidoc'),
215
+ import('@codemirror/stream-parser'),
216
+ ]);
217
+ return {
218
+ name: 'asciidoc',
219
+ support: {
220
+ extension: StreamLanguage.define(asciidoc),
221
+ },
222
+ };
223
+ }
224
+ else {
225
+ const language = languages.find((languageDescription) => {
226
+ return languageDescription.name.toUpperCase() === modeOnly.toUpperCase() || languageDescription.alias.includes(modeOnly);
227
+ });
228
+ if (language == null) {
229
+ console.warn(`Cannot find language ${mode}, please use language supported by CodeMirror 6`, languages.map((l) => l.name));
230
+ }
231
+ return language;
232
+ }
233
+ }
234
+ return null;
235
+ }
236
+ async _reflectOptions() {
237
+ const language = await GvCode.findLanguage(this.options.mode);
238
+ if (language != null) {
239
+ if (language.support == null) {
240
+ await language.load();
241
+ }
242
+ this._editorView.dispatch({
243
+ effects: this.languageCompartment.reconfigure(language.support.extension),
244
+ });
245
+ }
246
+ }
247
+ static get codemirrorTheme() {
248
+ return EditorView.theme({
249
+ '&.cm-editor.cm-focused': {
250
+ outline: 'none',
251
+ },
252
+ '.cm-gutters': {
253
+ backgroundColor: 'var(--gv-input-icon--bgc, var(--gv-theme-neutral-color, #f5f5f5))',
254
+ color: 'var(--gv-theme-font-color-dark, #262626)',
255
+ borderLeft: '5px solid',
256
+ borderColor: 'var(--gv-input--bdc, var(--gv-theme-neutral-color-dark, #d9d9d9))',
257
+ },
258
+ });
259
+ }
260
+ static get styles() {
261
+ return [
262
+ ...super.styles,
263
+ skeleton,
264
+ empty,
265
+ input,
266
+ // language=CSS
267
+ css `
268
+ :host {
269
+ box-sizing: border-box;
270
+ display: block;
271
+ margin: 0 0.2rem 0.2rem 0.2rem;
272
+ }
273
+
274
+ .content {
275
+ position: relative;
276
+ border: var(--gv-input--bdw, 1px) var(--gv-input--bds, solid) var(--gv-input--bdc, var(--gv-theme-neutral-color-dark, #d9d9d9));
277
+ box-sizing: border-box;
278
+ border-radius: 4px;
279
+ }
280
+
281
+ .btn_copy {
282
+ }
283
+
284
+ .box-icon {
285
+ bottom: -1px;
286
+ right: -1px;
287
+ z-index: 1;
288
+ }
289
+
290
+ .code .box-icon {
291
+ border-radius: 3px;
292
+ }
293
+
294
+ .code .cm-content,
295
+ .code .cm-gutters {
296
+ height: var(--input-medium--h);
297
+ }
298
+
299
+ .large .code .cm-content,
300
+ .large .code .cm-gutters {
301
+ height: var(--input-large--h);
302
+ }
303
+
304
+ .small .code .cm-content,
305
+ .small .code .cm-gutters {
306
+ height: var(--input-small--h);
307
+ }
308
+
309
+ /** Override Codemirror theme */
310
+ .input .cm-gutters {
311
+ display: none;
312
+ }
313
+
314
+ .input .cm-scroller {
315
+ overflow: hidden;
316
+ }
317
+
318
+ .input .cm-activeLine,
319
+ :host([readonly]) .cm-activeLine {
320
+ background-color: transparent;
321
+ }
322
+
323
+ .input .cm-content {
324
+ padding: 0;
325
+ }
326
+
327
+ :host([invalid]) .cm-gutters {
328
+ border-color: var(--gv-theme-color-error, #da1a1b);
329
+ }
330
+ `,
331
+ ];
332
+ }
333
+ }
334
+ window.customElements.define('gv-code', GvCode);
@@ -1 +1,175 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.GvConfirm=void 0;const e=require("lit");require("../atoms/gv-button"),require("../atoms/gv-icon");const t=require("../lib/i18n"),s=require("./gv-popover"),i=require("../lib/events");class o extends s.GvPopover{static get properties(){return{cancelLabel:{type:String},okLabel:{type:String},message:{type:String},icon:{type:String},danger:{type:Boolean,reflect:!0},disabled:{type:Boolean},_disabled:{type:Boolean}}}static get styles(){return[s.GvPopover.styles,e.css`:host{--gv-icon--s:24px;margin:.2rem;box-sizing:border-box}:host([danger]) .message gv-icon{--gv-icon--c:var(--gv-theme-color-danger, #ff5722)}.popover{--bgc:var(--gv-confirm--bgc, var(--gv-theme-neutral-color-lighter, #fafafa));--maw:var(--gv-confirm--maw, 350px)}.message{display:flex;align-items:center;margin:1rem .5rem}.message gv-icon{margin-right:.5rem}.text{text-align:center;line-height:24px;width:100%}.actions{text-align:right}::slotted(*){margin:0;width:100%}`]}constructor(){super(),this.event="click",this.arrow=!0,this.auto=!0,this.icon="code:info",this.cancelLabel=(0,t.i18n)("gv-confirm.cancel"),this.okLabel=(0,t.i18n)("gv-confirm.ok")}connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this._closeHandler),window.addEventListener("scroll",this._closeHandler)}disconnectedCallback(){window.removeEventListener("resize",this._closeHandler),window.removeEventListener("scroll",this._closeHandler),super.disconnectedCallback()}_onCancel(){this.close(),(0,i.dispatchCustomEvent)(this,"cancel")}_onOk(){this.close(),(0,i.dispatchCustomEvent)(this,"ok")}_open(e){this._disabled||super._open(e)}renderContent(){return e.html`<div class="message">${this.icon?e.html`<gv-icon shape="${this.icon}"></gv-icon>`:""}<div class="text" .innerHTML="${this.message}"></div></div><div class="actions"><gv-button primary small outlined @click="${this._onCancel}">${this.cancelLabel}</gv-button><gv-button primary small @click="${this._onOk}">${this.okLabel}</gv-button></div>`}firstUpdated(e){super.firstUpdated(e),this.danger&&this.shadowRoot.querySelectorAll("gv-button").forEach((e=>e.setAttribute("danger",""))),this._disabled=this._calculateIsDisabled(),this.disabled&&this._reflectDisabledOnSlot()}_reflectDisabledOnSlot(){this.shadowRoot.querySelector("slot").assignedNodes({flatten:!0}).forEach((e=>{e.disabled=!0}))}_calculateIsDisabled(){const e=this.shadowRoot.querySelector("slot").assignedNodes({flatten:!0}).filter((e=>e.nodeType===Node.ELEMENT_NODE)).some((e=>!0===Boolean(e.getAttribute("disabled"))));return this.disabled||e}}exports.GvConfirm=o,window.customElements.define("gv-confirm",o);
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 '../atoms/gv-button';
18
+ import '../atoms/gv-icon';
19
+ import { i18n } from '../lib/i18n';
20
+ import { GvPopover } from './gv-popover';
21
+ import { dispatchCustomEvent } from '../lib/events';
22
+ /**
23
+ * Confirm component
24
+ *
25
+ * ## Details
26
+ * * has @theme facet
27
+ *
28
+ * @extends GvPopover
29
+ *
30
+ * @attr {String} event - the event that triggers the opening
31
+ * @attr {String} okLabel - the label of ok btn
32
+ * @attr {String} cancelLabel - the label of cancel btn
33
+ * @attr {String} icon - the icon before message
34
+ * @attr {String} message - the message
35
+ * @attr {Boolean} disabled - same as native button element `disabled` attribute
36
+ *
37
+ * @cssprop {Color} [--gv-confirm--bgc=var(--gv-theme-neutral-color-lighter, #fafafa)] - Background color
38
+ * @cssprop {Length} [--gv-confirm--maw=350px] - Max width
39
+ */
40
+ export class GvConfirm extends GvPopover {
41
+ static get properties() {
42
+ return {
43
+ /**
44
+ * @default i18n: gv-confirm.cancel
45
+ */
46
+ cancelLabel: { type: String },
47
+ /**
48
+ * @default i18n: gv-confirm.ok
49
+ */
50
+ okLabel: { type: String },
51
+ message: { type: String },
52
+ icon: { type: String },
53
+ danger: { type: Boolean, reflect: true },
54
+ disabled: { type: Boolean },
55
+ _disabled: { type: Boolean },
56
+ };
57
+ }
58
+ static get styles() {
59
+ return [
60
+ GvPopover.styles,
61
+ // language=CSS
62
+ css `
63
+ :host {
64
+ --gv-icon--s: 24px;
65
+ margin: 0.2rem;
66
+ box-sizing: border-box;
67
+ }
68
+
69
+ :host([danger]) .message gv-icon {
70
+ --gv-icon--c: var(--gv-theme-color-danger, #ff5722);
71
+ }
72
+
73
+ .popover {
74
+ --bgc: var(--gv-confirm--bgc, var(--gv-theme-neutral-color-lighter, #fafafa));
75
+ --maw: var(--gv-confirm--maw, 350px);
76
+ }
77
+
78
+ .message {
79
+ display: flex;
80
+ align-items: center;
81
+ margin: 1rem 0.5rem;
82
+ }
83
+
84
+ .message gv-icon {
85
+ margin-right: 0.5rem;
86
+ }
87
+
88
+ .text {
89
+ text-align: center;
90
+ line-height: 24px;
91
+ width: 100%;
92
+ }
93
+
94
+ .actions {
95
+ text-align: right;
96
+ }
97
+
98
+ ::slotted(*) {
99
+ margin: 0;
100
+ width: 100%;
101
+ }
102
+ `,
103
+ ];
104
+ }
105
+ constructor() {
106
+ super();
107
+ this.event = 'click';
108
+ this.arrow = true;
109
+ this.auto = true;
110
+ this.icon = 'code:info';
111
+ this.cancelLabel = i18n('gv-confirm.cancel');
112
+ this.okLabel = i18n('gv-confirm.ok');
113
+ }
114
+ connectedCallback() {
115
+ super.connectedCallback();
116
+ window.addEventListener('resize', this._closeHandler);
117
+ window.addEventListener('scroll', this._closeHandler);
118
+ }
119
+ disconnectedCallback() {
120
+ window.removeEventListener('resize', this._closeHandler);
121
+ window.removeEventListener('scroll', this._closeHandler);
122
+ super.disconnectedCallback();
123
+ }
124
+ _onCancel() {
125
+ this.close();
126
+ dispatchCustomEvent(this, 'cancel');
127
+ }
128
+ _onOk() {
129
+ this.close();
130
+ dispatchCustomEvent(this, 'ok');
131
+ }
132
+ _open(e) {
133
+ if (!this._disabled) {
134
+ super._open(e);
135
+ }
136
+ }
137
+ renderContent() {
138
+ return html `
139
+ <div class="message">
140
+ ${this.icon ? html `<gv-icon shape="${this.icon}"></gv-icon>` : ''}
141
+ <div class="text" .innerHTML="${this.message}"></div>
142
+ </div>
143
+ <div class="actions">
144
+ <gv-button primary small outlined @click="${this._onCancel}">${this.cancelLabel}</gv-button>
145
+ <gv-button primary small @click="${this._onOk}">${this.okLabel}</gv-button>
146
+ </div>
147
+ `;
148
+ }
149
+ firstUpdated(changedProperties) {
150
+ super.firstUpdated(changedProperties);
151
+ if (this.danger) {
152
+ this.shadowRoot.querySelectorAll('gv-button').forEach((btn) => btn.setAttribute('danger', ''));
153
+ }
154
+ this._disabled = this._calculateIsDisabled();
155
+ if (this.disabled) {
156
+ this._reflectDisabledOnSlot();
157
+ }
158
+ }
159
+ _reflectDisabledOnSlot() {
160
+ const slot = this.shadowRoot.querySelector('slot');
161
+ const childNodes = slot.assignedNodes({ flatten: true });
162
+ childNodes.forEach((node) => {
163
+ node.disabled = true;
164
+ });
165
+ }
166
+ _calculateIsDisabled() {
167
+ const slot = this.shadowRoot.querySelector('slot');
168
+ const childNodes = slot.assignedNodes({ flatten: true });
169
+ const isSlotButtonDisabled = childNodes
170
+ .filter((node) => node.nodeType === Node.ELEMENT_NODE)
171
+ .some((node) => Boolean(node.getAttribute('disabled')) === true);
172
+ return this.disabled || isSlotButtonDisabled;
173
+ }
174
+ }
175
+ window.customElements.define('gv-confirm', GvConfirm);