123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430 |
- import { h } from './core-800e68f4.js';
- import { TiUtils } from '../ti-core-assets/lib/TiUtils';
- import '../ti-core-assets/lib/TiFiles';
- import { TiConsole } from '../ti-core-assets/lib/TiConsole';
- import { TiLocalStorage } from '../ti-core-assets/lib/TiLocalStorage';
- const style = document.createElement('style');
- style.innerHTML = `
- @font-face {
- font-family: 'Roboto';
- font-style: normal;
- font-weight: 300;
- src: local('Roboto Light'), local('Roboto-Light'), url(components/assets/fonts/font-roboto/Roboto_300_normal.woff) format('woff');
- }
- @font-face {
- font-family: 'Roboto';
- font-style: normal;
- font-weight: 400;
- src: local('Roboto'), local('Roboto-Regular'), url(components/assets/fonts/font-roboto/Roboto_400_normal.woff) format('woff');
- }
- @font-face {
- font-family: 'Roboto';
- font-style: normal;
- font-weight: 500;
- src: local('Roboto Medium'), local('Roboto-Medium'), url(components/assets/fonts/font-roboto/Roboto_500_normal.woff) format('woff');
- }
- @font-face {
- font-family: 'Roboto';
- font-style: normal;
- font-weight: 700;
- src: local('Roboto Bold'), local('Roboto-Bold'), url(components/assets/fonts/font-roboto/Roboto_700_normal.woff) format('woff');
- }
- @font-face {
- font-family: 'Roboto';
- font-style: italic;
- font-weight: 300;
- src: local('Roboto Light Italic'), local('Roboto-LightItalic'), url(components/assets/fonts/font-roboto/Roboto_300_italic.woff) format('woff');
- }
- @font-face {
- font-family: 'Roboto';
- font-style: italic;
- font-weight: 400;
- src: local('Roboto Italic'), local('Roboto-Italic'), url(components/assets/fonts/font-roboto/Roboto_400_italic.woff) format('woff');
- }
- @font-face {
- font-family: 'Roboto';
- font-style: italic;
- font-weight: 500;
- src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'), url(components/assets/fonts/font-roboto/Roboto_500_italic.woff) format('woff');
- }
- @font-face {
- font-family: 'Roboto';
- font-style: italic;
- font-weight: 700;
- src: local('Roboto Bold Italic'), local('Roboto-BoldItalic'), url(components/assets/fonts/font-roboto/Roboto_700_italic.woff) format('woff');
- }
- `;
- document.head.appendChild(style);
- /**
- * Copyright (c) 2019, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- /**
- * Theme css switching using MutationObserver to the body attribute change.
- * Only loaded once when added to the dom.
- */
- //create ti-widget-theme-stylesheet on load, append to document
- const style$1 = document.createElement('style');
- style$1.setAttribute('title', 'ti-widget-theme-stylesheet');
- const element = document.head || document.body;
- element.appendChild(style$1);
- style$1.sheet.insertRule('html {}', 0);
- const styleSheet = style$1.sheet.cssRules[0].style;
- // modify stylesheet/css variables on theme attribute change in body
- const observer = new MutationObserver((mutations) => {
- mutations.forEach(function (mutation) {
- switch (document.body.getAttribute('theme')) {
- case 'ti-theme':
- styleSheet.setProperty('--theme-primary-color', '#cc0000');
- styleSheet.setProperty('--theme-secondary-color', '#115566');
- styleSheet.setProperty('--theme-alternative-color', '#990000');
- styleSheet.setProperty('--theme-background-color', '#fff');
- styleSheet.setProperty('--theme-font-color', '#231F20');
- styleSheet.setProperty('--theme-header-font-color', '#231F20');
- break;
- case 'ti-dark':
- styleSheet.setProperty('--theme-primary-color', '#990000');
- styleSheet.setProperty('--theme-secondary-color', '#115566');
- styleSheet.setProperty('--theme-alternative-color', '#990000');
- styleSheet.setProperty('--theme-background-color', '#2f2f2f');
- styleSheet.setProperty('--theme-font-color', '#f2f2f2');
- styleSheet.setProperty('--theme-header-font-color', '#f2f2f2');
- break;
- }
- });
- });
- observer.observe(document.body, {
- attributes: true,
- attributeFilter: ['theme']
- });
- /**
- * Copyright (c) 2019-2020, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- /**
- * `TiElementBase` provides the base implementation for TI elements.
- *
- * @customElement
- * @isHidden
- */
- class TiElementBase {
- constructor(parent) {
- this.parent = parent;
- }
- /**
- * Returns true if the element is hosted in the designer, otherwise false.
- *
- * @return {boolean}
- */
- isDesignerHosted() {
- return !!TiUtils.rootWin.TIDesigner;
- }
- /**
- * Parse the delimited string into an array.
- *
- * @param {undefined|string|Array<string>} text the input text
- * @param delimiter the delimiter character
- * @return {Array<string>} the array
- */
- parseArray(text, delimiter) {
- text = text || '';
- // support arrays as well
- if (text instanceof Array) {
- return text;
- }
- // support using terminating character as a delimiter if one of [,;|].
- // this means that if you want a blank element at the end of the list, you have to use a double terminator; for example, A|B|C||
- if (!delimiter && text.length > 1) {
- const lastCharacter = text.charAt(text.length - 1);
- if (lastCharacter === '|' || lastCharacter === ',' || lastCharacter === ';') {
- delimiter = lastCharacter;
- text = text.substring(0, text.length - 1);
- }
- }
- // support comma-separated values, semi-colon separated, or | separated fields.
- let fields = text.split(delimiter || '|');
- if (!delimiter) {
- let altFields = text.split(';');
- if (altFields.length > fields.length) {
- fields = altFields;
- }
- altFields = text.split(',');
- if (altFields.length > fields.length && (altFields.length !== fields.length + 1 || fields.length === 1)) {
- fields = altFields;
- }
- }
- for (let i = fields.length; i-- > 0;) {
- fields[i] = fields[i].trim();
- }
- if (fields.length === 1 && fields[0].length === 0) {
- return [];
- }
- return fields;
- }
- /**
- * Returns the cookie value.
- *
- * @param {string} name the name of the cookie
- * @return {string} the cookie value
- */
- static getCookie(name) {
- const value = '; ' + document.cookie;
- const parts = value.split('; ' + name + '=');
- if (parts.length === 2) {
- const item = parts.pop();
- if (item !== null) {
- return item.split(';').shift() || '';
- }
- }
- return '';
- }
- /**
- * Helper method to log trace message to the console.
- *
- * @param {string} logtype trace type, can be log|info|warn|debug
- * @param {function|string} message the message to log
- */
- trace(logType, message) {
- const output = typeof message === 'object' ? JSON.stringify(message) : message;
- const id = this.element.id ? this.element.id : 'no-id';
- switch (logType) {
- case 'error':
- TiConsole.error('[' + this.element.localName + ': ' + id + ']', output);
- break;
- case 'warning':
- TiConsole.warning('[' + this.element.localName + ': ' + id + ']', output);
- break;
- case 'info':
- TiConsole.info('[' + this.element.localName + ': ' + id + ']', output);
- break;
- case 'log':
- TiConsole.log('[' + this.element.localName + ': ' + id + ']', output);
- break;
- case 'debug':
- TiConsole.debug('[' + this.element.localName + ': ' + id + ']', output);
- break;
- }
- }
- /**
- * Saves the setting to local storage.
- *
- * @param {string} name the setting name
- * @param {string} value the value
- */
- saveSetting(name, value) {
- const id = this.element.tagName.toLowerCase();
- const root = JSON.parse(TiLocalStorage.getItem(TiElementBase.STORAGE_ROOT) || '{}');
- if (!root[id]) {
- root[id] = {};
- }
- root[id][name] = value;
- TiLocalStorage.setItem(TiElementBase.STORAGE_ROOT, JSON.stringify(root));
- }
- /**
- * Loads the setting from local storage.
- *
- * @param {string} name the setting name
- * @return {object} the setting JSON object
- */
- loadSetting(name) {
- const id = this.element.tagName.toLowerCase();
- const root = JSON.parse(TiLocalStorage.getItem(TiElementBase.STORAGE_ROOT) || '{}');
- const element = root[id] || {};
- return element[name];
- }
- }
- TiElementBase.STORAGE_ROOT = 'GC-SETTINGS';
- /**
- * Copyright (c) 2019-2020, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- /**
- * `TiWidgetBase` provides the base implementation for TI widgets.
- */
- class TiWidgetBase extends TiElementBase {
- constructor(parent) {
- super(parent);
- this.parent = parent;
- }
- /* Widget that response to CSS property change should override this method to re-render */
- onCSSPropertyChanged(name, value) { }
- ;
- renderInfoText(infoText) {
- if (infoText) {
- // JSXON
- return (h("div", { class: "help-text icon" },
- h("ti-widget-tooltip", { text: infoText },
- h("ti-widget-icon", { appearance: "secondary", icon: "help", size: "s" }))));
- // JSXOFF
- }
- else {
- return null;
- }
- }
- render(element, options) {
- if (options && (options.caption || options.infoText)) {
- // JSXON
- return (h("div", { class: "root-container", onClick: (e) => this.onClickHandler(e, e.target) },
- (options === null || options === void 0 ? void 0 : options.caption) ? h("div", { class: "header-container top" },
- (options === null || options === void 0 ? void 0 : options.caption) ? h("div", { class: "caption" }, options.caption) : null,
- this.renderInfoText(options === null || options === void 0 ? void 0 : options.infoText)) : null,
- this.parent.tooltip ? (h("div", { id: "elementWrapper" },
- element,
- h("ti-widget-tooltip", { class: "tooltip", text: this.parent.tooltip, anchorId: "elementWrapper" }))) : h("div", { id: "elementWrapper" }, element),
- (options === null || options === void 0 ? void 0 : options.infoText) && !(options === null || options === void 0 ? void 0 : options.caption) ? h("div", { class: "header-container side" }, this.renderInfoText(options === null || options === void 0 ? void 0 : options.infoText)) : null));
- // JSXOFF
- }
- else {
- // JSXON
- return (h("div", { id: "elementWrapper" },
- element,
- this.parent.tooltip ? h("ti-widget-tooltip", { class: "tooltip", text: this.parent.tooltip, anchorId: "elementWrapper" }) : null));
- // JSXOFF
- }
- }
- onClickHandler(event, element) {
- if (element) {
- const parent = element.parentElement;
- if (parent && parent.id === 'elementWrapper') {
- return;
- }
- else if (!element.classList.contains('root-container')) {
- this.onClickHandler(event, element.parentElement);
- }
- else {
- event.stopPropagation();
- }
- }
- }
- fire(eventName, detail) {
- const obj = this.parent;
- for (const x in obj) {
- if (TiUtils.camelToDashCase(x) === eventName) {
- return obj[x].emit(detail);
- }
- }
- }
- setCSSProperty(name, value) {
- value = value.replace(/^[ ]+|[ ]+$/g, '');
- this.element.style.setProperty(name, value);
- this.parent.cssPropertyChanged.emit({ name: name, value: value });
- }
- getCSSProperty(name) {
- return getComputedStyle(this.element).getPropertyValue(name);
- }
- refresh() {
- return this.element['forceUpdate']();
- }
- /**
- * Add the class name to the element.
- *
- * @param {string} name the class name
- * @param {HTMLElement} element the element
- * @protected
- */
- addClassName(name, element) {
- this.modifyClassName(true, name, element);
- }
- /**
- * Remove the class name from the element.
- *
- * @param {string} name the class name
- * @param {HTMLElement} element the element
- * @protected
- */
- removeClassName(name, element) {
- this.modifyClassName(false, name, element);
- }
- modifyClassName(isAdd, name, element = this.element) {
- if (element.className.indexOf(name) < 0) {
- if (isAdd) {
- // add because it doesn't exist yet and should
- element.className = (element.className + ' ' + name).trim();
- }
- }
- else if (!isAdd) {
- // remove because it does exist and shouldn't
- element.className = element.className.replace(name, '').trim();
- }
- }
- }
- export { TiWidgetBase as T };
- //# sourceMappingURL=ti-widget-base-fe722328.js.map
|