terrier-engine 4.4.35 → 4.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data-dive/dives/group-editor.ts +8 -3
- package/package.json +1 -1
- package/terrier/forms.ts +36 -1
- package/terrier/gen/badges.ts +734 -0
- package/terrier/glyps.ts +12 -1
- package/terrier/images/badges/badge-accounts_payable-handling.svg +48 -0
- package/terrier/images/badges/badge-accounts_receivable-handling.svg +50 -0
- package/terrier/images/badges/badge-applicator_license-admin.svg +54 -0
- package/terrier/images/badges/badge-autopay-admin.svg +46 -0
- package/terrier/images/badges/badge-autopay-handling.svg +46 -0
- package/terrier/images/badges/badge-bats-admin.svg +47 -0
- package/terrier/images/badges/badge-bats-management.svg +45 -0
- package/terrier/images/badges/badge-bats-ops.svg +47 -0
- package/terrier/images/badges/badge-bats-sales.svg +47 -0
- package/terrier/images/badges/badge-clypboard_hardware-admin.svg +70 -0
- package/terrier/images/badges/badge-clypboard_project-admin.svg +51 -0
- package/terrier/images/badges/badge-clypmart-admin.svg +58 -0
- package/terrier/images/badges/badge-commercial-admin.svg +56 -0
- package/terrier/images/badges/badge-commercial-management.svg +54 -0
- package/terrier/images/badges/badge-commercial-ops.svg +56 -0
- package/terrier/images/badges/badge-commercial-sales.svg +56 -0
- package/terrier/images/badges/badge-compliance-admin.svg +51 -0
- package/terrier/images/badges/badge-contracts-admin.svg +54 -0
- package/terrier/images/badges/badge-contracts-reporting.svg +52 -0
- package/terrier/images/badges/badge-copesan-admin.svg +45 -0
- package/terrier/images/badges/badge-credit_card-admin.svg +55 -0
- package/terrier/images/badges/badge-customer_call-handling.svg +49 -0
- package/terrier/images/badges/badge-customer_text-handling.svg +59 -0
- package/terrier/images/badges/badge-employee_data-admin.svg +49 -0
- package/terrier/images/badges/badge-employee_data-handling.svg +49 -0
- package/terrier/images/badges/badge-employee_data-reporting.svg +47 -0
- package/terrier/images/badges/badge-finance-admin.svg +49 -0
- package/terrier/images/badges/badge-finance-reporting.svg +47 -0
- package/terrier/images/badges/badge-fleet-admin.svg +58 -0
- package/terrier/images/badges/badge-fumigation-admin.svg +56 -0
- package/terrier/images/badges/badge-fumigation-management.svg +54 -0
- package/terrier/images/badges/badge-fumigation-ops.svg +56 -0
- package/terrier/images/badges/badge-information_technology-admin.svg +51 -0
- package/terrier/images/badges/badge-information_technology-management.svg +49 -0
- package/terrier/images/badges/badge-irrigation-admin.svg +51 -0
- package/terrier/images/badges/badge-irrigation-management.svg +49 -0
- package/terrier/images/badges/badge-irrigation-ops.svg +51 -0
- package/terrier/images/badges/badge-irrigation-sales.svg +51 -0
- package/terrier/images/badges/badge-landscape-admin.svg +50 -0
- package/terrier/images/badges/badge-landscape-management.svg +48 -0
- package/terrier/images/badges/badge-landscape-ops.svg +50 -0
- package/terrier/images/badges/badge-landscape-sales.svg +50 -0
- package/terrier/images/badges/badge-marketing-admin.svg +59 -0
- package/terrier/images/badges/badge-mergers_and_acquisitions-admin.svg +47 -0
- package/terrier/images/badges/badge-mergers_and_acquisitions-reporting.svg +45 -0
- package/terrier/images/badges/badge-multi_housing-admin.svg +61 -0
- package/terrier/images/badges/badge-multi_housing-management.svg +59 -0
- package/terrier/images/badges/badge-multi_housing-ops.svg +61 -0
- package/terrier/images/badges/badge-multi_housing-sales.svg +61 -0
- package/terrier/images/badges/badge-payroll-admin.svg +48 -0
- package/terrier/images/badges/badge-payroll-reporting.svg +46 -0
- package/terrier/images/badges/badge-pest-admin.svg +48 -0
- package/terrier/images/badges/badge-pest-management.svg +46 -0
- package/terrier/images/badges/badge-pest-ops.svg +48 -0
- package/terrier/images/badges/badge-pest-sales.svg +48 -0
- package/terrier/images/badges/badge-pro-admin.svg +60 -0
- package/terrier/images/badges/badge-pro-management.svg +58 -0
- package/terrier/images/badges/badge-pro-ops.svg +60 -0
- package/terrier/images/badges/badge-pro-sales.svg +60 -0
- package/terrier/images/badges/badge-program-admin.svg +45 -0
- package/terrier/images/badges/badge-proposals-handling.svg +51 -0
- package/terrier/images/badges/badge-residential-admin.svg +53 -0
- package/terrier/images/badges/badge-residential-management.svg +51 -0
- package/terrier/images/badges/badge-residential-ops.svg +53 -0
- package/terrier/images/badges/badge-residential-sales.svg +53 -0
- package/terrier/images/badges/badge-sales-management.svg +46 -0
- package/terrier/images/badges/badge-sales-reporting.svg +46 -0
- package/terrier/images/badges/badge-scripts-admin.svg +50 -0
- package/terrier/images/badges/badge-scripts-reporting.svg +48 -0
- package/terrier/images/badges/badge-termite-admin.svg +48 -0
- package/terrier/images/badges/badge-termite-management.svg +46 -0
- package/terrier/images/badges/badge-termite-ops.svg +48 -0
- package/terrier/images/badges/badge-termite-sales.svg +48 -0
- package/terrier/images/badges/badge-wildlife-admin.svg +45 -0
- package/terrier/images/badges/badge-wildlife-management.svg +43 -0
- package/terrier/images/badges/badge-wildlife-ops.svg +45 -0
- package/terrier/images/badges/badge-wildlife-sales.svg +45 -0
- package/terrier/images/optimized/badge-accounts_payable.svg +1 -0
- package/terrier/images/optimized/badge-accounts_receivable.svg +1 -0
- package/terrier/images/optimized/badge-applicator_license.svg +1 -0
- package/terrier/images/optimized/badge-autopay.svg +1 -0
- package/terrier/images/optimized/badge-bats.svg +1 -0
- package/terrier/images/optimized/badge-clypboard_hardware.svg +1 -0
- package/terrier/images/optimized/badge-clypboard_project.svg +1 -0
- package/terrier/images/optimized/badge-clypmart.svg +1 -0
- package/terrier/images/optimized/badge-commercial.svg +1 -0
- package/terrier/images/optimized/badge-compliance.svg +1 -0
- package/terrier/images/optimized/badge-contracts.svg +1 -0
- package/terrier/images/optimized/badge-copesan.svg +1 -0
- package/terrier/images/optimized/badge-credit_card.svg +1 -0
- package/terrier/images/optimized/badge-customer_call.svg +1 -0
- package/terrier/images/optimized/badge-customer_text.svg +1 -0
- package/terrier/images/optimized/badge-employee_data.svg +1 -0
- package/terrier/images/optimized/badge-finance.svg +1 -0
- package/terrier/images/optimized/badge-fleet.svg +1 -0
- package/terrier/images/optimized/badge-fumigation.svg +1 -0
- package/terrier/images/optimized/badge-information_technology.svg +1 -0
- package/terrier/images/optimized/badge-irrigation.svg +1 -0
- package/terrier/images/optimized/badge-landscape.svg +1 -0
- package/terrier/images/optimized/badge-marketing.svg +1 -0
- package/terrier/images/optimized/badge-mergers_and_acquisitions.svg +1 -0
- package/terrier/images/optimized/badge-multi_housing.svg +1 -0
- package/terrier/images/optimized/badge-payroll.svg +1 -0
- package/terrier/images/optimized/badge-pest.svg +1 -0
- package/terrier/images/optimized/badge-pro.svg +1 -0
- package/terrier/images/optimized/badge-program.svg +1 -0
- package/terrier/images/optimized/badge-proposals.svg +1 -0
- package/terrier/images/optimized/badge-residential.svg +1 -0
- package/terrier/images/optimized/badge-sales.svg +1 -0
- package/terrier/images/optimized/badge-scripts.svg +1 -0
- package/terrier/images/optimized/badge-termite.svg +1 -0
- package/terrier/images/optimized/badge-wildlife.svg +1 -0
- package/terrier/images/optimized/badge_role-admin.svg +1 -0
- package/terrier/images/optimized/badge_role-handling.svg +1 -0
- package/terrier/images/optimized/badge_role-management.svg +1 -0
- package/terrier/images/optimized/badge_role-ops.svg +1 -0
- package/terrier/images/optimized/badge_role-reporting.svg +1 -0
- package/terrier/images/optimized/badge_role-sales.svg +1 -0
- package/terrier/images/raw/badge-accounts_payable.svg +22 -0
- package/terrier/images/raw/badge-accounts_receivable.svg +24 -0
- package/terrier/images/raw/badge-applicator_license.svg +28 -0
- package/terrier/images/raw/badge-autopay.svg +20 -0
- package/terrier/images/raw/badge-bats.svg +19 -0
- package/terrier/images/raw/badge-clypboard_hardware.svg +44 -0
- package/terrier/images/raw/badge-clypboard_project.svg +25 -0
- package/terrier/images/raw/badge-clypmart.svg +37 -0
- package/terrier/images/raw/badge-commercial.svg +43 -0
- package/terrier/images/raw/badge-compliance.svg +26 -0
- package/terrier/images/raw/badge-contracts.svg +28 -0
- package/terrier/images/raw/badge-copesan.svg +19 -0
- package/terrier/images/raw/badge-credit_card.svg +29 -0
- package/terrier/images/raw/badge-customer_call.svg +26 -0
- package/terrier/images/raw/badge-customer_text.svg +33 -0
- package/terrier/images/raw/badge-employee_data.svg +23 -0
- package/terrier/images/raw/badge-finance.svg +23 -0
- package/terrier/images/raw/badge-fleet.svg +32 -0
- package/terrier/images/raw/badge-fumigation.svg +30 -0
- package/terrier/images/raw/badge-information_technology.svg +25 -0
- package/terrier/images/raw/badge-irrigation.svg +28 -0
- package/terrier/images/raw/badge-landscape.svg +24 -0
- package/terrier/images/raw/badge-marketing.svg +34 -0
- package/terrier/images/raw/badge-mergers_and_acquisitions.svg +22 -0
- package/terrier/images/raw/badge-multi_housing.svg +72 -0
- package/terrier/images/raw/badge-payroll.svg +22 -0
- package/terrier/images/raw/badge-pest.svg +22 -0
- package/terrier/images/raw/badge-pro.svg +34 -0
- package/terrier/images/raw/badge-program.svg +19 -0
- package/terrier/images/raw/badge-proposals.svg +25 -0
- package/terrier/images/raw/badge-residential.svg +29 -0
- package/terrier/images/raw/badge-sales.svg +22 -0
- package/terrier/images/raw/badge-scripts.svg +24 -0
- package/terrier/images/raw/badge-termite.svg +22 -0
- package/terrier/images/raw/badge-wildlife.svg +19 -0
- package/terrier/images/raw/badge_role-admin.svg +35 -0
- package/terrier/images/raw/badge_role-handling.svg +35 -0
- package/terrier/images/raw/badge_role-management.svg +35 -0
- package/terrier/images/raw/badge_role-ops.svg +35 -0
- package/terrier/images/raw/badge_role-reporting.svg +35 -0
- package/terrier/images/raw/badge_role-sales.svg +35 -0
- package/terrier/parts/glyp-picker.ts +98 -0
- package/terrier/parts/terrier-form-part.ts +4 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
3
|
+
<title>badge_role-ops</title>
|
|
4
|
+
<defs>
|
|
5
|
+
<ellipse id="path-1" cx="24.0000002" cy="24.0001005" rx="8.00002026" ry="8.0001005"></ellipse>
|
|
6
|
+
<filter x="-1.6%" y="-1.6%" width="103.1%" height="103.1%" filterUnits="objectBoundingBox" id="filter-2">
|
|
7
|
+
<feOffset dx="0" dy="0.5" in="SourceAlpha" result="shadowOffsetInner1"></feOffset>
|
|
8
|
+
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
|
|
9
|
+
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.25 0" type="matrix" in="shadowInnerInner1" result="shadowMatrixInner1"></feColorMatrix>
|
|
10
|
+
<feOffset dx="0" dy="-0.5" in="SourceAlpha" result="shadowOffsetInner2"></feOffset>
|
|
11
|
+
<feComposite in="shadowOffsetInner2" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner2"></feComposite>
|
|
12
|
+
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowInnerInner2" result="shadowMatrixInner2"></feColorMatrix>
|
|
13
|
+
<feMerge>
|
|
14
|
+
<feMergeNode in="shadowMatrixInner1"></feMergeNode>
|
|
15
|
+
<feMergeNode in="shadowMatrixInner2"></feMergeNode>
|
|
16
|
+
</feMerge>
|
|
17
|
+
</filter>
|
|
18
|
+
<path d="M23.5000002,19.5 L23.5000002,22 C23.5000002,22.2761424 23.7238578,22.5 24.0000002,22.5 C24.2761426,22.5 24.5000002,22.2761424 24.5000002,22 L24.5000002,19.5 L25.4583335,19.5 C25.7059745,19.5 25.9175736,19.6543135 26.0022184,19.872028 L26.0000002,22.5 C26.0000002,22.7761424 26.2238578,23 26.5000002,23 C26.7761426,23 27.0000002,22.7761424 27.0000002,22.5 L27.0013611,20.5433492 C28.2872096,21.3681523 29.1255451,22.8290777 29.4967222,24.8932606 L29.5077502,24.95675 L29.8502952,25.293218 C29.9354145,25.3767897 29.987496,25.4876579 29.9980188,25.6055155 L30.0000002,25.65 L30.0000002,26.55 C30.0000002,26.7850712 29.836252,26.9883984 29.6065837,27.0385079 C28.4488161,27.2911117 26.9885068,27.4392966 25.2225883,27.4848314 L24.8251301,27.4932613 L24.4176032,27.498316 C24.280082,27.4994389 24.1408814,27.5 24.0000002,27.5 C23.859119,27.5 23.7199184,27.4994389 23.5823972,27.498316 L23.1748703,27.4932613 L22.7774121,27.4848314 C21.0114936,27.4392966 19.5511843,27.2911117 18.3934167,27.0385079 C18.1637484,26.9883984 18.0000002,26.7850712 18.0000002,26.55 L18.0000002,25.65 C18.0000002,25.5158015 18.053946,25.3872361 18.1497052,25.293218 L18.4920002,24.95675 L18.5242468,24.7799028 C18.9055871,22.774877 19.7369876,21.3520626 20.9998501,20.5425728 L21.0000002,22.5 C21.0000002,22.7761424 21.2238578,23 21.5000002,23 C21.7761426,23 22.0000002,22.7761424 22.0000002,22.5 L21.9985818,19.8699824 C22.0837538,19.6533475 22.2948022,19.5 22.5416669,19.5 L23.5000002,19.5 Z M27.7916669,24.625 L20.2083335,24.625 C19.8861674,24.625 19.6250002,24.8861672 19.6250002,25.2083333 C19.6250002,25.5304994 19.8861674,25.7916667 20.2083335,25.7916667 L27.7916669,25.7916667 C28.113833,25.7916667 28.3750002,25.5304994 28.3750002,25.2083333 C28.3750002,24.8861672 28.113833,24.625 27.7916669,24.625 Z" id="path-3"></path>
|
|
19
|
+
<filter x="-2.1%" y="-3.1%" width="104.2%" height="106.2%" filterUnits="objectBoundingBox" id="filter-4">
|
|
20
|
+
<feOffset dx="0" dy="0.5" in="SourceAlpha" result="shadowOffsetInner1"></feOffset>
|
|
21
|
+
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
|
|
22
|
+
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowInnerInner1"></feColorMatrix>
|
|
23
|
+
</filter>
|
|
24
|
+
</defs>
|
|
25
|
+
<g id="badge_role-ops" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
|
26
|
+
<g id="Oval">
|
|
27
|
+
<use fill="#EFA234" fill-rule="evenodd" xlink:href="#path-1"></use>
|
|
28
|
+
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
|
|
29
|
+
</g>
|
|
30
|
+
<g id="Path-49" fill-rule="nonzero">
|
|
31
|
+
<use fill="#FFFFFF" xlink:href="#path-3"></use>
|
|
32
|
+
<use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-3"></use>
|
|
33
|
+
</g>
|
|
34
|
+
</g>
|
|
35
|
+
</svg>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
3
|
+
<title>badge_role-reporting</title>
|
|
4
|
+
<defs>
|
|
5
|
+
<ellipse id="path-1" cx="24.0000102" cy="23.9999095" rx="8.00001022" ry="8.00009047"></ellipse>
|
|
6
|
+
<filter x="-1.6%" y="-1.6%" width="103.1%" height="103.1%" filterUnits="objectBoundingBox" id="filter-2">
|
|
7
|
+
<feOffset dx="0" dy="0.5" in="SourceAlpha" result="shadowOffsetInner1"></feOffset>
|
|
8
|
+
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
|
|
9
|
+
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.25 0" type="matrix" in="shadowInnerInner1" result="shadowMatrixInner1"></feColorMatrix>
|
|
10
|
+
<feOffset dx="0" dy="-0.5" in="SourceAlpha" result="shadowOffsetInner2"></feOffset>
|
|
11
|
+
<feComposite in="shadowOffsetInner2" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner2"></feComposite>
|
|
12
|
+
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowInnerInner2" result="shadowMatrixInner2"></feColorMatrix>
|
|
13
|
+
<feMerge>
|
|
14
|
+
<feMergeNode in="shadowMatrixInner1"></feMergeNode>
|
|
15
|
+
<feMergeNode in="shadowMatrixInner2"></feMergeNode>
|
|
16
|
+
</feMerge>
|
|
17
|
+
</filter>
|
|
18
|
+
<path d="M25.0857876,18.5 C25.3510034,18.5 25.6053567,18.6053563 25.792893,18.7928918 L27.7071156,20.7071065 C27.8946528,20.894643 28.0000102,21.1489976 28.0000102,21.4142148 L28.0000102,28.5 C28.0000102,29.0522847 27.552295,29.5 27.0000102,29.5 L21,29.5 C20.4477153,29.5 20,29.0522847 20,28.5 L20,19.5 C20,18.9477153 20.4477153,18.5 21,18.5 Z M24.0000102,19.9998995 C23.4477255,19.9998995 23.0000102,20.4476148 23.0000102,20.9998995 L23,24.999 L21.707117,25 C21.4309746,25 21.207117,25.2238576 21.207117,25.5 C21.207117,25.6326082 21.2597954,25.7597852 21.3535636,25.8535534 L23.6464568,28.1464466 C23.841719,28.3417088 24.1583015,28.3417088 24.3535636,28.1464466 L26.6464568,25.8535534 C26.841719,25.6582912 26.841719,25.3417088 26.6464568,25.1464466 C26.5526886,25.0526784 26.4255117,25 26.2929034,25 L25,24.999 L25.0000102,20.9998995 C25.0000102,20.4870637 24.61397,20.0643923 24.1166314,20.0066272 Z" id="path-3"></path>
|
|
19
|
+
<filter x="-3.1%" y="-2.3%" width="106.2%" height="104.5%" filterUnits="objectBoundingBox" id="filter-4">
|
|
20
|
+
<feOffset dx="0" dy="0.5" in="SourceAlpha" result="shadowOffsetInner1"></feOffset>
|
|
21
|
+
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
|
|
22
|
+
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowInnerInner1"></feColorMatrix>
|
|
23
|
+
</filter>
|
|
24
|
+
</defs>
|
|
25
|
+
<g id="badge_role-reporting" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
|
26
|
+
<g id="Oval">
|
|
27
|
+
<use fill="#1E6C7B" fill-rule="evenodd" xlink:href="#path-1"></use>
|
|
28
|
+
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
|
|
29
|
+
</g>
|
|
30
|
+
<g id="Path-91">
|
|
31
|
+
<use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-3"></use>
|
|
32
|
+
<use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-3"></use>
|
|
33
|
+
</g>
|
|
34
|
+
</g>
|
|
35
|
+
</svg>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
3
|
+
<title>badge_role-sales</title>
|
|
4
|
+
<defs>
|
|
5
|
+
<ellipse id="path-1" cx="23.9999797" cy="24.0001005" rx="8.00002026" ry="8.0001005"></ellipse>
|
|
6
|
+
<filter x="-1.6%" y="-1.6%" width="103.1%" height="103.1%" filterUnits="objectBoundingBox" id="filter-2">
|
|
7
|
+
<feOffset dx="0" dy="0.5" in="SourceAlpha" result="shadowOffsetInner1"></feOffset>
|
|
8
|
+
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
|
|
9
|
+
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.25 0" type="matrix" in="shadowInnerInner1" result="shadowMatrixInner1"></feColorMatrix>
|
|
10
|
+
<feOffset dx="0" dy="-0.5" in="SourceAlpha" result="shadowOffsetInner2"></feOffset>
|
|
11
|
+
<feComposite in="shadowOffsetInner2" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner2"></feComposite>
|
|
12
|
+
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowInnerInner2" result="shadowMatrixInner2"></feColorMatrix>
|
|
13
|
+
<feMerge>
|
|
14
|
+
<feMergeNode in="shadowMatrixInner1"></feMergeNode>
|
|
15
|
+
<feMergeNode in="shadowMatrixInner2"></feMergeNode>
|
|
16
|
+
</feMerge>
|
|
17
|
+
</filter>
|
|
18
|
+
<path d="M28.4204051,19.3295949 C28.5584763,19.3295949 28.6704051,19.4415237 28.6704051,19.5795949 L28.6704051,24.7260415 C28.6704051,24.7923456 28.6440659,24.8559341 28.5971818,24.9028182 C28.4995508,25.0004492 28.3412595,25.0004492 28.2436284,24.9028182 L26.730853,23.3895949 L21.6265132,28.4948071 C21.0407268,29.0805936 20.0909793,29.0805936 19.5051929,28.4948071 C18.9194064,27.9090207 18.9194064,26.9592732 19.5051929,26.3734868 L24.608853,21.2685949 L23.0971818,19.7563716 C23.0659258,19.7251155 23.0438008,19.6864353 23.0325237,19.6444757 L23.0239585,19.5795949 C23.0239585,19.4415237 23.1358873,19.3295949 23.2739585,19.3295949 Z" id="path-3"></path>
|
|
19
|
+
<filter x="-2.6%" y="-2.6%" width="105.2%" height="105.2%" filterUnits="objectBoundingBox" id="filter-4">
|
|
20
|
+
<feOffset dx="0" dy="0.5" in="SourceAlpha" result="shadowOffsetInner1"></feOffset>
|
|
21
|
+
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
|
|
22
|
+
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowInnerInner1"></feColorMatrix>
|
|
23
|
+
</filter>
|
|
24
|
+
</defs>
|
|
25
|
+
<g id="badge_role-sales" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
|
26
|
+
<g id="Oval">
|
|
27
|
+
<use fill="#01B201" fill-rule="evenodd" xlink:href="#path-1"></use>
|
|
28
|
+
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
|
|
29
|
+
</g>
|
|
30
|
+
<g id="Path-87" fill-rule="nonzero">
|
|
31
|
+
<use fill="#FFFFFF" xlink:href="#path-3"></use>
|
|
32
|
+
<use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-3"></use>
|
|
33
|
+
</g>
|
|
34
|
+
</g>
|
|
35
|
+
</svg>
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import {ModalPart} from "../modals"
|
|
2
|
+
import {Part, PartTag} from "tuff-core/parts"
|
|
3
|
+
import {messages, logging} from "tuff-core"
|
|
4
|
+
import Glyps from "../glyps"
|
|
5
|
+
|
|
6
|
+
const log = new logging.Logger("GlypPicker")
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
const pickKey = messages.typedKey<{ icon: string }>()
|
|
10
|
+
|
|
11
|
+
export type GlypPickerState = {
|
|
12
|
+
icon?: string
|
|
13
|
+
onPicked: (icon?: string) => any
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* A modal that allows the user to pick a glyp.
|
|
18
|
+
*/
|
|
19
|
+
class GlypPickerModal extends ModalPart<GlypPickerState> {
|
|
20
|
+
|
|
21
|
+
grid!: GlypGrid
|
|
22
|
+
|
|
23
|
+
filterKey = messages.untypedKey()
|
|
24
|
+
|
|
25
|
+
async init() {
|
|
26
|
+
await super.init()
|
|
27
|
+
|
|
28
|
+
this.setIcon('glyp-cursor')
|
|
29
|
+
this.setTitle("Choose an Icon")
|
|
30
|
+
|
|
31
|
+
this.grid = this.makePart(GlypGrid, {})
|
|
32
|
+
|
|
33
|
+
this.onKeyUp(this.filterKey, m => {
|
|
34
|
+
log.info(`Filter key up`, m)
|
|
35
|
+
const filter = (m.event.target as HTMLInputElement).value
|
|
36
|
+
this.grid.setFilter(filter)
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
this.onClick(pickKey, m => {
|
|
40
|
+
log.info(`Picked ${m.data.icon}`)
|
|
41
|
+
this.state.onPicked(m.data.icon)
|
|
42
|
+
this.pop()
|
|
43
|
+
})
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
renderContent(parent: PartTag) {
|
|
47
|
+
parent.div('.glyp-picker-part.tt-flex.column.gap.padded.tt-form', picker => {
|
|
48
|
+
picker.input({type: 'search', placeholder: 'Filter'})
|
|
49
|
+
.emitKeyUp(this.filterKey)
|
|
50
|
+
.emitChange(this.filterKey)
|
|
51
|
+
picker.div('.grid-container', container => {
|
|
52
|
+
container.part(this.grid)
|
|
53
|
+
})
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* A grid of labeled glyps with an optional filter.
|
|
62
|
+
*/
|
|
63
|
+
class GlypGrid extends Part<{ filter?: string }> {
|
|
64
|
+
|
|
65
|
+
setFilter(filter: string) {
|
|
66
|
+
this.state.filter = filter
|
|
67
|
+
this.dirty()
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
clearFilter() {
|
|
71
|
+
this.state.filter = undefined
|
|
72
|
+
this.dirty()
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
get parentClasses(): Array<string> {
|
|
76
|
+
return ['glyp-picker-grid']
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
render(parent: PartTag) {
|
|
80
|
+
const filter = this.state.filter ? this.state.filter.trim().toLowerCase() : null
|
|
81
|
+
for (const glyp of Glyps.names) {
|
|
82
|
+
if (!filter || glyp.includes(filter)) {
|
|
83
|
+
parent.a(a => {
|
|
84
|
+
a.i(glyp)
|
|
85
|
+
a.div('.title').text(Glyps.displayName(glyp))
|
|
86
|
+
}).emitClick(pickKey, {icon: glyp})
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
const GlypPicker = {
|
|
95
|
+
Modal: GlypPickerModal
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export default GlypPicker
|
|
@@ -2,8 +2,11 @@ import {FormPart, FormPartData} from "tuff-core/forms"
|
|
|
2
2
|
import Theme from "../theme"
|
|
3
3
|
import {TerrierApp} from "../app"
|
|
4
4
|
|
|
5
|
-
export default abstract class TerrierFormPart<TState extends FormPartData> extends FormPart<TState> {
|
|
6
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Form part that implements the Terrier platform methods like `app` and `theme`.
|
|
8
|
+
*/
|
|
9
|
+
export default abstract class TerrierFormPart<TState extends FormPartData> extends FormPart<TState> {
|
|
7
10
|
|
|
8
11
|
get app(): TerrierApp<any> {
|
|
9
12
|
return this.root as unknown as TerrierApp<any> // this should always be true
|