@startinblox/core 0.0.0

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 (157) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +182 -0
  3. package/dist/_snowpack/pkg/autolinker.js +4429 -0
  4. package/dist/_snowpack/pkg/autolinker.js.map +1 -0
  5. package/dist/_snowpack/pkg/common/_baseUnary-c1edb653.js +353 -0
  6. package/dist/_snowpack/pkg/common/_baseUnary-c1edb653.js.map +1 -0
  7. package/dist/_snowpack/pkg/common/_commonjsHelpers-37fa8da4.js +26 -0
  8. package/dist/_snowpack/pkg/common/_commonjsHelpers-37fa8da4.js.map +1 -0
  9. package/dist/_snowpack/pkg/common/decode-26fbf385.js +185 -0
  10. package/dist/_snowpack/pkg/common/decode-26fbf385.js.map +1 -0
  11. package/dist/_snowpack/pkg/common/lit-html-3647afce.js +1104 -0
  12. package/dist/_snowpack/pkg/common/lit-html-3647afce.js.map +1 -0
  13. package/dist/_snowpack/pkg/delta-markdown-for-quill.js +26198 -0
  14. package/dist/_snowpack/pkg/delta-markdown-for-quill.js.map +1 -0
  15. package/dist/_snowpack/pkg/dialog-polyfill.js +827 -0
  16. package/dist/_snowpack/pkg/dialog-polyfill.js.map +1 -0
  17. package/dist/_snowpack/pkg/fusejs.js +1593 -0
  18. package/dist/_snowpack/pkg/fusejs.js.map +1 -0
  19. package/dist/_snowpack/pkg/import-map.json +24 -0
  20. package/dist/_snowpack/pkg/jsonld-context-parser.js +836 -0
  21. package/dist/_snowpack/pkg/jsonld-context-parser.js.map +1 -0
  22. package/dist/_snowpack/pkg/leaflet/dist/leaflet.css +640 -0
  23. package/dist/_snowpack/pkg/leaflet/dist/leaflet.css.proxy.js +10 -0
  24. package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.Default.css +60 -0
  25. package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.Default.css.proxy.js +10 -0
  26. package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.css +14 -0
  27. package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.css.proxy.js +10 -0
  28. package/dist/_snowpack/pkg/lit-html/directives/if-defined.js +39 -0
  29. package/dist/_snowpack/pkg/lit-html/directives/if-defined.js.map +1 -0
  30. package/dist/_snowpack/pkg/lit-html/directives/unsafe-html.js +48 -0
  31. package/dist/_snowpack/pkg/lit-html/directives/unsafe-html.js.map +1 -0
  32. package/dist/_snowpack/pkg/lit-html/directives/until.js +87 -0
  33. package/dist/_snowpack/pkg/lit-html/directives/until.js.map +1 -0
  34. package/dist/_snowpack/pkg/lit-html.js +94 -0
  35. package/dist/_snowpack/pkg/lit-html.js.map +1 -0
  36. package/dist/_snowpack/pkg/markdown-it-link-attributes.js +68 -0
  37. package/dist/_snowpack/pkg/markdown-it-link-attributes.js.map +1 -0
  38. package/dist/_snowpack/pkg/markdown-it.js +11307 -0
  39. package/dist/_snowpack/pkg/markdown-it.js.map +1 -0
  40. package/dist/_snowpack/pkg/quill/dist/quill.snow.css +945 -0
  41. package/dist/_snowpack/pkg/quill/dist/quill.snow.css.proxy.js +10 -0
  42. package/dist/_snowpack/pkg/quill-delta-to-markdown.js +971 -0
  43. package/dist/_snowpack/pkg/quill-delta-to-markdown.js.map +1 -0
  44. package/dist/_snowpack/pkg/quill.js +14442 -0
  45. package/dist/_snowpack/pkg/quill.js.map +1 -0
  46. package/dist/_snowpack/pkg/slim-select.js +714 -0
  47. package/dist/_snowpack/pkg/slim-select.js.map +1 -0
  48. package/dist/_snowpack/pkg/tui-calendar/dist/tui-calendar.css +1149 -0
  49. package/dist/_snowpack/pkg/tui-calendar/dist/tui-calendar.css.proxy.js +10 -0
  50. package/dist/_snowpack/pkg/tui-calendar.js +46507 -0
  51. package/dist/_snowpack/pkg/tui-calendar.js.map +1 -0
  52. package/dist/components/solid-ac-checker.js +45 -0
  53. package/dist/components/solid-calendar.js +66 -0
  54. package/dist/components/solid-delete.js +96 -0
  55. package/dist/components/solid-display.js +150 -0
  56. package/dist/components/solid-form-search.js +177 -0
  57. package/dist/components/solid-form.js +259 -0
  58. package/dist/components/solid-lang.js +35 -0
  59. package/dist/components/solid-map.js +204 -0
  60. package/dist/components/solid-table.js +181 -0
  61. package/dist/components/solid-widget.js +72 -0
  62. package/dist/import.css +4 -0
  63. package/dist/index.js +49 -0
  64. package/dist/libs/Component.js +13 -0
  65. package/dist/libs/ComponentFactory.js +168 -0
  66. package/dist/libs/Compositor.js +96 -0
  67. package/dist/libs/Sib.js +44 -0
  68. package/dist/libs/filter.js +184 -0
  69. package/dist/libs/helpers.js +194 -0
  70. package/dist/libs/interfaces.js +6 -0
  71. package/dist/libs/lit-helpers.js +142 -0
  72. package/dist/libs/polyfills.js +37 -0
  73. package/dist/libs/store/server-pagination.js +22 -0
  74. package/dist/libs/store/server-search.js +35 -0
  75. package/dist/libs/store/store.js +814 -0
  76. package/dist/locales/en.json +10 -0
  77. package/dist/locales/en.json.proxy.js +2 -0
  78. package/dist/locales/fr.json +10 -0
  79. package/dist/locales/fr.json.proxy.js +2 -0
  80. package/dist/mixins/attributeBinderMixin.js +116 -0
  81. package/dist/mixins/contextMixin.js +26 -0
  82. package/dist/mixins/counterMixin.js +54 -0
  83. package/dist/mixins/federationMixin.js +51 -0
  84. package/dist/mixins/filterMixin.js +155 -0
  85. package/dist/mixins/grouperMixin.js +73 -0
  86. package/dist/mixins/highlighterMixin.js +36 -0
  87. package/dist/mixins/interfaces.js +6 -0
  88. package/dist/mixins/listMixin.js +105 -0
  89. package/dist/mixins/nextMixin.js +23 -0
  90. package/dist/mixins/paginateMixin.js +97 -0
  91. package/dist/mixins/requiredMixin.js +26 -0
  92. package/dist/mixins/serverPaginationMixin.js +122 -0
  93. package/dist/mixins/sorterMixin.js +131 -0
  94. package/dist/mixins/storeMixin.js +109 -0
  95. package/dist/mixins/translationMixin.js +58 -0
  96. package/dist/mixins/validationMixin.js +95 -0
  97. package/dist/mixins/widgetMixin.js +351 -0
  98. package/dist/new-widgets/attributeMixins/actionMixin.js +13 -0
  99. package/dist/new-widgets/attributeMixins/blankMixin.js +7 -0
  100. package/dist/new-widgets/attributeMixins/booleanMixin.js +7 -0
  101. package/dist/new-widgets/attributeMixins/index.js +19 -0
  102. package/dist/new-widgets/attributeMixins/mailtoMixin.js +7 -0
  103. package/dist/new-widgets/attributeMixins/multipleMixin.js +27 -0
  104. package/dist/new-widgets/attributeMixins/numberMixin.js +7 -0
  105. package/dist/new-widgets/attributeMixins/placeholderMixin.js +16 -0
  106. package/dist/new-widgets/attributeMixins/telMixin.js +7 -0
  107. package/dist/new-widgets/baseWidgetMixin.js +109 -0
  108. package/dist/new-widgets/callbackMixins/autocompletionMixin.js +96 -0
  109. package/dist/new-widgets/callbackMixins/index.js +7 -0
  110. package/dist/new-widgets/callbackMixins/richtextMixin.js +37 -0
  111. package/dist/new-widgets/callbackMixins/slimselect.css +2 -0
  112. package/dist/new-widgets/callbackMixins/slimselect.css.proxy.js +10 -0
  113. package/dist/new-widgets/interfaces.js +1 -0
  114. package/dist/new-widgets/new-widget-factory.js +91 -0
  115. package/dist/new-widgets/templateAdditionMixins/addableMixin.js +26 -0
  116. package/dist/new-widgets/templateAdditionMixins/index.js +13 -0
  117. package/dist/new-widgets/templateAdditionMixins/labelLastMixin.js +16 -0
  118. package/dist/new-widgets/templateAdditionMixins/labelMixin.js +18 -0
  119. package/dist/new-widgets/templates/defaultTemplatesDirectory.js +29 -0
  120. package/dist/new-widgets/templates/displayTemplatesDirectory.js +54 -0
  121. package/dist/new-widgets/templates/formTemplatesDirectory.js +432 -0
  122. package/dist/new-widgets/templates/groupTemplatesDirectory.js +11 -0
  123. package/dist/new-widgets/templates/index.js +6 -0
  124. package/dist/new-widgets/templates/setTemplatesDirectory.js +16 -0
  125. package/dist/new-widgets/templatesDependencies/altMixin.js +12 -0
  126. package/dist/new-widgets/templatesDependencies/editableMixin.js +60 -0
  127. package/dist/new-widgets/templatesDependencies/filterRangeFormMixin.js +34 -0
  128. package/dist/new-widgets/templatesDependencies/formCheckboxMixin.js +10 -0
  129. package/dist/new-widgets/templatesDependencies/formCheckboxesMixin.js +41 -0
  130. package/dist/new-widgets/templatesDependencies/formDropdownMixin.js +56 -0
  131. package/dist/new-widgets/templatesDependencies/formFileMixin.js +82 -0
  132. package/dist/new-widgets/templatesDependencies/formLengthMixin.js +18 -0
  133. package/dist/new-widgets/templatesDependencies/formMinMaxMixin.js +18 -0
  134. package/dist/new-widgets/templatesDependencies/formMixin.js +56 -0
  135. package/dist/new-widgets/templatesDependencies/formNumberMixin.js +10 -0
  136. package/dist/new-widgets/templatesDependencies/formRadioMixin.js +12 -0
  137. package/dist/new-widgets/templatesDependencies/formStepMixin.js +12 -0
  138. package/dist/new-widgets/templatesDependencies/linkTextMixin.js +13 -0
  139. package/dist/new-widgets/templatesDependencies/multipleFormMixin.js +112 -0
  140. package/dist/new-widgets/templatesDependencies/multipleselectFormMixin.js +65 -0
  141. package/dist/new-widgets/templatesDependencies/patternMixin.js +18 -0
  142. package/dist/new-widgets/templatesDependencies/rangeMixin.js +100 -0
  143. package/dist/new-widgets/templatesDependencies/setMixin.js +9 -0
  144. package/dist/new-widgets/templatesDependencies/valueRichtextMixin.js +9 -0
  145. package/dist/new-widgets/valueTransformationMixins/autolinkMixin.js +14 -0
  146. package/dist/new-widgets/valueTransformationMixins/dateMixin.js +29 -0
  147. package/dist/new-widgets/valueTransformationMixins/dateTimeMixin.js +12 -0
  148. package/dist/new-widgets/valueTransformationMixins/index.js +15 -0
  149. package/dist/new-widgets/valueTransformationMixins/markdownMixin.js +30 -0
  150. package/dist/new-widgets/valueTransformationMixins/multilineMixin.js +13 -0
  151. package/dist/new-widgets/valueTransformationMixins/oembedMixin.js +21 -0
  152. package/dist/solid-template-element.js +144 -0
  153. package/dist/style/default-theme.css +24 -0
  154. package/dist/style/default-theme.css.proxy.js +10 -0
  155. package/dist/widgets/baseWidget.js +268 -0
  156. package/dist/widgets/widget-factory.js +22 -0
  157. package/package.json +117 -0
