@esri/solutions-components 0.2.6 → 0.2.7
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.
- package/dist/cjs/deduct-calculator.cjs.entry.js +1 -1
- package/dist/cjs/pci-calculator.cjs.entry.js +1 -1
- package/dist/cjs/{pciUtils-6a806ba4.js → pciUtils-423cfc68.js} +25 -7
- package/dist/collection/demos/deduct-calculator.html +2 -5
- package/dist/collection/demos/new-public-notification.html +6 -4
- package/dist/collection/utils/pciUtils.js +25 -7
- package/dist/collection/utils/pciUtils.ts +30 -7
- package/dist/components/ExpandToggle.js +110 -0
- package/dist/components/Heading.js +22 -0
- package/dist/components/_commonjsHelpers.js +22 -0
- package/dist/components/action-bar.js +276 -0
- package/dist/components/action-group.js +149 -0
- package/dist/components/action-menu.js +356 -0
- package/dist/components/action.js +214 -0
- package/dist/components/add-record-modal.d.ts +11 -0
- package/dist/components/add-record-modal.js +171 -0
- package/dist/components/array.js +15 -0
- package/dist/components/block.js +272 -0
- package/dist/components/buffer-tools.d.ts +11 -0
- package/dist/components/buffer-tools.js +11 -0
- package/dist/components/buffer-tools2.js +262 -0
- package/dist/components/button.js +263 -0
- package/dist/components/calcite-accordion-item.js +244 -0
- package/dist/components/calcite-accordion.js +180 -0
- package/dist/components/calcite-action-bar.js +11 -0
- package/dist/components/calcite-action-group.js +11 -0
- package/dist/components/calcite-action-menu.js +11 -0
- package/dist/components/calcite-action-pad.js +197 -0
- package/dist/components/calcite-action.js +11 -0
- package/dist/components/calcite-alert.js +297 -0
- package/dist/components/calcite-avatar.js +182 -0
- package/dist/components/calcite-block-section.js +155 -0
- package/dist/components/calcite-block.js +11 -0
- package/dist/components/calcite-button.js +11 -0
- package/dist/components/calcite-card.js +187 -0
- package/dist/components/calcite-checkbox.js +11 -0
- package/dist/components/calcite-chip.js +11 -0
- package/dist/components/calcite-color-picker-hex-input.js +11 -0
- package/dist/components/calcite-color-picker-swatch.js +11 -0
- package/dist/components/calcite-color-picker.js +1036 -0
- package/dist/components/calcite-combobox-item-group.js +75 -0
- package/dist/components/calcite-combobox-item.js +11 -0
- package/dist/components/calcite-combobox.js +11 -0
- package/dist/components/calcite-date-picker-day.js +11 -0
- package/dist/components/calcite-date-picker-month-header.js +11 -0
- package/dist/components/calcite-date-picker-month.js +11 -0
- package/dist/components/calcite-date-picker.js +11 -0
- package/dist/components/calcite-dropdown-group.js +11 -0
- package/dist/components/calcite-dropdown-item.js +11 -0
- package/dist/components/calcite-dropdown.js +11 -0
- package/dist/components/calcite-fab.js +144 -0
- package/dist/components/calcite-filter.js +195 -0
- package/dist/components/calcite-flow-item.js +243 -0
- package/dist/components/calcite-flow.js +147 -0
- package/dist/components/calcite-graph.js +11 -0
- package/dist/components/calcite-handle.js +11 -0
- package/dist/components/calcite-icon.js +11 -0
- package/dist/components/calcite-inline-editable.js +294 -0
- package/dist/components/calcite-input-date-picker.js +713 -0
- package/dist/components/calcite-input-message.js +11 -0
- package/dist/components/calcite-input-number.js +637 -0
- package/dist/components/calcite-input-text.js +400 -0
- package/dist/components/calcite-input-time-picker.js +434 -0
- package/dist/components/calcite-input.js +11 -0
- package/dist/components/calcite-label.js +11 -0
- package/dist/components/calcite-link.js +11 -0
- package/dist/components/calcite-list-item-group.js +65 -0
- package/dist/components/calcite-list-item.js +11 -0
- package/dist/components/calcite-list.js +11 -0
- package/dist/components/calcite-loader.js +11 -0
- package/dist/components/calcite-modal.js +11 -0
- package/dist/components/calcite-notice.js +11 -0
- package/dist/components/calcite-option-group.js +64 -0
- package/dist/components/calcite-option.js +11 -0
- package/dist/components/calcite-pagination.js +258 -0
- package/dist/components/calcite-panel.js +11 -0
- package/dist/components/calcite-pick-list-group.js +74 -0
- package/dist/components/calcite-pick-list-item.js +11 -0
- package/dist/components/calcite-pick-list.js +11 -0
- package/dist/components/calcite-popover-manager.js +94 -0
- package/dist/components/calcite-popover.js +11 -0
- package/dist/components/calcite-progress.js +11 -0
- package/dist/components/calcite-radio-button-group.js +132 -0
- package/dist/components/calcite-radio-button.js +310 -0
- package/dist/components/calcite-radio-group-item.js +11 -0
- package/dist/components/calcite-radio-group.js +11 -0
- package/dist/components/calcite-rating.js +201 -0
- package/dist/components/calcite-scrim.js +11 -0
- package/dist/components/calcite-select.js +11 -0
- package/dist/components/calcite-shell-center-row.js +100 -0
- package/dist/components/calcite-shell-panel.js +11 -0
- package/dist/components/calcite-shell.js +11 -0
- package/dist/components/calcite-slider.js +11 -0
- package/dist/components/calcite-sortable-list.js +202 -0
- package/dist/components/calcite-split-button.js +11 -0
- package/dist/components/calcite-stepper-item.js +271 -0
- package/dist/components/calcite-stepper.js +256 -0
- package/dist/components/calcite-switch.js +11 -0
- package/dist/components/calcite-tab-nav.js +11 -0
- package/dist/components/calcite-tab-title.js +11 -0
- package/dist/components/calcite-tab.js +11 -0
- package/dist/components/calcite-tabs.js +11 -0
- package/dist/components/calcite-tile-select-group.js +65 -0
- package/dist/components/calcite-tile-select.js +266 -0
- package/dist/components/calcite-tile.js +11 -0
- package/dist/components/calcite-time-picker.js +11 -0
- package/dist/components/calcite-tip-group.js +41 -0
- package/dist/components/calcite-tip-manager.js +223 -0
- package/dist/components/calcite-tip.js +162 -0
- package/dist/components/calcite-tooltip-manager.js +57 -0
- package/dist/components/calcite-tooltip.js +11 -0
- package/dist/components/calcite-tree-item.js +11 -0
- package/dist/components/calcite-tree.js +11 -0
- package/dist/components/calcite-value-list-item.js +11 -0
- package/dist/components/calcite-value-list.js +11 -0
- package/dist/components/card-manager.d.ts +11 -0
- package/dist/components/card-manager.js +143 -0
- package/dist/components/check-list.d.ts +11 -0
- package/dist/components/check-list.js +11 -0
- package/dist/components/check-list2.js +131 -0
- package/dist/components/checkbox.js +165 -0
- package/dist/components/chip.js +170 -0
- package/dist/components/color-picker-hex-input.js +363 -0
- package/dist/components/color-picker-swatch.js +2034 -0
- package/dist/components/combobox-item.js +182 -0
- package/dist/components/combobox.js +912 -0
- package/dist/components/comment-card.d.ts +11 -0
- package/dist/components/comment-card.js +90 -0
- package/dist/components/conditionalSlot.js +50 -0
- package/dist/components/config-buffer-tools.d.ts +11 -0
- package/dist/components/config-buffer-tools.js +187 -0
- package/dist/components/config-draw-tools.d.ts +11 -0
- package/dist/components/config-draw-tools.js +121 -0
- package/dist/components/config-layer-picker.d.ts +11 -0
- package/dist/components/config-layer-picker.js +163 -0
- package/dist/components/config-pdf-download.d.ts +11 -0
- package/dist/components/config-pdf-download.js +154 -0
- package/dist/components/crowdsource-manager.d.ts +11 -0
- package/dist/components/crowdsource-manager.js +90 -0
- package/dist/components/crowdsource-reporter.d.ts +11 -0
- package/dist/components/crowdsource-reporter.js +90 -0
- package/dist/components/csvUtils.js +74 -0
- package/dist/components/date-picker-day.js +111 -0
- package/dist/components/date-picker-month-header.js +224 -0
- package/dist/components/date-picker-month.js +344 -0
- package/dist/components/date-picker.js +575 -0
- package/dist/components/date.js +180 -0
- package/dist/components/debounce.js +487 -0
- package/dist/components/deduct-calculator.d.ts +11 -0
- package/dist/components/deduct-calculator.js +11 -0
- package/dist/components/deduct-calculator2.js +1002 -0
- package/dist/components/dom.js +231 -0
- package/dist/components/dropdown-group.js +96 -0
- package/dist/components/dropdown-item.js +232 -0
- package/dist/components/dropdown.js +505 -0
- package/dist/components/edit-record-modal.d.ts +11 -0
- package/dist/components/edit-record-modal.js +11 -0
- package/dist/components/edit-record-modal2.js +161 -0
- package/dist/components/filter.js +763 -0
- package/dist/components/floating-ui.js +1768 -0
- package/dist/components/form.js +228 -0
- package/dist/components/graph.js +254 -0
- package/dist/components/guid.js +24 -0
- package/dist/components/handle.js +119 -0
- package/dist/components/icon.js +202 -0
- package/dist/components/index.d.ts +61 -0
- package/dist/components/index.js +196 -0
- package/dist/components/index2.js +199 -0
- package/dist/components/info-card.d.ts +11 -0
- package/dist/components/info-card.js +11 -0
- package/dist/components/info-card2.js +97 -0
- package/dist/components/input-message.js +101 -0
- package/dist/components/input.js +740 -0
- package/dist/components/interactive.js +51 -0
- package/dist/components/interfaces.js +19 -0
- package/dist/components/interfaces2.js +21 -0
- package/dist/components/interfaces3.js +80 -0
- package/dist/components/json-editor.d.ts +11 -0
- package/dist/components/json-editor.js +11 -0
- package/dist/components/json-editor2.js +441 -0
- package/dist/components/key.js +16 -0
- package/dist/components/label.js +106 -0
- package/dist/components/label2.js +131 -0
- package/dist/components/labelFormats.js +210 -0
- package/dist/components/layer-table.d.ts +11 -0
- package/dist/components/layer-table.js +453 -0
- package/dist/components/link.js +123 -0
- package/dist/components/list-item.d.ts +11 -0
- package/dist/components/list-item.js +90 -0
- package/dist/components/list-item2.js +149 -0
- package/dist/components/list.js +83 -0
- package/dist/components/loadModules.js +28 -0
- package/dist/components/loader.js +116 -0
- package/dist/components/locale.js +412 -0
- package/dist/components/locale2.js +413 -0
- package/dist/components/map-card.d.ts +11 -0
- package/dist/components/map-card.js +354 -0
- package/dist/components/map-draw-tools.d.ts +11 -0
- package/dist/components/map-draw-tools.js +11 -0
- package/dist/components/map-draw-tools2.js +228 -0
- package/dist/components/map-layer-picker.d.ts +11 -0
- package/dist/components/map-layer-picker.js +11 -0
- package/dist/components/map-layer-picker2.js +188 -0
- package/dist/components/map-search.d.ts +11 -0
- package/dist/components/map-search.js +155 -0
- package/dist/components/map-select-tools.d.ts +11 -0
- package/dist/components/map-select-tools.js +11 -0
- package/dist/components/map-select-tools2.js +588 -0
- package/dist/components/mapViewUtils.js +129 -0
- package/dist/components/math.js +24 -0
- package/dist/components/media-card.d.ts +11 -0
- package/dist/components/media-card.js +11 -0
- package/dist/components/media-card2.js +177 -0
- package/dist/components/modal.js +495 -0
- package/dist/components/nonChromiumPlatformUtils.js +503 -0
- package/dist/components/notice.js +192 -0
- package/dist/components/observers.js +56 -0
- package/dist/components/openCloseComponent.js +56 -0
- package/dist/components/option.js +109 -0
- package/dist/components/panel.js +459 -0
- package/dist/components/pci-calculator.d.ts +11 -0
- package/dist/components/pci-calculator.js +193 -0
- package/dist/components/pdf-download.d.ts +11 -0
- package/dist/components/pdf-download.js +11 -0
- package/dist/components/pdf-download2.js +189 -0
- package/dist/components/pick-list-item.js +255 -0
- package/dist/components/pick-list.js +170 -0
- package/dist/components/popover.js +500 -0
- package/dist/components/progress.js +60 -0
- package/dist/components/public-notification.d.ts +11 -0
- package/dist/components/public-notification.js +825 -0
- package/dist/components/publicNotificationStore.js +38 -0
- package/dist/components/queryUtils.js +187 -0
- package/dist/components/radio-group-item.js +101 -0
- package/dist/components/radio-group.js +235 -0
- package/dist/components/refine-selection-tools.d.ts +11 -0
- package/dist/components/refine-selection-tools.js +11 -0
- package/dist/components/refine-selection-tools2.js +492 -0
- package/dist/components/refine-selection.d.ts +11 -0
- package/dist/components/refine-selection.js +11 -0
- package/dist/components/refine-selection2.js +376 -0
- package/dist/components/resources.js +24 -0
- package/dist/components/resources2.js +21 -0
- package/dist/components/resources3.js +38 -0
- package/dist/components/scrim.js +83 -0
- package/dist/components/select.js +259 -0
- package/dist/components/shared-list-render.js +319 -0
- package/dist/components/shell-panel.js +281 -0
- package/dist/components/shell.js +121 -0
- package/dist/components/slider.js +896 -0
- package/dist/components/solution-configuration.d.ts +11 -0
- package/dist/components/solution-configuration.js +2233 -0
- package/dist/components/solution-contents.d.ts +11 -0
- package/dist/components/solution-contents.js +11 -0
- package/dist/components/solution-contents2.js +128 -0
- package/dist/components/solution-item-details.d.ts +11 -0
- package/dist/components/solution-item-details.js +11 -0
- package/dist/components/solution-item-details2.js +234 -0
- package/dist/components/solution-item-icon.d.ts +11 -0
- package/dist/components/solution-item-icon.js +11 -0
- package/dist/components/solution-item-icon2.js +342 -0
- package/dist/components/solution-item-sharing.d.ts +11 -0
- package/dist/components/solution-item-sharing.js +11 -0
- package/dist/components/solution-item-sharing2.js +167 -0
- package/dist/components/solution-item.d.ts +11 -0
- package/dist/components/solution-item.js +11 -0
- package/dist/components/solution-item2.js +315 -0
- package/dist/components/solution-organization-variables.d.ts +11 -0
- package/dist/components/solution-organization-variables.js +11 -0
- package/dist/components/solution-organization-variables2.js +132 -0
- package/dist/components/solution-resource-item.d.ts +11 -0
- package/dist/components/solution-resource-item.js +11 -0
- package/dist/components/solution-resource-item2.js +356 -0
- package/dist/components/solution-spatial-ref.d.ts +11 -0
- package/dist/components/solution-spatial-ref.js +11 -0
- package/dist/components/solution-spatial-ref2.js +21446 -0
- package/dist/components/solution-store.js +4092 -0
- package/dist/components/solution-template-data.d.ts +11 -0
- package/dist/components/solution-template-data.js +11 -0
- package/dist/components/solution-template-data2.js +233 -0
- package/dist/components/solution-variables.d.ts +11 -0
- package/dist/components/solution-variables.js +11 -0
- package/dist/components/solution-variables2.js +150 -0
- package/dist/components/sortable.esm.js +3026 -0
- package/dist/components/split-button.js +165 -0
- package/dist/components/store-manager.d.ts +11 -0
- package/dist/components/store-manager.js +83 -0
- package/dist/components/switch.js +139 -0
- package/dist/components/tab-nav.js +241 -0
- package/dist/components/tab-title.js +276 -0
- package/dist/components/tab.js +154 -0
- package/dist/components/tabs.js +188 -0
- package/dist/components/tile.js +129 -0
- package/dist/components/time-picker.js +943 -0
- package/dist/components/tooltip.js +399 -0
- package/dist/components/tree-item.js +294 -0
- package/dist/components/tree.js +327 -0
- package/dist/components/utils.js +119 -0
- package/dist/components/utils2.js +51 -0
- package/dist/components/value-list-item.js +204 -0
- package/dist/components/value-list.js +333 -0
- package/dist/esm/deduct-calculator.entry.js +1 -1
- package/dist/esm/pci-calculator.entry.js +1 -1
- package/dist/esm/{pciUtils-e3007a1c.js → pciUtils-ecda46e5.js} +25 -7
- package/dist/solutions-components/demos/deduct-calculator.html +2 -5
- package/dist/solutions-components/demos/new-public-notification.html +6 -4
- package/dist/solutions-components/{p-ff80ffbb.entry.js → p-0512635b.entry.js} +1 -1
- package/dist/solutions-components/{p-5ec407c2.entry.js → p-0c088725.entry.js} +1 -1
- package/dist/solutions-components/p-cc815aca.js +21 -0
- package/dist/solutions-components/solutions-components.esm.js +1 -1
- package/dist/solutions-components/utils/pciUtils.ts +30 -7
- package/dist/types/utils/pciUtils.d.ts +2 -1
- package/package.json +4 -3
- package/dist/solutions-components/p-647bbd18.js +0 -21
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright 2022 Esri
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
|
|
7
|
+
import { g as getLocaleComponentStrings } from './locale.js';
|
|
8
|
+
import { a as goToSelection, b as getMapLayerView } from './mapViewUtils.js';
|
|
9
|
+
import { q as queryAllFeatures } from './queryUtils.js';
|
|
10
|
+
import { e as exportCSV } from './csvUtils.js';
|
|
11
|
+
import { d as defineCustomElement$l } from './button.js';
|
|
12
|
+
import { d as defineCustomElement$k } from './checkbox.js';
|
|
13
|
+
import { d as defineCustomElement$j } from './chip.js';
|
|
14
|
+
import { d as defineCustomElement$i } from './combobox.js';
|
|
15
|
+
import { d as defineCustomElement$h } from './combobox-item.js';
|
|
16
|
+
import { d as defineCustomElement$g } from './dropdown.js';
|
|
17
|
+
import { d as defineCustomElement$f } from './dropdown-group.js';
|
|
18
|
+
import { d as defineCustomElement$e } from './dropdown-item.js';
|
|
19
|
+
import { d as defineCustomElement$d } from './icon.js';
|
|
20
|
+
import { d as defineCustomElement$c } from './input.js';
|
|
21
|
+
import { d as defineCustomElement$b } from './label.js';
|
|
22
|
+
import { d as defineCustomElement$a } from './loader.js';
|
|
23
|
+
import { d as defineCustomElement$9 } from './modal.js';
|
|
24
|
+
import { d as defineCustomElement$8 } from './option.js';
|
|
25
|
+
import { d as defineCustomElement$7 } from './progress.js';
|
|
26
|
+
import { d as defineCustomElement$6 } from './scrim.js';
|
|
27
|
+
import { d as defineCustomElement$5 } from './select.js';
|
|
28
|
+
import { d as defineCustomElement$4 } from './split-button.js';
|
|
29
|
+
import { d as defineCustomElement$3 } from './edit-record-modal2.js';
|
|
30
|
+
import { d as defineCustomElement$2 } from './map-layer-picker2.js';
|
|
31
|
+
|
|
32
|
+
const layerTableCss = ":host{display:block}.table{display:table;width:100%}.header{display:table-header-group;background-color:#757575;font-weight:500;font-size:var(--calcite-font-size-0);color:var(--calcite-ui-text-inverse);position:sticky;top:0;z-index:1}.table-header-cell{display:table-cell;text-align:justify;border-right:1px solid var(--calcite-ui-border-2);padding:0.5rem}.table-body{display:table-row-group}.row{display:table-row}.table-cell{display:table-cell;padding:0.5rem}.display-table-header{display:table-header-group}.display-flex{display:flex}.table-border{border:1px solid var(--calcite-ui-border-2)}.justify-center{justify-content:center}.table-container{width:100%}.overflow-auto{overflow:auto}.data-container{overflow:auto;height:calc(100% - 35px)}.row:nth-child(odd){background:var(--calcite-ui-foreground-3)}.padding-3-4{padding:0.75rem}.field-width{white-space:nowrap;min-width:300px;max-width:300px;overflow:hidden}";
|
|
33
|
+
|
|
34
|
+
const LayerTable$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
35
|
+
constructor() {
|
|
36
|
+
super();
|
|
37
|
+
this.__registerHost();
|
|
38
|
+
this.__attachShadow();
|
|
39
|
+
/**
|
|
40
|
+
* esri/Graphic[]: https://developers.arcgis.com/javascript/latest/api-reference/esri-Graphic.html
|
|
41
|
+
*/
|
|
42
|
+
this._graphics = [];
|
|
43
|
+
/**
|
|
44
|
+
* string[]: List of field names to display
|
|
45
|
+
*/
|
|
46
|
+
this._fieldNames = [];
|
|
47
|
+
this.mapView = undefined;
|
|
48
|
+
this._translations = undefined;
|
|
49
|
+
this._selectedIndexes = [];
|
|
50
|
+
}
|
|
51
|
+
//--------------------------------------------------------------------------
|
|
52
|
+
//
|
|
53
|
+
// Watch handlers
|
|
54
|
+
//
|
|
55
|
+
//--------------------------------------------------------------------------
|
|
56
|
+
//--------------------------------------------------------------------------
|
|
57
|
+
//
|
|
58
|
+
// Methods (public)
|
|
59
|
+
//
|
|
60
|
+
//--------------------------------------------------------------------------
|
|
61
|
+
//--------------------------------------------------------------------------
|
|
62
|
+
//
|
|
63
|
+
// Events (public)
|
|
64
|
+
//
|
|
65
|
+
//--------------------------------------------------------------------------
|
|
66
|
+
//--------------------------------------------------------------------------
|
|
67
|
+
//
|
|
68
|
+
// Functions (lifecycle)
|
|
69
|
+
//
|
|
70
|
+
//--------------------------------------------------------------------------
|
|
71
|
+
/**
|
|
72
|
+
* StencilJS: Called once just after the component is first connected to the DOM.
|
|
73
|
+
*
|
|
74
|
+
* @returns Promise when complete
|
|
75
|
+
*/
|
|
76
|
+
async componentWillLoad() {
|
|
77
|
+
await this._getTranslations();
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Renders the component.
|
|
81
|
+
*/
|
|
82
|
+
render() {
|
|
83
|
+
return (h(Host, null, this._getTableControlRow(), h("div", { class: "data-container" }, h("div", { class: "table-container" }, h("div", { class: "table" }, this._getTableHeader(), this._getTableRows()))), h("edit-record-modal", { ref: (el) => this._editMultipleMpdal = el })));
|
|
84
|
+
}
|
|
85
|
+
//--------------------------------------------------------------------------
|
|
86
|
+
//
|
|
87
|
+
// Functions (protected)
|
|
88
|
+
//
|
|
89
|
+
//--------------------------------------------------------------------------
|
|
90
|
+
/**
|
|
91
|
+
* Gets a row of controls that can be used for various interactions with the table
|
|
92
|
+
*
|
|
93
|
+
* @returns The dom node that contains the controls
|
|
94
|
+
*/
|
|
95
|
+
_getTableControlRow() {
|
|
96
|
+
const featuresSelected = this._selectedIndexes.length > 0;
|
|
97
|
+
const multiFeaturesSelected = this._selectedIndexes.length > 1;
|
|
98
|
+
return (h("div", { class: "display-flex table-border" }, h("map-layer-picker", { mapView: this.mapView, onLayerSelectionChange: (evt) => this._layerSelectionChanged(evt) }), h("div", null, h("calcite-button", { appearance: 'transparent', color: 'neutral', disabled: !featuresSelected, iconStart: 'magnifying-glass', onClick: () => this._zoom() }, this._translations.zoom), h("calcite-button", { appearance: 'transparent', color: 'neutral', disabled: !multiFeaturesSelected, iconStart: 'pencil', onClick: () => this._editMultiple() }, this._translations.editMultiple), h("calcite-button", { appearance: 'transparent', color: 'neutral', disabled: !featuresSelected, iconStart: 'trash', onClick: () => this._delete() }, this._translations.delete), h("calcite-split-button", { appearance: "transparent", color: "neutral", "primary-text": this._translations.more }, h("calcite-dropdown-group", { "selection-mode": "none" }, h("calcite-dropdown-item", { iconStart: 'list-check-all', onClick: () => this._selectAll(true) }, this._translations.selectAll), h("calcite-dropdown-item", { iconStart: 'selected-items-filter', onClick: () => this._showSelected() }, this._translations.showSelected), h("calcite-dropdown-item", { iconStart: 'erase', onClick: () => this._clearSelection() }, this._translations.clearSelection), h("calcite-dropdown-item", { iconStart: 'refresh', onClick: () => this._switchSelected() }, this._translations.switchSelected), h("calcite-dropdown-item", { iconStart: 'export', onClick: () => this._exportToCSV() }, this._translations.exportCSV))))));
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Gets the table header with a select all control and column headers for each field
|
|
102
|
+
*
|
|
103
|
+
* @returns The dom node that contains the header
|
|
104
|
+
*/
|
|
105
|
+
_getTableHeader() {
|
|
106
|
+
return (h("div", { class: "header" }, h("div", { class: "table-header-cell padding-3-4" }, h("calcite-checkbox", { class: "display-flex justify-center", onClick: () => this._selectAll(this._selectAllElement.checked), ref: (el) => this._selectAllElement = el })), this._fieldNames.map(name => this._getTableHeaderCell(name))));
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Gets a header cell for the table header
|
|
110
|
+
*
|
|
111
|
+
* @param name the string to display in the cell
|
|
112
|
+
*
|
|
113
|
+
* @returns The dom node that contains the header cell
|
|
114
|
+
*/
|
|
115
|
+
_getTableHeaderCell(name) {
|
|
116
|
+
return (h("div", { class: "table-header-cell field-width" }, name));
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Gets the table rows for all features
|
|
120
|
+
*
|
|
121
|
+
* @returns The dom node that contains the body of the table
|
|
122
|
+
*/
|
|
123
|
+
_getTableRows() {
|
|
124
|
+
return (h("div", { class: "table-body" }, this._graphics.map((g, i) => this._getTableRow(g, i))));
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Gets the individual table row for a feature
|
|
128
|
+
*
|
|
129
|
+
* @param g the graphic the row is based on
|
|
130
|
+
* @param index the index location of the row within the table
|
|
131
|
+
*
|
|
132
|
+
* @returns The dom node that contains the row
|
|
133
|
+
*/
|
|
134
|
+
_getTableRow(g, index) {
|
|
135
|
+
// TODO think through this more...should build the fieldType info once up front rather
|
|
136
|
+
// than on every single value...
|
|
137
|
+
const checked = this._selectedIndexes.indexOf(index) > -1;
|
|
138
|
+
return (h("div", { class: "row" }, h("div", { class: "table-cell table-border padding-3-4" }, h("calcite-checkbox", { checked: checked, class: "display-flex justify-center", onClick: () => this._rowSelected(index), value: index })), this._fieldNames.map(name => {
|
|
139
|
+
const field = this._layerView.layer.fieldsIndex.get(name);
|
|
140
|
+
return this._getTableRowCell(g.attributes[name], field, checked);
|
|
141
|
+
})));
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Gets the individual table cell for the provided field
|
|
145
|
+
*
|
|
146
|
+
* @param v the value to display
|
|
147
|
+
* @param field the field the row is based on
|
|
148
|
+
* @param rowSelected when true editable fields will render a control that will allow the value to be updated
|
|
149
|
+
*
|
|
150
|
+
* @returns The dom node that contains the table cell
|
|
151
|
+
*/
|
|
152
|
+
_getTableRowCell(v, field, rowSelected) {
|
|
153
|
+
const editable = field.editable && rowSelected;
|
|
154
|
+
const inputType = this._getInputType(field.type);
|
|
155
|
+
// TODO find some domain data to test with..this has not been tested
|
|
156
|
+
let domainInput;
|
|
157
|
+
const domain = field.domain;
|
|
158
|
+
if (domain) {
|
|
159
|
+
if (domain.type === "coded-value") {
|
|
160
|
+
domainInput = (h("calcite-select", { label: '' }, domain.codedValues.map(cv => {
|
|
161
|
+
return (h("calcite-option", { label: cv.name, selected: v === cv.code.toString(), value: cv.code }));
|
|
162
|
+
})));
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
// range domain
|
|
166
|
+
const range = domain;
|
|
167
|
+
domainInput = (h("calcite-input", { max: range.maxValue, min: range.minValue, type: "number", value: v }));
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return (h("div", { class: "table-cell table-border field-width" }, editable && domainInput ? domainInput : editable ? (h("calcite-input", { type: inputType, value: v })) : v));
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Simple lookup that will get the appropriate edit control for the value type
|
|
174
|
+
*
|
|
175
|
+
* @param type the Esri field type
|
|
176
|
+
*
|
|
177
|
+
* @returns A string for the type of control to create based on the provided field type
|
|
178
|
+
*/
|
|
179
|
+
_getInputType(type) {
|
|
180
|
+
// JS API field types
|
|
181
|
+
// "string" | "small-integer" | "integer" | "single" | "double" | "long" | "date" | "oid" | "geometry" | "blob" | "raster" | "guid" | "global-id" | "xml"
|
|
182
|
+
// not sure about these: "geometry" | "blob" | "raster" | | "xml"
|
|
183
|
+
// Calcite input types
|
|
184
|
+
// color date datetime-local email file image month number password search tel text(default) textarea time url week
|
|
185
|
+
const inputTypes = {
|
|
186
|
+
"string": 'text',
|
|
187
|
+
"small-integer": "number",
|
|
188
|
+
"integer": "number",
|
|
189
|
+
"single": "number",
|
|
190
|
+
"double": "number",
|
|
191
|
+
"long": "number",
|
|
192
|
+
"date": "datetime-local",
|
|
193
|
+
"oid": "number",
|
|
194
|
+
"guid": "text",
|
|
195
|
+
"global-id": "text"
|
|
196
|
+
};
|
|
197
|
+
return Object.keys(inputTypes).indexOf(type) > -1 ? inputTypes[type] : "text";
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Select or deselect all rows
|
|
201
|
+
*
|
|
202
|
+
* @param checked When true all rows will be selected
|
|
203
|
+
*
|
|
204
|
+
* @returns void
|
|
205
|
+
*/
|
|
206
|
+
_selectAll(checked) {
|
|
207
|
+
this._selectedIndexes = checked ? this._graphics.map((_g, i) => i) : [];
|
|
208
|
+
}
|
|
209
|
+
// need to discuss with team
|
|
210
|
+
_showSelected() {
|
|
211
|
+
console.log("_showSelected");
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Clears the selected indexes
|
|
215
|
+
*
|
|
216
|
+
* @returns void
|
|
217
|
+
*/
|
|
218
|
+
_clearSelection() {
|
|
219
|
+
this._selectedIndexes = [];
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Select all rows that are not currently selectd
|
|
223
|
+
*
|
|
224
|
+
* @returns void
|
|
225
|
+
*/
|
|
226
|
+
_switchSelected() {
|
|
227
|
+
const currentIndexes = [...this._selectedIndexes];
|
|
228
|
+
this._selectedIndexes = this._graphics.reduce((prev, _cur, i) => {
|
|
229
|
+
if (currentIndexes.indexOf(i) < 0) {
|
|
230
|
+
prev.push(i);
|
|
231
|
+
}
|
|
232
|
+
return prev;
|
|
233
|
+
}, []);
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Export all selected rows as CSV
|
|
237
|
+
*
|
|
238
|
+
* @returns a promise that will resolve when the operation is complete
|
|
239
|
+
*/
|
|
240
|
+
_exportToCSV() {
|
|
241
|
+
const ids = this._getSelectedIds();
|
|
242
|
+
void exportCSV(this._layerView, ids);
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Zoom to all selected features
|
|
246
|
+
*
|
|
247
|
+
* @returns a promise that will resolve when the operation is complete
|
|
248
|
+
*/
|
|
249
|
+
_zoom() {
|
|
250
|
+
const ids = this._getSelectedIds();
|
|
251
|
+
void goToSelection(ids, this._layerView, this.mapView, true);
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Open the edit multiple modal
|
|
255
|
+
*
|
|
256
|
+
* @returns void
|
|
257
|
+
*/
|
|
258
|
+
_editMultiple() {
|
|
259
|
+
this._editMultipleMpdal.open = true;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Delete all selected records
|
|
263
|
+
*
|
|
264
|
+
* @returns a promise that will resolve when the operation is complete
|
|
265
|
+
*/
|
|
266
|
+
_delete() {
|
|
267
|
+
console.log("delete");
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Get the graphics for all selected indexes
|
|
271
|
+
*
|
|
272
|
+
* @param indexes the indexes for the graphics to fetch
|
|
273
|
+
*
|
|
274
|
+
* @returns An array of selected graphics
|
|
275
|
+
*/
|
|
276
|
+
_getGraphics(indexes) {
|
|
277
|
+
return this._graphics.filter((_g, i) => indexes.indexOf(i) > -1);
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Gets the object ids for all selected rows
|
|
281
|
+
*
|
|
282
|
+
* @returns An array of object ids
|
|
283
|
+
*/
|
|
284
|
+
_getSelectedIds() {
|
|
285
|
+
const graphics = this._getGraphics(this._selectedIndexes);
|
|
286
|
+
return graphics.map(g => g.getObjectId());
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Update the selected indexes based on the current row
|
|
290
|
+
*
|
|
291
|
+
* @param index the index of the selected row
|
|
292
|
+
*
|
|
293
|
+
* @returns void
|
|
294
|
+
*/
|
|
295
|
+
_rowSelected(index) {
|
|
296
|
+
const indexOfSelected = this._selectedIndexes.indexOf(index);
|
|
297
|
+
if (indexOfSelected > -1) {
|
|
298
|
+
this._selectedIndexes.splice(indexOfSelected, 1);
|
|
299
|
+
this._selectedIndexes = [...this._selectedIndexes];
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
this._selectedIndexes = [...this._selectedIndexes, index];
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Handles layer selection change to show new table
|
|
307
|
+
*
|
|
308
|
+
* @returns a promise that will resolve when the operation is complete
|
|
309
|
+
*/
|
|
310
|
+
async _layerSelectionChanged(evt) {
|
|
311
|
+
const layerName = evt.detail[0];
|
|
312
|
+
this._layerView = await getMapLayerView(this.mapView, layerName);
|
|
313
|
+
// TODO rethink this...when we use later we need to be able to lookup with name
|
|
314
|
+
this._fieldNames = this._layerView.layer.fields.map(f => f.alias || f.name);
|
|
315
|
+
this._graphics = await queryAllFeatures(0, this._layerView.layer, []);
|
|
316
|
+
this._selectedIndexes = [];
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Fetches the component's translations
|
|
320
|
+
*
|
|
321
|
+
* @returns Promise when complete
|
|
322
|
+
* @protected
|
|
323
|
+
*/
|
|
324
|
+
async _getTranslations() {
|
|
325
|
+
const messages = await getLocaleComponentStrings(this.el);
|
|
326
|
+
this._translations = messages[0];
|
|
327
|
+
}
|
|
328
|
+
get el() { return this; }
|
|
329
|
+
static get style() { return layerTableCss; }
|
|
330
|
+
}, [1, "layer-table", {
|
|
331
|
+
"mapView": [16],
|
|
332
|
+
"_translations": [32],
|
|
333
|
+
"_selectedIndexes": [32]
|
|
334
|
+
}]);
|
|
335
|
+
function defineCustomElement$1() {
|
|
336
|
+
if (typeof customElements === "undefined") {
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
339
|
+
const components = ["layer-table", "calcite-button", "calcite-checkbox", "calcite-chip", "calcite-combobox", "calcite-combobox-item", "calcite-dropdown", "calcite-dropdown-group", "calcite-dropdown-item", "calcite-icon", "calcite-input", "calcite-label", "calcite-loader", "calcite-modal", "calcite-option", "calcite-progress", "calcite-scrim", "calcite-select", "calcite-split-button", "edit-record-modal", "map-layer-picker"];
|
|
340
|
+
components.forEach(tagName => { switch (tagName) {
|
|
341
|
+
case "layer-table":
|
|
342
|
+
if (!customElements.get(tagName)) {
|
|
343
|
+
customElements.define(tagName, LayerTable$1);
|
|
344
|
+
}
|
|
345
|
+
break;
|
|
346
|
+
case "calcite-button":
|
|
347
|
+
if (!customElements.get(tagName)) {
|
|
348
|
+
defineCustomElement$l();
|
|
349
|
+
}
|
|
350
|
+
break;
|
|
351
|
+
case "calcite-checkbox":
|
|
352
|
+
if (!customElements.get(tagName)) {
|
|
353
|
+
defineCustomElement$k();
|
|
354
|
+
}
|
|
355
|
+
break;
|
|
356
|
+
case "calcite-chip":
|
|
357
|
+
if (!customElements.get(tagName)) {
|
|
358
|
+
defineCustomElement$j();
|
|
359
|
+
}
|
|
360
|
+
break;
|
|
361
|
+
case "calcite-combobox":
|
|
362
|
+
if (!customElements.get(tagName)) {
|
|
363
|
+
defineCustomElement$i();
|
|
364
|
+
}
|
|
365
|
+
break;
|
|
366
|
+
case "calcite-combobox-item":
|
|
367
|
+
if (!customElements.get(tagName)) {
|
|
368
|
+
defineCustomElement$h();
|
|
369
|
+
}
|
|
370
|
+
break;
|
|
371
|
+
case "calcite-dropdown":
|
|
372
|
+
if (!customElements.get(tagName)) {
|
|
373
|
+
defineCustomElement$g();
|
|
374
|
+
}
|
|
375
|
+
break;
|
|
376
|
+
case "calcite-dropdown-group":
|
|
377
|
+
if (!customElements.get(tagName)) {
|
|
378
|
+
defineCustomElement$f();
|
|
379
|
+
}
|
|
380
|
+
break;
|
|
381
|
+
case "calcite-dropdown-item":
|
|
382
|
+
if (!customElements.get(tagName)) {
|
|
383
|
+
defineCustomElement$e();
|
|
384
|
+
}
|
|
385
|
+
break;
|
|
386
|
+
case "calcite-icon":
|
|
387
|
+
if (!customElements.get(tagName)) {
|
|
388
|
+
defineCustomElement$d();
|
|
389
|
+
}
|
|
390
|
+
break;
|
|
391
|
+
case "calcite-input":
|
|
392
|
+
if (!customElements.get(tagName)) {
|
|
393
|
+
defineCustomElement$c();
|
|
394
|
+
}
|
|
395
|
+
break;
|
|
396
|
+
case "calcite-label":
|
|
397
|
+
if (!customElements.get(tagName)) {
|
|
398
|
+
defineCustomElement$b();
|
|
399
|
+
}
|
|
400
|
+
break;
|
|
401
|
+
case "calcite-loader":
|
|
402
|
+
if (!customElements.get(tagName)) {
|
|
403
|
+
defineCustomElement$a();
|
|
404
|
+
}
|
|
405
|
+
break;
|
|
406
|
+
case "calcite-modal":
|
|
407
|
+
if (!customElements.get(tagName)) {
|
|
408
|
+
defineCustomElement$9();
|
|
409
|
+
}
|
|
410
|
+
break;
|
|
411
|
+
case "calcite-option":
|
|
412
|
+
if (!customElements.get(tagName)) {
|
|
413
|
+
defineCustomElement$8();
|
|
414
|
+
}
|
|
415
|
+
break;
|
|
416
|
+
case "calcite-progress":
|
|
417
|
+
if (!customElements.get(tagName)) {
|
|
418
|
+
defineCustomElement$7();
|
|
419
|
+
}
|
|
420
|
+
break;
|
|
421
|
+
case "calcite-scrim":
|
|
422
|
+
if (!customElements.get(tagName)) {
|
|
423
|
+
defineCustomElement$6();
|
|
424
|
+
}
|
|
425
|
+
break;
|
|
426
|
+
case "calcite-select":
|
|
427
|
+
if (!customElements.get(tagName)) {
|
|
428
|
+
defineCustomElement$5();
|
|
429
|
+
}
|
|
430
|
+
break;
|
|
431
|
+
case "calcite-split-button":
|
|
432
|
+
if (!customElements.get(tagName)) {
|
|
433
|
+
defineCustomElement$4();
|
|
434
|
+
}
|
|
435
|
+
break;
|
|
436
|
+
case "edit-record-modal":
|
|
437
|
+
if (!customElements.get(tagName)) {
|
|
438
|
+
defineCustomElement$3();
|
|
439
|
+
}
|
|
440
|
+
break;
|
|
441
|
+
case "map-layer-picker":
|
|
442
|
+
if (!customElements.get(tagName)) {
|
|
443
|
+
defineCustomElement$2();
|
|
444
|
+
}
|
|
445
|
+
break;
|
|
446
|
+
} });
|
|
447
|
+
}
|
|
448
|
+
defineCustomElement$1();
|
|
449
|
+
|
|
450
|
+
const LayerTable = LayerTable$1;
|
|
451
|
+
const defineCustomElement = defineCustomElement$1;
|
|
452
|
+
|
|
453
|
+
export { LayerTable, defineCustomElement };
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright 2022 Esri
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
|
|
7
|
+
import { c as getElementDir, C as CSS_UTILITY, f as focusElement } from './dom.js';
|
|
8
|
+
import { u as updateHostInteraction } from './interactive.js';
|
|
9
|
+
import { d as defineCustomElement$1 } from './icon.js';
|
|
10
|
+
|
|
11
|
+
const linkCss = "@keyframes in{0%{opacity:0}100%{opacity:1}}@keyframes in-down{0%{opacity:0;transform:translate3D(0, -5px, 0)}100%{opacity:1;transform:translate3D(0, 0, 0)}}@keyframes in-up{0%{opacity:0;transform:translate3D(0, 5px, 0)}100%{opacity:1;transform:translate3D(0, 0, 0)}}@keyframes in-scale{0%{opacity:0;transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;transform:scale3D(1, 1, 1)}}:root{--calcite-animation-timing:calc(150ms * var(--calcite-internal-duration-factor));--calcite-internal-duration-factor:var(--calcite-duration-factor, 1);--calcite-internal-animation-timing-fast:calc(100ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-medium:calc(200ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-slow:calc(300ms * var(--calcite-internal-duration-factor))}.calcite-animate{opacity:0;animation-fill-mode:both;animation-duration:var(--calcite-animation-timing)}.calcite-animate__in{animation-name:in}.calcite-animate__in-down{animation-name:in-down}.calcite-animate__in-up{animation-name:in-up}.calcite-animate__in-scale{animation-name:in-scale}@media (prefers-reduced-motion: reduce){:root{--calcite-internal-duration-factor:0.01}}:root{--calcite-floating-ui-transition:var(--calcite-animation-timing)}:host([hidden]){display:none}:host([disabled]){pointer-events:none;cursor:default;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--calcite-ui-opacity-disabled)}:host{display:inline}:host a,:host span{position:relative;display:flex;cursor:pointer;align-items:center;justify-content:center;border-radius:0px;border-style:none;font-family:inherit;transition:all var(--calcite-animation-timing) ease-in-out 0s, outline 0s, outline-offset 0s;text-decoration:none;line-height:inherit;font-size:inherit;-webkit-appearance:none}:host a:hover,:host span:hover{text-decoration:none}:host a,:host span{outline-color:transparent}:host a:focus,:host span:focus{outline:2px solid var(--calcite-ui-brand);outline-offset:-2px}calcite-icon{inline-size:1em;block-size:1em;min-inline-size:unset;min-block-size:unset}.calcite-link--icon{vertical-align:text-top;transition:all var(--calcite-animation-timing) ease-in-out 0s, outline 0s, outline-offset 0s;-webkit-margin-before:0.125rem;margin-block-start:0.125rem}:host .calcite-link--icon.icon-start{-webkit-margin-end:0.5rem;margin-inline-end:0.5rem}:host .calcite-link--icon.icon-end{-webkit-margin-start:0.5rem;margin-inline-start:0.5rem}:host span,:host a{position:relative;display:inline;border-style:none;background-color:transparent;padding:0px;color:var(--calcite-ui-text-link);transition:all var(--calcite-animation-timing) ease-in-out 0s, outline 0s, outline-offset 0s;line-height:inherit;white-space:initial;background-image:linear-gradient(currentColor, currentColor), linear-gradient(var(--calcite-link-blue-underline), var(--calcite-link-blue-underline));background-position:0% 100%, 100% 100%;background-repeat:no-repeat, no-repeat;background-size:0% 1px, 100% 1px}:host span:hover,:host span:focus,:host a:hover,:host a:focus{background-size:100% 1px, 100% 1px}:host span:active,:host a:active{background-size:100% 2px, 100% 2px}:host span.calcite--rtl,:host a.calcite--rtl{background-position:100% 100%, 100% 100%}:host([disabled]) ::slotted([calcite-hydrated][disabled]),:host([disabled]) [calcite-hydrated][disabled]{opacity:1}";
|
|
12
|
+
|
|
13
|
+
const Link = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
14
|
+
constructor() {
|
|
15
|
+
super();
|
|
16
|
+
this.__registerHost();
|
|
17
|
+
this.__attachShadow();
|
|
18
|
+
//--------------------------------------------------------------------------
|
|
19
|
+
//
|
|
20
|
+
// Properties
|
|
21
|
+
//
|
|
22
|
+
//--------------------------------------------------------------------------
|
|
23
|
+
/** When `true`, interaction is prevented and the component is displayed with lower opacity. */
|
|
24
|
+
this.disabled = false;
|
|
25
|
+
/**
|
|
26
|
+
* Prompts the user to save the linked URL instead of navigating to it. Can be used with or without a value:
|
|
27
|
+
* Without a value, the browser will suggest a filename/extension
|
|
28
|
+
* See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-download.
|
|
29
|
+
*/
|
|
30
|
+
this.download = false;
|
|
31
|
+
this.childElClickHandler = (event) => {
|
|
32
|
+
if (!event.isTrusted) {
|
|
33
|
+
// click was invoked internally, we stop it here
|
|
34
|
+
event.stopPropagation();
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
//--------------------------------------------------------------------------
|
|
38
|
+
//
|
|
39
|
+
// Private Methods
|
|
40
|
+
//
|
|
41
|
+
//--------------------------------------------------------------------------
|
|
42
|
+
this.storeTagRef = (el) => {
|
|
43
|
+
this.childEl = el;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//--------------------------------------------------------------------------
|
|
47
|
+
//
|
|
48
|
+
// Lifecycle
|
|
49
|
+
//
|
|
50
|
+
//--------------------------------------------------------------------------
|
|
51
|
+
componentDidRender() {
|
|
52
|
+
updateHostInteraction(this);
|
|
53
|
+
}
|
|
54
|
+
render() {
|
|
55
|
+
const { download, el } = this;
|
|
56
|
+
const dir = getElementDir(el);
|
|
57
|
+
const childElType = this.href ? "a" : "span";
|
|
58
|
+
const iconStartEl = (h("calcite-icon", { class: "calcite-link--icon icon-start", flipRtl: this.iconFlipRtl === "start" || this.iconFlipRtl === "both", icon: this.iconStart, scale: "s" }));
|
|
59
|
+
const iconEndEl = (h("calcite-icon", { class: "calcite-link--icon icon-end", flipRtl: this.iconFlipRtl === "end" || this.iconFlipRtl === "both", icon: this.iconEnd, scale: "s" }));
|
|
60
|
+
const Tag = childElType;
|
|
61
|
+
const role = childElType === "span" ? "link" : null;
|
|
62
|
+
const tabIndex = childElType === "span" ? 0 : null;
|
|
63
|
+
return (h(Host, { role: "presentation" }, h(Tag, { class: { [CSS_UTILITY.rtl]: dir === "rtl" },
|
|
64
|
+
/*
|
|
65
|
+
When the 'download' property of type 'boolean | string' is set to true, the value is "".
|
|
66
|
+
This works around that issue for now.
|
|
67
|
+
*/
|
|
68
|
+
download: Tag === "a" && (download === "" || download) ? download : null, href: Tag === "a" && this.href, onClick: this.childElClickHandler, ref: this.storeTagRef, rel: Tag === "a" && this.rel, role: role, tabIndex: tabIndex, target: Tag === "a" && this.target }, this.iconStart ? iconStartEl : null, h("slot", null), this.iconEnd ? iconEndEl : null)));
|
|
69
|
+
}
|
|
70
|
+
//--------------------------------------------------------------------------
|
|
71
|
+
//
|
|
72
|
+
// Events
|
|
73
|
+
//
|
|
74
|
+
//--------------------------------------------------------------------------
|
|
75
|
+
clickHandler(event) {
|
|
76
|
+
// forwards the click() to the internal link for non user-initiated events
|
|
77
|
+
if (!event.isTrusted) {
|
|
78
|
+
this.childEl.click();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//--------------------------------------------------------------------------
|
|
82
|
+
//
|
|
83
|
+
// Public Methods
|
|
84
|
+
//
|
|
85
|
+
//--------------------------------------------------------------------------
|
|
86
|
+
/** Sets focus on the component. */
|
|
87
|
+
async setFocus() {
|
|
88
|
+
focusElement(this.childEl);
|
|
89
|
+
}
|
|
90
|
+
get el() { return this; }
|
|
91
|
+
static get style() { return linkCss; }
|
|
92
|
+
}, [1, "calcite-link", {
|
|
93
|
+
"disabled": [516],
|
|
94
|
+
"download": [520],
|
|
95
|
+
"href": [513],
|
|
96
|
+
"iconEnd": [513, "icon-end"],
|
|
97
|
+
"iconFlipRtl": [513, "icon-flip-rtl"],
|
|
98
|
+
"iconStart": [513, "icon-start"],
|
|
99
|
+
"rel": [1],
|
|
100
|
+
"target": [1],
|
|
101
|
+
"setFocus": [64]
|
|
102
|
+
}, [[0, "click", "clickHandler"]]]);
|
|
103
|
+
function defineCustomElement() {
|
|
104
|
+
if (typeof customElements === "undefined") {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const components = ["calcite-link", "calcite-icon"];
|
|
108
|
+
components.forEach(tagName => { switch (tagName) {
|
|
109
|
+
case "calcite-link":
|
|
110
|
+
if (!customElements.get(tagName)) {
|
|
111
|
+
customElements.define(tagName, Link);
|
|
112
|
+
}
|
|
113
|
+
break;
|
|
114
|
+
case "calcite-icon":
|
|
115
|
+
if (!customElements.get(tagName)) {
|
|
116
|
+
defineCustomElement$1();
|
|
117
|
+
}
|
|
118
|
+
break;
|
|
119
|
+
} });
|
|
120
|
+
}
|
|
121
|
+
defineCustomElement();
|
|
122
|
+
|
|
123
|
+
export { Link as L, defineCustomElement as d };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface ListItem extends Components.ListItem, HTMLElement {}
|
|
4
|
+
export const ListItem: {
|
|
5
|
+
prototype: ListItem;
|
|
6
|
+
new (): ListItem;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright 2022 Esri
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
|
|
7
|
+
|
|
8
|
+
const listItemCss = ":host{display:block}";
|
|
9
|
+
|
|
10
|
+
const ListItem$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
11
|
+
constructor() {
|
|
12
|
+
super();
|
|
13
|
+
this.__registerHost();
|
|
14
|
+
this.__attachShadow();
|
|
15
|
+
}
|
|
16
|
+
//--------------------------------------------------------------------------
|
|
17
|
+
//
|
|
18
|
+
// Properties (public)
|
|
19
|
+
//
|
|
20
|
+
//--------------------------------------------------------------------------
|
|
21
|
+
//--------------------------------------------------------------------------
|
|
22
|
+
//
|
|
23
|
+
// State (internal)
|
|
24
|
+
//
|
|
25
|
+
//--------------------------------------------------------------------------
|
|
26
|
+
//--------------------------------------------------------------------------
|
|
27
|
+
//
|
|
28
|
+
// Properties (protected)
|
|
29
|
+
//
|
|
30
|
+
//--------------------------------------------------------------------------
|
|
31
|
+
//--------------------------------------------------------------------------
|
|
32
|
+
//
|
|
33
|
+
// Watch handlers
|
|
34
|
+
//
|
|
35
|
+
//--------------------------------------------------------------------------
|
|
36
|
+
//--------------------------------------------------------------------------
|
|
37
|
+
//
|
|
38
|
+
// Methods (public)
|
|
39
|
+
//
|
|
40
|
+
//--------------------------------------------------------------------------
|
|
41
|
+
//--------------------------------------------------------------------------
|
|
42
|
+
//
|
|
43
|
+
// Events (public)
|
|
44
|
+
//
|
|
45
|
+
//--------------------------------------------------------------------------
|
|
46
|
+
//--------------------------------------------------------------------------
|
|
47
|
+
//
|
|
48
|
+
// Functions (lifecycle)
|
|
49
|
+
//
|
|
50
|
+
//--------------------------------------------------------------------------
|
|
51
|
+
render() {
|
|
52
|
+
return (h(Host, null, h("slot", null)));
|
|
53
|
+
}
|
|
54
|
+
//--------------------------------------------------------------------------
|
|
55
|
+
//
|
|
56
|
+
// Functions (protected)
|
|
57
|
+
//
|
|
58
|
+
//--------------------------------------------------------------------------
|
|
59
|
+
/**
|
|
60
|
+
* Fetches the component's translations
|
|
61
|
+
*
|
|
62
|
+
* @returns Promise when complete
|
|
63
|
+
* @protected
|
|
64
|
+
*/
|
|
65
|
+
async _getTranslations() {
|
|
66
|
+
// const messages = await getLocaleComponentStrings(this.el);
|
|
67
|
+
// this._translations = messages[0] as typeof BufferTools_T9n;
|
|
68
|
+
}
|
|
69
|
+
get el() { return this; }
|
|
70
|
+
static get style() { return listItemCss; }
|
|
71
|
+
}, [1, "list-item"]);
|
|
72
|
+
function defineCustomElement$1() {
|
|
73
|
+
if (typeof customElements === "undefined") {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const components = ["list-item"];
|
|
77
|
+
components.forEach(tagName => { switch (tagName) {
|
|
78
|
+
case "list-item":
|
|
79
|
+
if (!customElements.get(tagName)) {
|
|
80
|
+
customElements.define(tagName, ListItem$1);
|
|
81
|
+
}
|
|
82
|
+
break;
|
|
83
|
+
} });
|
|
84
|
+
}
|
|
85
|
+
defineCustomElement$1();
|
|
86
|
+
|
|
87
|
+
const ListItem = ListItem$1;
|
|
88
|
+
const defineCustomElement = defineCustomElement$1;
|
|
89
|
+
|
|
90
|
+
export { ListItem, defineCustomElement };
|