diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index eb878d2b54..2cfe328312 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,8 +4,6 @@ on: # Trigger the workflow on push with tags, # but only for the master branch push: - branches: - - master tags: - 'v*' diff --git a/lerna.json b/lerna.json index 5d5fb16e81..be61b1ef96 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.1.19", + "version": "0.1.21", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/package.json b/package.json index 69f7b0f21d..10cebbd720 100644 --- a/package.json +++ b/package.json @@ -21,12 +21,15 @@ "publishdev": "lerna run publishdev", "publishnpm": "yarn build && lerna publish --force-publish", "clean": "lerna clean", - "dev": "node ./scripts/symlinkDev.js && lerna run --parallel --stream dev:builder", + "dev": "node ./scripts/symlinkDev.js && lerna run --parallel dev:builder", "test": "lerna run test", "lint": "eslint packages", "lint:fix": "eslint --fix packages", "format": "prettier --write \"{,!(node_modules)/**/}*.{js,jsx,svelte}\"", "test:e2e": "lerna run cy:test", "test:e2e:ci": "lerna run cy:ci" + }, + "dependencies": { + "@fortawesome/fontawesome": "^1.1.8" } } diff --git a/packages/builder/.gitignore b/packages/builder/.gitignore index 69f2f5a00e..50269a9125 100644 --- a/packages/builder/.gitignore +++ b/packages/builder/.gitignore @@ -5,4 +5,5 @@ package-lock.json release/ dist/ cypress/screenshots +cypress/videos routify diff --git a/packages/builder/cypress/integration/createWorkflow.spec.js b/packages/builder/cypress/integration/createWorkflow.spec.js index e7fe34b630..833777f106 100644 --- a/packages/builder/cypress/integration/createWorkflow.spec.js +++ b/packages/builder/cypress/integration/createWorkflow.spec.js @@ -1,46 +1,52 @@ -context('Create a workflow', () => { +context("Create a workflow", () => { + before(() => { + cy.server() + cy.visit("localhost:4001/_builder") - before(() => { - cy.server() - cy.visit('localhost:4001/_builder') + cy.createApp( + "Workflow Test App", + "This app is used to test that workflows do in fact work!" + ) + }) - cy.createApp('Workflow Test App', 'This app is used to test that workflows do in fact work!') - }) + // https://on.cypress.io/interacting-with-elements + it("should create a workflow", () => { + cy.createTestTableWithData() - // https://on.cypress.io/interacting-with-elements - it('should create a workflow', () => { - cy.createTestTableWithData() + cy.contains("workflow").click() + cy.contains("Create New Workflow").click() + cy.get("input").type("Add Record") + cy.contains("Save").click() - cy.contains('workflow').click() - cy.contains('Create New Workflow').click() - cy.get('input').type('Add Record') - cy.contains('Save').click() + // Add trigger + cy.get("[data-cy=add-workflow-component]").click() + cy.get("[data-cy=RECORD_SAVED]").click() + cy.get(".budibase__input").select("dog") - // Add trigger - cy.get('[data-cy=add-workflow-component]').click() - cy.get('[data-cy=RECORD_SAVED]').click() - cy.get('.budibase__input').select('dog') + // Create action + cy.get("[data-cy=SAVE_RECORD]").click() + cy.get(".budibase__input").select("dog") + cy.get(".container input") + .first() + .type("goodboy") + cy.get(".container input") + .eq(1) + .type("11") - // Create action - cy.get('[data-cy=SAVE_RECORD]').click() - cy.get('.container input').first().type('goodboy') - cy.get('.container input').eq(1).type('11') + // Save + cy.contains("Save Workflow").click() - // Save - cy.contains('Save Workflow').click() + // Activate Workflow + cy.get("[data-cy=activate-workflow]").click() + cy.contains("Add Record").should("be.visible") + cy.get(".stop-button.highlighted").should("be.visible") + }) - // Activate Workflow - cy.get('[data-cy=activate-workflow]').click() - cy.contains("Add Record").should("be.visible") - cy.get(".stop-button.highlighted").should("be.visible") - }) + it("should add record when a new record is added", () => { + cy.contains("backend").click() - it('should add record when a new record is added', () => { - cy.contains('backend').click() - - cy.addRecord(["Rover", 15]) - cy.reload() - cy.contains('goodboy').should('have.text', 'goodboy') - - }) -}) \ No newline at end of file + cy.addRecord(["Rover", 15]) + cy.reload() + cy.contains("goodboy").should("have.text", "goodboy") + }) +}) diff --git a/packages/builder/cypress/videos/createWorkflow.spec.js.mp4 b/packages/builder/cypress/videos/createWorkflow.spec.js.mp4 index 52116ef9e9..22fd8541c7 100644 Binary files a/packages/builder/cypress/videos/createWorkflow.spec.js.mp4 and b/packages/builder/cypress/videos/createWorkflow.spec.js.mp4 differ diff --git a/packages/builder/package.json b/packages/builder/package.json index ea555007a9..524025ba5b 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.1.19", + "version": "0.1.21", "license": "AGPL-3.0", "private": true, "scripts": { @@ -63,16 +63,16 @@ } }, "dependencies": { - "@budibase/bbui": "^1.32.0", - "@budibase/client": "^0.1.19", + "@budibase/bbui": "^1.33.0", + "@budibase/client": "^0.1.21", "@budibase/colorpicker": "^1.0.1", + "@fortawesome/fontawesome-free": "^5.14.0", "@sentry/browser": "5.19.1", "@svelteschool/svelte-forms": "^0.7.0", "britecharts": "^2.16.0", "d3-selection": "^1.4.1", "deepmerge": "^4.2.2", "fast-sort": "^2.2.0", - "feather-icons": "^4.21.0", "lodash": "^4.17.13", "mustache": "^4.0.1", "posthog-js": "1.3.1", diff --git a/packages/builder/rollup.config.js b/packages/builder/rollup.config.js index 3d73d968f3..ffeacf9e52 100644 --- a/packages/builder/rollup.config.js +++ b/packages/builder/rollup.config.js @@ -234,7 +234,7 @@ export default { // Watch the `dist` directory and refresh the // browser on changes when not in production - !production && livereload(outputpath), + !production && livereload({ watch: outputpath, delay: 500 }), // If we're building for production (npm run build // instead of npm run dev), minify diff --git a/packages/builder/scripts/jestSetup.js b/packages/builder/scripts/jestSetup.js index 52053d4092..ed2b7da3fd 100644 --- a/packages/builder/scripts/jestSetup.js +++ b/packages/builder/scripts/jestSetup.js @@ -1,3 +1,4 @@ +// Array.flat needs polyfilled in < Node 11 if (!Array.prototype.flat) { Object.defineProperty(Array.prototype, "flat", { configurable: true, diff --git a/packages/builder/src/builderStore/fetchBindableProperties.js b/packages/builder/src/builderStore/fetchBindableProperties.js index f36484fbdf..65cc861c50 100644 --- a/packages/builder/src/builderStore/fetchBindableProperties.js +++ b/packages/builder/src/builderStore/fetchBindableProperties.js @@ -37,7 +37,9 @@ export default function({ componentInstanceId, screen, components, models }) { .filter(isInstanceInSharedContext(walkResult)) .map(componentInstanceToBindable(walkResult)), - ...walkResult.target._contexts.map(contextToBindables(walkResult)).flat(), + ...walkResult.target._contexts + .map(contextToBindables(models, walkResult)) + .flat(), ] } @@ -69,17 +71,31 @@ const componentInstanceToBindable = walkResult => i => { } } -const contextToBindables = walkResult => context => { +const contextToBindables = (models, walkResult) => context => { const contextParentPath = getParentPath(walkResult, context) - return Object.keys(context.model.schema).map(k => ({ + const newBindable = key => ({ type: "context", instance: context.instance, // how the binding expression persists, and is used in the app at runtime - runtimeBinding: `${contextParentPath}data.${k}`, + runtimeBinding: `${contextParentPath}data.${key}`, // how the binding exressions looks to the user of the builder - readableBinding: `${context.instance._instanceName}.${context.model.name}.${k}`, - })) + readableBinding: `${context.instance._instanceName}.${context.model.label}.${key}`, + }) + + // see ModelViewSelect.svelte for the format of context.model + // ... this allows us to bind to Model scheams, or View schemas + const model = models.find(m => m._id === context.model.modelId) + const schema = context.model.isModel + ? model.schema + : model.views[context.model.name].schema + + return ( + Object.keys(schema) + .map(newBindable) + // add _id and _rev fields - not part of schema, but always valid + .concat([newBindable("_id"), newBindable("_rev")]) + ) } const getParentPath = (walkResult, context) => { @@ -135,7 +151,7 @@ const walk = ({ instance, targetId, components, models, result }) => { if (contextualInstance) { // add to currentContexts (ancestory of context) // before walking children - const model = models.find(m => m._id === instance[component.context]) + const model = instance[component.context] result.currentContexts.push({ instance, model }) } diff --git a/packages/builder/src/builderStore/replaceBindings.js b/packages/builder/src/builderStore/replaceBindings.js new file mode 100644 index 0000000000..aa57301261 --- /dev/null +++ b/packages/builder/src/builderStore/replaceBindings.js @@ -0,0 +1,42 @@ +export const CAPTURE_VAR_INSIDE_MUSTACHE = /{{([^}]+)}}/g + +export function readableToRuntimeBinding(bindableProperties, textWithBindings) { + // Find all instances of mustasche + const boundValues = textWithBindings.match(CAPTURE_VAR_INSIDE_MUSTACHE) + + let result = textWithBindings + // Replace readableBindings with runtimeBindings + boundValues && + boundValues.forEach(boundValue => { + const binding = bindableProperties.find(({ readableBinding }) => { + return boundValue === `{{ ${readableBinding} }}` + }) + if (binding) { + result = textWithBindings.replace( + boundValue, + `{{ ${binding.runtimeBinding} }}` + ) + } + }) + return result +} + +export function runtimeToReadableBinding(bindableProperties, textWithBindings) { + let temp = textWithBindings + const boundValues = + (typeof textWithBindings === "string" && + textWithBindings.match(CAPTURE_VAR_INSIDE_MUSTACHE)) || + [] + + // Replace runtimeBindings with readableBindings: + boundValues.forEach(v => { + const binding = bindableProperties.find(({ runtimeBinding }) => { + return v === `{{ ${runtimeBinding} }}` + }) + if (binding) { + temp = temp.replace(v, `{{ ${binding.readableBinding} }}`) + } + }) + + return temp +} diff --git a/packages/builder/src/builderStore/store/workflow/Workflow.js b/packages/builder/src/builderStore/store/workflow/Workflow.js index d9c1ee249f..8ac6664e91 100644 --- a/packages/builder/src/builderStore/store/workflow/Workflow.js +++ b/packages/builder/src/builderStore/store/workflow/Workflow.js @@ -1,5 +1,3 @@ -import mustache from "mustache" -import blockDefinitions from "components/workflow/WorkflowPanel/blockDefinitions" import { generate } from "shortid" /** @@ -18,27 +16,31 @@ export default class Workflow { addBlock(block) { // Make sure to add trigger if doesn't exist if (!this.hasTrigger() && block.type === "TRIGGER") { - this.workflow.definition.trigger = { id: generate(), ...block } - return + const trigger = { id: generate(), ...block } + this.workflow.definition.trigger = trigger + return trigger } - this.workflow.definition.steps.push({ - id: generate(), - ...block, - }) + const newBlock = { id: generate(), ...block } + this.workflow.definition.steps = [ + ...this.workflow.definition.steps, + newBlock, + ] + return newBlock } updateBlock(updatedBlock, id) { const { steps, trigger } = this.workflow.definition if (trigger && trigger.id === id) { - this.workflow.definition.trigger = null + this.workflow.definition.trigger = updatedBlock return } const stepIdx = steps.findIndex(step => step.id === id) if (stepIdx < 0) throw new Error("Block not found.") steps.splice(stepIdx, 1, updatedBlock) + this.workflow.definition.steps = steps } deleteBlock(id) { @@ -52,44 +54,6 @@ export default class Workflow { const stepIdx = steps.findIndex(step => step.id === id) if (stepIdx < 0) throw new Error("Block not found.") steps.splice(stepIdx, 1) - } - - createUiTree() { - if (!this.workflow.definition) return [] - return Workflow.buildUiTree(this.workflow.definition) - } - - static buildUiTree(definition) { - const steps = [] - if (definition.trigger) steps.push(definition.trigger) - - return [...steps, ...definition.steps].map(step => { - // The client side display definition for the block - const definition = blockDefinitions[step.type][step.actionId] - if (!definition) { - throw new Error( - `No block definition exists for the chosen block. Check there's an entry in the block definitions for ${step.actionId}` - ) - } - - if (!definition.params) { - throw new Error( - `Blocks should always have parameters. Ensure that the block definition is correct for ${step.actionId}` - ) - } - - const tagline = definition.tagline || "" - const args = step.args || {} - - return { - id: step.id, - type: step.type, - params: step.params, - args, - heading: step.actionId, - body: mustache.render(tagline, args), - name: definition.name, - } - }) + this.workflow.definition.steps = steps } } diff --git a/packages/builder/src/builderStore/store/workflow/index.js b/packages/builder/src/builderStore/store/workflow/index.js index 9d50f85661..6a4db7afaf 100644 --- a/packages/builder/src/builderStore/store/workflow/index.js +++ b/packages/builder/src/builderStore/store/workflow/index.js @@ -1,14 +1,22 @@ import { writable } from "svelte/store" import api from "../../api" import Workflow from "./Workflow" +import { cloneDeep } from "lodash/fp" const workflowActions = store => ({ fetch: async () => { - const WORKFLOWS_URL = `/api/workflows` - const workflowResponse = await api.get(WORKFLOWS_URL) - const json = await workflowResponse.json() + const responses = await Promise.all([ + api.get(`/api/workflows`), + api.get(`/api/workflows/definitions/list`), + ]) + const jsonResponses = await Promise.all(responses.map(x => x.json())) store.update(state => { - state.workflows = json + state.workflows = jsonResponses[0] + state.blockDefinitions = { + TRIGGER: jsonResponses[1].trigger, + ACTION: jsonResponses[1].action, + LOGIC: jsonResponses[1].logic, + } return state }) }, @@ -23,8 +31,8 @@ const workflowActions = store => ({ const response = await api.post(CREATE_WORKFLOW_URL, workflow) const json = await response.json() store.update(state => { - state.workflows = state.workflows.concat(json.workflow) - state.currentWorkflow = new Workflow(json.workflow) + state.workflows = [...state.workflows, json.workflow] + store.actions.select(json.workflow) return state }) }, @@ -38,20 +46,7 @@ const workflowActions = store => ({ ) state.workflows.splice(existingIdx, 1, json.workflow) state.workflows = state.workflows - state.currentWorkflow = new Workflow(json.workflow) - return state - }) - }, - update: async ({ workflow }) => { - const UPDATE_WORKFLOW_URL = `/api/workflows` - const response = await api.put(UPDATE_WORKFLOW_URL, workflow) - const json = await response.json() - store.update(state => { - const existingIdx = state.workflows.findIndex( - existing => existing._id === workflow._id - ) - state.workflows.splice(existingIdx, 1, json.workflow) - state.workflows = state.workflows + store.actions.select(json.workflow) return state }) }, @@ -66,28 +61,49 @@ const workflowActions = store => ({ ) state.workflows.splice(existingIdx, 1) state.workflows = state.workflows - state.currentWorkflow = null + state.selectedWorkflow = null + state.selectedBlock = null return state }) }, + trigger: async ({ workflow }) => { + const { _id } = workflow + const TRIGGER_WORKFLOW_URL = `/api/workflows/${_id}/trigger` + return await api.post(TRIGGER_WORKFLOW_URL) + }, select: workflow => { store.update(state => { - state.currentWorkflow = new Workflow(workflow) - state.selectedWorkflowBlock = null + state.selectedWorkflow = new Workflow(cloneDeep(workflow)) + state.selectedBlock = null return state }) }, addBlockToWorkflow: block => { store.update(state => { - state.currentWorkflow.addBlock(block) - state.selectedWorkflowBlock = block + const newBlock = state.selectedWorkflow.addBlock(cloneDeep(block)) + state.selectedBlock = newBlock return state }) }, deleteWorkflowBlock: block => { store.update(state => { - state.currentWorkflow.deleteBlock(block.id) - state.selectedWorkflowBlock = null + const idx = state.selectedWorkflow.workflow.definition.steps.findIndex( + x => x.id === block.id + ) + state.selectedWorkflow.deleteBlock(block.id) + + // Select next closest step + const steps = state.selectedWorkflow.workflow.definition.steps + let nextSelectedBlock + if (steps[idx] != null) { + nextSelectedBlock = steps[idx] + } else if (steps[idx - 1] != null) { + nextSelectedBlock = steps[idx - 1] + } else { + nextSelectedBlock = + state.selectedWorkflow.workflow.definition.trigger || null + } + state.selectedBlock = nextSelectedBlock return state }) }, @@ -96,11 +112,14 @@ const workflowActions = store => ({ export const getWorkflowStore = () => { const INITIAL_WORKFLOW_STATE = { workflows: [], + blockDefinitions: { + TRIGGER: [], + ACTION: [], + LOGIC: [], + }, + selectedWorkflow: null, } - const store = writable(INITIAL_WORKFLOW_STATE) - store.actions = workflowActions(store) - return store } diff --git a/packages/builder/src/builderStore/store/workflow/tests/Workflow.spec.js b/packages/builder/src/builderStore/store/workflow/tests/Workflow.spec.js index fd14404a5f..4d270ea611 100644 --- a/packages/builder/src/builderStore/store/workflow/tests/Workflow.spec.js +++ b/packages/builder/src/builderStore/store/workflow/tests/Workflow.spec.js @@ -1,57 +1,48 @@ -import Workflow from "../Workflow"; -import TEST_WORKFLOW from "./testWorkflow"; +import Workflow from "../Workflow" +import TEST_WORKFLOW from "./testWorkflow" const TEST_BLOCK = { - id: "VFWeZcIPx", - name: "Update UI State", - tagline: "Update {{path}} to {{value}}", - icon: "ri-refresh-line", - description: "Update your User Interface with some data.", - environment: "CLIENT", - params: { - path: "string", - value: "longText", - }, - args: { - path: "foo", - value: "started...", - }, - actionId: "SET_STATE", - type: "ACTION", + id: "AUXJQGZY7", + name: "Delay", + icon: "ri-time-fill", + tagline: "Delay for {{time}} milliseconds", + description: "Delay the workflow until an amount of time has passed.", + params: { time: "number" }, + type: "LOGIC", + args: { time: "5000" }, + stepId: "DELAY", } describe("Workflow Data Object", () => { let workflow beforeEach(() => { - workflow = new Workflow({ ...TEST_WORKFLOW }); - }); + workflow = new Workflow({ ...TEST_WORKFLOW }) + }) it("adds a workflow block to the workflow", () => { - workflow.addBlock(TEST_BLOCK); + workflow.addBlock(TEST_BLOCK) expect(workflow.workflow.definition) }) it("updates a workflow block with new attributes", () => { - const firstBlock = workflow.workflow.definition.steps[0]; + const firstBlock = workflow.workflow.definition.steps[0] const updatedBlock = { ...firstBlock, - name: "UPDATED" - }; - workflow.updateBlock(updatedBlock, firstBlock.id); + name: "UPDATED", + } + workflow.updateBlock(updatedBlock, firstBlock.id) expect(workflow.workflow.definition.steps[0]).toEqual(updatedBlock) }) it("deletes a workflow block successfully", () => { const { steps } = workflow.workflow.definition - const originalLength = steps.length + const originalLength = steps.length - const lastBlock = steps[steps.length - 1]; - workflow.deleteBlock(lastBlock.id); - expect(workflow.workflow.definition.steps.length).toBeLessThan(originalLength); - }) - - it("builds a tree that gets rendered in the flowchart builder", () => { - expect(Workflow.buildUiTree(TEST_WORKFLOW.definition)).toMatchSnapshot(); + const lastBlock = steps[steps.length - 1] + workflow.deleteBlock(lastBlock.id) + expect(workflow.workflow.definition.steps.length).toBeLessThan( + originalLength + ) }) }) diff --git a/packages/builder/src/builderStore/store/workflow/tests/__snapshots__/Workflow.spec.js.snap b/packages/builder/src/builderStore/store/workflow/tests/__snapshots__/Workflow.spec.js.snap deleted file mode 100644 index 732764a082..0000000000 --- a/packages/builder/src/builderStore/store/workflow/tests/__snapshots__/Workflow.spec.js.snap +++ /dev/null @@ -1,49 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Workflow Data Object builds a tree that gets rendered in the flowchart builder 1`] = ` -Array [ - Object { - "args": Object { - "time": 3000, - }, - "body": "Delay for 3000 milliseconds", - "heading": "DELAY", - "id": "zJQcZUgDS", - "name": "Delay", - "params": Object { - "time": "number", - }, - "type": "LOGIC", - }, - Object { - "args": Object { - "path": "foo", - "value": "finished", - }, - "body": "Update foo to finished", - "heading": "SET_STATE", - "id": "3RSTO7BMB", - "name": "Update UI State", - "params": Object { - "path": "string", - "value": "longText", - }, - "type": "ACTION", - }, - Object { - "args": Object { - "path": "foo", - "value": "started...", - }, - "body": "Update foo to started...", - "heading": "SET_STATE", - "id": "VFWeZcIPx", - "name": "Update UI State", - "params": Object { - "path": "string", - "value": "longText", - }, - "type": "ACTION", - }, -] -`; diff --git a/packages/builder/src/builderStore/store/workflow/tests/testWorkflow.js b/packages/builder/src/builderStore/store/workflow/tests/testWorkflow.js index 90c4b17924..96999277eb 100644 --- a/packages/builder/src/builderStore/store/workflow/tests/testWorkflow.js +++ b/packages/builder/src/builderStore/store/workflow/tests/testWorkflow.js @@ -1,63 +1,78 @@ export default { - _id: "53b6148c65d1429c987e046852d11611", - _rev: "4-02c6659734934895812fa7be0215ee59", - name: "Test Workflow", + name: "Test workflow", definition: { steps: [ { - id: "VFWeZcIPx", - name: "Update UI State", - tagline: "Update {{path}} to {{value}}", - icon: "ri-refresh-line", - description: "Update your User Interface with some data.", - environment: "CLIENT", + id: "ANBDINAPS", + description: "Send an email.", + tagline: "Send email to {{to}}", + icon: "ri-mail-open-fill", + name: "Send Email", params: { - path: "string", - value: "longText", + to: "string", + from: "string", + subject: "longText", + text: "longText", }, - args: { - path: "foo", - value: "started...", - }, - actionId: "SET_STATE", type: "ACTION", - }, - { - id: "zJQcZUgDS", - name: "Delay", - icon: "ri-time-fill", - tagline: "Delay for {{time}} milliseconds", - description: "Delay the workflow until an amount of time has passed.", - environment: "CLIENT", - params: { - time: "number", - }, args: { - time: 3000, + text: "A user was created!", + subject: "New Budibase User", + from: "budimaster@budibase.com", + to: "test@test.com", }, - actionId: "DELAY", - type: "LOGIC", - }, - { - id: "3RSTO7BMB", - name: "Update UI State", - tagline: "Update {{path}} to {{value}}", - icon: "ri-refresh-line", - description: "Update your User Interface with some data.", - environment: "CLIENT", - params: { - path: "string", - value: "longText", - }, - args: { - path: "foo", - value: "finished", - }, - actionId: "SET_STATE", - type: "ACTION", + stepId: "SEND_EMAIL", }, ], + trigger: { + id: "iRzYMOqND", + name: "Record Saved", + event: "record:save", + icon: "ri-save-line", + tagline: "Record is added to {{model.name}}", + description: "Fired when a record is saved to your database.", + params: { model: "model" }, + type: "TRIGGER", + args: { + model: { + type: "model", + views: {}, + name: "users", + schema: { + name: { + type: "string", + constraints: { + type: "string", + length: { maximum: 123 }, + presence: { allowEmpty: false }, + }, + name: "name", + }, + age: { + type: "number", + constraints: { + type: "number", + presence: { allowEmpty: false }, + numericality: { + greaterThanOrEqualTo: "", + lessThanOrEqualTo: "", + }, + }, + name: "age", + }, + }, + _id: "c6b4e610cd984b588837bca27188a451", + _rev: "7-b8aa1ce0b53e88928bb88fc11bdc0aff", + }, + }, + stepId: "RECORD_SAVED", + }, }, type: "workflow", - live: true, + ok: true, + id: "b384f861f4754e1693835324a7fcca62", + rev: "1-aa1c2cbd868ef02e26f8fad531dd7e37", + live: false, + _id: "b384f861f4754e1693835324a7fcca62", + _rev: "108-4116829ec375e0481d0ecab9e83a2caf", } diff --git a/packages/builder/src/components/common/DatePicker.svelte b/packages/builder/src/components/common/DatePicker.svelte index ded25b5d87..ec9d41a17b 100644 --- a/packages/builder/src/components/common/DatePicker.svelte +++ b/packages/builder/src/components/common/DatePicker.svelte @@ -12,6 +12,5 @@
-
diff --git a/packages/builder/src/components/common/Icons/CloseCircle.svelte b/packages/builder/src/components/common/Icons/CloseCircle.svelte new file mode 100644 index 0000000000..cdad65f422 --- /dev/null +++ b/packages/builder/src/components/common/Icons/CloseCircle.svelte @@ -0,0 +1,12 @@ + + + + diff --git a/packages/builder/src/components/common/Icons/index.js b/packages/builder/src/components/common/Icons/index.js index 4e4b41082d..7082b1b5e0 100644 --- a/packages/builder/src/components/common/Icons/index.js +++ b/packages/builder/src/components/common/Icons/index.js @@ -32,3 +32,4 @@ export { default as TwitterIcon } from "./Twitter.svelte" export { default as InfoIcon } from "./Info.svelte" export { default as CloseIcon } from "./Close.svelte" export { default as MoreIcon } from "./More.svelte" +export { default as CloseCircleIcon } from "./CloseCircle.svelte" diff --git a/packages/builder/src/components/common/icon.js b/packages/builder/src/components/common/icon.js deleted file mode 100644 index 3ac2921e60..0000000000 --- a/packages/builder/src/components/common/icon.js +++ /dev/null @@ -1,4 +0,0 @@ -import feather from "feather-icons" -const getIcon = (icon, size) => - feather.icons[icon].toSvg({ height: size || "16", width: size || "16" }) -export default getIcon diff --git a/packages/builder/src/components/database/DataTable/ModelDataTable.svelte b/packages/builder/src/components/database/DataTable/ModelDataTable.svelte index 22883cc208..20f7a61c6b 100644 --- a/packages/builder/src/components/database/DataTable/ModelDataTable.svelte +++ b/packages/builder/src/components/database/DataTable/ModelDataTable.svelte @@ -37,14 +37,14 @@ } } - $: paginatedData = data - ? data.slice( + $: sort = $backendUiStore.sort + $: sorted = sort ? fsort(data)[sort.direction](sort.column) : data + $: paginatedData = sorted + ? sorted.slice( currentPage * ITEMS_PER_PAGE, currentPage * ITEMS_PER_PAGE + ITEMS_PER_PAGE ) : [] - $: sort = $backendUiStore.sort - $: sorted = sort ? fsort(data)[sort.direction](sort.column) : data $: headers = Object.keys($backendUiStore.selectedModel.schema) .sort() @@ -79,10 +79,10 @@ - {#if sorted.length === 0} + {#if paginatedData.length === 0}
No Data.
{/if} - {#each sorted as row} + {#each paginatedData as row} @@ -103,7 +103,7 @@ diff --git a/packages/builder/src/components/database/DataTable/Table.svelte b/packages/builder/src/components/database/DataTable/Table.svelte index 15f7d4f803..4d6563d8bd 100644 --- a/packages/builder/src/components/database/DataTable/Table.svelte +++ b/packages/builder/src/components/database/DataTable/Table.svelte @@ -26,15 +26,15 @@ $: columns = schema ? Object.keys(schema) : [] + $: sort = $backendUiStore.sort + $: sorted = sort ? fsort(data)[sort.direction](sort.column) : data $: paginatedData = - data && data.length - ? data.slice( + sorted && sorted.length + ? sorted.slice( currentPage * ITEMS_PER_PAGE, currentPage * ITEMS_PER_PAGE + ITEMS_PER_PAGE ) : [] - $: sort = $backendUiStore.sort - $: sorted = sort ? fsort(data)[sort.direction](sort.column) : data
@@ -72,7 +72,7 @@
diff --git a/packages/builder/src/components/database/DataTable/popovers/Filter.svelte b/packages/builder/src/components/database/DataTable/popovers/Filter.svelte index 1cf8e9acab..be40a66291 100644 --- a/packages/builder/src/components/database/DataTable/popovers/Filter.svelte +++ b/packages/builder/src/components/database/DataTable/popovers/Filter.svelte @@ -71,7 +71,16 @@ } function addFilter() { - view.filters = [...view.filters, {}] + view.filters.push({}) + view.filters = view.filters + } + + function isMultipleChoice(field) { + return ( + viewModel.schema[field].constraints && + viewModel.schema[field].constraints.inclusion && + viewModel.schema[field].constraints.inclusion.length + ) } @@ -108,10 +117,18 @@ {/each} - + {#if filter.key && isMultipleChoice(filter.key)} + + {:else} + + {/if} removeFilter(idx)} /> {/each} diff --git a/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte b/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte index 1898fee29b..a6608307c3 100644 --- a/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte +++ b/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte @@ -9,7 +9,6 @@ CircleIndicator, EventsIcon, } from "components/common/Icons/" - import EventsEditor from "./EventsEditor" import panelStructure from "./temporaryPanelStructure.js" import CategoryTab from "./CategoryTab.svelte" import DesignView from "./DesignView.svelte" @@ -21,7 +20,6 @@ let categories = [ { value: "settings", name: "Settings" }, { value: "design", name: "Design" }, - { value: "events", name: "Events" }, ] let selectedCategory = categories[0] @@ -37,8 +35,6 @@ c => c._component === componentInstance._component ) || {} - let panelDefinition = {} - $: panelDefinition = componentPropDefinition.properties && componentPropDefinition.properties[selectedCategory.value] @@ -109,8 +105,6 @@ displayNameField={displayName} onChange={onPropChanged} screenOrPageInstance={$store.currentView !== 'component' && $store.currentPreviewItem} /> - {:else if selectedCategory.value === 'events'} - {/if} diff --git a/packages/builder/src/components/userInterface/EventsEditor/EventEditorModal.svelte b/packages/builder/src/components/userInterface/EventsEditor/EventEditorModal.svelte index 38338dabbf..1aecd84314 100644 --- a/packages/builder/src/components/userInterface/EventsEditor/EventEditorModal.svelte +++ b/packages/builder/src/components/userInterface/EventsEditor/EventEditorModal.svelte @@ -1,168 +1,220 @@ -
-
-
-

- {eventData.name ? `${eventData.name} Event` : 'Create a New Component Event'} -

-
-
-
-

Event Type

- -
-
+
-
-

Event Action(s)

- { - createNewEventHandler(draftEventHandler) - draftEventHandler = { parameters: [] } - }} - handler={draftEventHandler} /> +
+ Actions +
+ + Add Action +
+ +
+
- {#if eventData} - {#each eventData.handlers as handler, index} - deleteEventHandler(index)} - {handler} /> + +
+ {#each actionTypes as actionType} +
+ {actionType.name} +
+ {/each} +
+
+
+ +
+ {#if actions && actions.length > 0} + {#each actions as action, index} +
+
+

+ {index + 1}. {action[EVENT_TYPE_MEMBER_NAME]} +

+
+ +
+
+ {#if action === selectedAction} +
+ +
+ deleteAction(index)}> + Delete + +
+
+ {/if} +
{/each} {/if} +
-
-
- + Learn more about Actions + +
diff --git a/packages/builder/src/components/userInterface/EventsEditor/EventPropertyControl.svelte b/packages/builder/src/components/userInterface/EventsEditor/EventPropertyControl.svelte index c1395ad31b..52986b0efd 100644 --- a/packages/builder/src/components/userInterface/EventsEditor/EventPropertyControl.svelte +++ b/packages/builder/src/components/userInterface/EventsEditor/EventPropertyControl.svelte @@ -1,25 +1,24 @@ -
- -
- + + + - + on:close={eventsModal.hide} /> + diff --git a/packages/builder/src/components/userInterface/EventsEditor/actions/NavigateTo.svelte b/packages/builder/src/components/userInterface/EventsEditor/actions/NavigateTo.svelte new file mode 100644 index 0000000000..659fb954eb --- /dev/null +++ b/packages/builder/src/components/userInterface/EventsEditor/actions/NavigateTo.svelte @@ -0,0 +1,29 @@ + + +
+ + + + {/each} + +
+ + diff --git a/packages/builder/src/components/userInterface/EventsEditor/actions/SaveFields.svelte b/packages/builder/src/components/userInterface/EventsEditor/actions/SaveFields.svelte new file mode 100644 index 0000000000..5011f8f173 --- /dev/null +++ b/packages/builder/src/components/userInterface/EventsEditor/actions/SaveFields.svelte @@ -0,0 +1,115 @@ + + +{#if fields} + {#each fields as field} + + + + + + {/each} + +
+ + + +
+ {/each} + +
+ + + + Add Field +
+ +
+
+
+{/if} + + diff --git a/packages/builder/src/components/userInterface/EventsEditor/actions/UpdateRecord.svelte b/packages/builder/src/components/userInterface/EventsEditor/actions/UpdateRecord.svelte new file mode 100644 index 0000000000..6ee3a2aed4 --- /dev/null +++ b/packages/builder/src/components/userInterface/EventsEditor/actions/UpdateRecord.svelte @@ -0,0 +1,134 @@ + + +
+ {#if idFields.length === 0} +
+ Update record can only be used within a component that provides data, such + as a List +
+ {:else} + + + {/if} + + {#if recordId} + + {/if} + +
+ + diff --git a/packages/builder/src/components/userInterface/EventsEditor/actions/index.js b/packages/builder/src/components/userInterface/EventsEditor/actions/index.js new file mode 100644 index 0000000000..e1a85e307e --- /dev/null +++ b/packages/builder/src/components/userInterface/EventsEditor/actions/index.js @@ -0,0 +1,23 @@ +import NavigateTo from "./NavigateTo.svelte" +import UpdateRecord from "./UpdateRecord.svelte" +import CreateRecord from "./CreateRecord.svelte" + +// defines what actions are available, when adding a new one +// the component is the setup panel for the action +// NOTE that the "name" is used by the client library, +// so if you want to change it, you must change it client lib too + +export default [ + { + name: "Create Record", + component: CreateRecord, + }, + { + name: "Navigate To", + component: NavigateTo, + }, + { + name: "Update Record", + component: UpdateRecord, + }, +] diff --git a/packages/builder/src/components/userInterface/EventsEditor/index.js b/packages/builder/src/components/userInterface/EventsEditor/index.js deleted file mode 100644 index 8b6ba2444c..0000000000 --- a/packages/builder/src/components/userInterface/EventsEditor/index.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from "./EventsEditor.svelte" diff --git a/packages/builder/src/components/userInterface/IconSelect/IconSelect.svelte b/packages/builder/src/components/userInterface/IconSelect/IconSelect.svelte new file mode 100644 index 0000000000..9ad50b8c9a --- /dev/null +++ b/packages/builder/src/components/userInterface/IconSelect/IconSelect.svelte @@ -0,0 +1,293 @@ + + +
+ +
+ +
+
+
+ {#each alphabet as letter, idx} + switchLetter(letter)}> + {letter} + + {#if idx !== alphabet.length - 1} + - + {/if} + {/each} +
+
+
+ +
+ +
+
+
+ pageClick(false)}> + + + {pagerText} + pageClick(true)}> + + +
+
+
+ {#if pagedIcons.length > 0} +
+ {#if !loading} + {#each pagedIcons as icon} +
(value = icon.value)}> +
+ +
+
{icon.label}
+
+ {/each} + {/if} +
+ {:else} +
+
+ {`There is no icons for this ${searchTerm ? 'search' : 'page'}`} +
+
+ {/if} +
+
+ + diff --git a/packages/builder/src/components/userInterface/IconSelect/icons.js b/packages/builder/src/components/userInterface/IconSelect/icons.js new file mode 100644 index 0000000000..a491396e52 --- /dev/null +++ b/packages/builder/src/components/userInterface/IconSelect/icons.js @@ -0,0 +1,6450 @@ +export default [ + { + value: "fab fa-500px", + label: "500px", + }, + { + value: "fab fa-accessible-icon", + label: "accessible-icon", + }, + { + value: "fab fa-accusoft", + label: "accusoft", + }, + { + value: "fab fa-acquisitions-incorporated", + label: "acquisitions-incorporated", + }, + { + value: "fas fa-ad", + label: "ad", + }, + { + value: "fas fa-address-book", + label: "address-book", + }, + { + value: "far fa-address-book", + label: "address-book", + }, + { + value: "fas fa-address-card", + label: "address-card", + }, + { + value: "far fa-address-card", + label: "address-card", + }, + { + value: "fas fa-adjust", + label: "adjust", + }, + { + value: "fab fa-adn", + label: "adn", + }, + { + value: "fab fa-adobe", + label: "adobe", + }, + { + value: "fab fa-adversal", + label: "adversal", + }, + { + value: "fab fa-affiliatetheme", + label: "affiliatetheme", + }, + { + value: "fas fa-air-freshener", + label: "air-freshener", + }, + { + value: "fab fa-airbnb", + label: "airbnb", + }, + { + value: "fab fa-algolia", + label: "algolia", + }, + { + value: "fas fa-align-center", + label: "align-center", + }, + { + value: "fas fa-align-justify", + label: "align-justify", + }, + { + value: "fas fa-align-left", + label: "align-left", + }, + { + value: "fas fa-align-right", + label: "align-right", + }, + { + value: "fab fa-alipay", + label: "alipay", + }, + { + value: "fas fa-allergies", + label: "allergies", + }, + { + value: "fab fa-amazon", + label: "amazon", + }, + { + value: "fab fa-amazon-pay", + label: "amazon-pay", + }, + { + value: "fas fa-ambulance", + label: "ambulance", + }, + { + value: "fas fa-american-sign-language-interpreting", + label: "american-sign-language-interpreting", + }, + { + value: "fab fa-amilia", + label: "amilia", + }, + { + value: "fas fa-anchor", + label: "anchor", + }, + { + value: "fab fa-android", + label: "android", + }, + { + value: "fab fa-angellist", + label: "angellist", + }, + { + value: "fas fa-angle-double-down", + label: "angle-double-down", + }, + { + value: "fas fa-angle-double-left", + label: "angle-double-left", + }, + { + value: "fas fa-angle-double-right", + label: "angle-double-right", + }, + { + value: "fas fa-angle-double-up", + label: "angle-double-up", + }, + { + value: "fas fa-angle-down", + label: "angle-down", + }, + { + value: "fas fa-angle-left", + label: "angle-left", + }, + { + value: "fas fa-angle-right", + label: "angle-right", + }, + { + value: "fas fa-angle-up", + label: "angle-up", + }, + { + value: "fas fa-angry", + label: "angry", + }, + { + value: "far fa-angry", + label: "angry", + }, + { + value: "fab fa-angrycreative", + label: "angrycreative", + }, + { + value: "fab fa-angular", + label: "angular", + }, + { + value: "fas fa-ankh", + label: "ankh", + }, + { + value: "fab fa-app-store", + label: "app-store", + }, + { + value: "fab fa-app-store-ios", + label: "app-store-ios", + }, + { + value: "fab fa-apper", + label: "apper", + }, + { + value: "fab fa-apple", + label: "apple", + }, + { + value: "fas fa-apple-alt", + label: "apple-alt", + }, + { + value: "fab fa-apple-pay", + label: "apple-pay", + }, + { + value: "fas fa-archive", + label: "archive", + }, + { + value: "fas fa-archway", + label: "archway", + }, + { + value: "fas fa-arrow-alt-circle-down", + label: "arrow-alt-circle-down", + }, + { + value: "far fa-arrow-alt-circle-down", + label: "arrow-alt-circle-down", + }, + { + value: "fas fa-arrow-alt-circle-left", + label: "arrow-alt-circle-left", + }, + { + value: "far fa-arrow-alt-circle-left", + label: "arrow-alt-circle-left", + }, + { + value: "fas fa-arrow-alt-circle-right", + label: "arrow-alt-circle-right", + }, + { + value: "far fa-arrow-alt-circle-right", + label: "arrow-alt-circle-right", + }, + { + value: "fas fa-arrow-alt-circle-up", + label: "arrow-alt-circle-up", + }, + { + value: "far fa-arrow-alt-circle-up", + label: "arrow-alt-circle-up", + }, + { + value: "fas fa-arrow-circle-down", + label: "arrow-circle-down", + }, + { + value: "fas fa-arrow-circle-left", + label: "arrow-circle-left", + }, + { + value: "fas fa-arrow-circle-right", + label: "arrow-circle-right", + }, + { + value: "fas fa-arrow-circle-up", + label: "arrow-circle-up", + }, + { + value: "fas fa-arrow-down", + label: "arrow-down", + }, + { + value: "fas fa-arrow-left", + label: "arrow-left", + }, + { + value: "fas fa-arrow-right", + label: "arrow-right", + }, + { + value: "fas fa-arrow-up", + label: "arrow-up", + }, + { + value: "fas fa-arrows-alt", + label: "arrows-alt", + }, + { + value: "fas fa-arrows-alt-h", + label: "arrows-alt-h", + }, + { + value: "fas fa-arrows-alt-v", + label: "arrows-alt-v", + }, + { + value: "fab fa-artstation", + label: "artstation", + }, + { + value: "fas fa-assistive-listening-systems", + label: "assistive-listening-systems", + }, + { + value: "fas fa-asterisk", + label: "asterisk", + }, + { + value: "fab fa-asymmetrik", + label: "asymmetrik", + }, + { + value: "fas fa-at", + label: "at", + }, + { + value: "fas fa-atlas", + label: "atlas", + }, + { + value: "fab fa-atlassian", + label: "atlassian", + }, + { + value: "fas fa-atom", + label: "atom", + }, + { + value: "fab fa-audible", + label: "audible", + }, + { + value: "fas fa-audio-description", + label: "audio-description", + }, + { + value: "fab fa-autoprefixer", + label: "autoprefixer", + }, + { + value: "fab fa-avianex", + label: "avianex", + }, + { + value: "fab fa-aviato", + label: "aviato", + }, + { + value: "fas fa-award", + label: "award", + }, + { + value: "fab fa-aws", + label: "aws", + }, + { + value: "fas fa-baby", + label: "baby", + }, + { + value: "fas fa-baby-carriage", + label: "baby-carriage", + }, + { + value: "fas fa-backspace", + label: "backspace", + }, + { + value: "fas fa-backward", + label: "backward", + }, + { + value: "fas fa-bacon", + label: "bacon", + }, + { + value: "fas fa-bacteria", + label: "bacteria", + }, + { + value: "fas fa-bacterium", + label: "bacterium", + }, + { + value: "fas fa-bahai", + label: "bahai", + }, + { + value: "fas fa-balance-scale", + label: "balance-scale", + }, + { + value: "fas fa-balance-scale-left", + label: "balance-scale-left", + }, + { + value: "fas fa-balance-scale-right", + label: "balance-scale-right", + }, + { + value: "fas fa-ban", + label: "ban", + }, + { + value: "fas fa-band-aid", + label: "band-aid", + }, + { + value: "fab fa-bandcamp", + label: "bandcamp", + }, + { + value: "", + label: "", + }, + { + value: "fas fa-barcode", + label: "barcode", + }, + { + value: "fas fa-bars", + label: "bars", + }, + { + value: "fas fa-baseball-ball", + label: "baseball-ball", + }, + { + value: "fas fa-basketball-ball", + label: "basketball-ball", + }, + { + value: "fas fa-bath", + label: "bath", + }, + { + value: "fas fa-battery-empty", + label: "battery-empty", + }, + { + value: "fas fa-battery-full", + label: "battery-full", + }, + { + value: "fas fa-battery-half", + label: "battery-half", + }, + { + value: "fas fa-battery-quarter", + label: "battery-quarter", + }, + { + value: "fas fa-battery-three-quarters", + label: "battery-three-quarters", + }, + { + value: "fab fa-battle-net", + label: "battle-net", + }, + { + value: "fas fa-bed", + label: "bed", + }, + { + value: "fas fa-beer", + label: "beer", + }, + { + value: "fab fa-behance", + label: "behance", + }, + { + value: "fab fa-behance-square", + label: "behance-square", + }, + { + value: "fas fa-bell", + label: "bell", + }, + { + value: "far fa-bell", + label: "bell", + }, + { + value: "fas fa-bell-slash", + label: "bell-slash", + }, + { + value: "far fa-bell-slash", + label: "bell-slash", + }, + { + value: "fas fa-bezier-curve", + label: "bezier-curve", + }, + { + value: "fas fa-bible", + label: "bible", + }, + { + value: "fas fa-bicycle", + label: "bicycle", + }, + { + value: "fas fa-biking", + label: "biking", + }, + { + value: "fab fa-bimobject", + label: "bimobject", + }, + { + value: "fas fa-binoculars", + label: "binoculars", + }, + { + value: "fas fa-biohazard", + label: "biohazard", + }, + { + value: "fas fa-birthday-cake", + label: "birthday-cake", + }, + { + value: "fab fa-bitbucket", + label: "bitbucket", + }, + { + value: "fab fa-bitcoin", + label: "bitcoin", + }, + { + value: "fab fa-bity", + label: "bity", + }, + { + value: "fab fa-black-tie", + label: "black-tie", + }, + { + value: "fab fa-blackberry", + label: "blackberry", + }, + { + value: "fas fa-blender", + label: "blender", + }, + { + value: "fas fa-blender-phone", + label: "blender-phone", + }, + { + value: "fas fa-blind", + label: "blind", + }, + { + value: "fas fa-blog", + label: "blog", + }, + { + value: "fab fa-blogger", + label: "blogger", + }, + { + value: "fab fa-blogger-b", + label: "blogger-b", + }, + { + value: "fab fa-bluetooth", + label: "bluetooth", + }, + { + value: "fab fa-bluetooth-b", + label: "bluetooth-b", + }, + { + value: "fas fa-bold", + label: "bold", + }, + { + value: "fas fa-bolt", + label: "bolt", + }, + { + value: "fas fa-bomb", + label: "bomb", + }, + { + value: "fas fa-bone", + label: "bone", + }, + { + value: "fas fa-bong", + label: "bong", + }, + { + value: "fas fa-book", + label: "book", + }, + { + value: "fas fa-book-dead", + label: "book-dead", + }, + { + value: "fas fa-book-medical", + label: "book-medical", + }, + { + value: "fas fa-book-open", + label: "book-open", + }, + { + value: "fas fa-book-reader", + label: "book-reader", + }, + { + value: "fas fa-bookmark", + label: "bookmark", + }, + { + value: "far fa-bookmark", + label: "bookmark", + }, + { + value: "fab fa-bootstrap", + label: "bootstrap", + }, + { + value: "fas fa-border-all", + label: "border-all", + }, + { + value: "fas fa-border-none", + label: "border-none", + }, + { + value: "fas fa-border-style", + label: "border-style", + }, + { + value: "fas fa-bowling-ball", + label: "bowling-ball", + }, + { + value: "fas fa-box", + label: "box", + }, + { + value: "fas fa-box-open", + label: "box-open", + }, + { + value: "fas fa-box-tissue", + label: "box-tissue", + }, + { + value: "fas fa-boxes", + label: "boxes", + }, + { + value: "fas fa-braille", + label: "braille", + }, + { + value: "fas fa-brain", + label: "brain", + }, + { + value: "fas fa-bread-slice", + label: "bread-slice", + }, + { + value: "fas fa-briefcase", + label: "briefcase", + }, + { + value: "fas fa-briefcase-medical", + label: "briefcase-medical", + }, + { + value: "fas fa-broadcast-tower", + label: "broadcast-tower", + }, + { + value: "fas fa-broom", + label: "broom", + }, + { + value: "fas fa-brush", + label: "brush", + }, + { + value: "fab fa-btc", + label: "btc", + }, + { + value: "fab fa-buffer", + label: "buffer", + }, + { + value: "fas fa-bug", + label: "bug", + }, + { + value: "fas fa-building", + label: "building", + }, + { + value: "far fa-building", + label: "building", + }, + { + value: "fas fa-bullhorn", + label: "bullhorn", + }, + { + value: "fas fa-bullseye", + label: "bullseye", + }, + { + value: "fas fa-burn", + label: "burn", + }, + { + value: "fab fa-buromobelexperte", + label: "buromobelexperte", + }, + { + value: "fas fa-bus", + label: "bus", + }, + { + value: "fas fa-bus-alt", + label: "bus-alt", + }, + { + value: "fas fa-business-time", + label: "business-time", + }, + { + value: "fab fa-buy-n-large", + label: "buy-n-large", + }, + { + value: "fab fa-buysellads", + label: "buysellads", + }, + { + value: "fas fa-calculator", + label: "calculator", + }, + { + value: "fas fa-calendar", + label: "calendar", + }, + { + value: "far fa-calendar", + label: "calendar", + }, + { + value: "fas fa-calendar-alt", + label: "calendar-alt", + }, + { + value: "far fa-calendar-alt", + label: "calendar-alt", + }, + { + value: "fas fa-calendar-check", + label: "calendar-check", + }, + { + value: "far fa-calendar-check", + label: "calendar-check", + }, + { + value: "fas fa-calendar-day", + label: "calendar-day", + }, + { + value: "fas fa-calendar-minus", + label: "calendar-minus", + }, + { + value: "far fa-calendar-minus", + label: "calendar-minus", + }, + { + value: "fas fa-calendar-plus", + label: "calendar-plus", + }, + { + value: "far fa-calendar-plus", + label: "calendar-plus", + }, + { + value: "fas fa-calendar-times", + label: "calendar-times", + }, + { + value: "far fa-calendar-times", + label: "calendar-times", + }, + { + value: "fas fa-calendar-week", + label: "calendar-week", + }, + { + value: "fas fa-camera", + label: "camera", + }, + { + value: "fas fa-camera-retro", + label: "camera-retro", + }, + { + value: "", + label: "", + }, + { + value: "fas fa-campground", + label: "campground", + }, + { + value: "fab fa-canadian-maple-leaf", + label: "canadian-maple-leaf", + }, + { + value: "fas fa-candy-cane", + label: "candy-cane", + }, + { + value: "fas fa-cannabis", + label: "cannabis", + }, + { + value: "fas fa-capsules", + label: "capsules", + }, + { + value: "fas fa-car", + label: "car", + }, + { + value: "fas fa-car-alt", + label: "car-alt", + }, + { + value: "fas fa-car-battery", + label: "car-battery", + }, + { + value: "fas fa-car-crash", + label: "car-crash", + }, + { + value: "fas fa-car-side", + label: "car-side", + }, + { + value: "fas fa-caravan", + label: "caravan", + }, + { + value: "fas fa-caret-down", + label: "caret-down", + }, + { + value: "fas fa-caret-left", + label: "caret-left", + }, + { + value: "fas fa-caret-right", + label: "caret-right", + }, + { + value: "fas fa-caret-square-down", + label: "caret-square-down", + }, + { + value: "far fa-caret-square-down", + label: "caret-square-down", + }, + { + value: "fas fa-caret-square-left", + label: "caret-square-left", + }, + { + value: "far fa-caret-square-left", + label: "caret-square-left", + }, + { + value: "fas fa-caret-square-right", + label: "caret-square-right", + }, + { + value: "far fa-caret-square-right", + label: "caret-square-right", + }, + { + value: "fas fa-caret-square-up", + label: "caret-square-up", + }, + { + value: "far fa-caret-square-up", + label: "caret-square-up", + }, + { + value: "fas fa-caret-up", + label: "caret-up", + }, + { + value: "fas fa-carrot", + label: "carrot", + }, + { + value: "fas fa-cart-arrow-down", + label: "cart-arrow-down", + }, + { + value: "fas fa-cart-plus", + label: "cart-plus", + }, + { + value: "fas fa-cash-register", + label: "cash-register", + }, + { + value: "fas fa-cat", + label: "cat", + }, + { + value: "fab fa-cc-amazon-pay", + label: "cc-amazon-pay", + }, + { + value: "fab fa-cc-amex", + label: "cc-amex", + }, + { + value: "fab fa-cc-apple-pay", + label: "cc-apple-pay", + }, + { + value: "fab fa-cc-diners-club", + label: "cc-diners-club", + }, + { + value: "fab fa-cc-discover", + label: "cc-discover", + }, + { + value: "fab fa-cc-jcb", + label: "cc-jcb", + }, + { + value: "fab fa-cc-mastercard", + label: "cc-mastercard", + }, + { + value: "fab fa-cc-paypal", + label: "cc-paypal", + }, + { + value: "fab fa-cc-stripe", + label: "cc-stripe", + }, + { + value: "fab fa-cc-visa", + label: "cc-visa", + }, + { + value: "fab fa-centercode", + label: "centercode", + }, + { + value: "fab fa-centos", + label: "centos", + }, + { + value: "fas fa-certificate", + label: "certificate", + }, + { + value: "fas fa-chair", + label: "chair", + }, + { + value: "fas fa-chalkboard", + label: "chalkboard", + }, + { + value: "fas fa-chalkboard-teacher", + label: "chalkboard-teacher", + }, + { + value: "fas fa-charging-station", + label: "charging-station", + }, + { + value: "fas fa-chart-area", + label: "chart-area", + }, + { + value: "fas fa-chart-bar", + label: "chart-bar", + }, + { + value: "far fa-chart-bar", + label: "chart-bar", + }, + { + value: "fas fa-chart-line", + label: "chart-line", + }, + { + value: "fas fa-chart-pie", + label: "chart-pie", + }, + { + value: "fas fa-check", + label: "check", + }, + { + value: "fas fa-check-circle", + label: "check-circle", + }, + { + value: "far fa-check-circle", + label: "check-circle", + }, + { + value: "fas fa-check-double", + label: "check-double", + }, + { + value: "fas fa-check-square", + label: "check-square", + }, + { + value: "far fa-check-square", + label: "check-square", + }, + { + value: "fas fa-cheese", + label: "cheese", + }, + { + value: "fas fa-chess", + label: "chess", + }, + { + value: "fas fa-chess-bishop", + label: "chess-bishop", + }, + { + value: "fas fa-chess-board", + label: "chess-board", + }, + { + value: "fas fa-chess-king", + label: "chess-king", + }, + { + value: "fas fa-chess-knight", + label: "chess-knight", + }, + { + value: "fas fa-chess-pawn", + label: "chess-pawn", + }, + { + value: "fas fa-chess-queen", + label: "chess-queen", + }, + { + value: "fas fa-chess-rook", + label: "chess-rook", + }, + { + value: "fas fa-chevron-circle-down", + label: "chevron-circle-down", + }, + { + value: "fas fa-chevron-circle-left", + label: "chevron-circle-left", + }, + { + value: "fas fa-chevron-circle-right", + label: "chevron-circle-right", + }, + { + value: "fas fa-chevron-circle-up", + label: "chevron-circle-up", + }, + { + value: "fas fa-chevron-down", + label: "chevron-down", + }, + { + value: "fas fa-chevron-left", + label: "chevron-left", + }, + { + value: "fas fa-chevron-right", + label: "chevron-right", + }, + { + value: "fas fa-chevron-up", + label: "chevron-up", + }, + { + value: "fas fa-child", + label: "child", + }, + { + value: "fab fa-chrome", + label: "chrome", + }, + { + value: "fab fa-chromecast", + label: "chromecast", + }, + { + value: "fas fa-church", + label: "church", + }, + { + value: "fas fa-circle", + label: "circle", + }, + { + value: "far fa-circle", + label: "circle", + }, + { + value: "fas fa-circle-notch", + label: "circle-notch", + }, + { + value: "fas fa-city", + label: "city", + }, + { + value: "fas fa-clinic-medical", + label: "clinic-medical", + }, + { + value: "fas fa-clipboard", + label: "clipboard", + }, + { + value: "far fa-clipboard", + label: "clipboard", + }, + { + value: "fas fa-clipboard-check", + label: "clipboard-check", + }, + { + value: "fas fa-clipboard-list", + label: "clipboard-list", + }, + { + value: "fas fa-clock", + label: "clock", + }, + { + value: "far fa-clock", + label: "clock", + }, + { + value: "fas fa-clone", + label: "clone", + }, + { + value: "far fa-clone", + label: "clone", + }, + { + value: "fas fa-closed-captioning", + label: "closed-captioning", + }, + { + value: "far fa-closed-captioning", + label: "closed-captioning", + }, + { + value: "fas fa-cloud", + label: "cloud", + }, + { + value: "fas fa-cloud-download-alt", + label: "cloud-download-alt", + }, + { + value: "fas fa-cloud-meatball", + label: "cloud-meatball", + }, + { + value: "fas fa-cloud-moon", + label: "cloud-moon", + }, + { + value: "fas fa-cloud-moon-rain", + label: "cloud-moon-rain", + }, + { + value: "fas fa-cloud-rain", + label: "cloud-rain", + }, + { + value: "fas fa-cloud-showers-heavy", + label: "cloud-showers-heavy", + }, + { + value: "fas fa-cloud-sun", + label: "cloud-sun", + }, + { + value: "fas fa-cloud-sun-rain", + label: "cloud-sun-rain", + }, + { + value: "fas fa-cloud-upload-alt", + label: "cloud-upload-alt", + }, + { + value: "fab fa-cloudscale", + label: "cloudscale", + }, + { + value: "fab fa-cloudsmith", + label: "cloudsmith", + }, + { + value: "fab fa-cloudversify", + label: "cloudversify", + }, + { + value: "fas fa-cocktail", + label: "cocktail", + }, + { + value: "fas fa-code", + label: "code", + }, + { + value: "fas fa-code-branch", + label: "code-branch", + }, + { + value: "fab fa-codepen", + label: "codepen", + }, + { + value: "fab fa-codiepie", + label: "codiepie", + }, + { + value: "fas fa-coffee", + label: "coffee", + }, + { + value: "fas fa-cog", + label: "cog", + }, + { + value: "fas fa-cogs", + label: "cogs", + }, + { + value: "fas fa-coins", + label: "coins", + }, + { + value: "fas fa-columns", + label: "columns", + }, + { + value: "fas fa-comment", + label: "comment", + }, + { + value: "far fa-comment", + label: "comment", + }, + { + value: "fas fa-comment-alt", + label: "comment-alt", + }, + { + value: "far fa-comment-alt", + label: "comment-alt", + }, + { + value: "fas fa-comment-dollar", + label: "comment-dollar", + }, + { + value: "fas fa-comment-dots", + label: "comment-dots", + }, + { + value: "far fa-comment-dots", + label: "comment-dots", + }, + { + value: "fas fa-comment-medical", + label: "comment-medical", + }, + { + value: "fas fa-comment-slash", + label: "comment-slash", + }, + { + value: "fas fa-comments", + label: "comments", + }, + { + value: "far fa-comments", + label: "comments", + }, + { + value: "fas fa-comments-dollar", + label: "comments-dollar", + }, + { + value: "fas fa-compact-disc", + label: "compact-disc", + }, + { + value: "fas fa-compass", + label: "compass", + }, + { + value: "far fa-compass", + label: "compass", + }, + { + value: "fas fa-compress", + label: "compress", + }, + { + value: "fas fa-compress-alt", + label: "compress-alt", + }, + { + value: "fas fa-compress-arrows-alt", + label: "compress-arrows-alt", + }, + { + value: "fas fa-concierge-bell", + label: "concierge-bell", + }, + { + value: "fab fa-confluence", + label: "confluence", + }, + { + value: "fab fa-connectdevelop", + label: "connectdevelop", + }, + { + value: "fab fa-contao", + label: "contao", + }, + { + value: "fas fa-cookie", + label: "cookie", + }, + { + value: "fas fa-cookie-bite", + label: "cookie-bite", + }, + { + value: "fas fa-copy", + label: "copy", + }, + { + value: "far fa-copy", + label: "copy", + }, + { + value: "fas fa-copyright", + label: "copyright", + }, + { + value: "far fa-copyright", + label: "copyright", + }, + { + value: "fab fa-cotton-bureau", + label: "cotton-bureau", + }, + { + value: "fas fa-couch", + label: "couch", + }, + { + value: "fab fa-cpanel", + label: "cpanel", + }, + { + value: "fab fa-creative-commons", + label: "creative-commons", + }, + { + value: "fab fa-creative-commons-by", + label: "creative-commons-by", + }, + { + value: "fab fa-creative-commons-nc", + label: "creative-commons-nc", + }, + { + value: "fab fa-creative-commons-nc-eu", + label: "creative-commons-nc-eu", + }, + { + value: "fab fa-creative-commons-nc-jp", + label: "creative-commons-nc-jp", + }, + { + value: "fab fa-creative-commons-nd", + label: "creative-commons-nd", + }, + { + value: "fab fa-creative-commons-pd", + label: "creative-commons-pd", + }, + { + value: "fab fa-creative-commons-pd-alt", + label: "creative-commons-pd-alt", + }, + { + value: "fab fa-creative-commons-remix", + label: "creative-commons-remix", + }, + { + value: "fab fa-creative-commons-sa", + label: "creative-commons-sa", + }, + { + value: "fab fa-creative-commons-sampling", + label: "creative-commons-sampling", + }, + { + value: "fab fa-creative-commons-sampling-plus", + label: "creative-commons-sampling-plus", + }, + { + value: "fab fa-creative-commons-share", + label: "creative-commons-share", + }, + { + value: "fab fa-creative-commons-zero", + label: "creative-commons-zero", + }, + { + value: "fas fa-credit-card", + label: "credit-card", + }, + { + value: "far fa-credit-card", + label: "credit-card", + }, + { + value: "fab fa-critical-role", + label: "critical-role", + }, + { + value: "fas fa-crop", + label: "crop", + }, + { + value: "fas fa-crop-alt", + label: "crop-alt", + }, + { + value: "fas fa-cross", + label: "cross", + }, + { + value: "fas fa-crosshairs", + label: "crosshairs", + }, + { + value: "fas fa-crow", + label: "crow", + }, + { + value: "fas fa-crown", + label: "crown", + }, + { + value: "fas fa-crutch", + label: "crutch", + }, + { + value: "fab fa-css3", + label: "css3", + }, + { + value: "fab fa-css3-alt", + label: "css3-alt", + }, + { + value: "fas fa-cube", + label: "cube", + }, + { + value: "fas fa-cubes", + label: "cubes", + }, + { + value: "fas fa-cut", + label: "cut", + }, + { + value: "fab fa-cuttlefish", + label: "cuttlefish", + }, + { + value: "fab fa-d-and-d", + label: "d-and-d", + }, + { + value: "fab fa-d-and-d-beyond", + label: "d-and-d-beyond", + }, + { + value: "fab fa-dailymotion", + label: "dailymotion", + }, + { + value: "fab fa-dashcube", + label: "dashcube", + }, + { + value: "fas fa-database", + label: "database", + }, + { + value: "fas fa-deaf", + label: "deaf", + }, + { + value: "fab fa-deezer", + label: "deezer", + }, + { + value: "fab fa-delicious", + label: "delicious", + }, + { + value: "fas fa-democrat", + label: "democrat", + }, + { + value: "fab fa-deploydog", + label: "deploydog", + }, + { + value: "fab fa-deskpro", + label: "deskpro", + }, + { + value: "fas fa-desktop", + label: "desktop", + }, + { + value: "fab fa-dev", + label: "dev", + }, + { + value: "fab fa-deviantart", + label: "deviantart", + }, + { + value: "fas fa-dharmachakra", + label: "dharmachakra", + }, + { + value: "fab fa-dhl", + label: "dhl", + }, + { + value: "fas fa-diagnoses", + label: "diagnoses", + }, + { + value: "fab fa-diaspora", + label: "diaspora", + }, + { + value: "fas fa-dice", + label: "dice", + }, + { + value: "fas fa-dice-d20", + label: "dice-d20", + }, + { + value: "fas fa-dice-d6", + label: "dice-d6", + }, + { + value: "fas fa-dice-five", + label: "dice-five", + }, + { + value: "fas fa-dice-four", + label: "dice-four", + }, + { + value: "fas fa-dice-one", + label: "dice-one", + }, + { + value: "", + label: "", + }, + { + value: "fas fa-dice-six", + label: "dice-six", + }, + { + value: "fas fa-dice-three", + label: "dice-three", + }, + { + value: "fas fa-dice-two", + label: "dice-two", + }, + { + value: "fab fa-digg", + label: "digg", + }, + { + value: "fab fa-digital-ocean", + label: "digital-ocean", + }, + { + value: "fas fa-digital-tachograph", + label: "digital-tachograph", + }, + { + value: "fas fa-directions", + label: "directions", + }, + { + value: "fab fa-discord", + label: "discord", + }, + { + value: "fab fa-discourse", + label: "discourse", + }, + { + value: "fas fa-disease", + label: "disease", + }, + { + value: "fas fa-divide", + label: "divide", + }, + { + value: "fas fa-dizzy", + label: "dizzy", + }, + { + value: "far fa-dizzy", + label: "dizzy", + }, + { + value: "fas fa-dna", + label: "dna", + }, + { + value: "fab fa-dochub", + label: "dochub", + }, + { + value: "fab fa-docker", + label: "docker", + }, + { + value: "fas fa-dog", + label: "dog", + }, + { + value: "fas fa-dollar-sign", + label: "dollar-sign", + }, + { + value: "fas fa-dolly", + label: "dolly", + }, + { + value: "fas fa-dolly-flatbed", + label: "dolly-flatbed", + }, + { + value: "fas fa-donate", + label: "donate", + }, + { + value: "fas fa-door-closed", + label: "door-closed", + }, + { + value: "fas fa-door-open", + label: "door-open", + }, + { + value: "fas fa-dot-circle", + label: "dot-circle", + }, + { + value: "far fa-dot-circle", + label: "dot-circle", + }, + { + value: "fas fa-dove", + label: "dove", + }, + { + value: "fas fa-download", + label: "download", + }, + { + value: "fab fa-draft2digital", + label: "draft2digital", + }, + { + value: "fas fa-drafting-compass", + label: "drafting-compass", + }, + { + value: "fas fa-dragon", + label: "dragon", + }, + { + value: "fas fa-draw-polygon", + label: "draw-polygon", + }, + { + value: "fab fa-dribbble", + label: "dribbble", + }, + { + value: "fab fa-dribbble-square", + label: "dribbble-square", + }, + { + value: "fab fa-dropbox", + label: "dropbox", + }, + { + value: "fas fa-drum", + label: "drum", + }, + { + value: "fas fa-drum-steelpan", + label: "drum-steelpan", + }, + { + value: "fas fa-drumstick-bite", + label: "drumstick-bite", + }, + { + value: "fab fa-drupal", + label: "drupal", + }, + { + value: "fas fa-dumbbell", + label: "dumbbell", + }, + { + value: "fas fa-dumpster", + label: "dumpster", + }, + { + value: "fas fa-dumpster-fire", + label: "dumpster-fire", + }, + { + value: "fas fa-dungeon", + label: "dungeon", + }, + { + value: "fab fa-dyalog", + label: "dyalog", + }, + { + value: "fab fa-earlybirds", + label: "earlybirds", + }, + { + value: "fab fa-ebay", + label: "ebay", + }, + { + value: "fab fa-edge", + label: "edge", + }, + { + value: "fab fa-edge-legacy", + label: "edge-legacy", + }, + { + value: "fas fa-edit", + label: "edit", + }, + { + value: "far fa-edit", + label: "edit", + }, + { + value: "fas fa-egg", + label: "egg", + }, + { + value: "fas fa-eject", + label: "eject", + }, + { + value: "fab fa-elementor", + label: "elementor", + }, + { + value: "fas fa-ellipsis-h", + label: "ellipsis-h", + }, + { + value: "fas fa-ellipsis-v", + label: "ellipsis-v", + }, + { + value: "fab fa-ello", + label: "ello", + }, + { + value: "fab fa-ember", + label: "ember", + }, + { + value: "fab fa-empire", + label: "empire", + }, + { + value: "fas fa-envelope", + label: "envelope", + }, + { + value: "far fa-envelope", + label: "envelope", + }, + { + value: "fas fa-envelope-open", + label: "envelope-open", + }, + { + value: "far fa-envelope-open", + label: "envelope-open", + }, + { + value: "fas fa-envelope-open-text", + label: "envelope-open-text", + }, + { + value: "fas fa-envelope-square", + label: "envelope-square", + }, + { + value: "fab fa-envira", + label: "envira", + }, + { + value: "fas fa-equals", + label: "equals", + }, + { + value: "fas fa-eraser", + label: "eraser", + }, + { + value: "fab fa-erlang", + label: "erlang", + }, + { + value: "fab fa-ethereum", + label: "ethereum", + }, + { + value: "fas fa-ethernet", + label: "ethernet", + }, + { + value: "fab fa-etsy", + label: "etsy", + }, + { + value: "fas fa-euro-sign", + label: "euro-sign", + }, + { + value: "fab fa-evernote", + label: "evernote", + }, + { + value: "fas fa-exchange-alt", + label: "exchange-alt", + }, + { + value: "fas fa-exclamation", + label: "exclamation", + }, + { + value: "fas fa-exclamation-circle", + label: "exclamation-circle", + }, + { + value: "fas fa-exclamation-triangle", + label: "exclamation-triangle", + }, + { + value: "fas fa-expand", + label: "expand", + }, + { + value: "fas fa-expand-alt", + label: "expand-alt", + }, + { + value: "fas fa-expand-arrows-alt", + label: "expand-arrows-alt", + }, + { + value: "fab fa-expeditedssl", + label: "expeditedssl", + }, + { + value: "fas fa-external-link-alt", + label: "external-link-alt", + }, + { + value: "fas fa-external-link-square-alt", + label: "external-link-square-alt", + }, + { + value: "fas fa-eye", + label: "eye", + }, + { + value: "far fa-eye", + label: "eye", + }, + { + value: "fas fa-eye-dropper", + label: "eye-dropper", + }, + { + value: "fas fa-eye-slash", + label: "eye-slash", + }, + { + value: "far fa-eye-slash", + label: "eye-slash", + }, + { + value: "fab fa-facebook", + label: "facebook", + }, + { + value: "fab fa-facebook-f", + label: "facebook-f", + }, + { + value: "fab fa-facebook-messenger", + label: "facebook-messenger", + }, + { + value: "fab fa-facebook-square", + label: "facebook-square", + }, + { + value: "fas fa-fan", + label: "fan", + }, + { + value: "fab fa-fantasy-flight-games", + label: "fantasy-flight-games", + }, + { + value: "fas fa-fast-backward", + label: "fast-backward", + }, + { + value: "fas fa-fast-forward", + label: "fast-forward", + }, + { + value: "fas fa-faucet", + label: "faucet", + }, + { + value: "fas fa-fax", + label: "fax", + }, + { + value: "fas fa-feather", + label: "feather", + }, + { + value: "fas fa-feather-alt", + label: "feather-alt", + }, + { + value: "fab fa-fedex", + label: "fedex", + }, + { + value: "", + label: "", + }, + { + value: "fab fa-fedora", + label: "fedora", + }, + { + value: "fas fa-female", + label: "female", + }, + { + value: "fas fa-fighter-jet", + label: "fighter-jet", + }, + { + value: "fab fa-figma", + label: "figma", + }, + { + value: "fas fa-file", + label: "file", + }, + { + value: "far fa-file", + label: "file", + }, + { + value: "fas fa-file-alt", + label: "file-alt", + }, + { + value: "far fa-file-alt", + label: "file-alt", + }, + { + value: "fas fa-file-archive", + label: "file-archive", + }, + { + value: "far fa-file-archive", + label: "file-archive", + }, + { + value: "fas fa-file-audio", + label: "file-audio", + }, + { + value: "far fa-file-audio", + label: "file-audio", + }, + { + value: "fas fa-file-code", + label: "file-code", + }, + { + value: "far fa-file-code", + label: "file-code", + }, + { + value: "fas fa-file-contract", + label: "file-contract", + }, + { + value: "fas fa-file-csv", + label: "file-csv", + }, + { + value: "fas fa-file-download", + label: "file-download", + }, + { + value: "fas fa-file-excel", + label: "file-excel", + }, + { + value: "far fa-file-excel", + label: "file-excel", + }, + { + value: "fas fa-file-export", + label: "file-export", + }, + { + value: "fas fa-file-image", + label: "file-image", + }, + { + value: "far fa-file-image", + label: "file-image", + }, + { + value: "fas fa-file-import", + label: "file-import", + }, + { + value: "fas fa-file-invoice", + label: "file-invoice", + }, + { + value: "fas fa-file-invoice-dollar", + label: "file-invoice-dollar", + }, + { + value: "fas fa-file-medical", + label: "file-medical", + }, + { + value: "fas fa-file-medical-alt", + label: "file-medical-alt", + }, + { + value: "fas fa-file-pdf", + label: "file-pdf", + }, + { + value: "far fa-file-pdf", + label: "file-pdf", + }, + { + value: "fas fa-file-powerpoint", + label: "file-powerpoint", + }, + { + value: "far fa-file-powerpoint", + label: "file-powerpoint", + }, + { + value: "fas fa-file-prescription", + label: "file-prescription", + }, + { + value: "fas fa-file-signature", + label: "file-signature", + }, + { + value: "fas fa-file-upload", + label: "file-upload", + }, + { + value: "fas fa-file-video", + label: "file-video", + }, + { + value: "far fa-file-video", + label: "file-video", + }, + { + value: "fas fa-file-word", + label: "file-word", + }, + { + value: "far fa-file-word", + label: "file-word", + }, + { + value: "fas fa-fill", + label: "fill", + }, + { + value: "fas fa-fill-drip", + label: "fill-drip", + }, + { + value: "fas fa-film", + label: "film", + }, + { + value: "fas fa-filter", + label: "filter", + }, + { + value: "fas fa-fingerprint", + label: "fingerprint", + }, + { + value: "fas fa-fire", + label: "fire", + }, + { + value: "fas fa-fire-alt", + label: "fire-alt", + }, + { + value: "fas fa-fire-extinguisher", + label: "fire-extinguisher", + }, + { + value: "fab fa-firefox", + label: "firefox", + }, + { + value: "fab fa-firefox-browser", + label: "firefox-browser", + }, + { + value: "fas fa-first-aid", + label: "first-aid", + }, + { + value: "fab fa-first-order", + label: "first-order", + }, + { + value: "fab fa-first-order-alt", + label: "first-order-alt", + }, + { + value: "fab fa-firstdraft", + label: "firstdraft", + }, + { + value: "fas fa-fish", + label: "fish", + }, + { + value: "fas fa-fist-raised", + label: "fist-raised", + }, + { + value: "fas fa-flag", + label: "flag", + }, + { + value: "far fa-flag", + label: "flag", + }, + { + value: "fas fa-flag-checkered", + label: "flag-checkered", + }, + { + value: "fas fa-flag-usa", + label: "flag-usa", + }, + { + value: "fas fa-flask", + label: "flask", + }, + { + value: "fab fa-flickr", + label: "flickr", + }, + { + value: "fab fa-flipboard", + label: "flipboard", + }, + { + value: "fas fa-flushed", + label: "flushed", + }, + { + value: "far fa-flushed", + label: "flushed", + }, + { + value: "fab fa-fly", + label: "fly", + }, + { + value: "fas fa-folder", + label: "folder", + }, + { + value: "far fa-folder", + label: "folder", + }, + { + value: "fas fa-folder-minus", + label: "folder-minus", + }, + { + value: "fas fa-folder-open", + label: "folder-open", + }, + { + value: "far fa-folder-open", + label: "folder-open", + }, + { + value: "fas fa-folder-plus", + label: "folder-plus", + }, + { + value: "fas fa-font", + label: "font", + }, + { + value: "fab fa-font-awesome", + label: "font-awesome", + }, + { + value: "fab fa-font-awesome-alt", + label: "font-awesome-alt", + }, + { + value: "fab fa-font-awesome-flag", + label: "font-awesome-flag", + }, + { + value: "fab fa-fonticons", + label: "fonticons", + }, + { + value: "fab fa-fonticons-fi", + label: "fonticons-fi", + }, + { + value: "fas fa-football-ball", + label: "football-ball", + }, + { + value: "fab fa-fort-awesome", + label: "fort-awesome", + }, + { + value: "fab fa-fort-awesome-alt", + label: "fort-awesome-alt", + }, + { + value: "fab fa-forumbee", + label: "forumbee", + }, + { + value: "fas fa-forward", + label: "forward", + }, + { + value: "fab fa-foursquare", + label: "foursquare", + }, + { + value: "fab fa-free-code-camp", + label: "free-code-camp", + }, + { + value: "fab fa-freebsd", + label: "freebsd", + }, + { + value: "fas fa-frog", + label: "frog", + }, + { + value: "fas fa-frown", + label: "frown", + }, + { + value: "far fa-frown", + label: "frown", + }, + { + value: "fas fa-frown-open", + label: "frown-open", + }, + { + value: "far fa-frown-open", + label: "frown-open", + }, + { + value: "fab fa-fulcrum", + label: "fulcrum", + }, + { + value: "fas fa-funnel-dollar", + label: "funnel-dollar", + }, + { + value: "fas fa-futbol", + label: "futbol", + }, + { + value: "far fa-futbol", + label: "futbol", + }, + { + value: "fab fa-galactic-republic", + label: "galactic-republic", + }, + { + value: "fab fa-galactic-senate", + label: "galactic-senate", + }, + { + value: "fas fa-gamepad", + label: "gamepad", + }, + { + value: "fas fa-gas-pump", + label: "gas-pump", + }, + { + value: "fas fa-gavel", + label: "gavel", + }, + { + value: "fas fa-gem", + label: "gem", + }, + { + value: "far fa-gem", + label: "gem", + }, + { + value: "", + label: "", + }, + { + value: "fas fa-genderless", + label: "genderless", + }, + { + value: "fab fa-get-pocket", + label: "get-pocket", + }, + { + value: "fab fa-gg", + label: "gg", + }, + { + value: "fab fa-gg-circle", + label: "gg-circle", + }, + { + value: "fas fa-ghost", + label: "ghost", + }, + { + value: "fas fa-gift", + label: "gift", + }, + { + value: "fas fa-gifts", + label: "gifts", + }, + { + value: "fab fa-git", + label: "git", + }, + { + value: "fab fa-git-alt", + label: "git-alt", + }, + { + value: "fab fa-git-square", + label: "git-square", + }, + { + value: "fab fa-github", + label: "github", + }, + { + value: "fab fa-github-alt", + label: "github-alt", + }, + { + value: "fab fa-github-square", + label: "github-square", + }, + { + value: "fab fa-gitkraken", + label: "gitkraken", + }, + { + value: "fab fa-gitlab", + label: "gitlab", + }, + { + value: "fab fa-gitter", + label: "gitter", + }, + { + value: "fas fa-glass-cheers", + label: "glass-cheers", + }, + { + value: "fas fa-glass-martini", + label: "glass-martini", + }, + { + value: "fas fa-glass-martini-alt", + label: "glass-martini-alt", + }, + { + value: "fas fa-glass-whiskey", + label: "glass-whiskey", + }, + { + value: "fas fa-glasses", + label: "glasses", + }, + { + value: "fab fa-glide", + label: "glide", + }, + { + value: "fab fa-glide-g", + label: "glide-g", + }, + { + value: "fas fa-globe", + label: "globe", + }, + { + value: "fas fa-globe-africa", + label: "globe-africa", + }, + { + value: "fas fa-globe-americas", + label: "globe-americas", + }, + { + value: "fas fa-globe-asia", + label: "globe-asia", + }, + { + value: "fas fa-globe-europe", + label: "globe-europe", + }, + { + value: "fab fa-gofore", + label: "gofore", + }, + { + value: "fas fa-golf-ball", + label: "golf-ball", + }, + { + value: "fab fa-goodreads", + label: "goodreads", + }, + { + value: "fab fa-goodreads-g", + label: "goodreads-g", + }, + { + value: "fab fa-google", + label: "google", + }, + { + value: "fab fa-google-drive", + label: "google-drive", + }, + { + value: "fab fa-google-pay", + label: "google-pay", + }, + { + value: "fab fa-google-play", + label: "google-play", + }, + { + value: "fab fa-google-plus", + label: "google-plus", + }, + { + value: "fab fa-google-plus-g", + label: "google-plus-g", + }, + { + value: "fab fa-google-plus-square", + label: "google-plus-square", + }, + { + value: "fab fa-google-wallet", + label: "google-wallet", + }, + { + value: "fas fa-gopuram", + label: "gopuram", + }, + { + value: "fas fa-graduation-cap", + label: "graduation-cap", + }, + { + value: "fab fa-gratipay", + label: "gratipay", + }, + { + value: "fab fa-grav", + label: "grav", + }, + { + value: "fas fa-greater-than", + label: "greater-than", + }, + { + value: "fas fa-greater-than-equal", + label: "greater-than-equal", + }, + { + value: "fas fa-grimace", + label: "grimace", + }, + { + value: "far fa-grimace", + label: "grimace", + }, + { + value: "fas fa-grin", + label: "grin", + }, + { + value: "far fa-grin", + label: "grin", + }, + { + value: "fas fa-grin-alt", + label: "grin-alt", + }, + { + value: "far fa-grin-alt", + label: "grin-alt", + }, + { + value: "fas fa-grin-beam", + label: "grin-beam", + }, + { + value: "far fa-grin-beam", + label: "grin-beam", + }, + { + value: "fas fa-grin-beam-sweat", + label: "grin-beam-sweat", + }, + { + value: "far fa-grin-beam-sweat", + label: "grin-beam-sweat", + }, + { + value: "fas fa-grin-hearts", + label: "grin-hearts", + }, + { + value: "far fa-grin-hearts", + label: "grin-hearts", + }, + { + value: "fas fa-grin-squint", + label: "grin-squint", + }, + { + value: "far fa-grin-squint", + label: "grin-squint", + }, + { + value: "fas fa-grin-squint-tears", + label: "grin-squint-tears", + }, + { + value: "far fa-grin-squint-tears", + label: "grin-squint-tears", + }, + { + value: "fas fa-grin-stars", + label: "grin-stars", + }, + { + value: "far fa-grin-stars", + label: "grin-stars", + }, + { + value: "fas fa-grin-tears", + label: "grin-tears", + }, + { + value: "far fa-grin-tears", + label: "grin-tears", + }, + { + value: "fas fa-grin-tongue", + label: "grin-tongue", + }, + { + value: "far fa-grin-tongue", + label: "grin-tongue", + }, + { + value: "fas fa-grin-tongue-squint", + label: "grin-tongue-squint", + }, + { + value: "far fa-grin-tongue-squint", + label: "grin-tongue-squint", + }, + { + value: "fas fa-grin-tongue-wink", + label: "grin-tongue-wink", + }, + { + value: "far fa-grin-tongue-wink", + label: "grin-tongue-wink", + }, + { + value: "fas fa-grin-wink", + label: "grin-wink", + }, + { + value: "far fa-grin-wink", + label: "grin-wink", + }, + { + value: "fas fa-grip-horizontal", + label: "grip-horizontal", + }, + { + value: "fas fa-grip-lines", + label: "grip-lines", + }, + { + value: "fas fa-grip-lines-vertical", + label: "grip-lines-vertical", + }, + { + value: "fas fa-grip-vertical", + label: "grip-vertical", + }, + { + value: "fab fa-gripfire", + label: "gripfire", + }, + { + value: "fab fa-grunt", + label: "grunt", + }, + { + value: "fas fa-guitar", + label: "guitar", + }, + { + value: "fab fa-gulp", + label: "gulp", + }, + { + value: "fas fa-h-square", + label: "h-square", + }, + { + value: "fab fa-hacker-news", + label: "hacker-news", + }, + { + value: "fab fa-hacker-news-square", + label: "hacker-news-square", + }, + { + value: "fab fa-hackerrank", + label: "hackerrank", + }, + { + value: "fas fa-hamburger", + label: "hamburger", + }, + { + value: "fas fa-hammer", + label: "hammer", + }, + { + value: "fas fa-hamsa", + label: "hamsa", + }, + { + value: "fas fa-hand-holding", + label: "hand-holding", + }, + { + value: "fas fa-hand-holding-heart", + label: "hand-holding-heart", + }, + { + value: "fas fa-hand-holding-medical", + label: "hand-holding-medical", + }, + { + value: "fas fa-hand-holding-usd", + label: "hand-holding-usd", + }, + { + value: "fas fa-hand-holding-water", + label: "hand-holding-water", + }, + { + value: "fas fa-hand-lizard", + label: "hand-lizard", + }, + { + value: "far fa-hand-lizard", + label: "hand-lizard", + }, + { + value: "fas fa-hand-middle-finger", + label: "hand-middle-finger", + }, + { + value: "fas fa-hand-paper", + label: "hand-paper", + }, + { + value: "far fa-hand-paper", + label: "hand-paper", + }, + { + value: "fas fa-hand-peace", + label: "hand-peace", + }, + { + value: "", + label: "", + }, + { + value: "far fa-hand-peace", + label: "hand-peace", + }, + { + value: "fas fa-hand-point-down", + label: "hand-point-down", + }, + { + value: "far fa-hand-point-down", + label: "hand-point-down", + }, + { + value: "fas fa-hand-point-left", + label: "hand-point-left", + }, + { + value: "far fa-hand-point-left", + label: "hand-point-left", + }, + { + value: "fas fa-hand-point-right", + label: "hand-point-right", + }, + { + value: "far fa-hand-point-right", + label: "hand-point-right", + }, + { + value: "fas fa-hand-point-up", + label: "hand-point-up", + }, + { + value: "far fa-hand-point-up", + label: "hand-point-up", + }, + { + value: "fas fa-hand-pointer", + label: "hand-pointer", + }, + { + value: "far fa-hand-pointer", + label: "hand-pointer", + }, + { + value: "fas fa-hand-rock", + label: "hand-rock", + }, + { + value: "far fa-hand-rock", + label: "hand-rock", + }, + { + value: "fas fa-hand-scissors", + label: "hand-scissors", + }, + { + value: "far fa-hand-scissors", + label: "hand-scissors", + }, + { + value: "fas fa-hand-sparkles", + label: "hand-sparkles", + }, + { + value: "fas fa-hand-spock", + label: "hand-spock", + }, + { + value: "far fa-hand-spock", + label: "hand-spock", + }, + { + value: "fas fa-hands", + label: "hands", + }, + { + value: "fas fa-hands-helping", + label: "hands-helping", + }, + { + value: "fas fa-hands-wash", + label: "hands-wash", + }, + { + value: "fas fa-handshake", + label: "handshake", + }, + { + value: "far fa-handshake", + label: "handshake", + }, + { + value: "fas fa-handshake-alt-slash", + label: "handshake-alt-slash", + }, + { + value: "fas fa-handshake-slash", + label: "handshake-slash", + }, + { + value: "fas fa-hanukiah", + label: "hanukiah", + }, + { + value: "fas fa-hard-hat", + label: "hard-hat", + }, + { + value: "fas fa-hashtag", + label: "hashtag", + }, + { + value: "fas fa-hat-cowboy", + label: "hat-cowboy", + }, + { + value: "fas fa-hat-cowboy-side", + label: "hat-cowboy-side", + }, + { + value: "fas fa-hat-wizard", + label: "hat-wizard", + }, + { + value: "fas fa-hdd", + label: "hdd", + }, + { + value: "far fa-hdd", + label: "hdd", + }, + { + value: "fas fa-head-side-cough", + label: "head-side-cough", + }, + { + value: "fas fa-head-side-cough-slash", + label: "head-side-cough-slash", + }, + { + value: "fas fa-head-side-mask", + label: "head-side-mask", + }, + { + value: "fas fa-head-side-virus", + label: "head-side-virus", + }, + { + value: "fas fa-heading", + label: "heading", + }, + { + value: "fas fa-headphones", + label: "headphones", + }, + { + value: "fas fa-headphones-alt", + label: "headphones-alt", + }, + { + value: "fas fa-headset", + label: "headset", + }, + { + value: "fas fa-heart", + label: "heart", + }, + { + value: "far fa-heart", + label: "heart", + }, + { + value: "fas fa-heart-broken", + label: "heart-broken", + }, + { + value: "fas fa-heartbeat", + label: "heartbeat", + }, + { + value: "fas fa-helicopter", + label: "helicopter", + }, + { + value: "fas fa-highlighter", + label: "highlighter", + }, + { + value: "fas fa-hiking", + label: "hiking", + }, + { + value: "fas fa-hippo", + label: "hippo", + }, + { + value: "fab fa-hips", + label: "hips", + }, + { + value: "fab fa-hire-a-helper", + label: "hire-a-helper", + }, + { + value: "fas fa-history", + label: "history", + }, + { + value: "fas fa-hockey-puck", + label: "hockey-puck", + }, + { + value: "fas fa-holly-berry", + label: "holly-berry", + }, + { + value: "fas fa-home", + label: "home", + }, + { + value: "fab fa-hooli", + label: "hooli", + }, + { + value: "fab fa-hornbill", + label: "hornbill", + }, + { + value: "fas fa-horse", + label: "horse", + }, + { + value: "fas fa-horse-head", + label: "horse-head", + }, + { + value: "fas fa-hospital", + label: "hospital", + }, + { + value: "far fa-hospital", + label: "hospital", + }, + { + value: "fas fa-hospital-alt", + label: "hospital-alt", + }, + { + value: "fas fa-hospital-symbol", + label: "hospital-symbol", + }, + { + value: "fas fa-hospital-user", + label: "hospital-user", + }, + { + value: "fas fa-hot-tub", + label: "hot-tub", + }, + { + value: "fas fa-hotdog", + label: "hotdog", + }, + { + value: "fas fa-hotel", + label: "hotel", + }, + { + value: "fab fa-hotjar", + label: "hotjar", + }, + { + value: "fas fa-hourglass", + label: "hourglass", + }, + { + value: "far fa-hourglass", + label: "hourglass", + }, + { + value: "fas fa-hourglass-end", + label: "hourglass-end", + }, + { + value: "fas fa-hourglass-half", + label: "hourglass-half", + }, + { + value: "fas fa-hourglass-start", + label: "hourglass-start", + }, + { + value: "fas fa-house-damage", + label: "house-damage", + }, + { + value: "fas fa-house-user", + label: "house-user", + }, + { + value: "fab fa-houzz", + label: "houzz", + }, + { + value: "fas fa-hryvnia", + label: "hryvnia", + }, + { + value: "fab fa-html5", + label: "html5", + }, + { + value: "fab fa-hubspot", + label: "hubspot", + }, + { + value: "fas fa-i-cursor", + label: "i-cursor", + }, + { + value: "fas fa-ice-cream", + label: "ice-cream", + }, + { + value: "fas fa-icicles", + label: "icicles", + }, + { + value: "fas fa-icons", + label: "icons", + }, + { + value: "fas fa-id-badge", + label: "id-badge", + }, + { + value: "far fa-id-badge", + label: "id-badge", + }, + { + value: "fas fa-id-card", + label: "id-card", + }, + { + value: "far fa-id-card", + label: "id-card", + }, + { + value: "fas fa-id-card-alt", + label: "id-card-alt", + }, + { + value: "fab fa-ideal", + label: "ideal", + }, + { + value: "fas fa-igloo", + label: "igloo", + }, + { + value: "fas fa-image", + label: "image", + }, + { + value: "far fa-image", + label: "image", + }, + { + value: "fas fa-images", + label: "images", + }, + { + value: "far fa-images", + label: "images", + }, + { + value: "fab fa-imdb", + label: "imdb", + }, + { + value: "fas fa-inbox", + label: "inbox", + }, + { + value: "fas fa-indent", + label: "indent", + }, + { + value: "fas fa-industry", + label: "industry", + }, + { + value: "fas fa-infinity", + label: "infinity", + }, + { + value: "fas fa-info", + label: "info", + }, + { + value: "", + label: "", + }, + { + value: "fas fa-info-circle", + label: "info-circle", + }, + { + value: "fab fa-instagram", + label: "instagram", + }, + { + value: "fab fa-instagram-square", + label: "instagram-square", + }, + { + value: "fab fa-intercom", + label: "intercom", + }, + { + value: "fab fa-internet-explorer", + label: "internet-explorer", + }, + { + value: "fab fa-invision", + label: "invision", + }, + { + value: "fab fa-ioxhost", + label: "ioxhost", + }, + { + value: "fas fa-italic", + label: "italic", + }, + { + value: "fab fa-itch-io", + label: "itch-io", + }, + { + value: "fab fa-itunes", + label: "itunes", + }, + { + value: "fab fa-itunes-note", + label: "itunes-note", + }, + { + value: "fab fa-java", + label: "java", + }, + { + value: "fas fa-jedi", + label: "jedi", + }, + { + value: "fab fa-jedi-order", + label: "jedi-order", + }, + { + value: "fab fa-jenkins", + label: "jenkins", + }, + { + value: "fab fa-jira", + label: "jira", + }, + { + value: "fab fa-joget", + label: "joget", + }, + { + value: "fas fa-joint", + label: "joint", + }, + { + value: "fab fa-joomla", + label: "joomla", + }, + { + value: "fas fa-journal-whills", + label: "journal-whills", + }, + { + value: "fab fa-js", + label: "js", + }, + { + value: "fab fa-js-square", + label: "js-square", + }, + { + value: "fab fa-jsfiddle", + label: "jsfiddle", + }, + { + value: "fas fa-kaaba", + label: "kaaba", + }, + { + value: "fab fa-kaggle", + label: "kaggle", + }, + { + value: "fas fa-key", + label: "key", + }, + { + value: "fab fa-keybase", + label: "keybase", + }, + { + value: "fas fa-keyboard", + label: "keyboard", + }, + { + value: "far fa-keyboard", + label: "keyboard", + }, + { + value: "fab fa-keycdn", + label: "keycdn", + }, + { + value: "fas fa-khanda", + label: "khanda", + }, + { + value: "fab fa-kickstarter", + label: "kickstarter", + }, + { + value: "fab fa-kickstarter-k", + label: "kickstarter-k", + }, + { + value: "fas fa-kiss", + label: "kiss", + }, + { + value: "far fa-kiss", + label: "kiss", + }, + { + value: "fas fa-kiss-beam", + label: "kiss-beam", + }, + { + value: "far fa-kiss-beam", + label: "kiss-beam", + }, + { + value: "fas fa-kiss-wink-heart", + label: "kiss-wink-heart", + }, + { + value: "far fa-kiss-wink-heart", + label: "kiss-wink-heart", + }, + { + value: "fas fa-kiwi-bird", + label: "kiwi-bird", + }, + { + value: "fab fa-korvue", + label: "korvue", + }, + { + value: "fas fa-landmark", + label: "landmark", + }, + { + value: "fas fa-language", + label: "language", + }, + { + value: "fas fa-laptop", + label: "laptop", + }, + { + value: "fas fa-laptop-code", + label: "laptop-code", + }, + { + value: "fas fa-laptop-house", + label: "laptop-house", + }, + { + value: "fas fa-laptop-medical", + label: "laptop-medical", + }, + { + value: "fab fa-laravel", + label: "laravel", + }, + { + value: "fab fa-lastfm", + label: "lastfm", + }, + { + value: "fab fa-lastfm-square", + label: "lastfm-square", + }, + { + value: "fas fa-laugh", + label: "laugh", + }, + { + value: "far fa-laugh", + label: "laugh", + }, + { + value: "fas fa-laugh-beam", + label: "laugh-beam", + }, + { + value: "far fa-laugh-beam", + label: "laugh-beam", + }, + { + value: "fas fa-laugh-squint", + label: "laugh-squint", + }, + { + value: "far fa-laugh-squint", + label: "laugh-squint", + }, + { + value: "fas fa-laugh-wink", + label: "laugh-wink", + }, + { + value: "far fa-laugh-wink", + label: "laugh-wink", + }, + { + value: "fas fa-layer-group", + label: "layer-group", + }, + { + value: "fas fa-leaf", + label: "leaf", + }, + { + value: "fab fa-leanpub", + label: "leanpub", + }, + { + value: "fas fa-lemon", + label: "lemon", + }, + { + value: "far fa-lemon", + label: "lemon", + }, + { + value: "fab fa-less", + label: "less", + }, + { + value: "fas fa-less-than", + label: "less-than", + }, + { + value: "fas fa-less-than-equal", + label: "less-than-equal", + }, + { + value: "fas fa-level-down-alt", + label: "level-down-alt", + }, + { + value: "fas fa-level-up-alt", + label: "level-up-alt", + }, + { + value: "fas fa-life-ring", + label: "life-ring", + }, + { + value: "far fa-life-ring", + label: "life-ring", + }, + { + value: "fas fa-lightbulb", + label: "lightbulb", + }, + { + value: "far fa-lightbulb", + label: "lightbulb", + }, + { + value: "fab fa-line", + label: "line", + }, + { + value: "fas fa-link", + label: "link", + }, + { + value: "fab fa-linkedin", + label: "linkedin", + }, + { + value: "fab fa-linkedin-in", + label: "linkedin-in", + }, + { + value: "fab fa-linode", + label: "linode", + }, + { + value: "fab fa-linux", + label: "linux", + }, + { + value: "fas fa-lira-sign", + label: "lira-sign", + }, + { + value: "fas fa-list", + label: "list", + }, + { + value: "fas fa-list-alt", + label: "list-alt", + }, + { + value: "far fa-list-alt", + label: "list-alt", + }, + { + value: "fas fa-list-ol", + label: "list-ol", + }, + { + value: "fas fa-list-ul", + label: "list-ul", + }, + { + value: "fas fa-location-arrow", + label: "location-arrow", + }, + { + value: "fas fa-lock", + label: "lock", + }, + { + value: "fas fa-lock-open", + label: "lock-open", + }, + { + value: "fas fa-long-arrow-alt-down", + label: "long-arrow-alt-down", + }, + { + value: "fas fa-long-arrow-alt-left", + label: "long-arrow-alt-left", + }, + { + value: "fas fa-long-arrow-alt-right", + label: "long-arrow-alt-right", + }, + { + value: "fas fa-long-arrow-alt-up", + label: "long-arrow-alt-up", + }, + { + value: "fas fa-low-vision", + label: "low-vision", + }, + { + value: "fas fa-luggage-cart", + label: "luggage-cart", + }, + { + value: "fas fa-lungs", + label: "lungs", + }, + { + value: "fas fa-lungs-virus", + label: "lungs-virus", + }, + { + value: "fab fa-lyft", + label: "lyft", + }, + { + value: "fab fa-magento", + label: "magento", + }, + { + value: "fas fa-magic", + label: "magic", + }, + { + value: "fas fa-magnet", + label: "magnet", + }, + { + value: "fas fa-mail-bulk", + label: "mail-bulk", + }, + { + value: "", + label: "", + }, + { + value: "fab fa-mailchimp", + label: "mailchimp", + }, + { + value: "fas fa-male", + label: "male", + }, + { + value: "fab fa-mandalorian", + label: "mandalorian", + }, + { + value: "fas fa-map", + label: "map", + }, + { + value: "far fa-map", + label: "map", + }, + { + value: "fas fa-map-marked", + label: "map-marked", + }, + { + value: "fas fa-map-marked-alt", + label: "map-marked-alt", + }, + { + value: "fas fa-map-marker", + label: "map-marker", + }, + { + value: "fas fa-map-marker-alt", + label: "map-marker-alt", + }, + { + value: "fas fa-map-pin", + label: "map-pin", + }, + { + value: "fas fa-map-signs", + label: "map-signs", + }, + { + value: "fab fa-markdown", + label: "markdown", + }, + { + value: "fas fa-marker", + label: "marker", + }, + { + value: "fas fa-mars", + label: "mars", + }, + { + value: "fas fa-mars-double", + label: "mars-double", + }, + { + value: "fas fa-mars-stroke", + label: "mars-stroke", + }, + { + value: "fas fa-mars-stroke-h", + label: "mars-stroke-h", + }, + { + value: "fas fa-mars-stroke-v", + label: "mars-stroke-v", + }, + { + value: "fas fa-mask", + label: "mask", + }, + { + value: "fab fa-mastodon", + label: "mastodon", + }, + { + value: "fab fa-maxcdn", + label: "maxcdn", + }, + { + value: "fab fa-mdb", + label: "mdb", + }, + { + value: "fas fa-medal", + label: "medal", + }, + { + value: "fab fa-medapps", + label: "medapps", + }, + { + value: "fab fa-medium", + label: "medium", + }, + { + value: "fab fa-medium-m", + label: "medium-m", + }, + { + value: "fas fa-medkit", + label: "medkit", + }, + { + value: "fab fa-medrt", + label: "medrt", + }, + { + value: "fab fa-meetup", + label: "meetup", + }, + { + value: "fab fa-megaport", + label: "megaport", + }, + { + value: "fas fa-meh", + label: "meh", + }, + { + value: "far fa-meh", + label: "meh", + }, + { + value: "fas fa-meh-blank", + label: "meh-blank", + }, + { + value: "far fa-meh-blank", + label: "meh-blank", + }, + { + value: "fas fa-meh-rolling-eyes", + label: "meh-rolling-eyes", + }, + { + value: "far fa-meh-rolling-eyes", + label: "meh-rolling-eyes", + }, + { + value: "fas fa-memory", + label: "memory", + }, + { + value: "fab fa-mendeley", + label: "mendeley", + }, + { + value: "fas fa-menorah", + label: "menorah", + }, + { + value: "fas fa-mercury", + label: "mercury", + }, + { + value: "fas fa-meteor", + label: "meteor", + }, + { + value: "fab fa-microblog", + label: "microblog", + }, + { + value: "fas fa-microchip", + label: "microchip", + }, + { + value: "fas fa-microphone", + label: "microphone", + }, + { + value: "fas fa-microphone-alt", + label: "microphone-alt", + }, + { + value: "fas fa-microphone-alt-slash", + label: "microphone-alt-slash", + }, + { + value: "fas fa-microphone-slash", + label: "microphone-slash", + }, + { + value: "fas fa-microscope", + label: "microscope", + }, + { + value: "fab fa-microsoft", + label: "microsoft", + }, + { + value: "fas fa-minus", + label: "minus", + }, + { + value: "fas fa-minus-circle", + label: "minus-circle", + }, + { + value: "fas fa-minus-square", + label: "minus-square", + }, + { + value: "far fa-minus-square", + label: "minus-square", + }, + { + value: "fas fa-mitten", + label: "mitten", + }, + { + value: "fab fa-mix", + label: "mix", + }, + { + value: "fab fa-mixcloud", + label: "mixcloud", + }, + { + value: "fab fa-mixer", + label: "mixer", + }, + { + value: "fab fa-mizuni", + label: "mizuni", + }, + { + value: "fas fa-mobile", + label: "mobile", + }, + { + value: "fas fa-mobile-alt", + label: "mobile-alt", + }, + { + value: "fab fa-modx", + label: "modx", + }, + { + value: "fab fa-monero", + label: "monero", + }, + { + value: "fas fa-money-bill", + label: "money-bill", + }, + { + value: "fas fa-money-bill-alt", + label: "money-bill-alt", + }, + { + value: "far fa-money-bill-alt", + label: "money-bill-alt", + }, + { + value: "fas fa-money-bill-wave", + label: "money-bill-wave", + }, + { + value: "fas fa-money-bill-wave-alt", + label: "money-bill-wave-alt", + }, + { + value: "fas fa-money-check", + label: "money-check", + }, + { + value: "fas fa-money-check-alt", + label: "money-check-alt", + }, + { + value: "fas fa-monument", + label: "monument", + }, + { + value: "fas fa-moon", + label: "moon", + }, + { + value: "far fa-moon", + label: "moon", + }, + { + value: "fas fa-mortar-pestle", + label: "mortar-pestle", + }, + { + value: "fas fa-mosque", + label: "mosque", + }, + { + value: "fas fa-motorcycle", + label: "motorcycle", + }, + { + value: "fas fa-mountain", + label: "mountain", + }, + { + value: "fas fa-mouse", + label: "mouse", + }, + { + value: "fas fa-mouse-pointer", + label: "mouse-pointer", + }, + { + value: "fas fa-mug-hot", + label: "mug-hot", + }, + { + value: "fas fa-music", + label: "music", + }, + { + value: "fab fa-napster", + label: "napster", + }, + { + value: "fab fa-neos", + label: "neos", + }, + { + value: "fas fa-network-wired", + label: "network-wired", + }, + { + value: "fas fa-neuter", + label: "neuter", + }, + { + value: "fas fa-newspaper", + label: "newspaper", + }, + { + value: "far fa-newspaper", + label: "newspaper", + }, + { + value: "fab fa-nimblr", + label: "nimblr", + }, + { + value: "fab fa-node", + label: "node", + }, + { + value: "fab fa-node-js", + label: "node-js", + }, + { + value: "fas fa-not-equal", + label: "not-equal", + }, + { + value: "fas fa-notes-medical", + label: "notes-medical", + }, + { + value: "fab fa-npm", + label: "npm", + }, + { + value: "fab fa-ns8", + label: "ns8", + }, + { + value: "fab fa-nutritionix", + label: "nutritionix", + }, + { + value: "fas fa-object-group", + label: "object-group", + }, + { + value: "far fa-object-group", + label: "object-group", + }, + { + value: "fas fa-object-ungroup", + label: "object-ungroup", + }, + { + value: "far fa-object-ungroup", + label: "object-ungroup", + }, + { + value: "fab fa-odnoklassniki", + label: "odnoklassniki", + }, + { + value: "fab fa-odnoklassniki-square", + label: "odnoklassniki-square", + }, + { + value: "", + label: "", + }, + { + value: "fas fa-oil-can", + label: "oil-can", + }, + { + value: "fab fa-old-republic", + label: "old-republic", + }, + { + value: "fas fa-om", + label: "om", + }, + { + value: "fab fa-opencart", + label: "opencart", + }, + { + value: "fab fa-openid", + label: "openid", + }, + { + value: "fab fa-opera", + label: "opera", + }, + { + value: "fab fa-optin-monster", + label: "optin-monster", + }, + { + value: "fab fa-orcid", + label: "orcid", + }, + { + value: "fab fa-osi", + label: "osi", + }, + { + value: "fas fa-otter", + label: "otter", + }, + { + value: "fas fa-outdent", + label: "outdent", + }, + { + value: "fab fa-page4", + label: "page4", + }, + { + value: "fab fa-pagelines", + label: "pagelines", + }, + { + value: "fas fa-pager", + label: "pager", + }, + { + value: "fas fa-paint-brush", + label: "paint-brush", + }, + { + value: "fas fa-paint-roller", + label: "paint-roller", + }, + { + value: "fas fa-palette", + label: "palette", + }, + { + value: "fab fa-palfed", + label: "palfed", + }, + { + value: "fas fa-pallet", + label: "pallet", + }, + { + value: "fas fa-paper-plane", + label: "paper-plane", + }, + { + value: "far fa-paper-plane", + label: "paper-plane", + }, + { + value: "fas fa-paperclip", + label: "paperclip", + }, + { + value: "fas fa-parachute-box", + label: "parachute-box", + }, + { + value: "fas fa-paragraph", + label: "paragraph", + }, + { + value: "fas fa-parking", + label: "parking", + }, + { + value: "fas fa-passport", + label: "passport", + }, + { + value: "fas fa-pastafarianism", + label: "pastafarianism", + }, + { + value: "fas fa-paste", + label: "paste", + }, + { + value: "fab fa-patreon", + label: "patreon", + }, + { + value: "fas fa-pause", + label: "pause", + }, + { + value: "fas fa-pause-circle", + label: "pause-circle", + }, + { + value: "far fa-pause-circle", + label: "pause-circle", + }, + { + value: "fas fa-paw", + label: "paw", + }, + { + value: "fab fa-paypal", + label: "paypal", + }, + { + value: "fas fa-peace", + label: "peace", + }, + { + value: "fas fa-pen", + label: "pen", + }, + { + value: "fas fa-pen-alt", + label: "pen-alt", + }, + { + value: "fas fa-pen-fancy", + label: "pen-fancy", + }, + { + value: "fas fa-pen-nib", + label: "pen-nib", + }, + { + value: "fas fa-pen-square", + label: "pen-square", + }, + { + value: "fas fa-pencil-alt", + label: "pencil-alt", + }, + { + value: "fas fa-pencil-ruler", + label: "pencil-ruler", + }, + { + value: "fab fa-penny-arcade", + label: "penny-arcade", + }, + { + value: "fas fa-people-arrows", + label: "people-arrows", + }, + { + value: "fas fa-people-carry", + label: "people-carry", + }, + { + value: "fas fa-pepper-hot", + label: "pepper-hot", + }, + { + value: "fas fa-percent", + label: "percent", + }, + { + value: "fas fa-percentage", + label: "percentage", + }, + { + value: "fab fa-periscope", + label: "periscope", + }, + { + value: "fas fa-person-booth", + label: "person-booth", + }, + { + value: "fab fa-phabricator", + label: "phabricator", + }, + { + value: "fab fa-phoenix-framework", + label: "phoenix-framework", + }, + { + value: "fab fa-phoenix-squadron", + label: "phoenix-squadron", + }, + { + value: "fas fa-phone", + label: "phone", + }, + { + value: "fas fa-phone-alt", + label: "phone-alt", + }, + { + value: "fas fa-phone-slash", + label: "phone-slash", + }, + { + value: "fas fa-phone-square", + label: "phone-square", + }, + { + value: "fas fa-phone-square-alt", + label: "phone-square-alt", + }, + { + value: "fas fa-phone-volume", + label: "phone-volume", + }, + { + value: "fas fa-photo-video", + label: "photo-video", + }, + { + value: "fab fa-php", + label: "php", + }, + { + value: "fab fa-pied-piper", + label: "pied-piper", + }, + { + value: "fab fa-pied-piper-alt", + label: "pied-piper-alt", + }, + { + value: "fab fa-pied-piper-hat", + label: "pied-piper-hat", + }, + { + value: "fab fa-pied-piper-pp", + label: "pied-piper-pp", + }, + { + value: "fab fa-pied-piper-square", + label: "pied-piper-square", + }, + { + value: "fas fa-piggy-bank", + label: "piggy-bank", + }, + { + value: "fas fa-pills", + label: "pills", + }, + { + value: "fab fa-pinterest", + label: "pinterest", + }, + { + value: "fab fa-pinterest-p", + label: "pinterest-p", + }, + { + value: "fab fa-pinterest-square", + label: "pinterest-square", + }, + { + value: "fas fa-pizza-slice", + label: "pizza-slice", + }, + { + value: "fas fa-place-of-worship", + label: "place-of-worship", + }, + { + value: "fas fa-plane", + label: "plane", + }, + { + value: "fas fa-plane-arrival", + label: "plane-arrival", + }, + { + value: "fas fa-plane-departure", + label: "plane-departure", + }, + { + value: "fas fa-plane-slash", + label: "plane-slash", + }, + { + value: "fas fa-play", + label: "play", + }, + { + value: "fas fa-play-circle", + label: "play-circle", + }, + { + value: "far fa-play-circle", + label: "play-circle", + }, + { + value: "fab fa-playstation", + label: "playstation", + }, + { + value: "fas fa-plug", + label: "plug", + }, + { + value: "fas fa-plus", + label: "plus", + }, + { + value: "fas fa-plus-circle", + label: "plus-circle", + }, + { + value: "fas fa-plus-square", + label: "plus-square", + }, + { + value: "far fa-plus-square", + label: "plus-square", + }, + { + value: "fas fa-podcast", + label: "podcast", + }, + { + value: "fas fa-poll", + label: "poll", + }, + { + value: "fas fa-poll-h", + label: "poll-h", + }, + { + value: "fas fa-poo", + label: "poo", + }, + { + value: "fas fa-poo-storm", + label: "poo-storm", + }, + { + value: "fas fa-poop", + label: "poop", + }, + { + value: "fas fa-portrait", + label: "portrait", + }, + { + value: "fas fa-pound-sign", + label: "pound-sign", + }, + { + value: "fas fa-power-off", + label: "power-off", + }, + { + value: "fas fa-pray", + label: "pray", + }, + { + value: "fas fa-praying-hands", + label: "praying-hands", + }, + { + value: "fas fa-prescription", + label: "prescription", + }, + { + value: "fas fa-prescription-bottle", + label: "prescription-bottle", + }, + { + value: "fas fa-prescription-bottle-alt", + label: "prescription-bottle-alt", + }, + { + value: "", + label: "", + }, + { + value: "fas fa-print", + label: "print", + }, + { + value: "fas fa-procedures", + label: "procedures", + }, + { + value: "fab fa-product-hunt", + label: "product-hunt", + }, + { + value: "fas fa-project-diagram", + label: "project-diagram", + }, + { + value: "fas fa-pump-medical", + label: "pump-medical", + }, + { + value: "fas fa-pump-soap", + label: "pump-soap", + }, + { + value: "fab fa-pushed", + label: "pushed", + }, + { + value: "fas fa-puzzle-piece", + label: "puzzle-piece", + }, + { + value: "fab fa-python", + label: "python", + }, + { + value: "fab fa-qq", + label: "qq", + }, + { + value: "fas fa-qrcode", + label: "qrcode", + }, + { + value: "fas fa-question", + label: "question", + }, + { + value: "fas fa-question-circle", + label: "question-circle", + }, + { + value: "far fa-question-circle", + label: "question-circle", + }, + { + value: "fas fa-quidditch", + label: "quidditch", + }, + { + value: "fab fa-quinscape", + label: "quinscape", + }, + { + value: "fab fa-quora", + label: "quora", + }, + { + value: "fas fa-quote-left", + label: "quote-left", + }, + { + value: "fas fa-quote-right", + label: "quote-right", + }, + { + value: "fas fa-quran", + label: "quran", + }, + { + value: "fab fa-r-project", + label: "r-project", + }, + { + value: "fas fa-radiation", + label: "radiation", + }, + { + value: "fas fa-radiation-alt", + label: "radiation-alt", + }, + { + value: "fas fa-rainbow", + label: "rainbow", + }, + { + value: "fas fa-random", + label: "random", + }, + { + value: "fab fa-raspberry-pi", + label: "raspberry-pi", + }, + { + value: "fab fa-ravelry", + label: "ravelry", + }, + { + value: "fab fa-react", + label: "react", + }, + { + value: "fab fa-reacteurope", + label: "reacteurope", + }, + { + value: "fab fa-readme", + label: "readme", + }, + { + value: "fab fa-rebel", + label: "rebel", + }, + { + value: "fas fa-receipt", + label: "receipt", + }, + { + value: "fas fa-record-vinyl", + label: "record-vinyl", + }, + { + value: "fas fa-recycle", + label: "recycle", + }, + { + value: "fab fa-red-river", + label: "red-river", + }, + { + value: "fab fa-reddit", + label: "reddit", + }, + { + value: "fab fa-reddit-alien", + label: "reddit-alien", + }, + { + value: "fab fa-reddit-square", + label: "reddit-square", + }, + { + value: "fab fa-redhat", + label: "redhat", + }, + { + value: "fas fa-redo", + label: "redo", + }, + { + value: "fas fa-redo-alt", + label: "redo-alt", + }, + { + value: "fas fa-registered", + label: "registered", + }, + { + value: "far fa-registered", + label: "registered", + }, + { + value: "fas fa-remove-format", + label: "remove-format", + }, + { + value: "fab fa-renren", + label: "renren", + }, + { + value: "fas fa-reply", + label: "reply", + }, + { + value: "fas fa-reply-all", + label: "reply-all", + }, + { + value: "fab fa-replyd", + label: "replyd", + }, + { + value: "fas fa-republican", + label: "republican", + }, + { + value: "fab fa-researchgate", + label: "researchgate", + }, + { + value: "fab fa-resolving", + label: "resolving", + }, + { + value: "fas fa-restroom", + label: "restroom", + }, + { + value: "fas fa-retweet", + label: "retweet", + }, + { + value: "fab fa-rev", + label: "rev", + }, + { + value: "fas fa-ribbon", + label: "ribbon", + }, + { + value: "fas fa-ring", + label: "ring", + }, + { + value: "fas fa-road", + label: "road", + }, + { + value: "fas fa-robot", + label: "robot", + }, + { + value: "fas fa-rocket", + label: "rocket", + }, + { + value: "fab fa-rocketchat", + label: "rocketchat", + }, + { + value: "fab fa-rockrms", + label: "rockrms", + }, + { + value: "fas fa-route", + label: "route", + }, + { + value: "fas fa-rss", + label: "rss", + }, + { + value: "fas fa-rss-square", + label: "rss-square", + }, + { + value: "fas fa-ruble-sign", + label: "ruble-sign", + }, + { + value: "fas fa-ruler", + label: "ruler", + }, + { + value: "fas fa-ruler-combined", + label: "ruler-combined", + }, + { + value: "fas fa-ruler-horizontal", + label: "ruler-horizontal", + }, + { + value: "fas fa-ruler-vertical", + label: "ruler-vertical", + }, + { + value: "fas fa-running", + label: "running", + }, + { + value: "fas fa-rupee-sign", + label: "rupee-sign", + }, + { + value: "fab fa-rust", + label: "rust", + }, + { + value: "fas fa-sad-cry", + label: "sad-cry", + }, + { + value: "far fa-sad-cry", + label: "sad-cry", + }, + { + value: "fas fa-sad-tear", + label: "sad-tear", + }, + { + value: "far fa-sad-tear", + label: "sad-tear", + }, + { + value: "fab fa-safari", + label: "safari", + }, + { + value: "fab fa-salesforce", + label: "salesforce", + }, + { + value: "fab fa-sass", + label: "sass", + }, + { + value: "fas fa-satellite", + label: "satellite", + }, + { + value: "fas fa-satellite-dish", + label: "satellite-dish", + }, + { + value: "fas fa-save", + label: "save", + }, + { + value: "far fa-save", + label: "save", + }, + { + value: "fab fa-schlix", + label: "schlix", + }, + { + value: "fas fa-school", + label: "school", + }, + { + value: "fas fa-screwdriver", + label: "screwdriver", + }, + { + value: "fab fa-scribd", + label: "scribd", + }, + { + value: "fas fa-scroll", + label: "scroll", + }, + { + value: "fas fa-sd-card", + label: "sd-card", + }, + { + value: "fas fa-search", + label: "search", + }, + { + value: "fas fa-search-dollar", + label: "search-dollar", + }, + { + value: "fas fa-search-location", + label: "search-location", + }, + { + value: "fas fa-search-minus", + label: "search-minus", + }, + { + value: "fas fa-search-plus", + label: "search-plus", + }, + { + value: "fab fa-searchengin", + label: "searchengin", + }, + { + value: "fas fa-seedling", + label: "seedling", + }, + { + value: "fab fa-sellcast", + label: "sellcast", + }, + { + value: "fab fa-sellsy", + label: "sellsy", + }, + { + value: "fas fa-server", + label: "server", + }, + { + value: "fab fa-servicestack", + label: "servicestack", + }, + { + value: "", + label: "", + }, + { + value: "fas fa-shapes", + label: "shapes", + }, + { + value: "fas fa-share", + label: "share", + }, + { + value: "fas fa-share-alt", + label: "share-alt", + }, + { + value: "fas fa-share-alt-square", + label: "share-alt-square", + }, + { + value: "fas fa-share-square", + label: "share-square", + }, + { + value: "far fa-share-square", + label: "share-square", + }, + { + value: "fas fa-shekel-sign", + label: "shekel-sign", + }, + { + value: "fas fa-shield-alt", + label: "shield-alt", + }, + { + value: "fas fa-shield-virus", + label: "shield-virus", + }, + { + value: "fas fa-ship", + label: "ship", + }, + { + value: "fas fa-shipping-fast", + label: "shipping-fast", + }, + { + value: "fab fa-shirtsinbulk", + label: "shirtsinbulk", + }, + { + value: "fas fa-shoe-prints", + label: "shoe-prints", + }, + { + value: "fab fa-shopify", + label: "shopify", + }, + { + value: "fas fa-shopping-bag", + label: "shopping-bag", + }, + { + value: "fas fa-shopping-basket", + label: "shopping-basket", + }, + { + value: "fas fa-shopping-cart", + label: "shopping-cart", + }, + { + value: "fab fa-shopware", + label: "shopware", + }, + { + value: "fas fa-shower", + label: "shower", + }, + { + value: "fas fa-shuttle-van", + label: "shuttle-van", + }, + { + value: "fas fa-sign", + label: "sign", + }, + { + value: "fas fa-sign-in-alt", + label: "sign-in-alt", + }, + { + value: "fas fa-sign-language", + label: "sign-language", + }, + { + value: "fas fa-sign-out-alt", + label: "sign-out-alt", + }, + { + value: "fas fa-signal", + label: "signal", + }, + { + value: "fas fa-signature", + label: "signature", + }, + { + value: "fas fa-sim-card", + label: "sim-card", + }, + { + value: "fab fa-simplybuilt", + label: "simplybuilt", + }, + { + value: "fas fa-sink", + label: "sink", + }, + { + value: "fab fa-sistrix", + label: "sistrix", + }, + { + value: "fas fa-sitemap", + label: "sitemap", + }, + { + value: "fab fa-sith", + label: "sith", + }, + { + value: "fas fa-skating", + label: "skating", + }, + { + value: "fab fa-sketch", + label: "sketch", + }, + { + value: "fas fa-skiing", + label: "skiing", + }, + { + value: "fas fa-skiing-nordic", + label: "skiing-nordic", + }, + { + value: "fas fa-skull", + label: "skull", + }, + { + value: "fas fa-skull-crossbones", + label: "skull-crossbones", + }, + { + value: "fab fa-skyatlas", + label: "skyatlas", + }, + { + value: "fab fa-skype", + label: "skype", + }, + { + value: "fab fa-slack", + label: "slack", + }, + { + value: "fab fa-slack-hash", + label: "slack-hash", + }, + { + value: "fas fa-slash", + label: "slash", + }, + { + value: "fas fa-sleigh", + label: "sleigh", + }, + { + value: "fas fa-sliders-h", + label: "sliders-h", + }, + { + value: "fab fa-slideshare", + label: "slideshare", + }, + { + value: "fas fa-smile", + label: "smile", + }, + { + value: "far fa-smile", + label: "smile", + }, + { + value: "fas fa-smile-beam", + label: "smile-beam", + }, + { + value: "far fa-smile-beam", + label: "smile-beam", + }, + { + value: "fas fa-smile-wink", + label: "smile-wink", + }, + { + value: "far fa-smile-wink", + label: "smile-wink", + }, + { + value: "fas fa-smog", + label: "smog", + }, + { + value: "fas fa-smoking", + label: "smoking", + }, + { + value: "fas fa-smoking-ban", + label: "smoking-ban", + }, + { + value: "fas fa-sms", + label: "sms", + }, + { + value: "fab fa-snapchat", + label: "snapchat", + }, + { + value: "fab fa-snapchat-ghost", + label: "snapchat-ghost", + }, + { + value: "fab fa-snapchat-square", + label: "snapchat-square", + }, + { + value: "fas fa-snowboarding", + label: "snowboarding", + }, + { + value: "fas fa-snowflake", + label: "snowflake", + }, + { + value: "far fa-snowflake", + label: "snowflake", + }, + { + value: "fas fa-snowman", + label: "snowman", + }, + { + value: "fas fa-snowplow", + label: "snowplow", + }, + { + value: "fas fa-soap", + label: "soap", + }, + { + value: "fas fa-socks", + label: "socks", + }, + { + value: "fas fa-solar-panel", + label: "solar-panel", + }, + { + value: "fas fa-sort", + label: "sort", + }, + { + value: "fas fa-sort-alpha-down", + label: "sort-alpha-down", + }, + { + value: "fas fa-sort-alpha-down-alt", + label: "sort-alpha-down-alt", + }, + { + value: "fas fa-sort-alpha-up", + label: "sort-alpha-up", + }, + { + value: "fas fa-sort-alpha-up-alt", + label: "sort-alpha-up-alt", + }, + { + value: "fas fa-sort-amount-down", + label: "sort-amount-down", + }, + { + value: "fas fa-sort-amount-down-alt", + label: "sort-amount-down-alt", + }, + { + value: "fas fa-sort-amount-up", + label: "sort-amount-up", + }, + { + value: "fas fa-sort-amount-up-alt", + label: "sort-amount-up-alt", + }, + { + value: "fas fa-sort-down", + label: "sort-down", + }, + { + value: "fas fa-sort-numeric-down", + label: "sort-numeric-down", + }, + { + value: "fas fa-sort-numeric-down-alt", + label: "sort-numeric-down-alt", + }, + { + value: "fas fa-sort-numeric-up", + label: "sort-numeric-up", + }, + { + value: "fas fa-sort-numeric-up-alt", + label: "sort-numeric-up-alt", + }, + { + value: "fas fa-sort-up", + label: "sort-up", + }, + { + value: "fab fa-soundcloud", + label: "soundcloud", + }, + { + value: "fab fa-sourcetree", + label: "sourcetree", + }, + { + value: "fas fa-spa", + label: "spa", + }, + { + value: "fas fa-space-shuttle", + label: "space-shuttle", + }, + { + value: "fab fa-speakap", + label: "speakap", + }, + { + value: "fab fa-speaker-deck", + label: "speaker-deck", + }, + { + value: "fas fa-spell-check", + label: "spell-check", + }, + { + value: "fas fa-spider", + label: "spider", + }, + { + value: "fas fa-spinner", + label: "spinner", + }, + { + value: "fas fa-splotch", + label: "splotch", + }, + { + value: "fab fa-spotify", + label: "spotify", + }, + { + value: "fas fa-spray-can", + label: "spray-can", + }, + { + value: "fas fa-square", + label: "square", + }, + { + value: "far fa-square", + label: "square", + }, + { + value: "fas fa-square-full", + label: "square-full", + }, + { + value: "fas fa-square-root-alt", + label: "square-root-alt", + }, + { + value: "fab fa-squarespace", + label: "squarespace", + }, + { + value: "fab fa-stack-exchange", + label: "stack-exchange", + }, + { + value: "", + label: "", + }, + { + value: "fab fa-stack-overflow", + label: "stack-overflow", + }, + { + value: "fab fa-stackpath", + label: "stackpath", + }, + { + value: "fas fa-stamp", + label: "stamp", + }, + { + value: "fas fa-star", + label: "star", + }, + { + value: "far fa-star", + label: "star", + }, + { + value: "fas fa-star-and-crescent", + label: "star-and-crescent", + }, + { + value: "fas fa-star-half", + label: "star-half", + }, + { + value: "far fa-star-half", + label: "star-half", + }, + { + value: "fas fa-star-half-alt", + label: "star-half-alt", + }, + { + value: "fas fa-star-of-david", + label: "star-of-david", + }, + { + value: "fas fa-star-of-life", + label: "star-of-life", + }, + { + value: "fab fa-staylinked", + label: "staylinked", + }, + { + value: "fab fa-steam", + label: "steam", + }, + { + value: "fab fa-steam-square", + label: "steam-square", + }, + { + value: "fab fa-steam-symbol", + label: "steam-symbol", + }, + { + value: "fas fa-step-backward", + label: "step-backward", + }, + { + value: "fas fa-step-forward", + label: "step-forward", + }, + { + value: "fas fa-stethoscope", + label: "stethoscope", + }, + { + value: "fab fa-sticker-mule", + label: "sticker-mule", + }, + { + value: "fas fa-sticky-note", + label: "sticky-note", + }, + { + value: "far fa-sticky-note", + label: "sticky-note", + }, + { + value: "fas fa-stop", + label: "stop", + }, + { + value: "fas fa-stop-circle", + label: "stop-circle", + }, + { + value: "far fa-stop-circle", + label: "stop-circle", + }, + { + value: "fas fa-stopwatch", + label: "stopwatch", + }, + { + value: "fas fa-stopwatch-20", + label: "stopwatch-20", + }, + { + value: "fas fa-store", + label: "store", + }, + { + value: "fas fa-store-alt", + label: "store-alt", + }, + { + value: "fas fa-store-alt-slash", + label: "store-alt-slash", + }, + { + value: "fas fa-store-slash", + label: "store-slash", + }, + { + value: "fab fa-strava", + label: "strava", + }, + { + value: "fas fa-stream", + label: "stream", + }, + { + value: "fas fa-street-view", + label: "street-view", + }, + { + value: "fas fa-strikethrough", + label: "strikethrough", + }, + { + value: "fab fa-stripe", + label: "stripe", + }, + { + value: "fab fa-stripe-s", + label: "stripe-s", + }, + { + value: "fas fa-stroopwafel", + label: "stroopwafel", + }, + { + value: "fab fa-studiovinari", + label: "studiovinari", + }, + { + value: "fab fa-stumbleupon", + label: "stumbleupon", + }, + { + value: "fab fa-stumbleupon-circle", + label: "stumbleupon-circle", + }, + { + value: "fas fa-subscript", + label: "subscript", + }, + { + value: "fas fa-subway", + label: "subway", + }, + { + value: "fas fa-suitcase", + label: "suitcase", + }, + { + value: "fas fa-suitcase-rolling", + label: "suitcase-rolling", + }, + { + value: "fas fa-sun", + label: "sun", + }, + { + value: "far fa-sun", + label: "sun", + }, + { + value: "fab fa-superpowers", + label: "superpowers", + }, + { + value: "fas fa-superscript", + label: "superscript", + }, + { + value: "fab fa-supple", + label: "supple", + }, + { + value: "fas fa-surprise", + label: "surprise", + }, + { + value: "far fa-surprise", + label: "surprise", + }, + { + value: "fab fa-suse", + label: "suse", + }, + { + value: "fas fa-swatchbook", + label: "swatchbook", + }, + { + value: "fab fa-swift", + label: "swift", + }, + { + value: "fas fa-swimmer", + label: "swimmer", + }, + { + value: "fas fa-swimming-pool", + label: "swimming-pool", + }, + { + value: "fab fa-symfony", + label: "symfony", + }, + { + value: "fas fa-synagogue", + label: "synagogue", + }, + { + value: "fas fa-sync", + label: "sync", + }, + { + value: "fas fa-sync-alt", + label: "sync-alt", + }, + { + value: "fas fa-syringe", + label: "syringe", + }, + { + value: "fas fa-table", + label: "table", + }, + { + value: "fas fa-table-tennis", + label: "table-tennis", + }, + { + value: "fas fa-tablet", + label: "tablet", + }, + { + value: "fas fa-tablet-alt", + label: "tablet-alt", + }, + { + value: "fas fa-tablets", + label: "tablets", + }, + { + value: "fas fa-tachometer-alt", + label: "tachometer-alt", + }, + { + value: "fas fa-tag", + label: "tag", + }, + { + value: "fas fa-tags", + label: "tags", + }, + { + value: "fas fa-tape", + label: "tape", + }, + { + value: "fas fa-tasks", + label: "tasks", + }, + { + value: "fas fa-taxi", + label: "taxi", + }, + { + value: "fab fa-teamspeak", + label: "teamspeak", + }, + { + value: "fas fa-teeth", + label: "teeth", + }, + { + value: "fas fa-teeth-open", + label: "teeth-open", + }, + { + value: "fab fa-telegram", + label: "telegram", + }, + { + value: "fab fa-telegram-plane", + label: "telegram-plane", + }, + { + value: "fas fa-temperature-high", + label: "temperature-high", + }, + { + value: "fas fa-temperature-low", + label: "temperature-low", + }, + { + value: "fab fa-tencent-weibo", + label: "tencent-weibo", + }, + { + value: "fas fa-tenge", + label: "tenge", + }, + { + value: "fas fa-terminal", + label: "terminal", + }, + { + value: "fas fa-text-height", + label: "text-height", + }, + { + value: "fas fa-text-width", + label: "text-width", + }, + { + value: "fas fa-th", + label: "th", + }, + { + value: "fas fa-th-large", + label: "th-large", + }, + { + value: "fas fa-th-list", + label: "th-list", + }, + { + value: "fab fa-the-red-yeti", + label: "the-red-yeti", + }, + { + value: "fas fa-theater-masks", + label: "theater-masks", + }, + { + value: "fab fa-themeco", + label: "themeco", + }, + { + value: "fab fa-themeisle", + label: "themeisle", + }, + { + value: "fas fa-thermometer", + label: "thermometer", + }, + { + value: "fas fa-thermometer-empty", + label: "thermometer-empty", + }, + { + value: "fas fa-thermometer-full", + label: "thermometer-full", + }, + { + value: "fas fa-thermometer-half", + label: "thermometer-half", + }, + { + value: "fas fa-thermometer-quarter", + label: "thermometer-quarter", + }, + { + value: "fas fa-thermometer-three-quarters", + label: "thermometer-three-quarters", + }, + { + value: "fab fa-think-peaks", + label: "think-peaks", + }, + { + value: "fas fa-thumbs-down", + label: "thumbs-down", + }, + { + value: "far fa-thumbs-down", + label: "thumbs-down", + }, + { + value: "", + label: "", + }, + { + value: "fas fa-thumbs-up", + label: "thumbs-up", + }, + { + value: "far fa-thumbs-up", + label: "thumbs-up", + }, + { + value: "fas fa-thumbtack", + label: "thumbtack", + }, + { + value: "fas fa-ticket-alt", + label: "ticket-alt", + }, + { + value: "fab fa-tiktok", + label: "tiktok", + }, + { + value: "fas fa-times", + label: "times", + }, + { + value: "fas fa-times-circle", + label: "times-circle", + }, + { + value: "far fa-times-circle", + label: "times-circle", + }, + { + value: "fas fa-tint", + label: "tint", + }, + { + value: "fas fa-tint-slash", + label: "tint-slash", + }, + { + value: "fas fa-tired", + label: "tired", + }, + { + value: "far fa-tired", + label: "tired", + }, + { + value: "fas fa-toggle-off", + label: "toggle-off", + }, + { + value: "fas fa-toggle-on", + label: "toggle-on", + }, + { + value: "fas fa-toilet", + label: "toilet", + }, + { + value: "fas fa-toilet-paper", + label: "toilet-paper", + }, + { + value: "fas fa-toilet-paper-slash", + label: "toilet-paper-slash", + }, + { + value: "fas fa-toolbox", + label: "toolbox", + }, + { + value: "fas fa-tools", + label: "tools", + }, + { + value: "fas fa-tooth", + label: "tooth", + }, + { + value: "fas fa-torah", + label: "torah", + }, + { + value: "fas fa-torii-gate", + label: "torii-gate", + }, + { + value: "fas fa-tractor", + label: "tractor", + }, + { + value: "fab fa-trade-federation", + label: "trade-federation", + }, + { + value: "fas fa-trademark", + label: "trademark", + }, + { + value: "fas fa-traffic-light", + label: "traffic-light", + }, + { + value: "fas fa-trailer", + label: "trailer", + }, + { + value: "fas fa-train", + label: "train", + }, + { + value: "fas fa-tram", + label: "tram", + }, + { + value: "fas fa-transgender", + label: "transgender", + }, + { + value: "fas fa-transgender-alt", + label: "transgender-alt", + }, + { + value: "fas fa-trash", + label: "trash", + }, + { + value: "fas fa-trash-alt", + label: "trash-alt", + }, + { + value: "far fa-trash-alt", + label: "trash-alt", + }, + { + value: "fas fa-trash-restore", + label: "trash-restore", + }, + { + value: "fas fa-trash-restore-alt", + label: "trash-restore-alt", + }, + { + value: "fas fa-tree", + label: "tree", + }, + { + value: "fab fa-trello", + label: "trello", + }, + { + value: "fab fa-tripadvisor", + label: "tripadvisor", + }, + { + value: "fas fa-trophy", + label: "trophy", + }, + { + value: "fas fa-truck", + label: "truck", + }, + { + value: "fas fa-truck-loading", + label: "truck-loading", + }, + { + value: "fas fa-truck-monster", + label: "truck-monster", + }, + { + value: "fas fa-truck-moving", + label: "truck-moving", + }, + { + value: "fas fa-truck-pickup", + label: "truck-pickup", + }, + { + value: "fas fa-tshirt", + label: "tshirt", + }, + { + value: "fas fa-tty", + label: "tty", + }, + { + value: "fab fa-tumblr", + label: "tumblr", + }, + { + value: "fab fa-tumblr-square", + label: "tumblr-square", + }, + { + value: "fas fa-tv", + label: "tv", + }, + { + value: "fab fa-twitch", + label: "twitch", + }, + { + value: "fab fa-twitter", + label: "twitter", + }, + { + value: "fab fa-twitter-square", + label: "twitter-square", + }, + { + value: "fab fa-typo3", + label: "typo3", + }, + { + value: "fab fa-uber", + label: "uber", + }, + { + value: "fab fa-ubuntu", + label: "ubuntu", + }, + { + value: "fab fa-uikit", + label: "uikit", + }, + { + value: "fab fa-umbraco", + label: "umbraco", + }, + { + value: "fas fa-umbrella", + label: "umbrella", + }, + { + value: "fas fa-umbrella-beach", + label: "umbrella-beach", + }, + { + value: "fas fa-underline", + label: "underline", + }, + { + value: "fas fa-undo", + label: "undo", + }, + { + value: "fas fa-undo-alt", + label: "undo-alt", + }, + { + value: "fab fa-uniregistry", + label: "uniregistry", + }, + { + value: "fab fa-unity", + label: "unity", + }, + { + value: "fas fa-universal-access", + label: "universal-access", + }, + { + value: "fas fa-university", + label: "university", + }, + { + value: "fas fa-unlink", + label: "unlink", + }, + { + value: "fas fa-unlock", + label: "unlock", + }, + { + value: "fas fa-unlock-alt", + label: "unlock-alt", + }, + { + value: "fab fa-unsplash", + label: "unsplash", + }, + { + value: "fab fa-untappd", + label: "untappd", + }, + { + value: "fas fa-upload", + label: "upload", + }, + { + value: "fab fa-ups", + label: "ups", + }, + { + value: "fab fa-usb", + label: "usb", + }, + { + value: "fas fa-user", + label: "user", + }, + { + value: "far fa-user", + label: "user", + }, + { + value: "fas fa-user-alt", + label: "user-alt", + }, + { + value: "fas fa-user-alt-slash", + label: "user-alt-slash", + }, + { + value: "fas fa-user-astronaut", + label: "user-astronaut", + }, + { + value: "fas fa-user-check", + label: "user-check", + }, + { + value: "fas fa-user-circle", + label: "user-circle", + }, + { + value: "far fa-user-circle", + label: "user-circle", + }, + { + value: "fas fa-user-clock", + label: "user-clock", + }, + { + value: "fas fa-user-cog", + label: "user-cog", + }, + { + value: "fas fa-user-edit", + label: "user-edit", + }, + { + value: "fas fa-user-friends", + label: "user-friends", + }, + { + value: "fas fa-user-graduate", + label: "user-graduate", + }, + { + value: "fas fa-user-injured", + label: "user-injured", + }, + { + value: "fas fa-user-lock", + label: "user-lock", + }, + { + value: "fas fa-user-md", + label: "user-md", + }, + { + value: "fas fa-user-minus", + label: "user-minus", + }, + { + value: "fas fa-user-ninja", + label: "user-ninja", + }, + { + value: "fas fa-user-nurse", + label: "user-nurse", + }, + { + value: "fas fa-user-plus", + label: "user-plus", + }, + { + value: "fas fa-user-secret", + label: "user-secret", + }, + { + value: "fas fa-user-shield", + label: "user-shield", + }, + { + value: "fas fa-user-slash", + label: "user-slash", + }, + { + value: "fas fa-user-tag", + label: "user-tag", + }, + { + value: "fas fa-user-tie", + label: "user-tie", + }, + { + value: "", + label: "", + }, + { + value: "fas fa-user-times", + label: "user-times", + }, + { + value: "fas fa-users", + label: "users", + }, + { + value: "fas fa-users-cog", + label: "users-cog", + }, + { + value: "fas fa-users-slash", + label: "users-slash", + }, + { + value: "fab fa-usps", + label: "usps", + }, + { + value: "fab fa-ussunnah", + label: "ussunnah", + }, + { + value: "fas fa-utensil-spoon", + label: "utensil-spoon", + }, + { + value: "fas fa-utensils", + label: "utensils", + }, + { + value: "fab fa-vaadin", + label: "vaadin", + }, + { + value: "fas fa-vector-square", + label: "vector-square", + }, + { + value: "fas fa-venus", + label: "venus", + }, + { + value: "fas fa-venus-double", + label: "venus-double", + }, + { + value: "fas fa-venus-mars", + label: "venus-mars", + }, + { + value: "fab fa-viacoin", + label: "viacoin", + }, + { + value: "fab fa-viadeo", + label: "viadeo", + }, + { + value: "fab fa-viadeo-square", + label: "viadeo-square", + }, + { + value: "fas fa-vial", + label: "vial", + }, + { + value: "fas fa-vials", + label: "vials", + }, + { + value: "fab fa-viber", + label: "viber", + }, + { + value: "fas fa-video", + label: "video", + }, + { + value: "fas fa-video-slash", + label: "video-slash", + }, + { + value: "fas fa-vihara", + label: "vihara", + }, + { + value: "fab fa-vimeo", + label: "vimeo", + }, + { + value: "fab fa-vimeo-square", + label: "vimeo-square", + }, + { + value: "fab fa-vimeo-v", + label: "vimeo-v", + }, + { + value: "fab fa-vine", + label: "vine", + }, + { + value: "fas fa-virus", + label: "virus", + }, + { + value: "fas fa-virus-slash", + label: "virus-slash", + }, + { + value: "fas fa-viruses", + label: "viruses", + }, + { + value: "fab fa-vk", + label: "vk", + }, + { + value: "fab fa-vnv", + label: "vnv", + }, + { + value: "fas fa-voicemail", + label: "voicemail", + }, + { + value: "fas fa-volleyball-ball", + label: "volleyball-ball", + }, + { + value: "fas fa-volume-down", + label: "volume-down", + }, + { + value: "fas fa-volume-mute", + label: "volume-mute", + }, + { + value: "fas fa-volume-off", + label: "volume-off", + }, + { + value: "fas fa-volume-up", + label: "volume-up", + }, + { + value: "fas fa-vote-yea", + label: "vote-yea", + }, + { + value: "fas fa-vr-cardboard", + label: "vr-cardboard", + }, + { + value: "fab fa-vuejs", + label: "vuejs", + }, + { + value: "fas fa-walking", + label: "walking", + }, + { + value: "fas fa-wallet", + label: "wallet", + }, + { + value: "fas fa-warehouse", + label: "warehouse", + }, + { + value: "fas fa-water", + label: "water", + }, + { + value: "fas fa-wave-square", + label: "wave-square", + }, + { + value: "fab fa-waze", + label: "waze", + }, + { + value: "fab fa-weebly", + label: "weebly", + }, + { + value: "fab fa-weibo", + label: "weibo", + }, + { + value: "fas fa-weight", + label: "weight", + }, + { + value: "fas fa-weight-hanging", + label: "weight-hanging", + }, + { + value: "fab fa-weixin", + label: "weixin", + }, + { + value: "fab fa-whatsapp", + label: "whatsapp", + }, + { + value: "fab fa-whatsapp-square", + label: "whatsapp-square", + }, + { + value: "fas fa-wheelchair", + label: "wheelchair", + }, + { + value: "fab fa-whmcs", + label: "whmcs", + }, + { + value: "fas fa-wifi", + label: "wifi", + }, + { + value: "fab fa-wikipedia-w", + label: "wikipedia-w", + }, + { + value: "fas fa-wind", + label: "wind", + }, + { + value: "fas fa-window-close", + label: "window-close", + }, + { + value: "far fa-window-close", + label: "window-close", + }, + { + value: "fas fa-window-maximize", + label: "window-maximize", + }, + { + value: "far fa-window-maximize", + label: "window-maximize", + }, + { + value: "fas fa-window-minimize", + label: "window-minimize", + }, + { + value: "far fa-window-minimize", + label: "window-minimize", + }, + { + value: "fas fa-window-restore", + label: "window-restore", + }, + { + value: "far fa-window-restore", + label: "window-restore", + }, + { + value: "fab fa-windows", + label: "windows", + }, + { + value: "fas fa-wine-bottle", + label: "wine-bottle", + }, + { + value: "fas fa-wine-glass", + label: "wine-glass", + }, + { + value: "fas fa-wine-glass-alt", + label: "wine-glass-alt", + }, + { + value: "fab fa-wix", + label: "wix", + }, + { + value: "fab fa-wizards-of-the-coast", + label: "wizards-of-the-coast", + }, + { + value: "fab fa-wolf-pack-battalion", + label: "wolf-pack-battalion", + }, + { + value: "fas fa-won-sign", + label: "won-sign", + }, + { + value: "fab fa-wordpress", + label: "wordpress", + }, + { + value: "fab fa-wordpress-simple", + label: "wordpress-simple", + }, + { + value: "fab fa-wpbeginner", + label: "wpbeginner", + }, + { + value: "fab fa-wpexplorer", + label: "wpexplorer", + }, + { + value: "fab fa-wpforms", + label: "wpforms", + }, + { + value: "fab fa-wpressr", + label: "wpressr", + }, + { + value: "fas fa-wrench", + label: "wrench", + }, + { + value: "fas fa-x-ray", + label: "x-ray", + }, + { + value: "fab fa-xbox", + label: "xbox", + }, + { + value: "fab fa-xing", + label: "xing", + }, + { + value: "fab fa-xing-square", + label: "xing-square", + }, + { + value: "fab fa-y-combinator", + label: "y-combinator", + }, + { + value: "fab fa-yahoo", + label: "yahoo", + }, + { + value: "fab fa-yammer", + label: "yammer", + }, + { + value: "fab fa-yandex", + label: "yandex", + }, + { + value: "fab fa-yandex-international", + label: "yandex-international", + }, + { + value: "fab fa-yarn", + label: "yarn", + }, + { + value: "fab fa-yelp", + label: "yelp", + }, + { + value: "fas fa-yen-sign", + label: "yen-sign", + }, + { + value: "fas fa-yin-yang", + label: "yin-yang", + }, + { + value: "fab fa-yoast", + label: "yoast", + }, + { + value: "fab fa-youtube", + label: "youtube", + }, + { + value: "fab fa-youtube-square", + label: "youtube-square", + }, + { + value: "fab fa-zhihu", + label: "zhihu", + }, +] diff --git a/packages/builder/src/components/userInterface/IconSelect/index.js b/packages/builder/src/components/userInterface/IconSelect/index.js new file mode 100644 index 0000000000..716915d99b --- /dev/null +++ b/packages/builder/src/components/userInterface/IconSelect/index.js @@ -0,0 +1,3 @@ +import "@fortawesome/fontawesome-free/js/all.js" + +export { default as IconSelect } from "./IconSelect.svelte" diff --git a/packages/builder/src/components/userInterface/PropertyControl.svelte b/packages/builder/src/components/userInterface/PropertyControl.svelte index 4fc0af9bb9..395c842122 100644 --- a/packages/builder/src/components/userInterface/PropertyControl.svelte +++ b/packages/builder/src/components/userInterface/PropertyControl.svelte @@ -3,6 +3,11 @@ import Input from "./PropertyPanelControls/Input.svelte" import { store, backendUiStore } from "builderStore" import fetchBindableProperties from "builderStore/fetchBindableProperties" + import { + readableToRuntimeBinding, + runtimeToReadableBinding, + CAPTURE_VAR_INSIDE_MUSTACHE, + } from "builderStore/replaceBindings" import { DropdownMenu } from "@budibase/bbui" import BindingDropdown from "components/userInterface/BindingDropdown.svelte" import { onMount, getContext } from "svelte" @@ -36,25 +41,12 @@ }) } - const CAPTURE_VAR_INSIDE_MUSTACHE = /{{([^}]+)}}/g function replaceBindings(textWithBindings) { getBindableProperties() - // Find all instances of mustasche - const boundValues = textWithBindings.match(CAPTURE_VAR_INSIDE_MUSTACHE) - - // Replace with names: - boundValues && - boundValues.forEach(boundValue => { - const binding = bindableProperties.find(({ readableBinding }) => { - return boundValue === `{{ ${readableBinding} }}` - }) - if (binding) { - textWithBindings = textWithBindings.replace( - boundValue, - `{{ ${binding.runtimeBinding} }}` - ) - } - }) + textWithBindings = readableToRuntimeBinding( + bindableProperties, + textWithBindings + ) onChange(key, textWithBindings) } @@ -76,22 +68,10 @@ const safeValue = () => { getBindableProperties() - let temp = value - const boundValues = - (typeof value === "string" && value.match(CAPTURE_VAR_INSIDE_MUSTACHE)) || - [] - // Replace with names: - boundValues.forEach(v => { - const binding = bindableProperties.find(({ runtimeBinding }) => { - return v === `{{ ${runtimeBinding} }}` - }) - if (binding) { - temp = temp.replace(v, `{{ ${binding.readableBinding} }}`) - } - }) - // console.log(temp) - return value === undefined && props.defaultValue !== undefined + let temp = runtimeToReadableBinding(bindableProperties, value) + + return !value && props.defaultValue !== undefined ? props.defaultValue : temp } @@ -113,7 +93,7 @@ {...props} name={key} />
- {#if control == Input} + {#if control === Input && !key.startsWith('_')} diff --git a/packages/builder/src/components/userInterface/ScreenSelect.svelte b/packages/builder/src/components/userInterface/ScreenSelect.svelte index c291ee5aa7..412f0719fc 100644 --- a/packages/builder/src/components/userInterface/ScreenSelect.svelte +++ b/packages/builder/src/components/userInterface/ScreenSelect.svelte @@ -1,5 +1,5 @@ - + diff --git a/packages/builder/src/components/userInterface/SettingsView.svelte b/packages/builder/src/components/userInterface/SettingsView.svelte index 326abc5683..159093fe8e 100644 --- a/packages/builder/src/components/userInterface/SettingsView.svelte +++ b/packages/builder/src/components/userInterface/SettingsView.svelte @@ -116,7 +116,7 @@ control={definition.control} label={definition.label} key={definition.key} - value={componentInstance[definition.key]} + value={componentInstance[definition.key] || componentInstance[definition.key].defaultValue} {componentInstance} {onChange} props={{ ...excludeProps(definition, ['control', 'label']) }} /> diff --git a/packages/builder/src/components/userInterface/temporaryPanelStructure.js b/packages/builder/src/components/userInterface/temporaryPanelStructure.js index 8943ef8e09..296ae26606 100644 --- a/packages/builder/src/components/userInterface/temporaryPanelStructure.js +++ b/packages/builder/src/components/userInterface/temporaryPanelStructure.js @@ -6,6 +6,8 @@ import ModelViewSelect from "components/userInterface/ModelViewSelect.svelte" import ModelViewFieldSelect from "components/userInterface/ModelViewFieldSelect.svelte" import Event from "components/userInterface/EventsEditor/EventPropertyControl.svelte" import ScreenSelect from "components/userInterface/ScreenSelect.svelte" +import { IconSelect } from "components/userInterface/IconSelect" +import Colorpicker from "@budibase/colorpicker" import { all } from "./propertyCategories.js" /* @@ -220,16 +222,41 @@ export default { settings: [{ label: "URL", key: "url", control: Input }], }, }, - // { - // _component: "@budibase/standard-components/icon", - // name: "Icon", - // description: "A basic component for displaying icons", - // icon: "ri-sun-fill", - // children: [], - // properties: { - // design: { ...all }, - // }, - // }, + { + _component: "@budibase/standard-components/icon", + name: "Icon", + description: "A basic component for displaying icons", + icon: "ri-sun-fill", + children: [], + properties: { + design: {}, + settings: [ + { label: "Icon", key: "icon", control: IconSelect }, + { + label: "Size", + key: "size", + control: OptionSelect, + defaultValue: "fa-lg", + options: [ + { value: "fa-xs", label: "xs" }, + { value: "fa-sm", label: "sm" }, + { value: "fa-lg", label: "lg" }, + { value: "fa-2x", label: "2x" }, + { value: "fa-3x", label: "3x" }, + { value: "fa-5x", label: "5x" }, + { value: "fa-7x", label: "7x" }, + { value: "fa-10x", label: "10x" }, + ], + }, + { + label: "Color", + key: "color", + control: Colorpicker, + defaultValue: "#000", + }, + ], + }, + }, { _component: "@budibase/standard-components/link", name: "Link", @@ -515,10 +542,30 @@ export default { key: "datasource", control: ModelViewSelect, }, - { label: "Stripe Color", key: "stripeColor", control: Input }, - { label: "Border Color", key: "borderColor", control: Input }, - { label: "TH Color", key: "backgroundColor", control: Input }, - { label: "TH Font Color", key: "color", control: Input }, + { + label: "Stripe Color", + key: "stripeColor", + control: Colorpicker, + defaultValue: "#FFFFFF", + }, + { + label: "Border Color", + key: "borderColor", + control: Colorpicker, + defaultValue: "#FFFFFF", + }, + { + label: "TH Color", + key: "backgroundColor", + control: Colorpicker, + defaultValue: "#FFFFFF", + }, + { + label: "TH Font Color", + key: "color", + control: Colorpicker, + defaultValue: "#FFFFFF", + }, { label: "Table", key: "model", control: ModelSelect }, ], }, diff --git a/packages/builder/src/components/workflow/SetupPanel/DeleteWorkflowModal.svelte b/packages/builder/src/components/workflow/SetupPanel/DeleteWorkflowModal.svelte index e2e8b9976b..b96e9f92b3 100644 --- a/packages/builder/src/components/workflow/SetupPanel/DeleteWorkflowModal.svelte +++ b/packages/builder/src/components/workflow/SetupPanel/DeleteWorkflowModal.svelte @@ -13,7 +13,7 @@ async function deleteWorkflow() { await workflowStore.actions.delete({ instanceId, - workflow: $workflowStore.currentWorkflow.workflow, + workflow: $workflowStore.selectedWorkflow.workflow, }) onClosed() notifier.danger("Workflow deleted.") diff --git a/packages/builder/src/components/workflow/SetupPanel/ParamInputs/ComponentSelector.svelte b/packages/builder/src/components/workflow/SetupPanel/ParamInputs/ComponentSelector.svelte deleted file mode 100644 index fee5811bd8..0000000000 --- a/packages/builder/src/components/workflow/SetupPanel/ParamInputs/ComponentSelector.svelte +++ /dev/null @@ -1,42 +0,0 @@ - - -
- - - {#if components.length > 0} - - - {/if} -
diff --git a/packages/builder/src/components/workflow/SetupPanel/ParamInputs/ModelSelector.svelte b/packages/builder/src/components/workflow/SetupPanel/ParamInputs/ModelSelector.svelte index db10b8f3b0..2ea4807d3f 100644 --- a/packages/builder/src/components/workflow/SetupPanel/ParamInputs/ModelSelector.svelte +++ b/packages/builder/src/components/workflow/SetupPanel/ParamInputs/ModelSelector.svelte @@ -2,13 +2,22 @@ import { backendUiStore } from "builderStore" export let value + $: modelId = value ? value._id : "" + + function onChange(e) { + value = $backendUiStore.models.find(model => model._id === e.target.value) + } -
- + {#each $backendUiStore.models as model} - + {/each}
diff --git a/packages/builder/src/components/workflow/SetupPanel/ParamInputs/RecordSelector.svelte b/packages/builder/src/components/workflow/SetupPanel/ParamInputs/RecordSelector.svelte index ffa2a9c1b6..64db828407 100644 --- a/packages/builder/src/components/workflow/SetupPanel/ParamInputs/RecordSelector.svelte +++ b/packages/builder/src/components/workflow/SetupPanel/ParamInputs/RecordSelector.svelte @@ -3,6 +3,14 @@ import { Input, Label } from "@budibase/bbui" export let value + $: modelId = value && value.model ? value.model._id : "" + $: schemaFields = Object.keys(value && value.model ? value.model.schema : {}) + + function onChangeModel(e) { + value.model = $backendUiStore.models.find( + model => model._id === e.target.value + ) + } function setParsedValue(evt, field) { const fieldSchema = value.model.schema[field] @@ -10,23 +18,27 @@ value[field] = parseInt(evt.target.value) return } - value[field] = evt.target.value } -
- + {#each $backendUiStore.models as model} - + {/each}
-{#if value.model} +{#if schemaFields.length}
- {#each Object.keys(value.model.schema) as field} + {#each schemaFields as field}
- import { fade } from "svelte/transition" - import { onMount, getContext } from "svelte" + import { getContext } from "svelte" import { backendUiStore, workflowStore } from "builderStore" import { notifier } from "builderStore/store/notifications" import WorkflowBlockSetup from "./WorkflowBlockSetup.svelte" @@ -9,49 +8,35 @@ const { open, close } = getContext("simple-modal") - const ACCESS_LEVELS = [ - { - name: "Admin", - key: "ADMIN", - canExecute: true, - editable: false, - }, - { - name: "Power User", - key: "POWER_USER", - canExecute: true, - editable: false, - }, - ] - let selectedTab = "SETUP" - let testResult $: workflow = - $workflowStore.currentWorkflow && $workflowStore.currentWorkflow.workflow - $: workflowBlock = $workflowStore.selectedWorkflowBlock + $workflowStore.selectedWorkflow && $workflowStore.selectedWorkflow.workflow function deleteWorkflow() { open( DeleteWorkflowModal, - { - onClosed: close, - }, + { onClosed: close }, { styleContent: { padding: "0" } } ) } function deleteWorkflowBlock() { - workflowStore.actions.deleteWorkflowBlock(workflowBlock) - notifier.info("Workflow block deleted.") + workflowStore.actions.deleteWorkflowBlock($workflowStore.selectedBlock) } - function testWorkflow() { - testResult = "PASSED" + async function testWorkflow() { + const result = await workflowStore.actions.trigger({ + workflow: $workflowStore.selectedWorkflow.workflow, + }) + if (result.status === 200) { + notifier.success(`Workflow ${workflow.name} triggered successfully.`) + } else { + notifier.danger(`Failed to trigger workflow ${workflow.name}.`) + } } async function saveWorkflow() { - const workflow = $workflowStore.currentWorkflow.workflow await workflowStore.actions.save({ instanceId: $backendUiStore.selectedDatabase._id, workflow, @@ -65,38 +50,27 @@ { - selectedTab = 'SETUP' - testResult = null - }}> + on:click={() => (selectedTab = 'SETUP')}> Setup - {#if !workflowBlock} - (selectedTab = 'TEST')}> - Test - - {/if} - {#if selectedTab === 'TEST'} -
- {#if testResult} - - {/if} - + {#if $workflowStore.selectedBlock} + +
+ +
- {/if} - {#if selectedTab === 'SETUP'} - {#if workflowBlock} - + {:else if $workflowStore.selectedWorkflow} +
+
+
+ Workflow + {workflow.name} +
+
+
- +
- {:else if $workflowStore.currentWorkflow} -
-
-
Workflow: {workflow.name}
-
- -
- - {#each ACCESS_LEVELS as level} - - - - - {/each} -
-
-
-
- - -
-
- {/if} +
{/if} @@ -181,10 +124,6 @@ margin-bottom: 20px; } - .config-item { - margin-bottom: 20px; - } - header > span { color: var(--grey-5); margin-right: 20px; @@ -205,35 +144,8 @@ gap: 12px; } - .access-level { - display: flex; - align-items: center; - justify-content: space-between; - margin-top: 20px; - } - .access-level label { font-weight: normal; color: var(--ink); } - - .test-result { - border: none; - width: 100%; - border-radius: 3px; - height: 32px; - font-size: 14px; - font-weight: 500; - color: var(--white); - text-align: center; - margin-bottom: 10px; - } - - .passed { - background: var(--green); - } - - .failed { - background: var(--red); - } diff --git a/packages/builder/src/components/workflow/SetupPanel/WorkflowBlockSetup.svelte b/packages/builder/src/components/workflow/SetupPanel/WorkflowBlockSetup.svelte index 35ab01b544..5e889a32d0 100644 --- a/packages/builder/src/components/workflow/SetupPanel/WorkflowBlockSetup.svelte +++ b/packages/builder/src/components/workflow/SetupPanel/WorkflowBlockSetup.svelte @@ -1,55 +1,45 @@ - -{#each workflowParams as [parameter, type]} -
- - {#if Array.isArray(type)} - - {:else if type === 'component'} - - {:else if type === 'accessLevel'} - - {:else if type === 'password'} - - {:else if type === 'number'} - - {:else if type === 'longText'} -