@iamproperty/components 7.6.4--beta1 → 7.6.4--beta3
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/assets/css/components/actionbar.component.css +1 -1
- package/assets/css/components/actionbar.component.css.map +1 -1
- package/assets/css/components/address-lookup.component.css +1 -1
- package/assets/css/components/address-lookup.component.css.map +1 -1
- package/assets/css/components/calendar.component.css +1 -1
- package/assets/css/components/calendar.component.css.map +1 -1
- package/assets/css/components/fileupload.css +1 -1
- package/assets/css/components/fileupload.css.map +1 -1
- package/assets/css/components/multiselect.css +1 -1
- package/assets/css/components/multiselect.css.map +1 -1
- package/assets/css/components/multiselect.preload.css +1 -1
- package/assets/css/components/multiselect.preload.css.map +1 -1
- package/assets/css/components/nav.component.css +1 -1
- package/assets/css/components/nav.component.css.map +1 -1
- package/assets/css/components/pagination.css +1 -1
- package/assets/css/components/pagination.css.map +1 -1
- package/assets/css/components/slider.css +1 -1
- package/assets/css/components/slider.css.map +1 -1
- package/assets/css/components/tag.component.css +1 -1
- package/assets/css/components/tag.component.css.map +1 -1
- package/assets/css/components/tag.preload.css +1 -1
- package/assets/css/components/tag.preload.css.map +1 -1
- package/assets/css/core.min.css +1 -1
- package/assets/css/core.min.css.map +1 -1
- package/assets/css/style.min.css +1 -1
- package/assets/css/style.min.css.map +1 -1
- package/assets/js/components/accordion/accordion.component.min.js +1 -1
- package/assets/js/components/actionbar/actionbar.component.min.js +2 -2
- package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
- package/assets/js/components/address-lookup/address-lookup.component.js +11 -5
- package/assets/js/components/address-lookup/address-lookup.component.min.js +4 -4
- package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
- package/assets/js/components/advanced-select/advanced-select.component.min.js +1 -1
- package/assets/js/components/advanced-select/advanced-select.component.min.js.map +1 -1
- package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
- package/assets/js/components/barchart/barchart.component.min.js +1 -1
- package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
- package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
- package/assets/js/components/calendar/calendar.component.min.js +2 -2
- package/assets/js/components/calendar/calendar.component.min.js.map +1 -1
- package/assets/js/components/card/card.component.min.js +1 -1
- package/assets/js/components/carousel/carousel.component.min.js +1 -1
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
- package/assets/js/components/content/content.component.min.js +1 -1
- package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
- package/assets/js/components/doughnutchart/doughnutchart.component.min.js +1 -1
- package/assets/js/components/doughnutchart/doughnutchart.component.min.js.map +1 -1
- package/assets/js/components/fileupload/fileupload.component.min.js +2 -2
- package/assets/js/components/filter-card/filter-card.component.min.js +1 -1
- package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
- package/assets/js/components/form/form.component.js +68 -0
- package/assets/js/components/form/form.component.min.js +9 -0
- package/assets/js/components/form/form.component.min.js.map +1 -0
- package/assets/js/components/header/header.component.min.js +1 -1
- package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
- package/assets/js/components/input/input.component.js +7 -5
- package/assets/js/components/input/input.component.min.js +2 -2
- package/assets/js/components/input/input.component.min.js.map +1 -1
- package/assets/js/components/input-range/input-range.component.min.js +1 -1
- package/assets/js/components/marketing/marketing.component.min.js +1 -1
- package/assets/js/components/menu/menu.component.min.js +1 -1
- package/assets/js/components/milestone/milestone.component.min.js +1 -1
- package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
- package/assets/js/components/modal/modal.component.js +1 -1
- package/assets/js/components/modal/modal.component.min.js +2 -2
- package/assets/js/components/modal/modal.component.min.js.map +1 -1
- package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
- package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +1 -1
- package/assets/js/components/multiselect/multiselect.component.js +9 -76
- package/assets/js/components/multiselect/multiselect.component.min.js +4 -4
- package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
- package/assets/js/components/nav/nav.component.min.js +2 -2
- package/assets/js/components/notification/notification.component.min.js +1 -1
- package/assets/js/components/pagination/pagination.component.min.js +3 -3
- package/assets/js/components/password/password.component.min.js +1 -1
- package/assets/js/components/popover/popover.component.min.js +1 -1
- package/assets/js/components/rank/rank.component.min.js +1 -1
- package/assets/js/components/rankings/rankings.component.min.js +1 -1
- package/assets/js/components/rating/rating.component.min.js +1 -1
- package/assets/js/components/record-card/record-card.component.min.js +1 -1
- package/assets/js/components/search/search.component.min.js +1 -1
- package/assets/js/components/search/search.component.min.js.map +1 -1
- package/assets/js/components/slider/slider.component.min.js +2 -2
- package/assets/js/components/split-button/split-button.component.min.js +1 -1
- package/assets/js/components/std-address-lookup/std-address-lookup.component.js +59 -2
- package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +10 -9
- package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js.map +1 -1
- package/assets/js/components/table/table.component.min.js +1 -1
- package/assets/js/components/table/table.component.min.js.map +1 -1
- package/assets/js/components/table-ajax/table-ajax.component.min.js +1 -1
- package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -1
- package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
- package/assets/js/components/table-basic/table-basic.component.min.js.map +1 -1
- package/assets/js/components/table-no-submit/table-no-submit.component.min.js +1 -1
- package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -1
- package/assets/js/components/table-submit/table-submit.component.min.js +1 -1
- package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
- package/assets/js/components/tabs/tabs.component.min.js +1 -1
- package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
- package/assets/js/components/tag/tag.component.js +6 -1
- package/assets/js/components/tag/tag.component.min.js +4 -4
- package/assets/js/components/tag/tag.component.min.js.map +1 -1
- package/assets/js/components/tooltip/tooltip.component.min.js +1 -1
- package/assets/js/components/video-card/video-card.component.min.js +1 -1
- package/assets/js/components/video-modal/video-modal.component.min.js +1 -1
- package/assets/js/components/word-count/word-count.component.min.js +1 -1
- package/assets/js/modules/dropdown.js +97 -4
- package/assets/js/modules/helpers.js +26 -22
- package/assets/js/scripts.bundle.js +2 -2
- package/assets/js/scripts.bundle.js.map +1 -1
- package/assets/js/scripts.bundle.min.js +2 -2
- package/assets/js/scripts.bundle.min.js.map +1 -1
- package/assets/sass/_components.scss +0 -2
- package/assets/sass/_elements.scss +1 -0
- package/assets/sass/components/multiselect.preload.scss +0 -55
- package/assets/sass/components/multiselect.scss +172 -174
- package/assets/sass/components/tag.component.scss +38 -57
- package/assets/sass/components/tag.preload.scss +1 -26
- package/assets/sass/elements/dropdown.scss +87 -0
- package/assets/sass/elements/forms.scss +14 -14
- package/assets/sass/elements/icons.css +4 -4
- package/assets/sass/elements/input.scss +0 -14
- package/assets/sass/elements/textarea.scss +97 -0
- package/assets/sass/templates/form.scss +14 -5
- package/assets/ts/components/address-lookup/address-lookup.component.ts +12 -5
- package/assets/ts/components/form/form.component.ts +102 -0
- package/assets/ts/components/input/input.component.ts +8 -6
- package/assets/ts/components/modal/modal.component.ts +1 -1
- package/assets/ts/components/multiselect/multiselect.component.ts +10 -78
- package/assets/ts/components/std-address-lookup/std-address-lookup.component.ts +83 -2
- package/assets/ts/components/tag/tag.component.ts +8 -11
- package/assets/ts/modules/dropdown.ts +117 -5
- package/assets/ts/modules/helpers.ts +32 -27
- package/dist/components.es.js +28 -28
- package/dist/components.umd.js +225 -211
- package/package.json +2 -2
- package/src/components/Form/Form.vue +22 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["window","triggerDynamicEvent","element","event","arguments","length","undefined","console","log","hasAttribute","splitEvents","getAttribute","events","parentNode","Array","from","JSON","parse","forEach","checkConditions","matches","value","runEvent","match","document","querySelector","concat","eventType","target","hideElement","classList","add","querySelectorAll","input","removeAttribute","showElement","remove","closest","setAttribute","populateForm","theEvent","Event","dispatchEvent","attribute","focus","changeEvent","submit","location","href","values","form","Object","keys","field","getElementById","tagName","innerHTML","disabled","checked","addEventListener","__awaiter","thisArg","_arguments","generator","body","checkElements","dataLayer","push","pageTitle","title","detailsTitle","textContent","summary","link","button","linkText","class","buttonText","HTMLElement","navigator","userAgent","indexOf","appVersion","hash","label","replace","dialog","detail","click","showModal","addAttribute","state","type","pageInput","page","_a","scrollIntoView","preventDefault","e","key","stopPropagation","progress","P","Promise","resolve","reject","fulfilled","step","next","rejected","throw","result","done","adopt","then","apply"],"sources":["modules/dynamicEvents.js","scripts.js","modules/helpers.js","modules/data-layer.js"],"sourcesContent":["// Create the event listeners\nwindow.triggerDynamicEvent = (element, event = 'change') => {\n console.log('event');\n if (element.hasAttribute('data-change-events') && event == 'change')\n splitEvents(element, element.getAttribute('data-change-events'));\n if (element.hasAttribute('data-click-events') && event == 'click')\n splitEvents(element, element.getAttribute('data-click-events'));\n};\nconst createDynamicEvents = () => {\n // Change event\n document.addEventListener('change', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-change-events]'))\n splitEvents(event.target, event.target.closest('[data-change-events]').getAttribute('data-change-events'));\n });\n document.addEventListener('keyup', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-change-events]'))\n splitEvents(event.target, event.target.closest('[data-change-events]').getAttribute('data-change-events'));\n });\n // Click event\n document.addEventListener('click', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-click-events]'))\n splitEvents(event.target, event.target.closest('[data-click-events]').getAttribute('data-click-events'));\n });\n};\n// Parse the JSON and trigger the events, this may be singular or multiple set of events\nconst splitEvents = (element, events) => {\n // an empty events will trigger looking up the dom chain for\n if (!events) {\n events = element.parentNode.getAttribute('data-change-events');\n }\n // If still empty bail out\n if (!events)\n return false;\n // Split out each event\n Array.from(JSON.parse(events)).forEach((event) => {\n checkConditions(element, event);\n });\n};\nconst checkConditions = (element, event) => {\n if ('matches' in event) {\n if (event['matches'] == 'any')\n runEvent(element, event, 'if');\n else if (element.value == event.matches)\n runEvent(element, event, 'if');\n else\n runEvent(element, event, 'else');\n return false;\n }\n else if ('in-list' in event) {\n // Pass the matched datalist element instead of the triggered element\n const match = document.querySelector(`${event['in-list']} option[value=\"${element.value}\"]`);\n if (document.querySelector(`${event['in-list']} option[value=\"${element.value}\"]`)) {\n runEvent(match, event, 'if');\n }\n else\n runEvent(match, event, 'else');\n return false;\n }\n else if ('event' in event) {\n runEvent(element, event, 'event');\n }\n};\nconst runEvent = (element, event, eventType) => {\n if (eventType in event == false)\n return false;\n switch (event[eventType]) {\n case 'hide':\n if (document.querySelector(event['target'])) {\n const hideElement = document.querySelector(event['target']);\n hideElement.classList.add('js-hide');\n Array.from(hideElement.querySelectorAll('[data-required]')).forEach((input) => {\n input.removeAttribute('required');\n });\n }\n break;\n case 'show':\n if (document.querySelector(event['target'])) {\n const showElement = document.querySelector(event['target']);\n showElement.classList.remove('js-hide');\n Array.from(showElement.querySelectorAll('[data-required]')).forEach((input) => {\n if (!input.closest('.js-hide'))\n input.setAttribute('required', 'true');\n });\n }\n break;\n case 'populate-form':\n populateForm(element, event);\n break;\n case 'dispatchEvent':\n const theEvent = new Event(event['value']);\n document.querySelector(`${event['target']}`).dispatchEvent(theEvent);\n break;\n case 'setAttribute':\n Array.from(document.querySelectorAll(`${event['target']}`)).forEach(function (element) {\n element.setAttribute(event['attribute'], event['value']);\n });\n break;\n case 'focus':\n document.querySelector(`${event['target']}`).focus();\n break;\n case 'removeAttribute':\n Array.from(document.querySelectorAll(`${event['target']}`)).forEach(function (element) {\n element.removeAttribute(event['attribute']);\n });\n break;\n case 'updateValue':\n document.querySelector(`${event['target']}`).value = event['value'] ? event['value'] : '';\n const changeEvent = new Event('change');\n document.querySelector(`${event['target']}`).dispatchEvent(changeEvent);\n break;\n case 'submitForm':\n document.querySelector(`${event['target']}`).submit();\n break;\n case 'openLink':\n if (document.querySelector(`${event['target']}`).value)\n window.location.href = document.querySelector(`${event['target']}`).value;\n break;\n default:\n break;\n }\n};\nconst populateForm = function (element, event) {\n const values = JSON.parse(element.getAttribute('data-values'));\n const form = document.querySelector(event['target']);\n if (!values)\n return false;\n Object.keys(values).forEach((field) => {\n if (document.getElementById(field) && document.getElementById(field).tagName == 'SPAN')\n document.getElementById(field).innerHTML = values[field];\n if (form.querySelector(`select[name=\"${field}\"] [value=\"${values[field]}\"]`)) {\n form.querySelector(`select[name=\"${field}\"]`).value = values[field];\n if (element.hasAttribute('data-lock-fields'))\n form.querySelector(`select[name=\"${field}\"]`).disabled = true;\n }\n else if (form.querySelector(`input[name=\"${field}\"][type=\"radio\"][value=\"${values[field]}\"]`)) {\n Array.from(form.querySelectorAll(`input[name=\"${field}\"][type=\"radio\"]`)).forEach(function (input) {\n input.disabled = true;\n });\n form.querySelector(`input[name=\"${field}\"][type=\"radio\"][value=\"${values[field]}\"]`).checked = true;\n form.querySelector(`input[name=\"${field}\"][type=\"radio\"][value=\"${values[field]}\"]`).disabled = false;\n }\n else if (form.querySelector(`input[name=\"${field}\"]`)) {\n form.querySelector(`input[name=\"${field}\"]`).value = values[field];\n if (element.hasAttribute('data-lock-fields'))\n form.querySelector(`input[name=\"${field}\"]`).setAttribute('readonly', 'true');\n }\n });\n};\nexport default createDynamicEvents;\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n// Modules\nimport * as helpers from './modules/helpers.js';\nimport createDataLayer from './modules/data-layer.js';\nimport createDynamicEvents from './modules/dynamicEvents.js';\nconst components = [\n 'accordion',\n 'header',\n 'table',\n 'table-basic',\n 'table-no-submit',\n 'tabs',\n 'card',\n 'calendar',\n 'content',\n 'filter-card',\n 'video-card',\n 'record-card',\n 'filterlist',\n 'applied-filters',\n 'pagination',\n 'notification',\n 'actionbar',\n 'nav',\n 'collapsible-side',\n 'address-lookup',\n 'fileupload',\n 'search',\n 'inline-edit',\n 'multiselect',\n 'multi-step',\n 'menu',\n 'slider',\n 'carousel',\n 'marketing',\n 'barchart',\n 'doughnutchart',\n 'bento-grid',\n 'milestone-group',\n 'milestone',\n 'darkmode',\n 'password-indicator'\n];\n// Attach classes to dom elements\ndocument.addEventListener('DOMContentLoaded', () => __awaiter(void 0, void 0, void 0, function* () {\n createDataLayer();\n createDynamicEvents();\n // Global stuff\n helpers.addBodyClasses(document.body);\n helpers.addGlobalEvents(document.body);\n //extendDialogs(document.body);\n //videoSupport(document.body);\n /*\n const prefix = 'iam';\n const options = {\n rootMargin: '50px',\n threshold: 0.1,\n };\n const componentExt = '.component.min.js';\n \n // Load components - Each component will load once the first of its type has been loaded\n components.forEach((component) => {\n if (document.getElementsByTagName(`${prefix}-${component}`).length === 0) return;\n \n const callback = (entries: any): void => {\n entries.forEach((entry: any) => {\n if (entry.intersectionRatio > 0) {\n \n import(`../js/components/${component}/${component}${componentExt}`)\n .then((module) => {\n if (!window.customElements.get(`${prefix}-${component}`))\n window.customElements.define(`${prefix}-${component}`, module.default);\n })\n .catch((err) => {\n console.log(err.message);\n });\n \n intObserver.unobserve(entry.target);\n }\n });\n };\n \n const intObserver = new IntersectionObserver(callback, options);\n intObserver.observe(document.getElementsByTagName(`${prefix}-${component}`)[0]);\n });\n */\n}));\n","/**\n * Global helper functions to help maintain and enhance framework elements.\n * @module Helpers\n */\n/**\n * Add global classes used by the CSS and later JavaScript.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addBodyClasses = (body) => {\n body.classList.add('js-enabled');\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {\n body.classList.add('ie');\n }\n};\n/**\n * Add global events.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addGlobalEvents = (body) => {\n const checkElements = function (hash) {\n const label = document.querySelector(`label[for=\"${hash.replace('#', '')}\"]`);\n const summary = document.querySelector(hash + ' summary');\n const dialog = document.querySelector(`dialog${hash}`);\n const detail = document.querySelector(`detail${hash}`);\n if (label instanceof HTMLElement)\n label.click();\n else if (summary instanceof HTMLElement)\n summary.click();\n else if (dialog instanceof HTMLElement)\n dialog.showModal();\n else if (detail instanceof HTMLElement)\n detail.addAttribute('open');\n };\n if (location.hash)\n checkElements(location.hash);\n window.addEventListener('hashchange', function () {\n checkElements(location.hash);\n }, false);\n addEventListener('popstate', (event) => {\n if (event && event.state && event.state.type && event.state.type == 'pagination') {\n const form = document.querySelector(`#${event.state.form}`);\n const pageInput = document.querySelector(`#${event.state.form} [data-pagination]`);\n if (pageInput)\n pageInput.value = event.state.page;\n else\n form.innerHTML += `<input name=\"page\" type=\"hidden\" data-pagination=\"true\" value=\"${event.state.page}\" />`;\n form.dispatchEvent(new Event('submit'));\n }\n });\n Array.from(document.querySelectorAll('form')).forEach((form) => {\n form.addEventListener('submit', (event) => {\n var _a;\n if (form.querySelector(':invalid')) {\n form.classList.add('was-validated');\n (_a = form === null || form === void 0 ? void 0 : form.querySelector('input:invalid')) === null || _a === void 0 ? void 0 : _a.scrollIntoView();\n event.preventDefault();\n }\n });\n });\n document.addEventListener('click', (event) => {\n var _a;\n if (event && event.target instanceof HTMLElement && event.target.matches('form button:not([type=button])')) {\n const form = event.target.closest('form');\n // Reset password types\n Array.from(form.querySelectorAll('[data-password-type]')).forEach((input) => {\n input.setAttribute('type', 'password');\n });\n if (form.querySelector(':invalid') ||\n form.querySelector('.pwd-checker[data-strength=\"1\"]') ||\n form.querySelector('.pwd-checker[data-strength=\"2\"]')) {\n form.classList.add('was-validated');\n (_a = form === null || form === void 0 ? void 0 : form.querySelector('input:invalid')) === null || _a === void 0 ? void 0 : _a.scrollIntoView();\n event.preventDefault();\n }\n if (form.querySelector('iam-multiselect[data-is-required][data-error]')) {\n form.classList.add('was-validated');\n event.preventDefault();\n }\n }\n });\n document.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') {\n if (document.querySelector('.dialog--transactional[open], .dialog--acknowledgement[open]')) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n });\n Array.from(document.querySelectorAll('label progress')).forEach((progress) => {\n const label = progress.closest('label');\n label.setAttribute('data-percent', progress.getAttribute('value'));\n });\n};\nexport const isNumeric = function (str) {\n if (typeof str != 'string')\n return false; // we only process strings!\n return (!isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...\n !isNaN(parseFloat(str))); // ...and ensure strings of whitespace fail\n};\nexport const zeroPad = (num, places) => String(num).padStart(places, '0');\nexport const ucfirst = (str) => str.charAt(0).toUpperCase() + str.slice(1);\nexport const ucwords = (str) => str\n .split(' ')\n .map((s) => ucfirst(s))\n .join(' ');\nexport const unsnake = (str) => str.replace(/_/g, ' ');\nexport const snake = (str) => str.replace(/ /g, '_');\nexport const safeID = function (str) {\n str = str.toLowerCase();\n str = snake(str);\n str = str.replace(/\\W/g, '');\n return str;\n};\nexport const numberOfDays = function (startDateString, endDateString) {\n const convertStart = startDateString.split('/');\n const convertEnd = endDateString.split('/');\n const dateStart = new Date(convertStart[1] + '/' + convertStart[0] + '/' + convertStart[2]);\n const dateEnd = new Date(convertEnd[1] + '/' + convertEnd[0] + '/' + convertEnd[2]);\n if (dateStart == 'Invalid Date')\n throw 'Start date is not a valid date';\n if (dateEnd == 'Invalid Date')\n throw 'End date is not a valid date';\n // To calculate the time difference of two dates\n const diffTime = dateEnd.getTime() - dateStart.getTime();\n const numberOfDays = diffTime / (1000 * 3600 * 24) + 1;\n if (numberOfDays < 0)\n throw 'The start date should be before the end date';\n return numberOfDays;\n};\n// Used to get values from nested json objects\nexport const resolvePath = (object, path, defaultValue) => path\n // eslint-disable-next-line no-useless-escape\n .split(/[\\.\\[\\]\\'\\\"]/)\n .filter((p) => p)\n .reduce((o, p) => (o ? o[p] : defaultValue), object);\nexport const isTraversable = (o) => Array.isArray(o) || (o !== null && ['function', 'object'].includes(typeof o));\nexport const getSwipeDirection = (touchstartX, touchstartY, touchendX, touchendY) => {\n const limit = Math.tan(((45 * 1.5) / 180) * Math.PI);\n const pageWidth = window.innerWidth || document.body.clientWidth;\n const treshold = Math.max(1, Math.floor(0.01 * pageWidth));\n const x = touchendX - touchstartX;\n const y = touchendY - touchstartY;\n const xy = Math.abs(x / y);\n const yx = Math.abs(y / x);\n if (Math.abs(x) > treshold || Math.abs(y) > treshold) {\n if (yx <= limit) {\n if (x < 0) {\n return 'left';\n }\n else {\n return 'right';\n }\n }\n if (xy <= limit) {\n if (y < 0) {\n return 'top';\n }\n else {\n return 'bottom';\n }\n }\n }\n else {\n return 'tap';\n }\n};\nexport const uniqueID = (index = 1) => {\n const ID = Math.floor(Math.random() * Date.now() * (index + 1));\n return ID;\n};\nexport const isValidPostcode = (searchValue) => {\n const regexp = /^([A-Z][A-HJ-Y]?[0-9][A-Z0-9]? ?[0-9][A-Z]{2}|GIR ?0A{2})$/gmi;\n return regexp.test(searchValue.trim());\n};\n","function createDataLayer() {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'Pageview',\n pageTitle: document.title,\n });\n document.addEventListener('click', (event) => {\n const target = event.target.closest('[open] summary');\n if (target) {\n window.dataLayer.push({\n event: 'closeDetails',\n detailsTitle: target.textContent || '',\n });\n }\n else {\n const summary = event.target.closest('summary');\n const link = event.target.closest('a');\n const button = event.target.closest('button');\n if (summary) {\n window.dataLayer.push({\n event: 'openDetails',\n detailsTitle: summary.textContent || '',\n });\n }\n if (link) {\n window.dataLayer.push({\n event: 'linkClicked',\n linkText: link.hasAttribute('title') ? link.getAttribute('title') || '' : link.textContent || '',\n class: link.hasAttribute('class') ? link.getAttribute('class') || '' : '',\n href: link.getAttribute('href') || '',\n });\n }\n if (button) {\n window.dataLayer.push({\n event: 'buttonClicked',\n buttonText: button.textContent || '',\n class: button.hasAttribute('class') ? button.getAttribute('class') || '' : '',\n });\n }\n }\n });\n}\nexport default createDataLayer;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["window","triggerDynamicEvent","element","event","arguments","length","undefined","console","log","hasAttribute","splitEvents","getAttribute","events","parentNode","Array","from","JSON","parse","forEach","checkConditions","matches","value","runEvent","match","document","querySelector","concat","eventType","target","hideElement","classList","add","querySelectorAll","input","removeAttribute","showElement","remove","closest","setAttribute","populateForm","theEvent","Event","dispatchEvent","attribute","focus","changeEvent","submit","location","href","values","form","Object","keys","field","getElementById","tagName","innerHTML","disabled","checked","addEventListener","__awaiter","thisArg","_arguments","generator","body","checkElements","dataLayer","push","pageTitle","title","detailsTitle","textContent","summary","link","button","linkText","class","buttonText","HTMLElement","navigator","userAgent","indexOf","appVersion","hash","label","replace","dialog","detail","click","showModal","addAttribute","state","type","pageInput","page","_a","scrollIntoView","preventDefault","e","key","stopPropagation","progress","P","Promise","resolve","reject","fulfilled","step","next","rejected","throw","result","done","adopt","then","apply"],"sources":["modules/dynamicEvents.js","scripts.js","modules/helpers.js","modules/data-layer.js"],"sourcesContent":["// Create the event listeners\nwindow.triggerDynamicEvent = (element, event = 'change') => {\n console.log('event');\n if (element.hasAttribute('data-change-events') && event == 'change')\n splitEvents(element, element.getAttribute('data-change-events'));\n if (element.hasAttribute('data-click-events') && event == 'click')\n splitEvents(element, element.getAttribute('data-click-events'));\n};\nconst createDynamicEvents = () => {\n // Change event\n document.addEventListener('change', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-change-events]'))\n splitEvents(event.target, event.target.closest('[data-change-events]').getAttribute('data-change-events'));\n });\n document.addEventListener('keyup', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-change-events]'))\n splitEvents(event.target, event.target.closest('[data-change-events]').getAttribute('data-change-events'));\n });\n // Click event\n document.addEventListener('click', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('[data-click-events]'))\n splitEvents(event.target, event.target.closest('[data-click-events]').getAttribute('data-click-events'));\n });\n};\n// Parse the JSON and trigger the events, this may be singular or multiple set of events\nconst splitEvents = (element, events) => {\n // an empty events will trigger looking up the dom chain for\n if (!events) {\n events = element.parentNode.getAttribute('data-change-events');\n }\n // If still empty bail out\n if (!events)\n return false;\n // Split out each event\n Array.from(JSON.parse(events)).forEach((event) => {\n checkConditions(element, event);\n });\n};\nconst checkConditions = (element, event) => {\n if ('matches' in event) {\n if (event['matches'] == 'any')\n runEvent(element, event, 'if');\n else if (element.value == event.matches)\n runEvent(element, event, 'if');\n else\n runEvent(element, event, 'else');\n return false;\n }\n else if ('in-list' in event) {\n // Pass the matched datalist element instead of the triggered element\n const match = document.querySelector(`${event['in-list']} option[value=\"${element.value}\"]`);\n if (document.querySelector(`${event['in-list']} option[value=\"${element.value}\"]`)) {\n runEvent(match, event, 'if');\n }\n else\n runEvent(match, event, 'else');\n return false;\n }\n else if ('event' in event) {\n runEvent(element, event, 'event');\n }\n};\nconst runEvent = (element, event, eventType) => {\n if (eventType in event == false)\n return false;\n switch (event[eventType]) {\n case 'hide':\n if (document.querySelector(event['target'])) {\n const hideElement = document.querySelector(event['target']);\n hideElement.classList.add('js-hide');\n Array.from(hideElement.querySelectorAll('[data-required]')).forEach((input) => {\n input.removeAttribute('required');\n });\n }\n break;\n case 'show':\n if (document.querySelector(event['target'])) {\n const showElement = document.querySelector(event['target']);\n showElement.classList.remove('js-hide');\n Array.from(showElement.querySelectorAll('[data-required]')).forEach((input) => {\n if (!input.closest('.js-hide'))\n input.setAttribute('required', 'true');\n });\n }\n break;\n case 'populate-form':\n populateForm(element, event);\n break;\n case 'dispatchEvent':\n const theEvent = new Event(event['value']);\n document.querySelector(`${event['target']}`).dispatchEvent(theEvent);\n break;\n case 'setAttribute':\n Array.from(document.querySelectorAll(`${event['target']}`)).forEach(function (element) {\n element.setAttribute(event['attribute'], event['value']);\n });\n break;\n case 'focus':\n document.querySelector(`${event['target']}`).focus();\n break;\n case 'removeAttribute':\n Array.from(document.querySelectorAll(`${event['target']}`)).forEach(function (element) {\n element.removeAttribute(event['attribute']);\n });\n break;\n case 'updateValue':\n document.querySelector(`${event['target']}`).value = event['value'] ? event['value'] : '';\n const changeEvent = new Event('change');\n document.querySelector(`${event['target']}`).dispatchEvent(changeEvent);\n break;\n case 'submitForm':\n document.querySelector(`${event['target']}`).submit();\n break;\n case 'openLink':\n if (document.querySelector(`${event['target']}`).value)\n window.location.href = document.querySelector(`${event['target']}`).value;\n break;\n default:\n break;\n }\n};\nconst populateForm = function (element, event) {\n const values = JSON.parse(element.getAttribute('data-values'));\n const form = document.querySelector(event['target']);\n if (!values)\n return false;\n Object.keys(values).forEach((field) => {\n if (document.getElementById(field) && document.getElementById(field).tagName == 'SPAN')\n document.getElementById(field).innerHTML = values[field];\n if (form.querySelector(`select[name=\"${field}\"] [value=\"${values[field]}\"]`)) {\n form.querySelector(`select[name=\"${field}\"]`).value = values[field];\n if (element.hasAttribute('data-lock-fields'))\n form.querySelector(`select[name=\"${field}\"]`).disabled = true;\n }\n else if (form.querySelector(`input[name=\"${field}\"][type=\"radio\"][value=\"${values[field]}\"]`)) {\n Array.from(form.querySelectorAll(`input[name=\"${field}\"][type=\"radio\"]`)).forEach(function (input) {\n input.disabled = true;\n });\n form.querySelector(`input[name=\"${field}\"][type=\"radio\"][value=\"${values[field]}\"]`).checked = true;\n form.querySelector(`input[name=\"${field}\"][type=\"radio\"][value=\"${values[field]}\"]`).disabled = false;\n }\n else if (form.querySelector(`input[name=\"${field}\"]`)) {\n form.querySelector(`input[name=\"${field}\"]`).value = values[field];\n if (element.hasAttribute('data-lock-fields'))\n form.querySelector(`input[name=\"${field}\"]`).setAttribute('readonly', 'true');\n }\n });\n};\nexport default createDynamicEvents;\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n// Modules\nimport * as helpers from './modules/helpers.js';\nimport createDataLayer from './modules/data-layer.js';\nimport createDynamicEvents from './modules/dynamicEvents.js';\nconst components = [\n 'accordion',\n 'header',\n 'table',\n 'table-basic',\n 'table-no-submit',\n 'tabs',\n 'card',\n 'calendar',\n 'content',\n 'filter-card',\n 'video-card',\n 'record-card',\n 'filterlist',\n 'applied-filters',\n 'pagination',\n 'notification',\n 'actionbar',\n 'nav',\n 'collapsible-side',\n 'address-lookup',\n 'fileupload',\n 'search',\n 'inline-edit',\n 'multiselect',\n 'multi-step',\n 'menu',\n 'slider',\n 'carousel',\n 'marketing',\n 'barchart',\n 'doughnutchart',\n 'bento-grid',\n 'milestone-group',\n 'milestone',\n 'darkmode',\n 'password-indicator'\n];\n// Attach classes to dom elements\ndocument.addEventListener('DOMContentLoaded', () => __awaiter(void 0, void 0, void 0, function* () {\n createDataLayer();\n createDynamicEvents();\n // Global stuff\n helpers.addBodyClasses(document.body);\n helpers.addGlobalEvents(document.body);\n //extendDialogs(document.body);\n //videoSupport(document.body);\n /*\n const prefix = 'iam';\n const options = {\n rootMargin: '50px',\n threshold: 0.1,\n };\n const componentExt = '.component.min.js';\n \n // Load components - Each component will load once the first of its type has been loaded\n components.forEach((component) => {\n if (document.getElementsByTagName(`${prefix}-${component}`).length === 0) return;\n \n const callback = (entries: any): void => {\n entries.forEach((entry: any) => {\n if (entry.intersectionRatio > 0) {\n \n import(`../js/components/${component}/${component}${componentExt}`)\n .then((module) => {\n if (!window.customElements.get(`${prefix}-${component}`))\n window.customElements.define(`${prefix}-${component}`, module.default);\n })\n .catch((err) => {\n console.log(err.message);\n });\n \n intObserver.unobserve(entry.target);\n }\n });\n };\n \n const intObserver = new IntersectionObserver(callback, options);\n intObserver.observe(document.getElementsByTagName(`${prefix}-${component}`)[0]);\n });\n */\n}));\n","/**\n * Global helper functions to help maintain and enhance framework elements.\n * @module Helpers\n */\n/**\n * Add global classes used by the CSS and later JavaScript.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addBodyClasses = (body) => {\n body.classList.add('js-enabled');\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {\n body.classList.add('ie');\n }\n};\n/**\n * Add global events.\n * @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.\n */\nexport const addGlobalEvents = (body) => {\n const checkElements = function (hash) {\n const label = document.querySelector(`label[for=\"${hash.replace('#', '')}\"]`);\n const summary = document.querySelector(hash + ' summary');\n const dialog = document.querySelector(`dialog${hash}`);\n const detail = document.querySelector(`detail${hash}`);\n if (label instanceof HTMLElement)\n label.click();\n else if (summary instanceof HTMLElement)\n summary.click();\n else if (dialog instanceof HTMLElement)\n dialog.showModal();\n else if (detail instanceof HTMLElement)\n detail.addAttribute('open');\n };\n if (location.hash)\n checkElements(location.hash);\n window.addEventListener('hashchange', function () {\n checkElements(location.hash);\n }, false);\n addEventListener('popstate', (event) => {\n if (event && event.state && event.state.type && event.state.type == 'pagination') {\n const form = document.querySelector(`#${event.state.form}`);\n const pageInput = document.querySelector(`#${event.state.form} [data-pagination]`);\n if (pageInput)\n pageInput.value = event.state.page;\n else\n form.innerHTML += `<input name=\"page\" type=\"hidden\" data-pagination=\"true\" value=\"${event.state.page}\" />`;\n form.dispatchEvent(new Event('submit'));\n }\n });\n Array.from(document.querySelectorAll('form')).forEach((form) => {\n if (!(form === null || form === void 0 ? void 0 : form.closest('iam-form'))) {\n form.addEventListener('submit', (event) => {\n var _a;\n if (form.querySelector(':invalid')) {\n form.classList.add('was-validated');\n (_a = form === null || form === void 0 ? void 0 : form.querySelector('input:invalid')) === null || _a === void 0 ? void 0 : _a.scrollIntoView();\n event.preventDefault();\n }\n });\n }\n });\n document.addEventListener('click', (event) => {\n var _a;\n if (event && event.target instanceof HTMLElement && event.target.matches('form button:not([type=button])')) {\n const form = event.target.closest('form');\n if (!(form === null || form === void 0 ? void 0 : form.closest('iam-form'))) {\n // Reset password types\n Array.from(form.querySelectorAll('[data-password-type]')).forEach((input) => {\n input.setAttribute('type', 'password');\n });\n if (form.querySelector(':invalid') ||\n form.querySelector('.pwd-checker[data-strength=\"1\"]') ||\n form.querySelector('.pwd-checker[data-strength=\"2\"]')) {\n form.classList.add('was-validated');\n (_a = form === null || form === void 0 ? void 0 : form.querySelector('input:invalid')) === null || _a === void 0 ? void 0 : _a.scrollIntoView();\n event.preventDefault();\n }\n if (form.querySelector('iam-multiselect[data-is-required][data-error]')) {\n form.classList.add('was-validated');\n event.preventDefault();\n }\n }\n }\n });\n document.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') {\n if (document.querySelector('.dialog--transactional[open], .dialog--acknowledgement[open]')) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n });\n Array.from(document.querySelectorAll('label progress')).forEach((progress) => {\n const label = progress.closest('label');\n label.setAttribute('data-percent', progress.getAttribute('value'));\n });\n};\nexport const isNumeric = function (str) {\n if (typeof str != 'string')\n return false; // we only process strings!\n return (!isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...\n !isNaN(parseFloat(str))); // ...and ensure strings of whitespace fail\n};\nexport const zeroPad = (num, places) => String(num).padStart(places, '0');\nexport const ucfirst = (str) => str.charAt(0).toUpperCase() + str.slice(1);\nexport const ucwords = (str) => str\n .split(' ')\n .map((s) => ucfirst(s))\n .join(' ');\nexport const unsnake = (str) => str.replace(/_/g, ' ');\nexport const snake = (str) => str.replace(/ /g, '_');\nexport const safeID = function (str) {\n str = str.toLowerCase();\n str = snake(str);\n str = str.replace(/\\W/g, '');\n return str;\n};\nexport const numberOfDays = function (startDateString, endDateString) {\n const convertStart = startDateString.split('/');\n const convertEnd = endDateString.split('/');\n const dateStart = new Date(convertStart[1] + '/' + convertStart[0] + '/' + convertStart[2]);\n const dateEnd = new Date(convertEnd[1] + '/' + convertEnd[0] + '/' + convertEnd[2]);\n if (dateStart == 'Invalid Date')\n throw 'Start date is not a valid date';\n if (dateEnd == 'Invalid Date')\n throw 'End date is not a valid date';\n // To calculate the time difference of two dates\n const diffTime = dateEnd.getTime() - dateStart.getTime();\n const numberOfDays = diffTime / (1000 * 3600 * 24) + 1;\n if (numberOfDays < 0)\n throw 'The start date should be before the end date';\n return numberOfDays;\n};\n// Used to get values from nested json objects\nexport const resolvePath = (object, path, defaultValue) => path\n // eslint-disable-next-line no-useless-escape\n .split(/[\\.\\[\\]\\'\\\"]/)\n .filter((p) => p)\n .reduce((o, p) => (o ? o[p] : defaultValue), object);\nexport const isTraversable = (o) => Array.isArray(o) || (o !== null && ['function', 'object'].includes(typeof o));\nexport const getSwipeDirection = (touchstartX, touchstartY, touchendX, touchendY) => {\n const limit = Math.tan(((45 * 1.5) / 180) * Math.PI);\n const pageWidth = window.innerWidth || document.body.clientWidth;\n const treshold = Math.max(1, Math.floor(0.01 * pageWidth));\n const x = touchendX - touchstartX;\n const y = touchendY - touchstartY;\n const xy = Math.abs(x / y);\n const yx = Math.abs(y / x);\n if (Math.abs(x) > treshold || Math.abs(y) > treshold) {\n if (yx <= limit) {\n if (x < 0) {\n return 'left';\n }\n else {\n return 'right';\n }\n }\n if (xy <= limit) {\n if (y < 0) {\n return 'top';\n }\n else {\n return 'bottom';\n }\n }\n }\n else {\n return 'tap';\n }\n};\nexport const uniqueID = (index = 1) => {\n const ID = Math.floor(Math.random() * Date.now() * (index + 1));\n return ID;\n};\nexport const isValidPostcode = (searchValue) => {\n const regexp = /^([A-Z][A-HJ-Y]?[0-9][A-Z0-9]? ?[0-9][A-Z]{2}|GIR ?0A{2})$/gmi;\n return regexp.test(searchValue.trim());\n};\n","function createDataLayer() {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'Pageview',\n pageTitle: document.title,\n });\n document.addEventListener('click', (event) => {\n const target = event.target.closest('[open] summary');\n if (target) {\n window.dataLayer.push({\n event: 'closeDetails',\n detailsTitle: target.textContent || '',\n });\n }\n else {\n const summary = event.target.closest('summary');\n const link = event.target.closest('a');\n const button = event.target.closest('button');\n if (summary) {\n window.dataLayer.push({\n event: 'openDetails',\n detailsTitle: summary.textContent || '',\n });\n }\n if (link) {\n window.dataLayer.push({\n event: 'linkClicked',\n linkText: link.hasAttribute('title') ? link.getAttribute('title') || '' : link.textContent || '',\n class: link.hasAttribute('class') ? link.getAttribute('class') || '' : '',\n href: link.getAttribute('href') || '',\n });\n }\n if (button) {\n window.dataLayer.push({\n event: 'buttonClicked',\n buttonText: button.textContent || '',\n class: button.hasAttribute('class') ? button.getAttribute('class') || '' : '',\n });\n }\n }\n });\n}\nexport default createDataLayer;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,63 +1,8 @@
|
|
|
1
1
|
@use '../_func' as *;
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
3
|
@layer components {
|
|
8
|
-
iam-multiselect .tag[slot='checked'] {
|
|
9
|
-
margin-bottom: 0.5rem;
|
|
10
|
-
order: var(--order, 1);
|
|
11
|
-
margin-inline: rem(3);
|
|
12
|
-
|
|
13
|
-
&:not(:has(i)):after {
|
|
14
|
-
content: '\2715';
|
|
15
|
-
margin-left: 0.6em;
|
|
16
|
-
font-weight: bold;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
iam-multiselect .tag[slot='checked']:first-child:last-child {
|
|
21
|
-
|
|
22
|
-
margin-inline: 0;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
iam-multiselect .tag:not([slot='checked']) {
|
|
26
|
-
display: block;
|
|
27
|
-
width: 100%;
|
|
28
|
-
max-width: 100%;
|
|
29
|
-
margin: 0;
|
|
30
|
-
text-align: left;
|
|
31
|
-
border-radius: 0;
|
|
32
|
-
padding-inline: 1rem;
|
|
33
|
-
outline: none;
|
|
34
|
-
padding-block: 0.5rem;
|
|
35
|
-
|
|
36
|
-
&:not(:hover, :focus, :active, :focus-within) {
|
|
37
|
-
background: none !important;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
&::after {
|
|
41
|
-
display: none;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
4
|
|
|
45
|
-
iam-multiselect:has(label:not([slot='checked']):not([slot='notmatched'])) {
|
|
46
|
-
--display-panel: block;
|
|
47
|
-
}
|
|
48
5
|
|
|
49
|
-
iam-multiselect:has(label[slot='checked']) {
|
|
50
|
-
--display-button: block;
|
|
51
|
-
}
|
|
52
6
|
|
|
53
|
-
@container style(--theme: dark) {
|
|
54
|
-
iam-multiselect :is(.tag, .badge):not([slot='checked']) {
|
|
55
|
-
color: var(--colour-heading);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
7
|
|
|
59
|
-
iam-multiselect[data-single] .tag[slot='checked'],
|
|
60
|
-
iam-multiselect[data-single] .tag[slot='checked'] * {
|
|
61
|
-
pointer-events: none!important;
|
|
62
|
-
}
|
|
63
8
|
}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
@use '../elements/admin-panel.scss' as *;
|
|
6
6
|
@use '../elements/buttons.scss' as *;
|
|
7
7
|
@use '../elements/buttons--action.scss' as *;
|
|
8
|
+
@use '../elements/dropdown.scss' as *;
|
|
8
9
|
|
|
9
10
|
@use '../utilities/visually-hidden' as *;
|
|
10
11
|
@use '../utilities/display' as *;
|
|
@@ -15,227 +16,224 @@
|
|
|
15
16
|
box-sizing: border-box;
|
|
16
17
|
}
|
|
17
18
|
|
|
18
|
-
|
|
19
|
+
@layer components {
|
|
20
|
+
:host {
|
|
19
21
|
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
.outer {
|
|
24
|
-
position: relative;
|
|
25
|
-
max-width: var(--input-max-width, 50rem);
|
|
26
|
-
display: block;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
label {
|
|
30
|
-
margin-bottom: 0;
|
|
31
|
-
padding-bottom: 0.5rem;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
.inner-label:empty {
|
|
35
|
-
display: none;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.wrapper {
|
|
39
|
-
max-width: var(--input-max-width, 50rem);
|
|
22
|
+
margin-bottom: 1.5rem;
|
|
23
|
+
}
|
|
40
24
|
|
|
41
|
-
|
|
42
|
-
|
|
25
|
+
.outer {
|
|
26
|
+
position: relative;
|
|
27
|
+
max-width: var(--input-max-width, 50rem);
|
|
43
28
|
display: block;
|
|
44
|
-
position: absolute;
|
|
45
|
-
top: 100%;
|
|
46
|
-
left: 0;
|
|
47
|
-
width: 100%;
|
|
48
|
-
height: 1rem;
|
|
49
29
|
}
|
|
50
30
|
|
|
51
|
-
|
|
52
|
-
margin-bottom: 0
|
|
31
|
+
label {
|
|
32
|
+
margin-bottom: 0;
|
|
33
|
+
padding-bottom: 0.5rem;
|
|
53
34
|
}
|
|
54
35
|
|
|
55
|
-
.
|
|
56
|
-
position: absolute;
|
|
57
|
-
right: 0;
|
|
58
|
-
bottom: 100%;
|
|
59
|
-
padding: 0.85rem;
|
|
60
|
-
width: min-content;
|
|
61
|
-
white-space: nowrap;
|
|
62
|
-
margin-bottom: 0.5rem;
|
|
36
|
+
.inner-label:empty {
|
|
63
37
|
display: none;
|
|
64
38
|
}
|
|
65
39
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
40
|
+
.wrapper {
|
|
41
|
+
max-width: var(--input-max-width, 50rem);
|
|
42
|
+
|
|
43
|
+
&:after {
|
|
44
|
+
content: '';
|
|
45
|
+
display: block;
|
|
46
|
+
position: absolute;
|
|
47
|
+
top: 100%;
|
|
48
|
+
left: 0;
|
|
49
|
+
width: 100%;
|
|
50
|
+
height: 1rem;
|
|
51
|
+
}
|
|
70
52
|
|
|
71
|
-
|
|
53
|
+
input {
|
|
54
|
+
margin-bottom: 0.5rem;
|
|
55
|
+
}
|
|
72
56
|
|
|
73
|
-
|
|
57
|
+
.feedback {
|
|
58
|
+
position: absolute;
|
|
59
|
+
right: 0;
|
|
60
|
+
bottom: 100%;
|
|
61
|
+
padding: 0.85rem;
|
|
62
|
+
width: min-content;
|
|
63
|
+
white-space: nowrap;
|
|
64
|
+
margin-bottom: 0.5rem;
|
|
65
|
+
display: none;
|
|
66
|
+
}
|
|
74
67
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
.wrapper.filled {
|
|
79
|
-
display: flex;
|
|
80
|
-
flex-direction: row;
|
|
81
|
-
flex-wrap: wrap;
|
|
82
|
-
align-items: flex-start;
|
|
83
|
-
min-height: calc(0.75rem + 0.75rem + 1.25rem + 4px);
|
|
84
|
-
padding: 0.5rem 2rem 0 #{rem(13)};
|
|
85
|
-
font-size: var(--input-fs, 1rem);
|
|
86
|
-
line-height: var(--input-lh, 1.25rem);
|
|
87
|
-
color: var(--colour-body);
|
|
88
|
-
background-color: var(--colour-canvas-2);
|
|
89
|
-
border: 2px solid var(--colour-primary);
|
|
90
|
-
border-radius: 0.5rem;
|
|
91
|
-
|
|
92
|
-
&:is(:focus-within, .focus-within):not(:disabled) {
|
|
93
|
-
border-color: var(--colour-info);
|
|
94
|
-
outline: 0;
|
|
95
|
-
box-shadow: 0 0 0 0.1rem rgba(30, 190, 230, 0.25);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
input {
|
|
99
|
-
all: unset;
|
|
100
|
-
font-size: 1rem;
|
|
101
|
-
line-height: rem(26);
|
|
102
|
-
display: var(--search-display,inline-block);
|
|
103
|
-
width: 0;
|
|
104
|
-
flex-grow: 1;
|
|
105
|
-
padding: 0 0.5rem 0 0 !important;
|
|
106
|
-
margin-inline: rem(3);
|
|
107
|
-
order: 999;
|
|
108
|
-
margin-bottom: 0.5rem;
|
|
68
|
+
&.was-validated .feedback {
|
|
69
|
+
display: block;
|
|
70
|
+
}
|
|
109
71
|
}
|
|
110
72
|
|
|
111
|
-
.
|
|
112
|
-
|
|
113
|
-
|
|
73
|
+
.wrapper {
|
|
74
|
+
|
|
75
|
+
input {
|
|
114
76
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
outline: 0;
|
|
118
|
-
box-shadow: 0 0 0 0.1rem rgba(30, 190, 230, 0.25);
|
|
77
|
+
margin-top: unset;
|
|
78
|
+
}
|
|
119
79
|
}
|
|
120
|
-
|
|
80
|
+
.wrapper.filled {
|
|
81
|
+
display: flex;
|
|
82
|
+
flex-direction: row;
|
|
83
|
+
flex-wrap: wrap;
|
|
84
|
+
align-items: flex-start;
|
|
85
|
+
min-height: calc(0.75rem + 0.75rem + 1.25rem + 4px);
|
|
86
|
+
padding: 0.5rem 2rem 0 #{rem(13)};
|
|
87
|
+
font-size: var(--input-fs, 1rem);
|
|
88
|
+
line-height: var(--input-lh, 1.25rem);
|
|
89
|
+
color: var(--colour-body);
|
|
90
|
+
background-color: var(--colour-canvas-2);
|
|
91
|
+
border: 2px solid var(--colour-primary);
|
|
92
|
+
border-radius: 0.5rem;
|
|
93
|
+
|
|
94
|
+
&:is(:focus-within, .focus-within):not(:disabled) {
|
|
95
|
+
border-color: var(--colour-info);
|
|
96
|
+
outline: 0;
|
|
97
|
+
box-shadow: 0 0 0 0.1rem rgba(30, 190, 230, 0.25);
|
|
98
|
+
}
|
|
121
99
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
100
|
+
input {
|
|
101
|
+
all: unset;
|
|
102
|
+
font-size: 1rem;
|
|
103
|
+
line-height: rem(26);
|
|
104
|
+
display: var(--search-display,inline-block);
|
|
105
|
+
width: 0;
|
|
106
|
+
flex-grow: 1;
|
|
107
|
+
padding: 0 0.5rem 0 0 !important;
|
|
108
|
+
margin-inline: rem(3);
|
|
109
|
+
order: 999;
|
|
110
|
+
margin-bottom: 0.5rem;
|
|
111
|
+
}
|
|
128
112
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
}
|
|
113
|
+
.feedback {
|
|
114
|
+
display: none !important;
|
|
115
|
+
}
|
|
134
116
|
|
|
135
|
-
.
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
width: 100%;
|
|
141
|
-
margin: 0;
|
|
142
|
-
z-index: 99;
|
|
143
|
-
display: none;
|
|
144
|
-
max-height: rem(244) !important;
|
|
145
|
-
overflow: auto;
|
|
146
|
-
|
|
147
|
-
&:before {
|
|
148
|
-
display: none;
|
|
117
|
+
&:is(:focus, .focus):not(:disabled) {
|
|
118
|
+
border-color: var(--colour-info);
|
|
119
|
+
outline: 0;
|
|
120
|
+
box-shadow: 0 0 0 0.1rem rgba(30, 190, 230, 0.25);
|
|
121
|
+
}
|
|
149
122
|
}
|
|
150
|
-
}
|
|
151
123
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
124
|
+
button {
|
|
125
|
+
position: absolute;
|
|
126
|
+
right: 0.5rem;
|
|
127
|
+
border: none;
|
|
128
|
+
padding-inline: 0.5rem;
|
|
129
|
+
display: var(--display-button, none);
|
|
155
130
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
131
|
+
&:after {
|
|
132
|
+
content: '\2715';
|
|
133
|
+
font-weight: bold;
|
|
134
|
+
}
|
|
159
135
|
}
|
|
160
|
-
}
|
|
161
136
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
display: block;
|
|
137
|
+
.wrapper:is(:focus-within) .dropdown {
|
|
138
|
+
display: var(--display-panel, none);
|
|
165
139
|
}
|
|
166
|
-
}
|
|
167
140
|
|
|
168
|
-
|
|
169
|
-
:
|
|
170
|
-
|
|
171
|
-
|
|
141
|
+
@media (hover: hover) {
|
|
142
|
+
.wrapper .dropdown:hover {
|
|
143
|
+
display: var(--display-panel, none);
|
|
144
|
+
}
|
|
172
145
|
}
|
|
173
|
-
}
|
|
174
|
-
:host-context(iam-inline-edit) {
|
|
175
|
-
display: block;
|
|
176
|
-
--display-btns: none;
|
|
177
146
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
147
|
+
@media (hover: none) {
|
|
148
|
+
:host(.hover) .wrapper .dropdown {
|
|
149
|
+
display: block;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
181
152
|
|
|
153
|
+
// Inline edit
|
|
154
|
+
:host-context(:focus-within) {
|
|
182
155
|
input {
|
|
156
|
+
background-color: none !important;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
:host-context(iam-inline-edit) {
|
|
160
|
+
display: block;
|
|
161
|
+
--display-btns: none;
|
|
162
|
+
|
|
163
|
+
label:hover + .outer:not(:focus-within) .wrapper:not([data-mousedown]),
|
|
164
|
+
.outer:not(:focus-within) .wrapper:not([data-mousedown]):hover {
|
|
183
165
|
background-color: var(--colour-light);
|
|
166
|
+
|
|
167
|
+
input {
|
|
168
|
+
background-color: var(--colour-light);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.dropdown {
|
|
172
|
+
display: none;
|
|
173
|
+
}
|
|
184
174
|
}
|
|
185
175
|
|
|
186
|
-
.
|
|
187
|
-
|
|
176
|
+
.wrapper {
|
|
177
|
+
margin-bottom: 0;
|
|
188
178
|
}
|
|
189
|
-
}
|
|
190
179
|
|
|
191
|
-
|
|
192
|
-
|
|
180
|
+
.wrapper:not(.filled):not(:focus-within):not([data-mousedown]) {
|
|
181
|
+
input {
|
|
182
|
+
border-color: transparent;
|
|
183
|
+
background: none;
|
|
184
|
+
margin-left: var(--input-ms,-1rem);
|
|
185
|
+
width: calc(100% + 1rem);
|
|
186
|
+
max-width: calc(100% + 1rem);
|
|
187
|
+
box-shadow: none;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.dropdown {
|
|
191
|
+
display: none;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
.wrapper.filled:not(:focus-within):not([data-mousedown]) {
|
|
195
|
+
background: none;
|
|
196
|
+
border: none;
|
|
197
|
+
padding-left: 0;
|
|
198
|
+
}
|
|
193
199
|
}
|
|
194
200
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
box-shadow: none;
|
|
201
|
+
:host([data-single]){
|
|
202
|
+
|
|
203
|
+
.wrapper.filled{
|
|
204
|
+
|
|
205
|
+
slot[name='checked'] {
|
|
206
|
+
pointer-events: none;
|
|
207
|
+
}
|
|
203
208
|
}
|
|
204
209
|
|
|
205
|
-
|
|
210
|
+
#clear {
|
|
211
|
+
display: none;
|
|
212
|
+
}
|
|
213
|
+
::slotted([slot='checked'])::after {
|
|
206
214
|
display: none;
|
|
207
215
|
}
|
|
208
216
|
}
|
|
209
|
-
|
|
210
|
-
background: none;
|
|
211
|
-
border: none;
|
|
212
|
-
padding-left: 0;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
:host([data-single]){
|
|
217
|
+
:host-context(td){
|
|
217
218
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
219
|
+
input,
|
|
220
|
+
textarea,
|
|
221
|
+
select {
|
|
222
|
+
margin-left: 0!important;
|
|
223
|
+
width: 100%!important;
|
|
224
|
+
max-width: 100%!important;
|
|
225
|
+
}
|
|
223
226
|
}
|
|
224
227
|
|
|
225
|
-
|
|
226
|
-
|
|
228
|
+
::slotted([slot='checked']) {
|
|
229
|
+
margin-bottom: 0.5rem;
|
|
230
|
+
order: var(--order, 1);
|
|
231
|
+
margin-inline: rem(3);
|
|
227
232
|
}
|
|
233
|
+
|
|
228
234
|
::slotted([slot='checked'])::after {
|
|
229
|
-
|
|
235
|
+
content: '\2715';
|
|
236
|
+
margin-left: 0.6em;
|
|
237
|
+
font-weight: bold;
|
|
230
238
|
}
|
|
231
|
-
}
|
|
232
|
-
:host-context(td){
|
|
233
|
-
|
|
234
|
-
input,
|
|
235
|
-
textarea,
|
|
236
|
-
select {
|
|
237
|
-
margin-left: 0!important;
|
|
238
|
-
width: 100%!important;
|
|
239
|
-
max-width: 100%!important;
|
|
240
|
-
}
|
|
241
239
|
}
|