@@ -0,0 +1,37 @@
1
+ import Quill from '../../_snowpack/pkg/quill.js';
2
+ import deltaMd from '../../_snowpack/pkg/delta-markdown-for-quill.js';
3
+ const RichtextMixin = {
4
+ name: 'richtext-mixin',
5
+ initialState: {
6
+ quill: null
7
+ },
8
+ created() {
9
+ //@ts-ignore
10
+ import("../../_snowpack/pkg/quill/dist/quill.snow.css.proxy.js");
11
+ this.quill = null;
12
+ this.listCallbacks.push(this.addCallback.bind(this));
13
+ },
14
+ addCallback(value, listCallbacks) {
15
+ if (this.quill == null) {
16
+ var toolbarOptions = [['bold', 'italic'], ['blockquote'], [{
17
+ 'header': [1, 2, 3, 4, 5, 6, false]
18
+ }], [{
19
+ 'list': 'ordered'
20
+ }, {
21
+ 'list': 'bullet'
22
+ }], ['link'], ['clean']];
23
+ const richtext = this.element.querySelector('[data-richtext]');
24
+ this.quill = new Quill(richtext, {
25
+ modules: {
26
+ toolbar: toolbarOptions
27
+ },
28
+ theme: 'snow'
29
+ });
30
+ }
31
+ const ops = deltaMd.toDelta(this.value);
32
+ this.quill.setContents(ops);
33
+ const nextProcessor = listCallbacks.shift();
34
+ if (nextProcessor) nextProcessor(value, listCallbacks);
35
+ }
36
+ };
37
+ export { RichtextMixin };
@@ -0,0 +1,2 @@
1
+ .ss-main{position:relative;display:inline-block;user-select:none;color:#666;width:100%}.ss-main .ss-single-selected{display:flex;cursor:pointer;width:100%;height:30px;padding:6px;border:1px solid #dcdee2;border-radius:4px;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}.ss-main .ss-single-selected.ss-disabled{background-color:#dcdee2;cursor:not-allowed}.ss-main .ss-single-selected.ss-open-above{border-top-left-radius:0px;border-top-right-radius:0px}.ss-main .ss-single-selected.ss-open-below{border-bottom-left-radius:0px;border-bottom-right-radius:0px}.ss-main .ss-single-selected .placeholder{display:flex;flex:1 1 100%;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;width:calc(100% - 30px);line-height:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ss-main .ss-single-selected .placeholder *{display:flex;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}.ss-main .ss-single-selected .placeholder .ss-disabled{color:#dedede}.ss-main .ss-single-selected .ss-deselect{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 6px 0 6px;font-weight:bold}.ss-main .ss-single-selected .ss-deselect.ss-hide{display:none}.ss-main .ss-single-selected .ss-arrow{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 6px 0 6px}.ss-main .ss-single-selected .ss-arrow span{border:solid #666;border-width:0 2px 2px 0;display:inline-block;padding:3px;transition:transform .2s, margin .2s}.ss-main .ss-single-selected .ss-arrow span.arrow-up{transform:rotate(-135deg);margin:3px 0 0 0}.ss-main .ss-single-selected .ss-arrow span.arrow-down{transform:rotate(45deg);margin:-3px 0 0 0}.ss-main .ss-multi-selected{display:flex;flex-direction:row;cursor:pointer;min-height:30px;width:100%;padding:0 0 0 3px;border:1px solid #dcdee2;border-radius:4px;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}.ss-main .ss-multi-selected.ss-disabled{background-color:#dcdee2;cursor:not-allowed}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled{color:#666}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete{cursor:not-allowed}.ss-main .ss-multi-selected.ss-open-above{border-top-left-radius:0px;border-top-right-radius:0px}.ss-main .ss-multi-selected.ss-open-below{border-bottom-left-radius:0px;border-bottom-right-radius:0px}.ss-main .ss-multi-selected .ss-values{display:flex;flex-wrap:wrap;justify-content:flex-start;flex:1 1 100%;width:calc(100% - 30px)}.ss-main .ss-multi-selected .ss-values .ss-disabled{display:flex;padding:4px 5px;margin:2px 0px;line-height:1em;align-items:center;width:100%;color:#dedede;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes scaleIn{0%{transform:scale(0);opacity:0}100%{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}100%{transform:scale(0);opacity:0}}.ss-main .ss-multi-selected .ss-values .ss-value{display:flex;user-select:none;align-items:center;font-size:12px;padding:3px 5px;margin:3px 5px 3px 0px;color:#fff;background-color:#5897fb;border-radius:4px;animation-name:scaleIn;animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:both}.ss-main .ss-multi-selected .ss-values .ss-value.ss-out{animation-name:scaleOut;animation-duration:.2s;animation-timing-function:ease-out}.ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete{margin:0 0 0 5px;cursor:pointer}.ss-main .ss-multi-selected .ss-add{display:flex;flex:0 1 3px;margin:9px 12px 0 5px}.ss-main .ss-multi-selected .ss-add .ss-plus{display:flex;justify-content:center;align-items:center;background:#666;position:relative;height:10px;width:2px;transition:transform .2s}.ss-main .ss-multi-selected .ss-add .ss-plus:after{background:#666;content:"";position:absolute;height:2px;width:10px;left:-4px;top:4px}.ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross{transform:rotate(45deg)}.ss-content{position:absolute;width:100%;margin:-1px 0 0 0;box-sizing:border-box;border:solid 1px #dcdee2;z-index:1010;background-color:#fff;transform-origin:center top;transition:transform .2s, opacity .2s;opacity:0;transform:scaleY(0)}.ss-content.ss-open{display:block;opacity:1;transform:scaleY(1)}.ss-content .ss-search{display:flex;flex-direction:row;padding:8px 8px 6px 8px}.ss-content .ss-search.ss-hide{height:0px;opacity:0;padding:0px 0px 0px 0px;margin:0px 0px 0px 0px}.ss-content .ss-search.ss-hide input{height:0px;opacity:0;padding:0px 0px 0px 0px;margin:0px 0px 0px 0px}.ss-content .ss-search input{display:inline-flex;font-size:inherit;line-height:inherit;flex:1 1 auto;width:100%;min-width:0px;height:30px;padding:6px 8px;margin:0;border:1px solid #dcdee2;border-radius:4px;background-color:#fff;outline:0;text-align:left;box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-appearance:textfield}.ss-content .ss-search input::placeholder{color:#8a8a8a;vertical-align:middle}.ss-content .ss-search input:focus{box-shadow:0 0 5px #5897fb}.ss-content .ss-search .ss-addable{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;font-size:22px;font-weight:bold;flex:0 0 30px;height:30px;margin:0 0 0 8px;border:1px solid #dcdee2;border-radius:4px;box-sizing:border-box}.ss-content .ss-addable{padding-top:0px}.ss-content .ss-list{max-height:200px;overflow-x:hidden;overflow-y:auto;text-align:left}.ss-content .ss-list .ss-optgroup .ss-optgroup-label{padding:6px 10px 6px 10px;font-weight:bold}.ss-content .ss-list .ss-optgroup .ss-option{padding:6px 6px 6px 25px}.ss-content .ss-list .ss-optgroup-label-selectable{cursor:pointer}.ss-content .ss-list .ss-optgroup-label-selectable:hover{color:#fff;background-color:#5897fb}.ss-content .ss-list .ss-option{padding:6px 10px 6px 10px;cursor:pointer;user-select:none}.ss-content .ss-list .ss-option *{display:inline-block}.ss-content .ss-list .ss-option:hover,.ss-content .ss-list .ss-option.ss-highlighted{color:#fff;background-color:#5897fb}.ss-content .ss-list .ss-option.ss-disabled{cursor:not-allowed;color:#dedede;background-color:#fff}.ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected{color:#666;background-color:rgba(88,151,251,0.1)}.ss-content .ss-list .ss-option.ss-hide{display:none}.ss-content .ss-list .ss-option .ss-search-highlight{background-color:#fffb8c}
2
+
@@ -0,0 +1,10 @@
1
+ // [snowpack] add styles to the page (skip if no document exists)
2
+ if (typeof document !== 'undefined') {
3
+ const code = ".ss-main{position:relative;display:inline-block;user-select:none;color:#666;width:100%}.ss-main .ss-single-selected{display:flex;cursor:pointer;width:100%;height:30px;padding:6px;border:1px solid #dcdee2;border-radius:4px;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}.ss-main .ss-single-selected.ss-disabled{background-color:#dcdee2;cursor:not-allowed}.ss-main .ss-single-selected.ss-open-above{border-top-left-radius:0px;border-top-right-radius:0px}.ss-main .ss-single-selected.ss-open-below{border-bottom-left-radius:0px;border-bottom-right-radius:0px}.ss-main .ss-single-selected .placeholder{display:flex;flex:1 1 100%;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;width:calc(100% - 30px);line-height:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ss-main .ss-single-selected .placeholder *{display:flex;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}.ss-main .ss-single-selected .placeholder .ss-disabled{color:#dedede}.ss-main .ss-single-selected .ss-deselect{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 6px 0 6px;font-weight:bold}.ss-main .ss-single-selected .ss-deselect.ss-hide{display:none}.ss-main .ss-single-selected .ss-arrow{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 6px 0 6px}.ss-main .ss-single-selected .ss-arrow span{border:solid #666;border-width:0 2px 2px 0;display:inline-block;padding:3px;transition:transform .2s, margin .2s}.ss-main .ss-single-selected .ss-arrow span.arrow-up{transform:rotate(-135deg);margin:3px 0 0 0}.ss-main .ss-single-selected .ss-arrow span.arrow-down{transform:rotate(45deg);margin:-3px 0 0 0}.ss-main .ss-multi-selected{display:flex;flex-direction:row;cursor:pointer;min-height:30px;width:100%;padding:0 0 0 3px;border:1px solid #dcdee2;border-radius:4px;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}.ss-main .ss-multi-selected.ss-disabled{background-color:#dcdee2;cursor:not-allowed}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled{color:#666}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete{cursor:not-allowed}.ss-main .ss-multi-selected.ss-open-above{border-top-left-radius:0px;border-top-right-radius:0px}.ss-main .ss-multi-selected.ss-open-below{border-bottom-left-radius:0px;border-bottom-right-radius:0px}.ss-main .ss-multi-selected .ss-values{display:flex;flex-wrap:wrap;justify-content:flex-start;flex:1 1 100%;width:calc(100% - 30px)}.ss-main .ss-multi-selected .ss-values .ss-disabled{display:flex;padding:4px 5px;margin:2px 0px;line-height:1em;align-items:center;width:100%;color:#dedede;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes scaleIn{0%{transform:scale(0);opacity:0}100%{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}100%{transform:scale(0);opacity:0}}.ss-main .ss-multi-selected .ss-values .ss-value{display:flex;user-select:none;align-items:center;font-size:12px;padding:3px 5px;margin:3px 5px 3px 0px;color:#fff;background-color:#5897fb;border-radius:4px;animation-name:scaleIn;animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:both}.ss-main .ss-multi-selected .ss-values .ss-value.ss-out{animation-name:scaleOut;animation-duration:.2s;animation-timing-function:ease-out}.ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete{margin:0 0 0 5px;cursor:pointer}.ss-main .ss-multi-selected .ss-add{display:flex;flex:0 1 3px;margin:9px 12px 0 5px}.ss-main .ss-multi-selected .ss-add .ss-plus{display:flex;justify-content:center;align-items:center;background:#666;position:relative;height:10px;width:2px;transition:transform .2s}.ss-main .ss-multi-selected .ss-add .ss-plus:after{background:#666;content:\"\";position:absolute;height:2px;width:10px;left:-4px;top:4px}.ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross{transform:rotate(45deg)}.ss-content{position:absolute;width:100%;margin:-1px 0 0 0;box-sizing:border-box;border:solid 1px #dcdee2;z-index:1010;background-color:#fff;transform-origin:center top;transition:transform .2s, opacity .2s;opacity:0;transform:scaleY(0)}.ss-content.ss-open{display:block;opacity:1;transform:scaleY(1)}.ss-content .ss-search{display:flex;flex-direction:row;padding:8px 8px 6px 8px}.ss-content .ss-search.ss-hide{height:0px;opacity:0;padding:0px 0px 0px 0px;margin:0px 0px 0px 0px}.ss-content .ss-search.ss-hide input{height:0px;opacity:0;padding:0px 0px 0px 0px;margin:0px 0px 0px 0px}.ss-content .ss-search input{display:inline-flex;font-size:inherit;line-height:inherit;flex:1 1 auto;width:100%;min-width:0px;height:30px;padding:6px 8px;margin:0;border:1px solid #dcdee2;border-radius:4px;background-color:#fff;outline:0;text-align:left;box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-appearance:textfield}.ss-content .ss-search input::placeholder{color:#8a8a8a;vertical-align:middle}.ss-content .ss-search input:focus{box-shadow:0 0 5px #5897fb}.ss-content .ss-search .ss-addable{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;font-size:22px;font-weight:bold;flex:0 0 30px;height:30px;margin:0 0 0 8px;border:1px solid #dcdee2;border-radius:4px;box-sizing:border-box}.ss-content .ss-addable{padding-top:0px}.ss-content .ss-list{max-height:200px;overflow-x:hidden;overflow-y:auto;text-align:left}.ss-content .ss-list .ss-optgroup .ss-optgroup-label{padding:6px 10px 6px 10px;font-weight:bold}.ss-content .ss-list .ss-optgroup .ss-option{padding:6px 6px 6px 25px}.ss-content .ss-list .ss-optgroup-label-selectable{cursor:pointer}.ss-content .ss-list .ss-optgroup-label-selectable:hover{color:#fff;background-color:#5897fb}.ss-content .ss-list .ss-option{padding:6px 10px 6px 10px;cursor:pointer;user-select:none}.ss-content .ss-list .ss-option *{display:inline-block}.ss-content .ss-list .ss-option:hover,.ss-content .ss-list .ss-option.ss-highlighted{color:#fff;background-color:#5897fb}.ss-content .ss-list .ss-option.ss-disabled{cursor:not-allowed;color:#dedede;background-color:#fff}.ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected{color:#666;background-color:rgba(88,151,251,0.1)}.ss-content .ss-list .ss-option.ss-hide{display:none}.ss-content .ss-list .ss-option .ss-search-highlight{background-color:#fffb8c}\n\n";
4
+
5
+ const styleEl = document.createElement("style");
6
+ const codeEl = document.createTextNode(code);
7
+ styleEl.type = 'text/css';
8
+ styleEl.appendChild(codeEl);
9
+ document.head.appendChild(styleEl);
10
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,91 @@
1
+ import { Sib } from '../libs/Sib.js';
2
+ import { BaseWidgetMixin } from './baseWidgetMixin.js';
3
+ import { defaultTemplates, displayTemplates, formTemplates, setTemplates, groupTemplates } from './templates/index.js';
4
+ import { valueTransformationDirectory } from './valueTransformationMixins/index.js';
5
+ import { templateAdditionDirectory } from './templateAdditionMixins/index.js';
6
+ import { attributeDirectory } from './attributeMixins/index.js';
7
+ import { callbackDirectory } from './callbackMixins/index.js';
8
+ const valueTransformationKeys = Object.keys(valueTransformationDirectory);
9
+ const attributeKeys = Object.keys(attributeDirectory);
10
+ const templateAdditionKeys = Object.keys(templateAdditionDirectory);
11
+ const callbackKeys = Object.keys(callbackDirectory);
12
+
13
+ /**
14
+ * Create and register a widget based on its tagName
15
+ * @param tagName - string
16
+ */
17
+ export const newWidgetFactory = tagName => {
18
+ let widgetMixins;
19
+ try {
20
+ widgetMixins = getWidgetMixins(tagName);
21
+ } // get mixins and template
22
+ catch (e) {
23
+ console.error(e);
24
+ return;
25
+ }
26
+ const newWidget = {
27
+ // compose widget
28
+ name: tagName,
29
+ use: [...widgetMixins.mixins, BaseWidgetMixin // at the end so created() is called first
30
+ ],
31
+
32
+ get template() {
33
+ return widgetMixins.templateMixin.template;
34
+ }
35
+ };
36
+ Sib.register(newWidget); // and register component
37
+ };
38
+
39
+ /**
40
+ * Returns mixins and the template of a widget, depending of its tagName
41
+ * @param tagName - string
42
+ */
43
+ function getWidgetMixins(tagName) {
44
+ const valueTransformations = [];
45
+ const attributes = [];
46
+ const templateAdditions = [];
47
+ const callbacks = [];
48
+ let template = null;
49
+
50
+ // decompose widget name
51
+ const mixinNames = tagName.split('-').filter(t => t !== 'solid');
52
+
53
+ // choose widget type (default or set)
54
+ let widgetType = defaultTemplates;
55
+ if (mixinNames.includes('display')) widgetType = displayTemplates;else if (mixinNames.includes('form')) widgetType = formTemplates;else if (mixinNames.includes('set')) widgetType = setTemplates;else if (mixinNames.includes('group')) widgetType = groupTemplates;
56
+ const templateKeys = Object.keys(widgetType);
57
+
58
+ // build mixins array
59
+ for (const mixin of mixinNames) {
60
+ // features
61
+ if (valueTransformationKeys.includes(mixin)) {
62
+ valueTransformations.push(valueTransformationDirectory[mixin]);
63
+ }
64
+ if (attributeKeys.includes(mixin)) {
65
+ attributes.push(attributeDirectory[mixin]);
66
+ }
67
+ if (templateAdditionKeys.includes(mixin)) {
68
+ templateAdditions.push(templateAdditionDirectory[mixin]);
69
+ }
70
+ if (callbackKeys.includes(mixin)) {
71
+ callbacks.push(callbackDirectory[mixin]);
72
+ }
73
+
74
+ // template
75
+ if (templateKeys.includes(mixin)) {
76
+ template = widgetType[mixin];
77
+ }
78
+ }
79
+ if (!template) throw `No template found for widget "${tagName}"`;
80
+ return {
81
+ templateMixin: template,
82
+ mixins: [...valueTransformations, ...attributes, ...templateAdditions, ...(template.dependencies || []), ...callbacks]
83
+ };
84
+ }
85
+
86
+ // create default widgets
87
+ newWidgetFactory('solid-form-dropdown');
88
+ newWidgetFactory('solid-form-multicheckbox');
89
+ newWidgetFactory('solid-form-file-label');
90
+ newWidgetFactory('solid-action');
91
+ newWidgetFactory('solid-group-default');
@@ -0,0 +1,26 @@
1
+ import { spread } from '../../libs/lit-helpers.js';
2
+ import { html } from '../../_snowpack/pkg/lit-html.js';
3
+ const AddableMixin = {
4
+ name: 'addable-mixin',
5
+ created() {
6
+ this.listTemplateAdditions.push(this.addableValue.bind(this));
7
+ },
8
+ getAddableAttributes() {
9
+ const addableAttr = Array.from(this.element.attributes).filter(a => a.name.startsWith('addable-'));
10
+ const cleanAddableAttr = {};
11
+ for (let attr of addableAttr) cleanAddableAttr[attr.name.replace('addable-', '')] = attr.value;
12
+ if (!cleanAddableAttr.hasOwnProperty('data-src')) cleanAddableAttr['data-src'] = this.range;
13
+ return cleanAddableAttr;
14
+ },
15
+ addableValue(template, listTemplateAdditions, attributes) {
16
+ const addables = this.getAddableAttributes(attributes);
17
+ const newTemplate = html`
18
+ ${template}
19
+ <solid-form ...=${spread(addables)}>
20
+ </solid-form>
21
+ `;
22
+ const nextProcessor = listTemplateAdditions.shift();
23
+ if (nextProcessor) nextProcessor(newTemplate, listTemplateAdditions);
24
+ }
25
+ };
26
+ export { AddableMixin };
@@ -0,0 +1,13 @@
1
+ import { LabelMixin } from './labelMixin.js';
2
+ import { LabelLastMixin } from './labelLastMixin.js';
3
+ import { AddableMixin } from './addableMixin.js';
4
+
5
+ /**
6
+ * DOM Additions
7
+ */
8
+ const templateAdditionDirectory = {
9
+ label: LabelMixin,
10
+ labellast: LabelLastMixin,
11
+ addable: AddableMixin
12
+ };
13
+ export { templateAdditionDirectory, LabelMixin, LabelLastMixin, AddableMixin };
@@ -0,0 +1,16 @@
1
+ import { html } from '../../_snowpack/pkg/lit-html.js';
2
+ const LabelLastMixin = {
3
+ name: 'label-last-mixin',
4
+ created() {
5
+ this.listTemplateAdditions.push(this.addLabelLast.bind(this));
6
+ },
7
+ addLabelLast(template, listTemplateAdditions) {
8
+ const newTemplate = html`
9
+ ${template}
10
+ <label>${this.label || this.name}</label>
11
+ `;
12
+ const nextProcessor = listTemplateAdditions.shift();
13
+ if (nextProcessor) nextProcessor(newTemplate, listTemplateAdditions);
14
+ }
15
+ };
16
+ export { LabelLastMixin };
@@ -0,0 +1,18 @@
1
+ import { html } from '../../_snowpack/pkg/lit-html.js';
2
+ import { uniqID } from '../../libs/helpers.js';
3
+ const LabelMixin = {
4
+ name: 'label-mixin',
5
+ created() {
6
+ this.listAttributes['id'] = uniqID();
7
+ this.listTemplateAdditions.push(this.addLabel.bind(this));
8
+ },
9
+ addLabel(template, listTemplateAdditions) {
10
+ const newTemplate = html`
11
+ <label for="${this.listAttributes['id']}">${this.label || this.name}</label>
12
+ ${template}
13
+ `;
14
+ const nextProcessor = listTemplateAdditions.shift();
15
+ if (nextProcessor) nextProcessor(newTemplate, listTemplateAdditions);
16
+ }
17
+ };
18
+ export { LabelMixin };
@@ -0,0 +1,29 @@
1
+ import { html } from '../../_snowpack/pkg/lit-html.js';
2
+ import { ifDefined } from '../../_snowpack/pkg/lit-html/directives/if-defined.js';
3
+ import { LinkTextMixin } from '../templatesDependencies/linkTextMixin.js';
4
+ export const defaultTemplates = {
5
+ action: {
6
+ template: (value, attributes) => html`
7
+ <solid-link
8
+ data-src=${ifDefined(attributes.src)}
9
+ next=${ifDefined(value)}
10
+ id=${ifDefined(attributes.id)}
11
+ link-text=${ifDefined(attributes.linkText)}
12
+ >
13
+ ${attributes.linkText == null ? attributes.name || '' : attributes.linkText}
14
+ </solid-link>
15
+ `,
16
+ dependencies: [LinkTextMixin]
17
+ },
18
+ multiple: {
19
+ template: (value, attributes) => html`
20
+ <solid-display
21
+ data-src=${value || ''}
22
+ fields=${ifDefined(attributes.fields)}
23
+ next=${ifDefined(attributes.next)}
24
+ empty-widget=${ifDefined(attributes.emptyWidget)}
25
+ ></solid-display>
26
+ `,
27
+ dependencies: []
28
+ }
29
+ };
@@ -0,0 +1,54 @@
1
+ import { EditableMixin } from '../templatesDependencies/editableMixin.js';
2
+ import { AltMixin } from '../templatesDependencies/altMixin.js';
3
+ import { LinkTextMixin } from '../templatesDependencies/linkTextMixin.js';
4
+ import { html } from '../../_snowpack/pkg/lit-html.js';
5
+ import { ifDefined } from '../../_snowpack/pkg/lit-html/directives/if-defined.js';
6
+ export const displayTemplates = {
7
+ value: {
8
+ template: value => html`${value}`,
9
+ dependencies: []
10
+ },
11
+ div: {
12
+ template: (value, attributes) => html`
13
+ <div
14
+ name=${ifDefined(attributes.name)}
15
+ ?data-editable=${attributes.editable}
16
+ >
17
+ ${value}
18
+ </div>
19
+ `,
20
+ dependencies: [EditableMixin]
21
+ },
22
+ link: {
23
+ template: (value, attributes) => html`
24
+ <a
25
+ name=${ifDefined(attributes.name)}
26
+ href=${(attributes.mailto || attributes.tel || '') + (value || '#')}
27
+ target=${ifDefined(attributes.target)}
28
+ ?data-editable=${attributes.editable}
29
+ id=${ifDefined(attributes.id)}
30
+ link-text=${ifDefined(attributes.linkText)}
31
+ >
32
+ ${attributes.linkText || value || ''}
33
+ </a>
34
+ `,
35
+ dependencies: [EditableMixin, LinkTextMixin]
36
+ },
37
+ img: {
38
+ template: (value, attributes) => html`
39
+ <img
40
+ name=${ifDefined(attributes.name)}
41
+ src=${ifDefined(value)}
42
+ alt=${ifDefined(attributes.alt)}
43
+ style="max-width: 100%; max-height: 100%;"
44
+ />
45
+ `,
46
+ dependencies: [AltMixin]
47
+ },
48
+ boolean: {
49
+ template: (value, attributes) => html`
50
+ ${value === 'true' ? html`<label>${attributes.label || attributes.name || ''}</label>` : ''}
51
+ `,
52
+ dependencies: []
53
+ }
54
+ };